最終的になにか一つ簡単なアプリケーションを作ってみる、といった流れが一般的だと思います。企業のITエンジニア向けの新人研修でも同じ感じですね。実際の開発現場の配属になると、研修で学んだこと以上の難しさが現場にはあって、みんな挫折するわけです。(僕の場合はプログラムを書くことなく、いきなりオンプレからクラウドへのシステム移行をやらされ、C#を二度と書くことはなかったのですが。)ちょうど今、新人研修を終えて現場に配属となった後輩のOJTを担当して、同じチームで開発をしているのですが、やはり実際の開発現場に入ると、研修では学んでいないことのほうが多いと新人本人も感じているみたいです。プログラムの変数名の付け方1つとっても、独学や研修で学んだ人と、何年も現場で働いている人とで考え方が異なってくるみたいなんですよね。今回は、そんな新人たちのような、プログラミングの基礎を一通り学んだ人が次に学ぶべきことについてお話したいと思います。自分の書くコードに魂を込めろまずはこの本を読みましょう。『リーダブルコード』です。260P程度で、翻訳本ですが実際のコードの例も併せて読みやすい本です。2006年代にアニメオタクになった人が『涼宮ハルヒの憂鬱』を見てきたように(新刊発売おめでとう)、コードを書くITエンジニアたちも皆、これを読んでいます。単行本(ソフトカバー)この本、一言でいうと、チーム内でプログラムを書く上で考えないといけないことを完結にまとめた本です。他人に自分の書いたコードを読んでもらう。自分一人でできたとしても、他人のレビューが入り、リリースしたとしても、いつか他人がそのコードを変更するときがくるのです。僕の手元の版の『リーダブルコード』の12章のタイトルは、コードに思いを込めるでした。「コードに魂を込めろ」と言ったみたいです。言い回しはどうであれ、自分の書いたコードに責任を持って書けるようになろうということですね。この本を読んだ人も読んでない人も、具体的に、プログラムを書く時にどのようなことを考慮していけばいいか、考えていきましょう。僕が最低限これだけは抑えておいてほしいと思う、コーディング3つの基礎をまとめました。名前の付け方を考えよう短いサンプルコードを見ながら少し極端な例でお話します。以下のようなコードがあったとしましょう。error_flguser_checkメソッドを使って、ユーザが存在するかどうかを確認するだけの処理です。このコード、とりあえず動くと思いますが、なにがいけないかを考えてみましょう。get_user_list()valuesという変数にユーザ一覧リストの情報を代入しています。今回の場合、変数のスコープが小さい(=valuesを使っている箇所がメソッド内のみでかつ行数が少ない)ので、大きな問題にはなりませんが、このvaluesという変数が100行先、200行先にも繰り返し現れるとしたらどうなるでしょう?「あれ?このvaluesにはなにが入っているんだっけ?型は?」となるはずです。変数名は、それだけを見て何が入っているのか、どんな型なのかがわかるように命名するべきです。今回の場合、ユーザ一覧リストなので、user_listという名前にすればよいかと思います。これだけでユーザのリストが入っているんだなとわかるし、listで終わっているからきっとlist型なのだろうと推測ができるようになります。何だ当たり前じゃんと思う方もいるかもしれませんが、意外とこういうケースよく見かけます。「変数名の意味なんて考えたこともありませんでした」と言われてしまいました。変数名に意味を持たせることから考えましょう。Trueこれややこしくないですか?普通に考えると、ユーザが存在するならTrue、ユーザが存在しないFalseですよね。サンプルコード、逆になってます。ユーザが存在するならエラーではないからFalse、という考え方ですね。変数名に、○○_flagとか、〇〇_flgのような命名を見かけますが、避けるべきだと思います。フラグだと、どちらがTrueで、どちらがFalseなのかがわかりにくいからです。」の形で表現することが多いです。前の処理が成功したかどうかを判定する時など他にもcanやhasなどで始まるパターンもあります。真偽値の変数名が個人的には一番考えるのが大変だと思ってます。今回の場合は存在チェックなので、exists_userが適切ですね。メソッド名は動詞+αにしようサンプルコード10行目のメソッド、ユーザが存在するかチェックするメソッドですね。user_check(user):これまず英文法的におかしいです。これだと「ユーザがチェックする」ですね。順番を入れ替えて、check_userのほうが文法的にはベターです。メソッドはプログラムの動作を担うものなので、動詞+αの形で命名するのが一般的です。言うと、「何をチェックするのか?」と突っ込まれます。今回の場合は真偽値を返すメソッドなので、真偽値の変数名の時のように、どういう場合に真となるのかがわかるようになっていなければなりません。exists_user()というメソッド名が良いと思います。メソッドは1つの機能にしよう今度は機能もりもりのサンプルコードを書いてみました。file_pathまずこんなこと書く人ありえないのですが、やりたいことが多すぎてもはやどうなっているのかわからない状態です。全体の処理の流れがこうなるのはよいのですが、メソッドを適切な形に分解できないと、このようにメソッド名がわけわからないことになります。メソッド名は動詞+αというルールに従うのであれば、メソッド名は原則1つのことを処理するべきです。「○○する」のように動作を書き出してみましょう。これら1つずつがメソッドだとした時、きっと名前がつけられるようになるはずです。メソッドが適切な形、1メソッド1処理の形に分解できてはじめて、メソッドに対して適切な名前がつけられるようになります。コメントを書きまくれよく処理だけを書いて、コメントを全く書かない人がいます。短いコードを書く競技プログラミングでもかない限り、なるべく多くのコメントを書くべきです。わかりきった不要なコメントは書くべきでないという意見もありますが、僕はパッと見て見にくくなければコメントは多い方が良いと考えてます。メソッドやクラスにはdocStringといったコメントの書き方があります。値、例外などを、指定のフォーマットで記述すると、それがメソッドのドキュメントとなります。このメソッドを外部から呼び出す時に、docStringをちゃんと書いていれば、その仕様を把握することができます。僕の場合、処理を書くよりも先にコメントから書くケースも少なくないです。自分の中で書きたいことを整理できるのと、あとから見返した時にわかりやすいのでそうしてます。たかがコメント、されどコメント。英語圏ではなく、日本語で詳細を書くことに大きな意味を持つ日本の開発現場では、コメントの充実したコードを書いていくべきかなと思っています。僕が最低限これだけは抑えておいてほしいと思うコーディング3つの基礎を紹介しました。どれも簡単なことかと思いきや、ベテランエンジニアでも意外と意識できなかったり悩んだりする、プログラムを書く人だったら永遠のテーマだったりするのかもしれません。美しいコードを書くテクニックがたくさん書かれています。全ITエンジニア必読の書だと思うので、少しでも良いコードを書きたい方はぜひお手にとってみてください。Consoleのデータ収集を完全自動化す...こんにちは、前回はPythonでGoogleサーチコンソールのデータをB...2022-03-09TypeScriptはじめました皆さん、JavaScriptはお好きですか?僕は苦手です。僕は...2021-08-30プログラミング初心者はPythonを学習するのがおすすめな理由よくプログラミング言語の人気ランキングや求人数、年収、学び...2021-08-28はてなブログにVue.jsコンポーネントを導入してHTMLを簡略化しよう!はてなブログ、HTML、CSS,JavaScriptをブログ全体に追加できた...2021-08-23【Python入門】コメントとdocstring本日はPython入門記事です。はてなブログPro都内でGCP、Python使ったデータエンジニアやってます。クラウドでの設計~開発・運用まで全部やります。20代文系エンジニアです。GCP、Python中心に、データエンジニアとして学んでいる技術をご紹介する記事を書いています。BigQueryとAirflowとバイクと鳥が好き。アイコンはたまたまお魚を加えていたときのカワセミさん。引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。