プログラマーが使う思考の七つ道具
Programmers using 7 gadgets for thinking
2016.05.31
Updated by Ryo Shimizu on May 31, 2016, 06:48 am JST
Programmers using 7 gadgets for thinking
2016.05.31
Updated by Ryo Shimizu on May 31, 2016, 06:48 am JST
「最速の仕事術はプログラマーが知っている」が売れたせいか、最近も「実践としてのプログラミング講座 (中公新書ラクレ)」なんてのを上梓したりもしているし、これまでプログラミングと縁がなかったいろんな媒体から「プログラマーならではの仕事の効率化を教えてほしい」と取材を受けることが多くなりました。
・・・が、そもそもそういう話があるとすれば本に書いているので、いまさらあたらしいネタがポコポコあるはずもなく、まあ多少はありますがさすがに毎月記事にできるほどの被らないネタが出てくるわけ無いですよね。
でも、もしかすると意外とプログラマーは当たり前のように使っているけど世間一般の人は知らない道具が世の中には沢山あって、それを知らないと損をしているようなこともあるかもしれない、ということをふと思ったので、忘れないうちに書いておきます。
題して「プログラマーが使う思考の七つ道具」
■テキストエディタ
まずはテキストエディタ。定番中の定番。プログラマーの友。いや、むしろ宗教論争にまで発展することを考えると友というよりは信仰と言ってもいい。それくらい便利なものです。
テキストエディタとは、ワードプロセッサ(Word、Pagesなど)とは根本的に異なり、テキスト、つまり文字の編集(エディット)だけに特化したアプリです。色を変えたり文字を大きくしたり強調したりといったことは一切出来ません。そのかわり、ものすごく高速に動作し、思考を妨げません。仮にどうでもいいメモであっても、一度テキストエディタに書いてから、後述するEvernote
などにコピペすることが少なくありません。
筆者はほぼ全ての本の原稿を何らかのテキストエディタで書いています。
テキストエディタとして人気なのは、vi系とEmacs系、そしてそれ以外です。
vi系で若い人含め絶大な支持を受けているのはvim(ビム)というエディタで、高いカスタマイズ性と使いやすさ、効率的なオペレーションで人気を集めています。
viと双璧を成すのはEmacs(イーマックス,エマックス)で、こちらも高いカスタマイズ性がウリです。Lisp系言語と相性がよく、vi系を好むかEmacs系を好むかで宗教論争に発展するので相手がどんなエディタを使っているのかツッコムことは野暮とされています。
筆者はvi系支持かEmacs系支持かと言われると、どちらかといえばvi系支持です。なぜならviは軽量でどのUNIX系OSにもインストールされていて、すぐに起動できるからです。
ただし、筆者も含めて普段使いのエディタがvi系でもEmacs系でもないプログラマーも大勢居ます。「それ以外」のエディタとしては、VisualStudioやEclipse、Xamarinのような統合開発環境(IDE)のエディタやSublime Textなどがあります。
筆者はSublimeTextを使うことが多いのですが、必要に応じてMono DevelopやVisualStudio Codeなどを使うこともあります。だいたい「それ以外」系のエディタの操作体系は統一されているので、実は一番ユーザーが多いのはvi系でもEmacs系でもない「それ以外」系ユーザーではないかと思うのですが、この話をするとやはり宗教論争になるのでお好きなエディタを使ってくださいとしか言いようがありません。
プログラマーでない人が最初に使うエディタとしてオススメなのはSublime Textです。
最近の原稿は全てこれで書いてます。
Sublime Textが便利なところはいくつかあるのですが、最大のものはWindowsでもMacでもLinuxでも全く同じように使えるという点です。時と場合に応じて扱うべき環境が変化するプログラマーという人種にとって、どの環境でも全く同じように使えるというのは大きなメリットといえるでしょう。
■マークダウン
マークダウンは、主にテキストエディタで使う表記法で、見出しの前に#をつけたりすると、見出しと見なしたりして良い感じに整形してくれることを期待した書き方です。テキストエディタは文字の装飾がなかったり画像を入れられなかったりするので、まずマークダウンで書いてから、必要に応じてブラウザで表示させたりPDFで吐き出したりといったことをします。
たとえばSublimeTextでMarkdownを書くと次のようになります。
見た感じ、ちょっと変わった記号を使って書かれたテキストにしか見えませんが、これをSublimeTextのプラグインである「Markdown Preview」というツールを使ってブラウザで表示されるとこうなります。
こうすると、全ての見出しの書式が統一されるので、美しいドキュメントを最小限の手間で作り出すことが出来ます。
マークダウンのもうひとつのメリットは、プレゼンテーションを作る時に、文字をどこに配置するか、どんなフォントを使うかといった煩雑なことをいちいちマウスで指定しなくていいことです。
プレゼンテーションを作る時に、文字をどこに配置するかということは非常に無駄な時間になります。文字が中心のプレゼンテーションならばなおさらです。
そういうときはマークダウンを有効に使うことで簡単かつ素早くスライドショーを作ることが出来ます。
さっきと同じマークダウンを「Markdown Slideshow」というプラグインにかけるとこうなります。
社内会議など、時間がないときはマークダウンで箇条書きしたスライドショーを見せるのが最も高速かつ無駄がないのです。
プログラマーはマークダウンでプレゼンテーションやドキュメントを書くことが少なくありません。
■ターミナル
エディターに次ぐ、というかひょっとするとエディターよりも重要かもしれないプログラマーの道具がターミナル、またはコンソールと呼ばれるものです。場合によってはコマンドラインとも呼ばれます。
通称「黒い画面」と呼ばれます。
コンソールは、全てのプログラマーと全てのコンピュータ・エンジニアの安住の地です。
エルドラドです。ユートピアです。
なぜならコンソールではなんでもできるからです。
普段、MacやLinuxを使っているプログラマーがWindowsに移ると一番ストレスが貯まるのはターミナルの出来が悪いからです。
先のBuild2016でWindows10がbashに対応したというニュースがありましたが、マイクロソフトが危機感を感じるくらい、Windowsのコマンドラインはひどいものでした。bashとは、UNIX系OSで人気のあるターミナルの一種です。
Mac OSXがプログラマーから急激に人気が出て、いまやプログラマーの大半がMacを使うようになったのも、OSXがUNIX系OSであり、高度なターミナルが使えるようになっていたからです。
ターミナルは大事です。
そしてターミナルでは、事実上なんでもできます。
ターミナルこそがプログラマーが魔法のようにコンピュータを扱う奇跡の秘密が凝縮されているのです。
■コマンド
ターミナルが魔法の杖であるとすれば、コマンドは魔法の呪文です。
ターミナルで打つコマンドはどれも強力ですが、その組み合わせを毎回考えたりするのは面倒なので、ある程度頻繁に使うコマンドをまとめてシェルスクリプトを作ったりします。
ターミナルのコマンドがどう便利なのかというと、たとえばあるテキストファイル(ここではhoge.txt)で使われている文字数を知りたかったら、ターミナルからこう打てばいいのです。
$ wc -w hoge.txt
4482
すると4482個の単語があることがわかります。
重複のない単語の数、つまりファイルに含まれるユニークな単語の数を知りたければ、少し複雑ですがawkというコマンドを使うと簡単に知ることが出来ます。
$ awk '{for(i=1;i avi2mpg.sh
ffmpeg -i *.avi *.mpg
$ chmod 755 avi2mpg.sh
こんな感じでいつでも利用できます。
$ ./avi2mpg.sh
シェルスクリプトは本格的なスクリプト言語でも作ることが出来ます。
PythonやRubyなど、プログラマーが使う高度な言語でもシェルスクリプトが作れるので、いくらでも複雑なことができます。
■キーボード
プログラマーはキーボードを人一倍叩く生き物です。
とにかくキーボードにはお金を惜しみません。
多くのプログラマーが好むのはメカニカルキーボードという、キーの中に強力な板バネとスイッチが入っているもので、これは高価ですがタッチと音がいいのでよく好まれます。プログラマーが誰でも喜ぶキーボードはPFUのHHKことハッピーハッキングキーボードです。
特に通好みの無刻印タイプは贈り物としても喜ばれます。
が、プログラマーによっては日本語配列派と英語配列派に分かれるので、贈り物として送る場合はその相手がどちらの配列を使っているか予め調べておきましょう。
日本語配列と英語配列の見分け方はスペースキーの大きさです。
英語配列はキーが少ない分スペースキーが大きめになっているのが特徴です。
HHKは高価なので何個あっても邪魔になりません。というのも、プログラマーは何台もPCを持っているのが当たり前だからです。
■デュアルディスプレイ またはそれ以上
多くのプログラマーはデュアルディスプレイかそれ以上のディスプレイ環境を必要とします。
コードを書くためのディスプレイと実行結果を確認するためのディスプレイは分かれている方が便利だからです。
場合によっては、さらに調べ物をするための別のディスプレイを必要とすることもあります。
したがって、プログラマーの机には所狭しとディスプレイが並びます。
机が倍の広さになるよりも、ディスプレイが一枚増えたほうがプログラマーの作業は効率的になります。
だからどれだけオフィスが狭くてもディスプレイだけはお金をかけて枚数を増やすというのがソフトウェア開発系企業の特徴です。
以上、プログラマーが使う7つ道具をざっとご紹介しました。
プログラマーでない人も、ディスプレイを増やしたり、キーボードにこだわったり、シェルスクリプトが使えるようになったりするとなにかと便利です。ぜひ挑戦してみてください。
おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)
登録はこちら新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。