5月を振り返る

5月のはじめはwiki2htmlとhello algorithmの手直しを毎日少しずつしてきました。TODO管理は個人用非公開wikiでしました。それぞれのプロジェクト・ページの他に、習慣的にやることのリストをwikiに書き出すようになりました。リストには毎日やること、週に一回やること、月に一回やることという分類があります。月に一回やることのリストには、「blogに月のふりかえりを書く」があります。

結局リストにあることを全て達成できた日は一日もありませんでした。実際に達成できたのは平均的に半分程度でしょうか。その代わり、やらないまま自然消滅したりすることも無かったし、次何をしようかと思ったり、次々と思いつく限りのことを1日中することもなくなりました。1日にやることの、何割かして、自分が満足したら、その日は作業を中断しました。その方が集中できたし、ミスも少なくなったからです。wikiにやることリストを付けることで、自分が多くのことを一度にやろうとし過ぎていることもよく認識できました。

それから競技プログラミングの本と、英語文法の本を読み始めました。どちらも毎日少しずつやっていますが、まだモノにはなっていません。英語の勉強はどれくらいで終了できるか計算しやすいし、プログラミングに比べて軽い作業なので、一日の始めか、終わり、またはその両方でやるようになりました。

それから今月末には、enchant.jsを使ってゲームを作ってみました。1日でuiを作って、もう2日で最善手を見つける探索プログラムを書いて、1日でajaxを利用して探索プログラムとプレイヤーが対戦できるようにしました。探索プログラムは完全に競技プログラミングでおぼえたアルゴリズムが使えたので、競技プログラミングの勉強が役に立ったと実感することができました。

探索プログラムは今の素朴なアルゴリズムではC++じゃないと遅すぎて使い物にならないし、web serverはPythonRuby(実際にはPythonを使いました)でないと書くのはしんどかっただろうと思います。GUIはHTML, JavaScriptだったからあんなに簡単に書けたし、マルチプラットフォーム化も簡単です。どれも工夫すれば、もっと少数の言語で解決できますが、色々な言語を知っていれば、あまり賢いプログラムを書かなくても、動くものが作れます。適材適所で言語を使い分ければ、素朴な実装でプロトタイプが作れるんだということに気付きました。