内定者アルバイトで学んだこと
もうそろそろ10月で、夏が終わりそうですねー...悲しい😢
ブログの更新を怠っていましたが、また出来る限り書いていこうと思ってます!
さて、現在内定先でiOSエンジニアとしてアルバイトをしているのですが、
そこでプログラミングをする上で重要だと思ったこと第3選を紹介したいと思います。
そしてこれはプログラミング言語に依存しない話です。
重要だと思ったこと第3選
1. 命名
2.設計、アーキテクチャ
3.Git, GitHub
1.命名
まず初めに個人で開発をしているときと比べて明らかに意識していることは命名ですね。 クラス名、メソッド名、変数名とさまざまなときに命名をしなければいけないのですが、命名が適当だと何が書いてあるのかがわかりにくいほか、必ず内部実装を見なくてはいけなく時間も奪われてしまいます。
そして、基本的にコードを読めばわかる部分はコメントとしては記述せず、「なぜそのようなコードになっているか」や、「注意しておくこと」、またUIコンポーネントの説明には「補足」を入れておくということです。
ちなみに会社によってはコメントを多めに記述したり、会社独自のルールもあるとは思うのですが。
例)
・なぜそのコードを書いているかの理由
// 〇〇のためにこのタイミングでアクションログを送信しておく
・使っているライブラリのURLや、参考URLなど
ライブラリ: 〇〇、参考: △△
・UIコンポーネントでLabelが3つのったViewの命名などで、「ViewWithLabelsOnIt」などという口語的な変数名をつけるではなく、コメントで補足する
// Labelが3つのったView @IBOutlet weak var view: UIView!
はい、リーダブルコード。大切ですね。
https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Boswell/dp/4873115655/ref=sr_1_1?s=books&ie=UTF8&qid=1474369709&sr=1-1&keywords=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89www.amazon.co.jp
2.設計、アーキテクチャ
次は設計、アーキテクチャです。
クラス設計を「1クラス1責務」にすることやMVC、MVVMアーキテクチャに沿うことが大切
この辺であまり悩んだことがない人もいるとは思いますが、自分がリファクタリングしている最中は「このメソッドは本当にこのクラスの責務か?適切なクラスにメソッドが記述されているか」や、「ちゃんとMVCに沿っているか」を考えてやっています。
またシングルトンなどのデザインパターンをしっかりと理解していることや、Utilityクラスの作成、通信やデータベースやManagerクラス系はModel層にあるかなども重要だと思います。
自分も正直まだまだでこれからで、もっと経験を積んで設計やアーキテクチャについて学んでいこうと思っているところです。
そして購入して少ししか読んでいなかったJavaのデザパタを掘り起こしてちゃんと読もうと...
https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88Java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80-%E7%B5%90%E5%9F%8E-%E6%B5%A9/dp/4797327030/ref=sr_1_1?s=books&ie=UTF8&qid=1474369871&sr=1-1&keywords=Java%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3www.amazon.co.jp
3.Git, GitHub
Git、GitHubも重要ですねー
個人開発ではGit、GitHubは使ってはいたものの、1人なのでmasterにpushしていたり、branchもなんとなく切って作業、コミットメッセージもなんとなくで、そこまで意識して開発をすることはありませんでした。
(この時点で結構ポンコツだったと気付かされました...笑)
しかし、初めてチーム開発を経験して、コミットメッセージの重要性や、作業単位でなるべく細かくコミットをしていく重要性を感じました。
特にコードレビューをしていただかないとマージがされないので、レビュアーの人にも適当なコミットメッセージや、いろいろなところを編集してから最後に大きなコミットをしてしまうと、非常に見にくく面倒な思いをさせてしまいます。
レビュアーの方も人間です。
またリファクタリングの業務中、blameでコミットメッセージを見ることがあるのですが、「人によってこんなにも差が生まれるのか」と思うぐらい、丁寧なコミットメッセージもあれば、関係のない内容が記述された(おそらく少ない作業単位ではなく大きな単位でコミットしているため別の内容がコメントされている)コミットメッセージもあります。
このような経験から反面教師で自分はblameされても大丈夫なようにしっかりとしたコミットメッセージを記述するように心がけています。
「無知の無知」への3ステップ
それと最後に先輩から教えていただいた記事を紹介します。
(この記事自体は別の方が書かれたものです)
1. 「あとで調べればいいや」
2.「何がわからないのかわからない」
3.「わかったつもり」
まぁこれはエンジニアに限った話ではないですが、
考える習慣を身につけ、「あとで調べればいいや」はせず、「わかった」と思っても本当に理解しているのか、今一度自分を疑ってみること
を意識して生活していきたいです。