趣味でプログラミングをはじめようとするときの様々な誘惑

趣味でプログラミングをはじめようとする人が陥りがちな罠と、それについてのわたしの考え方について書きます。一部については私が実際にひっかかった罠で、それ以外は自分以外の人を見ていて思ったことです。仕事だと話は変わってくるのですが、それについては触れません。

情報量が多い昨今、「さあプログラミングをはじめよう」となっても、目の前には次のような様々な選択肢が待ち受けています。

初心者はこれらのうちのどれを選ぶべきかというところでまず躓いて、まったく先に進めなくなることが多々あります。ただ、このへんは使ってみなければわからない好みの部分が非常に多いので、まずはフィーリングで適当に選んで、合わないものがあれば別のものに乗り換えればいいと思います。なんなら複数を使い分けてもいいんです。

迷いで頭がいっぱいになってしまったら、自分のやりたいことはプログラミングをはじめたいことであってツールを選びたいわけではない、とにかく手を動かしてプログラミングしないと何も始まらない、ということを思い出してもらいたいと思います*1

参考までに、たとえばわたしは次のような流れで使うツールを選んできました。

  • プログラミング言語: なんとなくCがかっこよさそうという理由ではじめて、そのままOSカーネル屋さんになったので使い続ける。日々の作業を楽にするためにbashやらRubyやらを覚えた。Pythonは流行ってたので使ってみようと思ったが音楽性の違いを感じて大して使わないまま、現在は「そこそこ読めるけどあんまり書けない」という状態になっている。あとは仕事でGoを使うようになって、かつ、気に入ったので今も愛用している。
  • OS: 最初はWIndowsを使っていたが、Linuxインストールブームの火が残っていた大学4年生のころに「なんとなくかっこよさそう」「すごそう」という理由で使い始めた。いろいろなツールが無償で手に入って便利だったので、そのまま今に至る。WindowsmacOS上での開発については、やる必要を特に感じていないのでやっていないだけ
  • テキストエディタ: Linuxに入門したころ、当時流行っていたemacsvimの2つのうちのどちらかを選ぼうと根拠の無い決意をして、2つ評価をして上で、より気に入ったemacsを使うようになった。その一方で、vimもrootで作業するときなどに使っている。その後15年ほど経過した去年、.emacsの編集に疲れていたころに「俺は別にエディタの設定をしたいわけでもelispを愛しているわけではないなあ」と気づき、かつ、VSCodeが複雑な設定をしなくてもよくて楽らしいと聞いた。使ってみたら実際その通りだったので、emacsを完全引退して今も使い続けている。

この考え方に異論がある人はいくらでもいるでしょうが、これは「私の意見」なので、とやかく言われる筋合いはありません。みなさんも最初はフィーリング、その後は人の意見を参考にしつつも、あくまで自分の感性を信じて心地よいものに次第に移っていけばいいと思います。

これ以外にも「プログラミングするからには開発を支援するツールをマスターしなければ」と、必死に次のようなものの網羅的な知識を得ようとして疲弊している人をよく見ます。

これらについても、こだわり出すといつまでたってもプログラミングをはじめられないので、まずは小さなプログラムをたくさん書みることをおすすめします。その後に実際に困ったときに使い始めて、かつ、必要なところだけを徐々に覚えていくとよいでしょう。

とくにgitは機能が異常に豊富で、マスターしようなんて思うとかなりキツいですし、そんなことをする必要もありません。実際わたしもgitのコマンドで知っているのはおそらく20個ほどだけですし、それらのオプションについても知らないもののほうが多いです。

上記のツールが必要になるタイミングは典型的には次のようなときでしょう。

  • gitなどのバージョン管理システム: ソースコードのどこをどんなふうに変更したかがわからなくなったとき、安定版と開発版を分けたくなった時、複数人で開発をするとき*2
  • CircleCIなどのCIツール: マージ前、リリース前の手動テストが苦痛になったとき
  • Redmineなどのバグ管理システム: 複数人で開発するようになったとき。脳内で問題を覚えておくのが苦痛になったとき

いろいろ書きましたが、最後にまとめ。枝葉末節にこだわらず、本来やりたいことをするのを最優先に考えましょう。たのしくプログラミングしましょう!

*1:その後ツールにのめりこんで楽しくなった、というのであればそれはそれでいいです

*2:おそらくgitはこのリストの中で一番早く使い始めることになるでしょう。すぐないとやってらくなると思います