まずはこのステップを実行してみて - 終わらない修正に振り回されず、作業効率と気分が目に見えて変わるコツ
- 毎日始める前にタスクを3つだけリストアップする
迷子感を減らし、進捗が実感できる
- 2時間ごとに5分間モニターから離れて手首を回す
集中力の低下や指の疲労を予防できる
- ショートカットキーを週1個覚える
マウス操作が10%以上減り、合計作業時間も短縮できる
- `今後も使う`と感じたコードは10行以上なら都度テンプレート化
`また書く`手間が大幅になくなる
終わらないコードの海と迷子感
# プロのように速くコーディングする方法(燃え尽きたり、心を失ったりせずに)
### それは、彼らがあなたより優れているからではない
プログラミングプロジェクトって、あれ、なんでこんなに終わらないんだろうって感じる瞬間ありませんか。たぶん私だけじゃないはず。いや、本当に毎回そうなんだけど、「もう早く終わらせたい!」と思いながらも、その手段が分からなくて結局ダラダラしてしまうこと、多いです。気付けば時間ばかり過ぎて、自分自身がどこにいるのか分からなくなる…ああ、まさに迷子状態ね。頑張ってるつもりなのにタブ切り替えてばっかだし、タイプミスも連発。それと…指先が疲れて動きたくなくなるループもある。不思議だよね、コードの海を地図なしで漂流してる気分になる。
でも実際には、「速いプログラマー」って生まれ持った才能とかじゃなくて、習慣によって作られる――そんな話もある。うーん、本当かな?疑いたくなるけど。でもまあ、多くの場合、その速度アップの裏側にはちゃんとしたパターンや工夫が隠れていて、それが怠けるためじゃなくて手抜きを防ぐためにも役立つという説も聞いたことあるし。ま、この辺で急に話逸れるけど…最近コンビニのお弁当コーナー狭すぎじゃない?いや関係ないや、ごめん戻します。
以下は、高速なプログラマーによく見られる方法について書いてみます。そして彼らが他と何となく違うところについてもちょっと触れます:
## 1. キーボードを徹底的に活用する
マウス?
### それは、彼らがあなたより優れているからではない
プログラミングプロジェクトって、あれ、なんでこんなに終わらないんだろうって感じる瞬間ありませんか。たぶん私だけじゃないはず。いや、本当に毎回そうなんだけど、「もう早く終わらせたい!」と思いながらも、その手段が分からなくて結局ダラダラしてしまうこと、多いです。気付けば時間ばかり過ぎて、自分自身がどこにいるのか分からなくなる…ああ、まさに迷子状態ね。頑張ってるつもりなのにタブ切り替えてばっかだし、タイプミスも連発。それと…指先が疲れて動きたくなくなるループもある。不思議だよね、コードの海を地図なしで漂流してる気分になる。
でも実際には、「速いプログラマー」って生まれ持った才能とかじゃなくて、習慣によって作られる――そんな話もある。うーん、本当かな?疑いたくなるけど。でもまあ、多くの場合、その速度アップの裏側にはちゃんとしたパターンや工夫が隠れていて、それが怠けるためじゃなくて手抜きを防ぐためにも役立つという説も聞いたことあるし。ま、この辺で急に話逸れるけど…最近コンビニのお弁当コーナー狭すぎじゃない?いや関係ないや、ごめん戻します。
以下は、高速なプログラマーによく見られる方法について書いてみます。そして彼らが他と何となく違うところについてもちょっと触れます:
## 1. キーボードを徹底的に活用する
マウス?
マウスどこいった?キーボード主義者の謎習慣
可愛いんだけどさ、動作が遅いんだよね。あ、いや別にディスってるわけじゃなくて…まあ多くのプログラマーは、そのうちこの段階に辿り着くらしい。なんかキーボードを使いこなす術を身につけて、仕事を捌いていくんだって。でもキーボードって実際、マウスより速いことが多い気がする。ただしきちんと扱えればの話で。そう言えば筋肉記憶にも合致するし、それも妙な話だよね。
ところで、新しいファイル開く時にクリックじゃなくショートカットキー使ってる自分に気付いた瞬間、「あー、自分もそろそろその域かな」って思ったりするわけで。しかし現実問題としてコーディング中はほぼマウス触らない人もいるらしく…それ考えると自分まだ甘いのかな、とか思っちゃう。
噂では、本当に素早くタスクこなす猛者たちはキーボードを第二の脳みたいに駆使していて、ショートカットやコマンド、それからマクロまで日常的に操縦してるとか。それ本当なの? ま、いいか。しかしもし今もファイル開く度クリックしてたり、コピー&ペースト手作業だったりすると、一部界隈では「やっぱ遅め」と見なされちゃうこともあるみたい。うーん、それもちょっと納得できるような…。
ところで、新しいファイル開く時にクリックじゃなくショートカットキー使ってる自分に気付いた瞬間、「あー、自分もそろそろその域かな」って思ったりするわけで。しかし現実問題としてコーディング中はほぼマウス触らない人もいるらしく…それ考えると自分まだ甘いのかな、とか思っちゃう。
噂では、本当に素早くタスクこなす猛者たちはキーボードを第二の脳みたいに駆使していて、ショートカットやコマンド、それからマクロまで日常的に操縦してるとか。それ本当なの? ま、いいか。しかしもし今もファイル開く度クリックしてたり、コピー&ペースト手作業だったりすると、一部界隈では「やっぱ遅め」と見なされちゃうこともあるみたい。うーん、それもちょっと納得できるような…。

指が燃えるようなタイピング、それ本当に必要?
彼らのタイピング、あれは何だろう…まるで指先が火花を散らしているみたいに見えるときがある。いや、本当にそんな光景を目の当たりにしたわけじゃないけど、そんなふうな表現が妙にしっくり来てしまって。議論もそこそこ白熱しててさ、「コーディングできれば打鍵速度なんか関係ないよ」っていう人もいれば、まあ実際には違うだろうとか思ったり。でも、多分ね、熟練のプログラマーたちってたいていタイピングだって上手なんだよな。えっと、これ本当なのかなぁ、と時々疑問にはなるんだけど…。速くタイピングできるほうがプログラミング自体の進行速度にも影響しやすい——いや、絶対そうとは限らないかもしれないけど、その可能性は十分あると思う。でも別に、タイプスピードバトルで勝たなきゃならない訳じゃなし。たださ、キー配列探しながら作業すると案外そっちばかり気を取られて時間も集中力もジリジリ削れる。…今こうして文章打ちながら、自分でも感じることだったりする。本筋戻ろう。
## 3. 彼らはツールを使いこなすだけでなく、習熟している
素早くコードを書く人間って、不必要に「車輪の再発明」なんてやって時間無駄遣いすることは滅多にないような気がするんだよね。ああ、それでもふと昔やった無駄な努力を思い出して落ち込むこともあるけど…。話を戻せば、とても迅速にコーディングできるようなプログラマーは、自分の手元のツール類──特にコマンドライン操作とか──についてかなり深く理解しているものだと思う。IDEだったりデバッガーだったりフレームワークだったり、それから当然コマンドライン…もう全部と言っていいくらい器用に扱えて、その背後には相応の知識量が積み上げられてるわけで。そして、多くの場合だけど、人々が繰返し行わざるを得なくなる面倒ごと――その自動化方法にも精通してたりする。不意になぜこんなにも道具好きなのか自分でも説明つかなくなる瞬間あるんだけど……まあ、それぞれ理由はいろいろあるんだろうね。また脱線したので、本題へ引き戻すと、この点こそ彼らが他とは異なる部分なのかもしれない、とぼんやり考えたりする。
## 3. 彼らはツールを使いこなすだけでなく、習熟している
素早くコードを書く人間って、不必要に「車輪の再発明」なんてやって時間無駄遣いすることは滅多にないような気がするんだよね。ああ、それでもふと昔やった無駄な努力を思い出して落ち込むこともあるけど…。話を戻せば、とても迅速にコーディングできるようなプログラマーは、自分の手元のツール類──特にコマンドライン操作とか──についてかなり深く理解しているものだと思う。IDEだったりデバッガーだったりフレームワークだったり、それから当然コマンドライン…もう全部と言っていいくらい器用に扱えて、その背後には相応の知識量が積み上げられてるわけで。そして、多くの場合だけど、人々が繰返し行わざるを得なくなる面倒ごと――その自動化方法にも精通してたりする。不意になぜこんなにも道具好きなのか自分でも説明つかなくなる瞬間あるんだけど……まあ、それぞれ理由はいろいろあるんだろうね。また脱線したので、本題へ引き戻すと、この点こそ彼らが他とは異なる部分なのかもしれない、とぼんやり考えたりする。
道具箱を開ける手つき、誰も気にしない裏ワザ集
他人が手で行っている作業をスクリプトに落とし込む、まあ、そんな風にして余計な繰り返しを省くのが好きな人っているよね。うーん、気づいたら何でも自動化しちゃう癖がついてることも多い。もちろん、デバッガとかテストフレームワーク、それからエディターやコードライブラリなんかも扱えること―ああ、そういえばドキュメントツールも忘れちゃだめだ―は結構重要だったりするけど。でもさ、こういうツール群に通じていれば、やたら面倒な手作業に時間取られることが減るって話…いや待って、自分の場合は逆にツール調べるのに夢中になって本題忘れることもあるか。まあ、本筋としては作業効率化には欠かせない力だと思う。
## 4. デバッグが得意
優秀なプログラマーにはデバッグ上手が多い、とよく言われているけど、本当のところどうなんだろう…ま、たぶんそうなんだろうね。問題の特定から切り分け、その解決まで辿り着く速さという点で初心者と歴然とした差を感じる瞬間もあるし。それに知識量というより、一貫したアプローチで予期せぬ問題にも立ち向かえる姿勢のおかげじゃないかな、とぼんやり思ったりする。バグなんて出るものは出るし、高度なスキルを持つ人は慌てたりパニックになったりせず、本質的な部分だけ見据えて集中できる傾向が強い(とはいえ、人によって多少違うけど)。ただ推測でごまかすような対応はあまり見受けられなくて、それもまた特徴と言える気がする。あっ、お茶淹れてたの忘れて冷めちゃった…。話戻すと――デバッグ力こそ彼らの底力なのかもしれないね。
## 4. デバッグが得意
優秀なプログラマーにはデバッグ上手が多い、とよく言われているけど、本当のところどうなんだろう…ま、たぶんそうなんだろうね。問題の特定から切り分け、その解決まで辿り着く速さという点で初心者と歴然とした差を感じる瞬間もあるし。それに知識量というより、一貫したアプローチで予期せぬ問題にも立ち向かえる姿勢のおかげじゃないかな、とぼんやり思ったりする。バグなんて出るものは出るし、高度なスキルを持つ人は慌てたりパニックになったりせず、本質的な部分だけ見据えて集中できる傾向が強い(とはいえ、人によって多少違うけど)。ただ推測でごまかすような対応はあまり見受けられなくて、それもまた特徴と言える気がする。あっ、お茶淹れてたの忘れて冷めちゃった…。話戻すと――デバッグ力こそ彼らの底力なのかもしれないね。

バグ発見に躍起になる夜、焦りは禁物だったりする
彼らは観察して、素早く修正する。まあ、それだけじゃなくて——いや、つい脱線しそうになったけど、やっぱり本題に戻ろう。
## **5. 彼らの検索能力は高度である**
えっとね、彼らは「どこで情報を探すか」とか「どう的確に探るか」について本当に分かっている気がする。manページを引っ張り出してきたり、自分の書いたソースコードや他人のものをまじまじと眺めたりすることも日常茶飯事だ。ふとした瞬間、ドキュメントとか自分自身のソースからヒントを拾える場合があって、そのほうがGoogleより速いことも結構あるんだよね。…あれ?今何を書いてたっけ。あ、そうだ、「何を尋ねればいいか」「どこを見るべきなのか」それから無駄なくドキュメントやコードを漁る術――こういう知見がちゃんと身についている。それに比べて初学者は……いや悪口じゃないんだけど、ともかくネット検索だけに頼る姿勢はあまり感じられないという印象かな。ま、いいか。
## **5. 彼らの検索能力は高度である**
えっとね、彼らは「どこで情報を探すか」とか「どう的確に探るか」について本当に分かっている気がする。manページを引っ張り出してきたり、自分の書いたソースコードや他人のものをまじまじと眺めたりすることも日常茶飯事だ。ふとした瞬間、ドキュメントとか自分自身のソースからヒントを拾える場合があって、そのほうがGoogleより速いことも結構あるんだよね。…あれ?今何を書いてたっけ。あ、そうだ、「何を尋ねればいいか」「どこを見るべきなのか」それから無駄なくドキュメントやコードを漁る術――こういう知見がちゃんと身についている。それに比べて初学者は……いや悪口じゃないんだけど、ともかくネット検索だけに頼る姿勢はあまり感じられないという印象かな。ま、いいか。
検索力で勝負する奴らとドキュメント沼あるある
StackOverflowって、まあ確かに便利なサービスなんだけど…実際のところ、自分が今いじってるシステムをちゃんと理解することも、それ以上に大事だったりするんだよね。あ、でも最近は前よりもStackOverflowを使う人が減った気がしていて――いや、これ本当なのかな?単なる思い込みかもしれないけど。ChatGPTの登場とか、その影響もきっと無視できない気がする。ま、いいか。
## 6. 計画を立てる
えっと、ときどきノートにアイデアを書き留めたりしてる。なんとなくパッドに書けることを書いておけば、「全部記憶で覚えておかなきゃ」みたいなプレッシャーから少し解放される感じがあるんだよね。それでさ、コードを書く前に必要そうな数式や変数名とかをメモしておくと、一から全部調べ直す手間が減って「あー助かった」みたいになること、多いと思う。そういう方法を続けていると、不意に振り返ったとき「ちょっと効率良くなってる?」なんて印象もあったりして……いや、本当に効率化できているのか自信はないんだけど。でも何もしないよりはマシだろうし。
## 7. 練習と経験
継続的な練習や経験のおかげで、たぶんだけど、大抵の場合途中で詰まらずコードを書けたりするようになった気もする。不思議だよね、それこそ母語みたいな感覚になる瞬間とかあるし、新しい分野じゃない限りわりとスムーズにタスク完了まで持っていけたりする時も多い。ただ…新しいジャンルだったらやっぱ戸惑うこと多々あるので、そのへん過信できないというか。「こういう時どうすればいいんだっけ」と急につまずいたりして…ああ、それでも少しずつ慣れていくしかないのかなぁ、と自問自答した後また作業へ戻る日々。
## 6. 計画を立てる
えっと、ときどきノートにアイデアを書き留めたりしてる。なんとなくパッドに書けることを書いておけば、「全部記憶で覚えておかなきゃ」みたいなプレッシャーから少し解放される感じがあるんだよね。それでさ、コードを書く前に必要そうな数式や変数名とかをメモしておくと、一から全部調べ直す手間が減って「あー助かった」みたいになること、多いと思う。そういう方法を続けていると、不意に振り返ったとき「ちょっと効率良くなってる?」なんて印象もあったりして……いや、本当に効率化できているのか自信はないんだけど。でも何もしないよりはマシだろうし。
## 7. 練習と経験
継続的な練習や経験のおかげで、たぶんだけど、大抵の場合途中で詰まらずコードを書けたりするようになった気もする。不思議だよね、それこそ母語みたいな感覚になる瞬間とかあるし、新しい分野じゃない限りわりとスムーズにタスク完了まで持っていけたりする時も多い。ただ…新しいジャンルだったらやっぱ戸惑うこと多々あるので、そのへん過信できないというか。「こういう時どうすればいいんだっけ」と急につまずいたりして…ああ、それでも少しずつ慣れていくしかないのかなぁ、と自問自答した後また作業へ戻る日々。

頭の中メモ帳だらけ計画性ゼロでも何とかなる?
問題に対して適切な解決策をパッと見抜く感覚。うーん、これって一朝一夕では身につかないんだよね。ま、たいていは経験で養われるものなんだけど、世の中には妙に早熟なプログラマーもいるらしい。ああ、なんであんなに呑み込みが早いんだろうって羨ましくもなるけど。でも、その人たちって、自分の得意領域だけじゃなくて、時には他人の書いたコードまでしっかり観察したりして、新しい解決法を盗み見ていることが多い気がする。途中で話がずれたけど、とにかく学び方もそれぞれってことか。
## 8. 自信
自分のやっていることが「これだ」と分かった瞬間、作業スピードはグッと上がる…たぶん。プログラミングという行為は、料理人にとっての調理、水泳選手にとっての泳ぎと同様、ごく自然な営みになる場合もある。それはただ手を動かす以上に、自分の存在そのものになり得る――なんて言ったら大げさかな。でも実際、そのくらい没入できたりするから不思議だよね。彼らは自分自身の進め方を信用しているようだし、膨大な量のコーディング経験から何が有効で何が違うか、ある程度分かる知識を持つ場合もある。いや、それでも全て推測で済むわけじゃないけど。「推し量る」というより「実践しながら進めている」感じ?もちろん、自信なんて最初から湧いて出るものじゃなく、多くの場合は地道な努力や続けることによって後からじわっと育つ副産物だったりするんだよね。「ま、いいか。」
## 8. 自信
自分のやっていることが「これだ」と分かった瞬間、作業スピードはグッと上がる…たぶん。プログラミングという行為は、料理人にとっての調理、水泳選手にとっての泳ぎと同様、ごく自然な営みになる場合もある。それはただ手を動かす以上に、自分の存在そのものになり得る――なんて言ったら大げさかな。でも実際、そのくらい没入できたりするから不思議だよね。彼らは自分自身の進め方を信用しているようだし、膨大な量のコーディング経験から何が有効で何が違うか、ある程度分かる知識を持つ場合もある。いや、それでも全て推測で済むわけじゃないけど。「推し量る」というより「実践しながら進めている」感じ?もちろん、自信なんて最初から湧いて出るものじゃなく、多くの場合は地道な努力や続けることによって後からじわっと育つ副産物だったりするんだよね。「ま、いいか。」
経験値という名の無限ループ練習、その果てに…
しっかり学んで、練習を積み重ねていくとさ、なんとなく自信ってものは時間が経つにつれて勝手についてくる気がするんだよね。ま、自分でも実はそんなに確信ないけど。でも、焦って急ごうとしても意味なくて…うーん、結局ゆっくり身についていくらしい。ああ、途中で変なこと考えてたけど、ともかく自然と身につく、それだけは本筋だと思う。
## 9. 楽しむこと
その行為自体を楽しめれば、不思議と気づいたら随分時間が流れてたりする。いや、本当に椅子に座ったまま延々作業してても別に苦じゃない時もあるんだよね。僕の場合はコーディングが割と好きだから…まあ、そのせいで多分何時間もキーボード叩いてても飽きないのかもしれないな。でもこれ、人によるよね?もしコーディングが性に合ってるなら、多分「今何時?」とかどうでもよくなる瞬間すらあると思う。えっと、遊び場みたいに感じるというか、キーボード触ってる手元見て、「生き物作ってる」みたいな錯覚になることさえある。不思議だ…。ああ脱線した。でも、その楽しさこそが他では得られない推進力になったりすることも、ごく稀にだけどあり得ると思うんだ。
## 9. 楽しむこと
その行為自体を楽しめれば、不思議と気づいたら随分時間が流れてたりする。いや、本当に椅子に座ったまま延々作業してても別に苦じゃない時もあるんだよね。僕の場合はコーディングが割と好きだから…まあ、そのせいで多分何時間もキーボード叩いてても飽きないのかもしれないな。でもこれ、人によるよね?もしコーディングが性に合ってるなら、多分「今何時?」とかどうでもよくなる瞬間すらあると思う。えっと、遊び場みたいに感じるというか、キーボード触ってる手元見て、「生き物作ってる」みたいな錯覚になることさえある。不思議だ…。ああ脱線した。でも、その楽しさこそが他では得られない推進力になったりすることも、ごく稀にだけどあり得ると思うんだ。

自信って後からくるものかもしれない話
一番大事なのは、結局のところ「自分なりのプロセス」を持ってること…なんだろうね。ああ、でもさ、時々ものすごくできるプログラマーが「別に特別なやり方なんか無いよ」って言っちゃったりもするんだけど、たぶんそういう人って、自覚しないほど手順が身体に染みついてる気がしてならない。実は観察してみれば明らかで、大抵の場合、その人たちは巨大で面倒な課題をサクッと小さいタスクに細分化したりする。まあ…ぼーっと突っ走るタイプには見えなくて、不思議と段取り良く作業を終えてしまうんだよね。
うーん、この話ちょっと脱線するけど、「どうしてそんな風に出来ちゃうの?」って聞いたことある。でも返事は大体「ただやってるだけ」だったり…。とはいえ、それ何回も同じ行動繰り返すことで脳の回路が勝手に形成されてきた結果なんじゃ?ふと思ったりした。でもまた本題戻すと…。**じゃあ…もっと速くコーディングしたい場合、どうしたらいい?** それなら、とりあえず“成り行き任せ”から卒業する方法もあるわけで。ま、いいか。
うーん、この話ちょっと脱線するけど、「どうしてそんな風に出来ちゃうの?」って聞いたことある。でも返事は大体「ただやってるだけ」だったり…。とはいえ、それ何回も同じ行動繰り返すことで脳の回路が勝手に形成されてきた結果なんじゃ?ふと思ったりした。でもまた本題戻すと…。**じゃあ…もっと速くコーディングしたい場合、どうしたらいい?** それなら、とりあえず“成り行き任せ”から卒業する方法もあるわけで。ま、いいか。
楽しい時間はあっという間、プロセスの向こう側
プロセスを構築するって、なんだか最初は面倒そうに感じるけれど、始めてしまえば意外と楽しくなるものかもしれない。ツールを使いこなして……あ、でも時々新しいツールに振り回されて一日が終わることもあるよね。ま、そのうち慣れるさ。自分の作業の流れを自然と体得できた時、「あ、今少しだけ進歩したかな」なんて思ったりする。それにしても、結局のところ、その過程を楽しむ気持ちもきっと必要なんじゃないかなあと思う。うーん、本当に皆それをできているのだろうか……まあいいや。
優秀なプログラマーと言われる人たちは、大体重要でややこしい問題をもっと小さく分割して扱い易くしてしまうことに長けているらしい。こういう「問題細切れ戦術」って、一見地味だけど効果は抜群なのだろうな。その後、小さい課題ひとつひとつに順番で挑んでいくわけだけど——ここで変な例外とか出てきて、「マジか…」と焦る日もある。それぞれ片付いたか確認しながら進む感じ? めんどう、とぼやいてもしかたない…仕方なく前進。
作業が異様に速いコーダーって、自分自身の考え方とか手法を何度となく見直す癖がある、と言われたりするよね。でも、気づいたら他人のコード読んでは「これは何だ?」みたいな謎解きを繰り返していたり、多く失敗も経験しながらノウハウ蓄積されたり——実は地味な積み重ねなんだろう。ああ、それでも予想外のバグには毎回苦しめられるし、もう勘弁してよってなる日も正直多い。
経験って別段特別な才能でもなく、ごく普通の努力とか練習とか、それから簡単な課題ですぐ立ち止まらず難関にも挑戦した結果として身につくものなのだと――いや、本当にそうかなぁと思いつつ、とりあえず信じて続けるしかないわけで。
優秀なプログラマーと言われる人たちは、大体重要でややこしい問題をもっと小さく分割して扱い易くしてしまうことに長けているらしい。こういう「問題細切れ戦術」って、一見地味だけど効果は抜群なのだろうな。その後、小さい課題ひとつひとつに順番で挑んでいくわけだけど——ここで変な例外とか出てきて、「マジか…」と焦る日もある。それぞれ片付いたか確認しながら進む感じ? めんどう、とぼやいてもしかたない…仕方なく前進。
作業が異様に速いコーダーって、自分自身の考え方とか手法を何度となく見直す癖がある、と言われたりするよね。でも、気づいたら他人のコード読んでは「これは何だ?」みたいな謎解きを繰り返していたり、多く失敗も経験しながらノウハウ蓄積されたり——実は地味な積み重ねなんだろう。ああ、それでも予想外のバグには毎回苦しめられるし、もう勘弁してよってなる日も正直多い。
経験って別段特別な才能でもなく、ごく普通の努力とか練習とか、それから簡単な課題ですぐ立ち止まらず難関にも挑戦した結果として身につくものなのだと――いや、本当にそうかなぁと思いつつ、とりあえず信じて続けるしかないわけで。