2013/12/31(火)今年もありがとうございました

2013/12/31 18:27

2013年も残すところあと6時間となりました。

QMA界隈、プログラミング界隈では、今年も多くの方々にお世話になりました。本当にありがとうございました。来年も変わらぬおつき合いをしていただければ幸いです。

個人的なことを振り返ってみると、今年は変化のあった年だったと思います。業務以外のところでWebサービスを作り始めるようになり、流山百歌というアプリでは流山市WEBアプリコンテストのプログラミング部門の最優秀賞をいただくこともできました。まだ扉をこじ開けられてはいませんが、隙間から向こうの景色が見えた年だったと思います。来年もより一層の精進を重ねる所存です。

それでは皆様、良いお年を。

2013/12/30(月)Ruby on Railsチュートリアルをやってみた

2013/12/30 23:13

左膝痛につき、今日も家でじっとしていました。家の中の移動ですら難儀する状態で、来客にも居留守を使わざるを得ませんでした。たぶん新聞の集金だったんだよなー。申し訳ないことをしました。明日販売所で直接払ってこよう。

さて、今日はDjangoでの開発を進めつつ、Ruby on Railsのチュートリアルを進めていました。

私はこれまでに入門書などで「Railsで一応アプリが作れる」程度の知識は身につけていました。もちろん、使いこなせているとはお世辞にも言えない状態ではありますが、SI業界で跋扈している「Javaできます」と言っている自称ベテラン技術者が書くJava程度のコードは書けるようになったと思っています。

そんな私がRailsに持っていた正直な感想は「黒魔術満載で気持ちが悪い」というものでした。一番長く使っている言語がJavaだからかもしれませんが、「設定より規約」という考え方には馴染めないのです。

もちろん、Railsの生産性が圧倒的に高いのは事実です。ただ、「なんだかよくわからないけど動いている」という状態はかなり気持ち悪い。これならば、たとえXML地獄だったとしても素のStrutsのほうが落ち着きます。いや、またStrutsで開発したいかというと決してそんなことはありませんがw

今回このチュートリアルをやってみて、Railsに対する印象が少し変わりました。私が漠然と「黒魔術」と思っていたものにも二種類あったんですよね。

  • Scaffoldなどのツールが生成するコードが色々なことをやってくれるのが気持ち悪い
  • コードに書かれていないけれどRailsが良きにはからってくれるのが気持ち悪い

チュートリアルではScaffoldを使わず、コードを自分の手で組み立てていきます。そういった取り組みのおかげで、前者の気持ちは少し収まった気がします。残念ながら後者の気持ち悪さは未だに拭えていないのですが、以前よりは拒絶反応はなくなりました。

チュートリアルですから、本来はRailsの入門者向けなのでしょうが、それ以外にも「Railsでなんとなくアプリが作れるようになったけど、裏で何をやっているかわからないので違和感がある」という人にもお勧めできると思います。

2013/12/29(日)白金賢者二段のQMA不具合考察日記

2013/12/29 22:30

今日から帰省する予定だったのですが、膝が痛くて駅まで歩ける気がしなかったので延期しました。近所ではないにせよ、普通列車で帰れる範囲の帰省なので予定変更も簡単ですw

さて、予定がなくなってしまったため、Kindle化されていた@ITのエンジニアライフで連載されていたリーベルGさんの作品を一気に読み返していました。

ITエンジニア小説 人形つかい・ビギニング

ITエンジニア小説 人形つかい・ビギニング

@ITでの連載時に一度読んでいるのですが、やはり面白い。最後の最後に日付計算ライブラリの初歩的な計算ミスなどでピンチに陥りますが、それを冷静に捌いていく東海林さんカッコいい。

さて、日付計算の初歩的なミスといえば、今日こんなことがあったようです。

年末年始にまでネタを仕込むとはコナミさんさすがです。このツイートを見たときには「イベントの発生日を2013年1月1日の前後3日間にしてたんじゃねーのwww」と思ったのですが、続報を見た感じではそんな単純な問題ではなかったようですね。

これは本格的に日付処理を間違えている疑惑が……。

パッと思いつくのは年跨ぎの処理が上手くいっていない可能性です。わざわざ自前でバグ入りの日付計算ライブラリを作ってしまい、2014年1月1日の3日前を2014年の12月29日としてしまったり、そもそも存在しない0月にしてしまったり。ただ、これはあまりにも初歩的すぎるミスですし、わかってしまえば数時間で修正できそうなものです。

じゃあほかにどんな理由が考えられるかというと……。

年ごとにイベントテーブルが別に分かれていて、それを跨ぐことができないというのはどうでしょう。データを保持しているのがDBなのか設定ファイル的なものなのかはわかりませんが、event2013(仮)とevent2014(仮)という別のテーブル(ファイル、設定値……)として管理しているため、同一のイベントを年跨ぎで登録できない、ということです。

これならば公式の「解決に時間が掛かる」というツイートにも矛盾しませんし、1月1日からイベントを開始するという解決策とも整合性が取れています。これだ! これしかない!

……と思ったのですが、冷静に考えれば、12月28日~12月31日と1月1日~1月4日を「見た目は同じで獲得アイテムは一緒だけど別のイベント」として登録すれば解決する問題でした。これも解決まで数時間のオーダーでしょう。ということは、これよりもっと酷い不具合ってことですよね。

すごいな、コナミ。どうやったんだ?

2013/12/28(土)冬休み

2013/12/28 21:34

年末年始休暇初日ということで、のんびりと過ごしました。

明日からの有明での天王山3連戦を終えてようやく「休暇」だという方もいらっしゃると思いますが、ご健闘をお祈りいたします。駄目外人本があったら私の分も押さえておいてください。

さて、のんびりしてばかりもいられないので、少しずつ開発のほうも始めています。9連休とはいえ、帰省している間に開発するのはちょっと難しいため、実質的には2、3日しか時間が取れませんので、ぼやぼやしていると休みが終わってしまいますから。

Django1.6でPython3に正式対応したということで、次に作るアプリは全面的にそちらに移行するつもりですが、自作ライブラリのTwingoがPython3に対応していないTweepyに依存しているため、その改修に着手しています。

せっかくですからDjango1.5で採用されたカスタムユーザーモデルに対応しようということで、改修というより実質は作り直しですね。Tustle!は1.4でしたし、流山百歌は1.5でしたがユーザー認証絡みの機能は利用しませんでしたので、この機能を使うのは初めてなのです。

なんにせよ、新しいことを学ぶというのは楽しいものです。20代のころに比べれば明らかに学習効率は落ちているのですが、年齢に負けずに学び続けたいものです。

2013/12/27(金)仕事納め

2013/12/27 22:41

なんとか仕事が納まりました。無事に年を越すことができそうです。

思い返してみると、今年は1月から酷い案件に突っ込まれましたが、今の現場では平和にやっております。もっとも、通勤距離が平和ではないのであまり長居したいとは思いませんけど。

30より40のほうが近い年齢になって、左膝が痛む期間も長くなり、痛みも増してきました。最近ほとんどゲーセンに行っていないのもそれが原因です。

スーツでなければいくらでも誤魔化しが効くのですが、客先常駐ではそういうわけにもいきません。早く自社で私服で働けるような身分になりたいです。そうしたら膝をガチガチに固めて働くんだ……!

来年もしばらくは今の現場が続きそうなので、本格的に壊れない程度に頑張ります。