cassetteスマートフォン用の表示で見るcassette2018-08-26プログラムの効率的な読み方casstteの延澤です。今回はプログラムの読みかたについて書いていきます。「あなたはどのファイルから開きますか?」この質問について答えていくのが今回のブログの内容になります。読み方が大事なのか出来るエンジニアは平凡なエンジニアに比べて100倍生産力が違うと言われています。自分は出来るエンジニアは読むのが速いため設計・実装の時間に十分な時間が取れるから生産力が違うという意味で解釈しています。逆に考えると読む時間が遅いと設計・実装の時間が足りず、考慮漏れなどを起こし二度手間を発生させる確率が高くなることに繋がります。エンジニアの作業はコードを書いているイメージが先行しますが実は他人のコードやドキュメントを読んでいる時間がほとんどです。学生時代はプログラミングが得意だった人も就職してみると当初思ったほど最初に仕事が出来ないことがあります。これは圧倒的に他人のコードを読む時間が不足しているのも理由の一つです。当たり前すぎて軽視されがちな読みかたについて書きます。サービスのコア機能を確認するこれは作業に当たる前に絶対にやるべき作業です。あなたが今回担当するサービスのコア機能については実際に使ってみることです。ここで言うコア機能とはそれがなくなったらそもそもサービスとして提供出来ない機能のことです。大体のサービスは幹となるコア機能と補完する機能群であるためコア機能さえつかめれば一気に全体の把握が楽になります。問題はコア機能はロジックが複雑なためコードを理解するのが大変なことです。最悪、直接触らないのであれば概要が分かっていれば大丈夫です。言うとこのサービスは誰にどのような価値を届けるのかを意識しておくことです。登場人物や価値を理解していると読むスピードが大幅に違ってきます。現在の動きを確認する今回改修する箇所の動きを確認しましょう。その際におすすめなのは現在どのようにデータが変わるのかこの時点で理解しておくことです。新規機能追加の場合ではどのような流れで新規機能が使われるのかを意識しておきます。用語を確認するプログラムでは特定の機能について特定の単語で表していますのでしっかり意味を確認しておきましょう。あなたが新人であるならば積極的に発言して確認することです。特定の単語が別の意味で使われていたり、特定の機能が複数の単語で使われていたりするケースは注意が必要です。いう場合は予めバグが紛れそうだなと考えて注意しておきます。ライブラリのドキュメントを確認する今どきのサービスでFrameworkやライブラリを一切使っていない現場は少ないでしょう。あなたがそのFrameworkやライブラリについて使用するのが初めてであるならばしっかりと公式ドキュメントを読んでおきましょう。勘所としてはこのライブラリが何を解決するのかと哲学も理解しておきましょう。ここを意識していないと間違った使い方をするため技術負債を増やします。コードジャンプ機能を使うこれは賛否が分かれるところですが、コードを追っていくならコードジャンプ機能はあった方が楽です。IDEAの有料版を使っています。Browserと連携させてさらに効率化させています。Patternを通したクラス関係については理解しておくと読みやすいです。この辺がキレイに作られているサービスは必要な読む箇所と影響範囲も分かるので理解が早くなります。現実問題としてここがしっかりとキレイに作られているケースは何だかんだ稀です。頭を整理するコードをずっと読んでいると頭がこんがらがってくることもあります。その結果何度も同じコードを読んでしまいループします。そこでおすすめなのが途中でメモを書いたり図に起こしてしまうことです。オススメなのが図です。下手な図でいいのでコードや仕様の関係性を書いてみると案外スッキリします。私はよくホワイトボードにシーケンス図やベン図を書いて理解しています。サービスのコア機能を確認する」です。コードの読むのが遅い人はそもそもサービスの理解が深くないケースが多いです。全体像を把握していないのに詳細なソースコードを読んでも中々頭に入ってこないです。全体像を理解した上でコードが実際にそうなっているのか確認してみると理解しやすいです。やって考えるとこの記事の一番上にあった「あなたはどのファイルから開きますか?」という質問に対しては、まずいきなりファイルを開かないが正解になります。昨今、入社試験などでアルゴリズムの問題を出すことが多いですが、個人的にはプログラムの読解をさせた方が実務の能力を図るのに適していると考えてます。読解させた上で仕様を読み取れるのか、設計が良いのか悪いのか議論した方が試験内容としては面白いと感じます。以下の記事を読んで少し引っ掛かることが...2018-06-026年間SEO対策に携わってみてタイトルは釣りだ。月別アーカイブはてなブログをはじめよう!developer-cassetteさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。