自分用ツール開発に於いての自分自身の変化について、最後は力量の変化の話。前回の記事はこちら。
「できる」から「使っていられる」へ
当社比の話だが、作るツールの質は加速度的に洗練されてきていると思う。
五月から作り始めたものが自分としては会心の出来で、この頃はそのツールの細かい改良だけしているような状態だ。広く文字情報全般を扱うツールということで「TextManager」という名前にした。
そのうち記事を書こうと思っているうちにもう九月になってしまったが、スクリーンショットなどはScrapboxの方にページを作って貼ったので、お暇な人はご覧いただければと思う。→TextManager - Noratetsu Lab Dict.
これまでのツールは、自作だからと細かいところには目を瞑って使っているものばかりだったが、これについてはそういう不安要素を頑張って潰して本当にストレスなく使っている。今や自分の生活をスムーズにするために欠かせない重要な道具になっている。
実際に使っていられるツールというのを考えた時、自分が欲しいと感じる機能を再現できるというのはもちろん大事なのだが、一方で安心して使えるというためにはそれだけでは全然足りない。
正直ただ機能を作るだけなら割と簡単で、垢抜けないコードで良いなら基本的な処理をどうにか組み合わせれば結構色々なものを作ることができる。しかしアプリケーションに於いて重要なのは「起きてはならないことが起きないようにする」ということで、これが大変なのである。エラーのタイミングが悪くてうっかりデータを壊してしまうようなことがあればとても使っていられない。
また、変な実装をすると後から変更を加えたい時に困ったことになる。コードの中に余計な依存関係が出来ていてこんがらがっていたりするとどうしようもない。副作用(=関数内で何らかの状態を変えてしまうこと)のない関数型プログラミングが云々というような話を理解できるようになるには結構かかるし、初心者が書くコードはおそらく副作用だらけである。そして変更を加えたいタイミングというのは最初にコードを書いた時点から結構経っていることもしばしばで、そうなると過去の自分が書いたコードを読めなくなっていることもある。
そのように「後から調整しづらい」ということがあると、だんだん使い続けるのが辛くなってくる。必要を感じたらさっと調整できる、というのがツールを長く使い続けられる一つのポイントだと思う。プロが作るアプリケーションだって日々改良や機能追加が必要なのであって、素人が作るとなれば改造し続けられることは必須である。そうできるようになるために、私は結構な経験値を必要とした。
使い続けるために
せっかく頑張ってツールを作っても、それらは大抵の場合、次第に使わなくなっていく。
理由としては前回書いた感覚の変化の問題もある。つまり必要と感じる機能自体が変わってしまうということだ。しかし最大の理由は、実のところ機能面よりコードに対する信頼性の問題にあった。挙動が怪しいとかコードが整理されていないとか考え方が変わってしまってカスタマイズしにくくなったとか、そういった理由が結構大きい。こういったことが毎度発生するのはビギナーだから仕方ないことだなと思う。
自分のレベルが上がってしまうと、不便を感じたところを直すより新しいものを作った方が遥かに速いということになる。そしてどのツールも完璧ではないので、新しいものを作るなら新しい形を試してみようとなり(前々回でも触れた)、違うタイプのツールが出来上がる。そうして次々ツールが生まれていくことになる。
冒頭で触れたTextManagerはこれまで作ったツールと比べるとカスタマイズ性を意識している。Scrapboxのページにも書いた「ひとり会議機能」「リンク型ノート機能」も後から追加したものだ。過去に作ったツールを丸ごと移植するようなことも一応できなくはない。その意味でそれ以前のツールとは趣が違っており、多分これまでのツールよりは長命になるのではないかと思う。
手を入れて使い続けるにしても、そうするだけの強度を持ったツールでなくてはならず、そこに至るまではちょっと時間がかかるものだと思う。適性があればもしかしたら一瞬で過ぎ去るものかもしれないけれども、そうでもない人間は少しずつ「こうすればよかったのか」という気づきを得てじわじわ進んでいくしかない。
「結局自分で作ったツールなんて出来が悪くて使えない」というような悲観にはプログラミングを学ぶ楽しさで蓋をしつつ、「もう少しどうにかならないかな」と考え続けることが肝要だと思っている。