プログラマ行進曲第二章

主にソフトウェア関連の技術をネタにした記事を執筆するためのブログ

プログラミング初心者こそ『良いコードを書く技術』と『プログラマが知るべき97のこと』を読もう!

プログラミング初心者のみなさん、最近技術書の読書は出来ていますか? 私はコードと格闘する時間が長くなった分、技術書を読む時間がめっきり減っています。コードを書いていると目に見える成果がある分、「よし、今日は少しは生産的なことをしたな」と思ってしまうせいか、調子が出てくるとどんどんコードを書くことにのめり込んで、技術書を読むことを疎かにしてしまうんですよね。

確かにコードを書いて新機能を実装したり、リファクタリングしてコードを綺麗にしていると充実した気分になるし、実際に生産的なことをしてはいるのですが、私のようなプログラミング初心者の場合、ここに大きな落とし穴があると思っています。それは何かというと、「体系的な知識を身につけないままでコードを書くから、無駄なことをする可能性が高くなる」という罠です。実際私はこの罠に最近はまりました。

最近書いた記事で「Pythonニコニコ動画のライブラリを書いている」と言いましたが、この記事でも書いたように、今は専ら新機能実装よりも保守性を高めるためのリファクタリングやテストコードを書くことに力を入れています。

その際に出るわ出るわの疑問の嵐。

  • リファクタリングってこの方針でいいの?自信を持ってこうやるんだとは思えないんだけど…」
  • 「外部APIを参照するコードのテストってどう書くの?外部APIを利用すると利用する毎に返ってくる値が変わるからテストコードが書けない気がするんだけど!」
  • 「プログラムの変数に適切な名前を付けたいんだけど、思いつかない!」

上記は今ぱっと思いついただけで、実際にはもっと頭を悩ませたことがありました。

こういった悩みを抱えつつ手探りでコードを直していたのですが、電子書籍として買った『プログラマが知るべき97のこと』をコードを書くのに飽きたときに読んでいたらリファクタリングに関する記述があり、「これは!」とハッとしました。この本の6章にちょうど知りたかったリファクタリングの方針がビシッと載っていたのです。

プログラマが知るべき97のこと

プログラマが知るべき97のこと

また別の日にたまたま本屋に行って『良いコードを書く技術』を何となく立ち読みしたら、外部APIにアクセスするプログラムのテストの仕方やプログラムの命名に関する記述が適度にあり、「これは買うしかない!」と速攻で購入し、該当箇所を読んで自分のプログラムに適用しました。

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

良いコードを書く技術 ?読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

まだ二つの本とも全体を読み終えているわけではないのですが、さーっと眺めてみたところ、プログラミング初心者に欠けている「プログラマ中級者以上が身につけているグッドプラクティス」が全般的に掲載されていると感じました。

私自身が未だプログラミング初心者だから分かるのですが、プログラミング初心者はプログラミング能力だけが劣っているだけでなく、こういったプログラミングをするに当たって身につけておくと作業しやすくなるというグッドプラクティスを全く身につけていないため、もう既に定石がある程度決まっている問題*1に対し必要以上に頭を悩ませたり、無駄な作業*2を頻繁に行なったりしているんですね。

そういった事態を回避するには、コードを書くだけでなく、体系的な知識をどこかで吸収しなければいけないですよね。そこで、今回紹介した『良いコードを書く技術』と『プログラマが知るべき97のこと』がいいかな、と思い、今回記事にしました。

どちらの本も「ガチガチの技術書、硬派な技術書」というよりは「気軽に読める技術書、柔らかく書かれた技術書」なので、コードを書くのに飽きたら読んでみる、というだけでもプログラミング初心者にとっては地力が付くのではないかと思います。

*1:今回の例で言うなら、外部APIを利用するプログラムのテストなど。

*2:例えばリファクタリングの方針が一定しないために、ころころリファクタリングのやり方が変わってしまうこと