他の記事を書こうとしていて脱線が膨らんでしまったので、その部分だけ先に切り出しておくことにしようと思う。自分用のツール開発に於いての自分自身の変化について。
この記事で何かを言いたいというよりは、他の話をする時にその場で経緯を説明するのは大変なので、部品を予め用意するために書いておく。
そして切り出すか~と思って書き始めたら結局6000字ほどになってしまい、一度に投稿するにはちょっと重くなってしまったので三本立てにすることにした。本流より支流の方が太い感がある。
さて、自分でコードを書いてツールを作るようになってしばらく経つ。
最近はワーッと爆走するようにコーディングするみたいなことは減り、必要なものを必要な分だけ作るという形に落ち着きつつある。プログラミングに割く時間は随分少なくなった。前まではほとんど毎日何かしら書いていたが、ここのところはそうでもない。
まだ「慣れた」という程プログラミングに慣れたわけでもないし、ましてや「わかった」とはとても言えないし、やはり初心者であると思うけれども、その中でも変化したことというのはある。以下の三点にまとめられるだろう。
- 目的の変化
- 感覚の変化
- 力量の変化
今回はこのうちの「目的の変化」について。
可能性の開拓
最初の頃というのは、「JavaScriptで一体何をどこまでできるのか」「初心者の私は何をどこまでやれるのか」ということの追求を主目的にしていた。だから思いついたことを再現することが最大の関心事で、作れたという結果を得るために作っていた。「自分でも○○ができるかもしれない!」というワクワク感に突き動かされていたのである。
その熱意によって、例えばアウトライナー、付箋ツール、Scrapbox風のシステム、テトリス、ぷよぷよ、ドット絵エディタ、といったものを作っていった。(ぷよぷよは公式の教材「ぷよぷよプログラミング」があるが、それを利用したのではなく自分でゼロから考えた。)
最初のうちは、何かを思いついた時というのは具体的なコードを最初から最後まで細かく想像できるわけではないので、「本当にできるのか」というのはやってみないとわからない。実際、想像できなかった問題にぶち当たることもあるし、最終的に実現に至っても当初の予想とは結構違うコードになっていることもあった。その一連の「ある程度は予想できるけど実態については未知の領域」を探検する試みは、本当に楽しいし、次々思いついてしまうのでやめられない。
しかしある程度慣れてくると、「何ができるか」ということについては「まあ何でもできんだろ」というような感覚になっていった。具体的なコードが想像できるようになって、その通りに書けば再現できることがわかってくるからだ。もちろん実際に取り組めば気づいていなかった落とし穴に嵌ったりするだろうが、それでも未知への挑戦という気分はだいぶ薄れている。何か思いついても、本当に必要なものでないなら「やろうと思えばこんなこともできるな」と考えるだけで済ませるようになった。
実用性の吟味
可能性の開拓に全振りしていた状況が落ち着くと、じゃあ自分は何が欲しいのか、ということに関心が移っていった。自分にとって実用的なツールとはなんであるかということだ。それはもちろん最初から考えていたことではあったが、スキルが何もない状態では想像したところでそれを実現できる見込みがないので、本気で考えるには手持ちのカードを増やしておく必要があった。
関心が移り変わり始めてもしばらくは「可能性の開拓」と「実用性の吟味」の間をふらふらしている状態が続いて、「○○型アウトライナー」のようなツールをたくさん作ったし、「これがあれば便利かも」と思えばそれを片っ端から再現した。自分にとって何が実用的かということ自体がはっきりしていなかった。
しかしまあ、「便利かも」と思って作ったものは、だいたいコードが複雑でバグの温床になる割に結局「なくてもいいかも」なものであったりする。そこそこよくても面白くても、別になくて構わないもの。「なくてもよかった」は実際作ってみたからこそ出せる結論だが、それが繰り返されると迷走しているようで少し辛い。でも多分近道はないので、耐えて格闘を続けることになった。
最近は、コードが複雑だとデータの保存処理などを信頼しにくくなってくることも踏まえて、「便利かも」程度では実装しないようになった。
重要なのは「自分に必要な機能を最も使いやすい形で実装する」ということであり、シンプルで安心できて必要かつ十分な機能を作ることを心がけている。そうなってやっと、自分のツールを重用するということができるようになったと感じる。
次回は感覚の変化について。