こんにちは。いなお(@inadummy)です。
楽(ラク)するプログラマー@元ギタリストです。
プログラミングとは、そもそも仕事の仕組みを自動化(システム化)したり、生活をもっと便利にするためにWebサービスやアプリを作ったり、人を楽(ラク)させるための行為だと思います。
そんな、人を楽(ラク)させるための行為を職業とするプログラマー。素敵やん?
そのかわりというか、たいていのプログラマーはそれなりに苦労していますが、僕の場合は少し違いまして、なにせ苦労するのが大嫌いなので自分も楽(ラク)しつつ、人にも楽(ラク)させております。
さて、
今回この記事では、あなたのプログラミングを助けるテクニックを1つご紹介します。
その名も『先にコメントから書いちゃおう』です。(名前のセンス
なんかこれを言われても、いまいちピンとこないしインパクトが薄いですよね。
でも実は、意外と効果あるんですよね〜。
僕が新人の頃に教えてもらったテクニックなんですけど、なんと10年以上経った今でも使っているテクニックなんです。シンプルですが奥が深い。当時はこのテクニックの本当の意味を全然理解していませんでしたが・・・
ところで、
コメントって『//ここにコメントを書く
』こんな感じのやつなんですが、プログラムの中にその名の通りコメントを書けるんですよ。日本語で。
通常、コメントというのはプログラムコードを書いた後、そのコードを後から見返した時や第三者が見た時のために、どんな処理を書いているのかの説明をコメントとして残しておくケースが多いです。
そんなコメントを先に書いちゃおう、というのが今回ご紹介するテクニックです。
まだ意味分からないですよね。分かります。
それでは、
そろそろイライラしだす頃だと思うのでテクニックの説明に移ります。
後半では、このテクニックの本当の意味も解説します。最後まで読んで本当の意味(というか考え方)も合わせてマスターして下さい^^
コメントを先に書くテクニックの説明
例えば、
朝の行動(起きてから外出するまで)をプログラミングするケースを考えます。
○朝の行動ファンクション------------------------
// 1.目覚める// 2.顔を洗う
// 3.朝食を食べる
// 4.着替える
// 5.外出する
こんな感じです。
------------------------
あとは、コメントに沿って処理コードを書いていけばいいだけです。簡単ですね^^
テクニックの説明はこれで終わりです。
はぁ?これで終わりかよ(ビキビキ#
分かります。僕もそうでした。
焦ってはいけません。ここからが本番です。
このテクニックの意味(狙い)を説明します。
一体なにをやってるのか?
一言で言うとタスク分解を行っています。
『タスク分解を制する者はプログラミングを制する』
といっても過言ではないと思います。
もはやプログラミングに限らず、すべての仕事に通じる事とも言えます。
タスク分解できると色々と有利です。
・進捗管理がしやすくなる
(→早めのアラートに繋がる→手戻り作業の削減)
・優先順位に応じてパズルできる
(→本当に今やらなければならない事だけに集中できる→作業の最適化)
・明確/不明確が分かる
(→あとはやるだけ状態なのか調査が必要なのかが分かる→リスクの洗い出し)
・そのことを理解しているか?の確認ができる
(→うまく分解できなければ理解できていないということ→理解できていなければ、要件や仕様のリサーチ不足ということ)
少し管理者目線の内容を書いていますが、今時点で意味が分からなければ飛ばしてもらってOKです。
初心者向けに書くとすると、プログラミングしようとしている処理について、あなたはその内容を十分に理解していますか?の確認ができます。
うまくタスク分解できれば、あなたは十分理解できているでしょう。コーティングに入っても問題ないレベルです。逆にうまく分解できなければ、あなたの頭の中は整理できていない状態ですので、まだコーディングしない方が無難です。
プログラマーの頭の中が整理されていないと、必ずぐちゃぐちゃのコードが出来上がります。プログラミングというのはプログラマーの頭の中がそのままコードに反映されるからです。
まあそれ故に面白いんですけどね。
凄い人たちのコードは見るだけで感動できます。これ本当ですよ(笑)
なんというか一分の隙もなく無駄がひとつもない感じ。ぷよぷよで例えると、20連鎖しつつ全消しするくらい無駄のない組み立てというか。
プログラミングを始めたばかりだと、凄い人たちのコードを見ても最初は何が凄いのか分からないけど、レベルアップしていく毎に少しずつ凄さが分かるようになってくる感じがまたプログラミングの楽しいところです。
少し話が逸れてきたので元に戻します。
次は別の角度からこのテクニックの意味(狙い)を説明します。
これの何が嬉しいのか?
(1) 完成までの道筋が立つ
この「1.目覚める」〜「5.外出する」までの5つの処理コードを書けば「朝の行動ファンクションが完成する」ということが分かる、ということです。
つまり、ゴールとその道筋が見えている。ということです。
これめちゃくちゃ大事です。
あなたにとって「何をすればいいのか」が明確になるってことです。これほど嬉しいことはありません。
常にゴールが見えているというのは健全な状況です。精神的にも。
ゴールの見えないマラソンはきついですよね・・・
(2) あなたが全てを頑張る必要がなくなる
まず他の人に作業を振ることができます。これはタスク分解していないと出来ない芸当です。
例えば、スケジュールに間に合わないと思ったら、「5. 外出する」の処理コードを他の人に任せることができます。あなたは残りの4つを対応すればよいことになり、少し楽になりましたね。
でもこれはチーム開発している場合に使える方法です。
1人の場合は?
大丈夫です。例えば「4.着替える」の処理コードはネットで調べたらサンプルコードがあるかもしれませんし、フリーのライブラリで提供されている可能性もあります。
これがもし、タスク分解せずに「朝の行動」という大きなカタマリの処理コードをネットで探してもなかなか見つからないでしょう。「4.着替える」という小さな単位で調べるからサンプルコードが見つかるのです。
もっと分解してもいい
○朝の行動ファンクション------------------------
// 1.目覚める
// 1-1.目覚ましを切る
// 1-2.布団から出る
// 1-3.布団を片付ける
// 2.顔を洗う
// 2-1.洗面所まで行く
// 2-2.顔を洗顔で洗う
// 2-3.歯を磨く
// 3.朝食を食べる
// 3-1.朝食を作る
// 3-2.朝食を食べる
// 3-3.食器を洗う
// 4.着替える
// 4-1.服を選ぶ
// 4-2.着替える
// 4-3.パジャマを片付ける
// 5.外出する
// 5-1.荷物を準備する
// 5-2.靴を履く
// 5-3.鍵を締める
こんな感じ。
------------------------
こうすると、もっと細かい粒度で先ほど説明したような内容が適用できます。
あまり細かくし過ぎてもそれはそれでゴチャゴチャするので注意が必要です。
頭の中では出来るだけ細かくイメージした方がいいですが、コメントとして書くのは適度な粒度を心がけましょう。
おわりに
いかがでしたか?
先にコメントを書くことのメリットが伝わったでしょうか。
この記事は初心者から上級者まで使える内容がギュッと詰め込まれているので、あなたの今のレベルに応じて刺さってくる部分は変わると思います。忘れた頃に見返してみるとまた違う部分が刺さってくると思いますが、それはあたなが成長した証です。是非何度も見返して成長を確認してみてくださいね^^
まとめますと、
つまるところ、これの本質はタスク分解することです。
うまくタスク分解できると仕事がうまくいくのは説明したとおり。
先にコメントがうまく書けない、という場合は頭の中が整理できていないか、まだ理解が不十分だということ。このあたりを意識しながら実践してみてください!
これは本当に10年後にも使えるテクニックなので是非マスターしてください^^
コメントを残す