そうですね、僕も駆け出しの頃は、周りの先輩がパソコンに向かって、どんどんプログラムを作り上げていくのを不思議に感じていました。
実際コードを見るというよりも、今回はプログラミングの考え方のコツをお教えします。
処理の読み込む流れを知る
プログラムを書いている時、皆さんの意識の中に大まかな処理の流れがイメージできていますか?
答えは、なんてことはありません。
単に「上から下へ読み込まれる」ということです。
まずは、この当たり前の事実を空気レベルで頭脳に染み込ませてください。
プログラムを書いていく上で、シンプルに物事を考えていける様になるので、僕は重要だと考えています。
「えっ。そんなの分かってるよ」
と思うかもしれませんが、いざ複雑なソースコードを目のあたりにすると、
「何書いているのか全然わからない・・」
という意識が先走り、思考停止状態になっていませんか?
この処理の流れの思考を軸として持っていれば、複雑なコードを見ても、冷静に受け止めることができます。
「所詮、処理は上から下へ読み込まれてるだけでしょ」と。
たとえば、HTMLなんかはタグがたくさんあって、HTMLタグから始まりHTMLタグで終了です。
順番に上から下へ読み込まれていきます。サーバーサイド言語も同様です。
いくらクラス内のメソッドを部分的に読み込まれていようが、そのメソッド内では上から下へファイルが読み込まれています。
メソッドの実行が違うファイルに定義されていたとしても、その場所で、上から下に読み込まれているだけです。
シンプルに考えれば、少しずつ向き合っていくことができます。
複雑そうな処理だと思って、思考をブレさせないようにしましょう。
コードが書けなくなってしまいます。
何をやりたいのか明確にする
何をやりたいのか明確でなければ、プログラムの何を書けばよいのかわかりません。
あなた自身が何をやりたいのかわからなければ、誰もフォローのしようがありません。
まず、思考の拒否反応で、プログラムを書けないと感じるのではなく、
「何を今やりたいのか」
を明確にしてください。
どんな小さな処理でも何をやりたいのか明確に答えを出さなければ、いつまで経っても、プログラムを書くことはできません。
また、良く陥る傾向として、
「何をやりたいのかはわかってはいるけど、検索してもサンプルコードも上手く動かないし、エラーばかりで結局何がやりたいんだっけ?」
という、迷宮入りになってしまうことも多々あります。
機能単位でゴールを設定し、そのゴールを達成するために、どんな処理が必要なのか。
その処理をどう書けば、期待している動作になるのか。
頭の中で分解しながら、常に何をやりたいのかを明確にする癖をつけましょう。
コードの書き方
頭や、紙でもメモでも何でも構いませんが、何をやりたいのか明確にすることができれば、後はプログラミングをするだけです。
「だから、それだけじゃプログラム書けねーよ。」
と思うかもしれませんが、明確にゴールがあれば、後はプログラムで表現するだけなので、意外とゴールは目前です。
参考サイトなどを検索しても解決しなければ、まだ、詳細化が足りていないということです。
僕のオススメの方法があります。それは、
「コメントアウトとして日本語でどんな処理をしたいか記述する」です。
以下ツイートです。
僕のコードの書き始めはコメントアウトで何がしたいか書いていきます。
— ふわふわしょうちゃん@WEBエンジニア/メンター (@FuwaFuwaShoChan) September 13, 2020
// もしデータの内容が××だったら
// 文字フォーマットする
とりあえず書きます。後は一つ一つの処理を実現するためにどうすべきか考えていきます
コード書いた後はコメントは不要になるので全て掃除します。ご参考になれば
僕は、コードを書くとき、とりあえず、何をやりたいかを明確にしながら、日本語で記述していきます。
「ここで、DBに登録したい」とか、「データ取得したものを文字列加工する」とか。
その後に、対象の処理をプログラムで表現するには、どうしたら良いかを解決するために次のアクションを起こします。
アクションとは、検索なり、PHPマニュアルを見たり、使用しているフレームワークのサイトをみて、サンプルコードを検索したり。
そして、記述していきます。
コツとしては「とりあえず書く」という意識を強く持ち、具体的なアクションを起こしてください。
それを続けていけば、プログラミングは必ず少しずつ上達します。
※補足 コードを書いた後は、日本語コメントは全て削除してください。コード汚染につながります。
2つの事を同時に考えない
人は基本的に並列処理ができません。それはPCも同様です。
「同じアプリケーションを同時に使ってんじゃん」
と思うかもしれませんが、それはCPUなどが高速で処理をしていて、並列に処理しているように感じているだけです。
コンピューターも常に一つの処理をしているに過ぎません。
初学者がプログラミングをする際に、2つの事を同時に何かを考えてしまうと、余計プログラミングができません。
それが続くと意識が散漫となり、集中できなくなります。
雑念含め、同時に何かを考えてしまっていることに気づき次第、
頭の中からプログラミング以外の事は頭のゴミ箱に捨ててしまうイメージをしてください。
そうでないと、いつまで経ってもプログラミングできません。
意識の問題ですので、プログラミングをする際には、
「同時に何か考えてしまっていないだろうか」
と自問自答しながら、作業に集中する癖をつけるよう努力しましょう。
関数・メソッドの考え方
以前、未経験から約1年程、WEB開発業務に携わっているメンバーがいました。そのメンバーは、
「1年経ったら、もっとメソッドを自由に書けると思っていたが、実際は全然書けない」
と嘆いていました。
皆さんは、勉強を始めてどれぐらいで、メソッドを書けるようになりましたか?
余談ですが、関数・メソッドを同じ括りで話してますが、関数とメソッドの違いって何かわかりますか?
答えは、関数はクラスに属さず、独立したメソッドとして定義されたものです。
メソッドはクラスに属しているものと考えてください。
クラスについては、カプセルみたいなもので、処理の集合です。
詳細については、ネット上に図解含めて情報がたくさん転がっているので、そちらに任せようと思います。
ここでは関数・メソッドの考え方にフォーカスします。
結論から言うと、関数やメソッドはムリに書く必要はないということです。
なので、
必要性に駆られてメソッドなどにして、呼び出す方が便利だよね。
となってから書くようにすればよいのです。
「じゃあ、どういった時にメソッドにした方が便利なんだよ」
という意見になると思いますが、答えとしては、
「処理のコピペをしてしまっている時」
です。
プログラミングは、時に同じような処理を記述する機会がたくさんあります。
なので、駆け出しの頃は同じような処理をしているなら、そこに既に書いたコードをコピペして、
「ちょっと変更すればいいじゃん」
と感じ、そのままの状態で次へ進んでしまいがちです。
それは、いけない行為だと気付かなければいけません。
なぜなら、コードが複雑になってしまい、他の人や、あなたのメンテナンス作業時に苦労することになるからです。
また、実際にコードがぐちゃぐちゃに複雑になって、苦労してから、この項目で話していることがようやく気付けば、それはそれでかまいません。
同じような処理を繰り返していることを、プログラミングをしていく過程で気付いた時が、
関数・メソッドの書くタイミングです。
目的があって、メソッドを書くようになるわけです。
それが、基本的な関数・メソッドの考え方、書き方になります。
まとめ
- 常に処理の流れが上から下へ読み込まれることを、思考の軸足にしておく。複雑なコードが来ても、軸がブレなければ、時間がかかろうとも、解決できる。
- コードを自由に書くためには常に何をやりたいのかを明確にしておくこと。
- コードの書き方は泥臭くていい。日本語で殴り書きして、課題を進ませること。
- 人は並列処理が苦手。得の駆け出しの段階では、物事を二つ考えないように強く意識する。
- 関数・メソッドの書くタイミングは、コピペを繰り返している時。コピペ厳禁にすれば、嫌でも関数・メソッドは書けるようになる。