自作ツールの機能追加は楽しいけれど「シンプル化」も心がけた方が良いと言う話
自作ツールの機能追加は楽しいけれど「シンプル化」も心がけた方が良いと言う話
最近のマイブームは、シンプル化ですね。
たとえばツールを作ったり、自分用のアプリを作ったりしますけれど、よくあるのはどんどん自分が入れたい機能を追加して、そのうち飽きて止めてしまうみたいなケースです。後からそのプロジェクトを再開しようとしたときに、たくさんの機能を追加しかけた状態で終わったために、全体がぐちゃぐちゃになってしまっているという困った状態になっていることがよくあります。
闇雲に自分が入れたい機能を入れるだけではなくて、使わない機能をちゃんと削除したり、あるいは入り組んでいるところをシンプルに整えたりする作業はとても大事だなと最近よく思うのです。それを先ほどはシンプル化と言いました。
狭い言い方をすればリファクタリングになるんですけれど、リファクタリングよりは、もうちょっとアバウトで広いことを私はイメージして話しています。機能を削除したり、ドキュメントを整えたり、という事全般な話ですね。
少し具体的な話をします。私はSNS関連のツールを作ることがよくあります。Twitterの投稿を自分で集めてきたり、あるいは自動的に投稿したり、そんなツールです。そういうのは動かすとすぐに結果が見えますから、とても楽しいですよね。そのために作ったツールに、いろんな機能をつけてもっと便利にならないかと追求したくなります。それは全然悪いことじゃありません。
でも、たとえば、そうやってツールをいじっている最中に仕事の方が忙しくなってしまうと、そのプログラムからしばらく離れてしまう時期が生まれます。そうやって1週間とか10日とか時間が過ぎてから、プログラムをもういっぺん見返すと何をやっているかよくわからなかったりするのです。
特に、プログラムを作るときには、その機能を実装するだけではなく、自分で新しい技術を試してみることがあります。クラウドのサービスや、今まで知らなかったライブラリ等ですね。そうなると、なおさら、時間をおいてから、プログラムを読み返すと、そもそもこれは何をやってるんだろうなどと困ってしまうケースがあるのです。
これは、多少大きなプログラムを作ったことがある人ならば、よく経験することだと思います。自分が作ったプログラムなのに、何をやっているかさっぱりわからないという状況のことです。
しばらく後からそのプログラムを読み返したときに全くわからないというのは、大変困ることですから、対策をしておきたいところです。1つの方法はドキュメントに残しておくことですが、今度はドキュメントとプログラムが不一致になることがあって、話がややこしくなります。
それなりに時間をとって、機能追加ではなくて、むしろ機能削除の作業をすることがなかなか有効だと思います。
プログラムを書いて、新しいライブラリを試して、その結果このままいきそうならばいいんですけど、ちょっと違うかなとなったときには、思い切ってその部分はもう削除してしまう。削除しても、バージョン管理ツールがありますから、ちゃんとその時点での作業結果は記録には残っているわけです。ですから、思い切って削除してしまう。
分量を減らすことは基本的に良いことです。なぜなら、自分が管理する量が減るからです。そして削除するというのは、分量を減らす最も端的な方法の1つです。
ついやってしまうのが、コメントのような形で古いコードを残しておくという失敗です。短期的にはそれでも悪くは無いのですけれど、長期的にそれをやってしまうとどんどんプログラムは肥大化してしまいます。ですから、先ほどから話しているシンプル化するという作業の中でその辺を注意したいと思っています。要するに使わないんだからどんどん削除しましょうということです。
プログラムの中身に限りません。不要なファイルを削除するとか、不要な手続きやドキュメントの項目や、ともかく「念のため」みたいに撮っておくんじゃなくて、思い切ってバンバン削除してしまう。そうやっていると、現在生きている部分が何なのかが明確になります。これこそ大事なことです。なぜなら、次回このプロジェクトに戻ってきたときに、どこが本当に生きている部分なのかを見分けることが非常に楽になるからです。そこにあるものが生きているものであって、そこにないものは生きていない(当然)。
本来なら、開発の途中からそういう作業をこまめにやっておくのが望ましいわけです。特に複数人で作業してるとしたならば、branchを切るなどして、うまくその実験的な部分とほんとに使う部分を分けたりするわけですけれど、私は1人で作業しているので、あまりその辺をうるさくしたくありません。気軽にコーディングしてるわけですからね。
でもいったんプロジェクトから離れてまた戻ってくるときのように、間に時間が重なると話は変わります。自分の手から(自分の意識から)、そのプログラムを話す前に、ちゃんとシンプル化しておくのが後々大変助けになるのです。
プログラムやファイル等のすぐ目に見える構造でもそうですけれど、もっと大きなシステム全体の仕組みのようなものも、シンプル化するに越したことはありません。
私は、実験的にクラウドを使ったり、VPSを使ったりするのですけれど、最近は「その必要がなければ、無理にネットワークにものを置く必要は無いのではないか」と思うようになりました。
というのは、私が作るアプリは自分1人がユーザであることが多いですし、私が使うデバイスはほとんどがMacBookとiPhoneです。またほとんどの場合家で作業しますので、外で扱うツールというのはとても限られているわけです。そのような自分のユースケースに合わせてコンパクトにアプリやツールのシステムを考えるのは妥当なことだと思います。
コーディングは楽しいものですけれど、過去に書いたコードをメンテナンスするというのは、なかなか時間を使って大変なものです。しかもコーディングよりは面白くなかったりします。ですから、コーディングに対して面白みを感じているうちに、そのようなシンプル化をしておくことが大事なのかなと今思っています。
朝の散歩をしながらそんなことを考えていました。
そもそも、この文章はiPhoneを使って音声入力し、自作のツールを使ってマストドンに投稿し、それをさらに自動的に「結城浩のひとりごと」という小さなウェブサイトに集約しています。こういうツールやアプリを作るのが好きなんですよね。
歩きながらの音声入力でほとんどノー編集なので、読みにくい部分があると思いますがごめんなさい。この文章は加筆修正した後にメールマガジンの読みものとなる予定です。
いつもお読みくださりありがとうございます。
最近のマイブームは、シンプル化ですね。
たとえばツールを作ったり、自分用のアプリを作ったりしますけれど、よくあるのはどんどん自分が入れたい機能を追加して、そのうち飽きて止めてしまうみたいなケースです。後からそのプロジェクトを再開しようとしたときに、たくさんの機能を追加しかけた状態で終わったために、全体がぐちゃぐちゃになってしまっているという困った状態になっていることがよくあります。
闇雲に自分が入れたい機能を入れるだけではなくて、使わない機能をちゃんと削除したり、あるいは入り組んでいるところをシンプルに整えたりする作業はとても大事だなと最近よく思うのです。それを先ほどはシンプル化と言いました。
狭い言い方をすればリファクタリングになるんですけれど、リファクタリングよりは、もうちょっとアバウトで広いことを私はイメージして話しています。機能を削除したり、ドキュメントを整えたり、という事全般な話ですね。
少し具体的な話をします。私はSNS関連のツールを作ることがよくあります。Twitterの投稿を自分で集めてきたり、あるいは自動的に投稿したり、そんなツールです。そういうのは動かすとすぐに結果が見えますから、とても楽しいですよね。そのために作ったツールに、いろんな機能をつけてもっと便利にならないかと追求したくなります。それは全然悪いことじゃありません。
でも、たとえば、そうやってツールをいじっている最中に仕事の方が忙しくなってしまうと、そのプログラムからしばらく離れてしまう時期が生まれます。そうやって1週間とか10日とか時間が過ぎてから、プログラムをもういっぺん見返すと何をやっているかよくわからなかったりするのです。
特に、プログラムを作るときには、その機能を実装するだけではなく、自分で新しい技術を試してみることがあります。クラウドのサービスや、今まで知らなかったライブラリ等ですね。そうなると、なおさら、時間をおいてから、プログラムを読み返すと、そもそもこれは何をやってるんだろうなどと困ってしまうケースがあるのです。
これは、多少大きなプログラムを作ったことがある人ならば、よく経験することだと思います。自分が作ったプログラムなのに、何をやっているかさっぱりわからないという状況のことです。
しばらく後からそのプログラムを読み返したときに全くわからないというのは、大変困ることですから、対策をしておきたいところです。1つの方法はドキュメントに残しておくことですが、今度はドキュメントとプログラムが不一致になることがあって、話がややこしくなります。
それなりに時間をとって、機能追加ではなくて、むしろ機能削除の作業をすることがなかなか有効だと思います。
プログラムを書いて、新しいライブラリを試して、その結果このままいきそうならばいいんですけど、ちょっと違うかなとなったときには、思い切ってその部分はもう削除してしまう。削除しても、バージョン管理ツールがありますから、ちゃんとその時点での作業結果は記録には残っているわけです。ですから、思い切って削除してしまう。
分量を減らすことは基本的に良いことです。なぜなら、自分が管理する量が減るからです。そして削除するというのは、分量を減らす最も端的な方法の1つです。
ついやってしまうのが、コメントのような形で古いコードを残しておくという失敗です。短期的にはそれでも悪くは無いのですけれど、長期的にそれをやってしまうとどんどんプログラムは肥大化してしまいます。ですから、先ほどから話しているシンプル化するという作業の中でその辺を注意したいと思っています。要するに使わないんだからどんどん削除しましょうということです。
プログラムの中身に限りません。不要なファイルを削除するとか、不要な手続きやドキュメントの項目や、ともかく「念のため」みたいに撮っておくんじゃなくて、思い切ってバンバン削除してしまう。そうやっていると、現在生きている部分が何なのかが明確になります。これこそ大事なことです。なぜなら、次回このプロジェクトに戻ってきたときに、どこが本当に生きている部分なのかを見分けることが非常に楽になるからです。そこにあるものが生きているものであって、そこにないものは生きていない(当然)。
本来なら、開発の途中からそういう作業をこまめにやっておくのが望ましいわけです。特に複数人で作業してるとしたならば、branchを切るなどして、うまくその実験的な部分とほんとに使う部分を分けたりするわけですけれど、私は1人で作業しているので、あまりその辺をうるさくしたくありません。気軽にコーディングしてるわけですからね。
でもいったんプロジェクトから離れてまた戻ってくるときのように、間に時間が重なると話は変わります。自分の手から(自分の意識から)、そのプログラムを話す前に、ちゃんとシンプル化しておくのが後々大変助けになるのです。
プログラムやファイル等のすぐ目に見える構造でもそうですけれど、もっと大きなシステム全体の仕組みのようなものも、シンプル化するに越したことはありません。
私は、実験的にクラウドを使ったり、VPSを使ったりするのですけれど、最近は「その必要がなければ、無理にネットワークにものを置く必要は無いのではないか」と思うようになりました。
というのは、私が作るアプリは自分1人がユーザであることが多いですし、私が使うデバイスはほとんどがMacBookとiPhoneです。またほとんどの場合家で作業しますので、外で扱うツールというのはとても限られているわけです。そのような自分のユースケースに合わせてコンパクトにアプリやツールのシステムを考えるのは妥当なことだと思います。
コーディングは楽しいものですけれど、過去に書いたコードをメンテナンスするというのは、なかなか時間を使って大変なものです。しかもコーディングよりは面白くなかったりします。ですから、コーディングに対して面白みを感じているうちに、そのようなシンプル化をしておくことが大事なのかなと今思っています。
朝の散歩をしながらそんなことを考えていました。
そもそも、この文章はiPhoneを使って音声入力し、自作のツールを使ってマストドンに投稿し、それをさらに自動的に「結城浩のひとりごと」という小さなウェブサイトに集約しています。こういうツールやアプリを作るのが好きなんですよね。
歩きながらの音声入力でほとんどノー編集なので、読みにくい部分があると思いますがごめんなさい。この文章は加筆修正した後にメールマガジンの読みものとなる予定です。
いつもお読みくださりありがとうございます。
この文章は、音声入力を利用して結城浩のマストドンに投稿したものです。