新年

新年明けましておめでとうございます。既に新年明けて10日も経ちましたが、2008年にやったことをふまえて、2009年に実現したいことを書いていきます。まず2008年自分が楽しくやれたことをあげると、次のものがあります。

CQ出版 Interface 2008年 10月号 第7章 加速度センサで揺れを検知しネットワークで情報送信 P2P地震情報とColdFireマイコン基板の応用(山口 卓也,柏原 秀蔵,畠山 元也,露崎 達也)
 Interface の 付録 ColdFire 基盤をP2P地震情報で応用した事例についてたくやさん他、共同開発者の方と記事を書かせていただきました(私も一応開発メンバーには入ってます)。

■ 難読化ツールの開発
 大学の情報特別演習という講義でのテーマに選択し、ついでなので AVTokyo で発表。「情報特別演習」で検索するとシラバスが見つかりますし、大学の先輩のRyoさん([id:kanbayashi:20070111])の資料も見つかります。 最終発表会は昨年の12月に終え、残りはレポートの提出が残ってます。
 レポートが終わった後、リファクタリングGPLのライセンスの調整・ドキュメントの用意ができ次第ソースコードを公開する予定です。結局「関数の呼び出し規約の難読化」は実装できず、置換と自動化ができるようになった状態です。基盤があるので、機能追加・改造はしやすいかなと思います。

バイナリエディタの開発
 「仕事したくないでござる」などと言いながら、11月, 12月に暇を見て QtC++向けGUIツールキット)触っていたら、Doc/Viewの基本的な部分が形になってきました。ドキュメントクラスはPieceTableを使っています。PieceTableの実装には、QtエディットコントロールソースコードからQFragmentMapという二分探索木を実装したクラスがあったので、それを使っています。今年の夏頃にはリリースしたいため、まずは基本的な機能を優先的に実装してから、色分けのような機能も追加していきたいですね。

■ アルバイト
 2008年の初め頃から某社でアルバイトをさせていただいています。アルバイトでプログラムを作って初めて、トップダウン開発するのが速いこと学びました。普段マネージメントされる側の自分ですが、もうちょっとソフトウェア開発・プロジェクトマネージメント・仕様書の書き方といったことも学んでいこうと思いました。


 2007年に比べると2008年はコードもたくさん書いて、発表もできて、原稿も書くことができて、単位もたくさん落としましたが、充実した1年だったように思います。2008年は実装力をつける、コードをとにかく書くことに注力した1年でした。しかし、コードを書く量は増えましたが、新しい言語の習得はあまり出来ませんでした。また、情報理論アルゴリズムが弱いことを自覚した1年でもありました。そして、ブログによるアウトプットも少なく、Wizard Bibleもパッカーネタを最後に3年間ほど書いていません。
 2008年をふまえ、2009年は実装・理論をバランスよく学び、アウトプットする量も徐々に増やしていきたいと思います。生活の習慣として、継続してインプット・アウトプット・復習するという癖をつけます。
 最後に、2009年の目標(TODOリストに近い?)を列挙してみます。

■難読化ツールのソースコードを公開する
 「プログラム・ソースコードはドキュメント(記事)にまとめて成果」というのが私のポリシーなので、今月末までにソースコード・ドキュメントの公開を目標にします。

■ネットワークアプリケーションの開発
 P2Pを利用したサーバー、クライアントを実装したことがないので挑戦します。P2P地震情報に関連させるか、それとも研究ネタとしてやっていくかは未定ですが、理論と実装をバランスよく攻めていきたいです。

バイナリエディタを完成させる
 夏頃にαリリース、夏には1.0リリースを目標で! 対応OS: Mac OS X 10.5以降/Windows XP以降/Linux

■その他
 具体的に書くのは避けますが、去年できなかったことを終わらせます。その他、英語学習を継続します。Blackhat USA/Japanのスピーカーは…、おそらく難読化ネタが長続きしないため、目指しません。バイナリエディタ開発も含め、優先順位の高いものから取りかかっていきます。優先順位の高いものとは、高い順に、去年できなかったこと、バイナリエディタ開発、ネットワークアプリケーションの開発、セキュリティ関連(難読化、解析ツール開発etc)となっています。難読化の優先度を下げる要因として、自分自身の理論が弱いことがあります。それを克服してからまた難読化にも手を出していきたいですね。「できることをやる」「できないことに挑戦する(失敗してもいい)」というのをバランスよく継続していきたいです。