生産性を向上するアドバイス『プロダクティブ・プログラマ』
生産性を高めるためのテクニック集です。 プログラミングを効率よく行うためのテクニックとノウハウ、そして哲学などが詰まっています。
プログラマとして早いうちに身に着けておきたいテクニックが満載です。初心者の方にこそ読んでほしい本です。
以下にこの本に書いてある、さまざまなテクニックの概要をメモしておきます。 詳細なテクニックについては、今後プログラミングテクニック集として記事にしていこうと思います。
生産性を高めるために
日常的に「もっと効率の良い方法はないのか」と意識することが重要です。 この本では「加速」「集中」「自動化」「正準化」という観点から、効率化するためのノウハウを学びます。
基本的には、効率化できるパターンに名前をつけてグループ化し、有効なテクニックを紹介する形になっています。どちらかといえばプログラマ本人が変わるのではなく、コンピュータにやらせるとかアプリケーションを改良することで効率化するテクニックです。
着眼点が良く新しい気づきもあるので、読み終わった後には真似するだけでなくオリジナルのテクニックも思いついていると思います。
加速
マウス入力よりもキー入力のほうが速い
ネットサーフィンとかクリエイティブなことに関しては別ですが、プログラミングをする際にはなるべくマウスを使わないようなやり方を探すと良いです。
キーボードにおいてある指をマウスに動かして、またキーボードに戻ってくるという動きが無駄です。
なるべくマウスを使わずに必要なソフトを開いたりできるようにしましょう。コマンドラインを有効に活用することはもちろん、コンピュータについている基本的な機能を見直すことが必要です。
それでも難しい場合はトラックパッドとかトラックボールとかをキーボードの手前においたり、Lenovoのトラックポイント(赤ポッチ)を検討すると良いです。それだけでもすごく捗ります。
クリップボードの拡張
クリップボードの履歴を再利用できるソフトをインストールしましょう。OSやバージョンなどによって利用できるものは異なりますが、「CLCL」とか「Clibor」とか「CopyQ」とかさまざまなものが存在しています。 「クリップボード拡張」で検索すればいっぱい出てきます。
この機会にスマホにもインストールしておくと良いです。あまり使わないのですがスマホでもやっぱり便利です。
cdコマンドより便利なpushd・popd
コマンドラインでディレクトリを移動するコマンド「cd」ですが、もっと便利な「pushd」「popd」ものがあります。LinuxやMacではもちろん使えて、Windowsの場合はCygwin上などでは利用できます。コマンドプロンプトでは使えなかったと思います。
pushdはカレントディレクトリの移動に加えて、カレントディレクトリをスタックに保存します。 作業が終わったらpopdを実行することでスタックに保存していたディレクトリに戻ることが出来ます。 スタック形式になっているので、「FILO」先入れ後出し形式です。すなわち、popdは最後に入れたディレクトリから順番に移動します。
集中
findコマンド
ファイルを開くときには、findコマンドを利用できるようになるといいです。 ファイル管理はいつもややこしくなり、目的のファイルを探すのはかなり面倒になります。 普段から整理をしていても、なかなかうまく管理できないものです。
ここではいっそfindと正規表現を使ったファイルの検索方法を学ぶことで、検索によってファイルアクセスを快適にする方法を学びます。
コマンドプロンプトのカスタマイズ
プログラミングを行う上でよく使うコマンドラインですが、Windowsでは設定をショートカットごとに保存出来ます。
開くたびに、ウインドウを大きくしたり設定を変更したりしなくて済むように、カスタマイズを有効にします。カスタマイズ例都市tえ以下の提案がされています。
- スクロールを無限にする
デフォルトは300行なので、実行結果やエラーのログメッセージが最後まで確認できないときがあります。大きく増やしておきましょう - 横幅を最大にする
横スクロールしながら使うのは面倒なので、最大にしましょう - 決まった位置にウインドウが開くようにする
利用する内容ごとに異なる位置に開くようにすることで直感的に使いやすくなります。Vimは左上、Gitは右上とか。 - 画面の文字や背景の色を変える
利用する内容ごとに見た目を変えることでも直感的に使いやすくなります。 - 簡易編集モードをオフにする
オンになっていると、表示されている文字をコピーしようとして選択すると、プロセスが一時停止してしまいます。
モニターを複数使う
デュアルディスプレイです。今時の企業であれば之くらい対応してもらえると思います。 出来れば自宅でのプログラミング学習の際にも画面が2つあると良いです。お金はかかりますが間違いなく快適です。
安いものもありますが、ちょっと値をはるものであれば縦向きにできるものとかあるので、色々探してみると良いです。
自動化
ブラウザ操作をSeleniumに任せる
特にテストのときなどに活用しますが、普段のネットサーフィンでも利用できます。ブラウザでの操作を自動化してくれるので、休憩時のネットサーフィンとかも捗ります。同じことを何度もやっていることに気づいたら自動化出来ないか検討してみましょう。
正準化
バージョン管理
必ず必要です。プログラミングをするに当たって、どんな小さなものでもバージョン管理は行いましょう。 ソフトの設定ファイルとか、メモとかもバージョン管理するのがいいです。Githubも無料でプライベートリポジトリが作れるようになったので、ガンガン使うといいです。
バージョン管理するべきでないファイルも中にはあります。IDやパスなどが書かれたファイルが代表的でしょうか。それらもなくなると困るので、必ずバックアップは取っておきましょう。
テスト駆動設計
この本では触りの部分についてのみの紹介です。詳細な内容は他の書籍を参考にしましょう。 個人でも小さく始めることはできるので意識してみると良いです。
哲学
「本質的特性と偶発的特性」「オッカムの剃刀」「デメテルの掟」といった、昔の哲学から着想を得たプログラミング哲学が紹介されています。どれもためになるもので、目の前の問題で頭が一杯になってしまうのではなく、そこから学べることはないか・なぜ起きたのかといった観察・反省を行うことが重要です。次に起きた時、または次は起きないように学びを活かせるようになりましょう。
これらの教訓の様に、自分なりの教訓を見つけ出してノウハウ化できるといいです。
理想のツール
理想のテキストエディタ
プログラムを行う上で、自分に合ったツールを見つけることも大切です。やりたいことに合わせてさまざまなツールを使い分けましょう。
この本では、例として以下のエディタに触れられていました。触ったことがないものがあればこの機会に使ってみることをおすすめします。
- Vim
- Emacs
- JEdit
- TextMate
おわりに
生産性を向上するためのさまざまなアドバイスが書いてある本です。どれも間違いなく参考になります。 もっと効率の良いやり方がないか意識することは大切ですが、忙しいときには忘れてしまいがちです。 ですので、少し仕事が落ち着いたとか少し余裕あるという時間を使って、このような本の内容を試してみるといいです。中にはあまり効果がないもの、合わないものもあると思いますが、そこからの新しい発見もきっとあるはずです。本や同僚からもらえるアドバイスを柔軟かつ積極的に試してみることも、生産性を上げるためのコツだと思います。