この記事は シーエー・アドバンス Advent Calendar 2020 15日目の記事です
はじめに
こんにちは!新卒エンジニアの@ken_2です。
新人研修として「来客受付アプリ」を新規開発したので、そこで得た学びをざっくりと4つの章に分けて紹介します。
過去の僕のような新人さんの参考になりますと幸いです。
対象者
- Web開発を勉強中で実務未経験の人
- 新人エンジニア
開発環境
Docker, Rails, Bulma, MySQL
第1章 先輩より、開発のお作法を継承
入社当初、開発の右も左も分からない僕は先輩エンジニアの方々より「開発のお作法」を教えて頂きました🙇♂️
まずはGit1です!リモートリポジトリにコードを上げたことはあったのですが、実務で使えるレベルではありませんでした。
「Branch, Staging, Commitの適切な行い方2」や「良いプルリクの出し方3 4」、他にも「Gitでコメントやプルリクがあった際にSlack通知する方法5」などを教わりました。
次にlintを教わりました!今では欠かせないツールです。
これは、CLI上やテキストエディタの拡張機能として動作してコードを整形するものです。僕が使用したのは、Rubyを整形するRuboCop6 7、HTMLやCSSを整形するBeautify8というツールです。
他には、環境変数を扱う「direnv9 10」というツールも欠かせません!APIキーなどの秘匿情報をGitHubなどにPushするのは厳禁なので、ローカルでのみ扱えるようにします。
第2章 "仕事の進め方"を磨いていく
開発のお作法を継承したのでどんどんプロジェクトを進めてまいります。しかし、開発以外にもミーティングや資料作成を上手く行う事、適切に報告や質問する事も重要です!
実際に起こった問題として、「チャットコミュニケーションに慣れていないが為に遠慮してしまい、報告や相談のタイミングが遅くなる」という自体が発生しました。
そこで「分報11」を行なってみました。これを用いて報告や相談の回数が増えた為、先輩に問題点を早く指摘していただけるようになり、手戻りが減りました!🙌
他にも、「同時編集出来るツール(GoogleDocs等)で議事録を取りそれを先輩にリアルタイムレビューしていただくことで、ミーティングにおける誤解を防いだり議事録のとり方を向上させる」や「開発にのめり込んで他タスクをスルーしないようにリマインダーを設定する」など、ツールやテクニックを試しながら仕事を行いました。色々試してみて、自分に合うものを残していきましょう!👍
心構えの面では、「HRT12」というものを学びました。この学びを元に、チャットコミュニケーションにおける感情の誤読を減らすよう心がけたり、エンジニアとして理想的な振る舞いを気にかけたりしました。
第3章 Railsでの躓き
開発を着々と進めて行き、来客受付アプリとしての大枠が出来上がって来た時期です。
これまでの開発を振り返って、個人的にRailsで躓いた所を箇条書きにしてみました〜。
- Railsの命名規則に従う
- 多対多リレーションのオブジェクトを呼び出す際、複数形にする箇所に注意13
- 例えば「@author.books.create(published_at: Time.now)」のbooksの部分
- 多対多リレーションのオブジェクトを呼び出す際、複数形にする箇所に注意13
- SQLを書こうとする前にActiveRecordを調べよ
- ActionViewのキーワード引数を上手く扱えない17
- 特に第3, 第4引数がキーワード引数の場合
- クラスメソッドとインスタンスメソッドの使い分け18
- 非同期処理を扱う際のController19
第4章 ついにリリース
さて、リリース日が迫ってきました。ユーザーレビューで挙がった箇所を修正しつつ、着々と進めて行きましょう。。。
ここでイベントが発生!「コロナの影響でアプリのニーズが高まったので、2週間ほどリリース日を前倒し出来ないか😣 」との連絡が。
僕としては「ユーザーが困っているならなるべく早くリリースしたい」という思いがありましたが、今の実力では現実的ではありませんでした。
しかし、ここで先輩方が助けに入ってくださりました!🙇♂️
そのおかげで、タスクの組み直しや運用フロー策定、デプロイまで一気に進み、早くユーザーに届けることが出来ました。本当にありがとうございました!
(実際にユーザーさんから「アプリ良かった!」との声を聞けたときはとても嬉しかったです!🙌 )
ついにリリースを迎えることが出来ました!やったね!。。。
しかし、アプリはリリースして終わりではありませんね!
これからもアプリがより良く末永く使ってもらえるように、手塩にかけて育てていきます!
おわりに
アプリ開発の「企画〜開発〜運用」まで任せていただき、とても貴重な機会でした。
これまでつらつらと書きましたが、新規開発のアプリをリリースまで持っていけたのは周囲の方々の助けがあったからです。
これからエンジニアとして力を付けても謙虚な姿勢を忘れずに、また自分が先輩から貰った恩を次は後輩に返してあげられたらなと思います。
最後まで読んでいただきありがとうございました!
参考サイト
-
SlackとGitHubを連携してissueコメントやプルリク通知をチャンネルに流す方法(2020年版) - Qiita ↩
-
『Team Geek』読んだ ~HRT(謙虚/尊敬/信頼)の精神を知り会社でサバイブしていく方法~ - Hack Your Design! ↩
-
Rails における nil?, empty?, blank?, present? の使い分けとBetter Practice - Qiita ↩
-
Railsフレームワークで多用される「options = {} 」引数は軽々しく真似しない方がいいという話|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社 ↩
-
Railsでajaxを実装する。基本の構造から、controller・jbuilderの書き方など。[Rails] - Qiita ↩