オールアバウトTech Blog

株式会社オールアバウトのエンジニアブログです。

開発部で1年間やったこと

f:id:allabout-techblog:20220330163558p:plain 毎年恒例オールアバウトグループの新卒1年目エンジニアが投稿する企画「テックブログ新卒週間2022」を開催します。 今回は、オールアバウトマーケティング開発部の@woodyがお送りします。

1.はじめに

2022年4月に入社し、7月まで研修を受けたあと、開発部のマーケティング開発グループのチームに所属して業務を行っています。

本記事では実際にどんな風に業務を行ってきて、どんなことを感じたのかを書いています。

学生時代は統計学を扱う研究室に入っていてアプリ開発よりもデータ分析をメインでやっておりました。

分析だけでなく実際のプロダクトを作れるようになりたいと感じ、事業系会社のアプリ開発会社に就職しました。

初めてのことが多く学びが多かった一年となりました。

2.どんな業務をしているか

2.1.主な開発内容について

現在はコンテンツマーケティングプラットフォーム「PrimeAd」の中のビジネスマッチングプラットフォームの開発業務に従事しています。

広告を出したい広告代理店と広告を載せるメディアをつなぐプラットフォームです。

ビジネスマッチングプラットフォームは新規事業としてはじまり、2020年7月にローンチされたばかりで、現在も試行錯誤しながら事業拡大を図っています。

primead.jp

2.2.使用技術

基本的に以下の技術を使って開発を進めています。

3.業務の流れ

チームではアジャイル開発を採用していて2週間単位のスプリントで開発をしています。

私達のチームでは以下の流れで開発を進めています。

  1. 事業の課題をtrelloに記載し重要度を割り振る
  2. 重要度の高いものから、開発対象としてタスク化する
  3. スプリント内で解決すべきタスクを各レーンへ割り振る
  4. 設計 (ここからペアプロ)
  5. 実装
  6. レビュー
  7. ステージングリリース
  8. 本番リリース

f:id:allabout-techblog:20220329095051j:plain
スプリントの流れ

3.1.事業の課題をtrelloに記載し重要度を割り振る

チームとして事業の課題や開発タスクはTrelloのカンバンで管理しています。

ユーザーからヒアリングした課題や開発中に感じた課題がTrelloのカンバンボードに記載されていきます。

記載されているタスクをもとに重要度を割り振っていきます。

3.2.重要度の高いものから、開発対象としてタスク化する

重要度を割り振ったものの中でどのように開発を進めていくか議論をして、タスクとして進められるようにしていきます。

3.3.スプリント内で解決すべきタスクを各レーンへ割り振る

チームでは二人一組でペアを作って作業を進めています。各レーンに対して合計稼働可能時間を超えないようにタスクを割り振っていきます。

3.4.設計

担当を割り振ったら、設計を行います。 ここからペアで作業をしていきます。

機能の要件や画面設計をしていきます。

3.5.実装

開発するときはペアプログラミングを行っていて、二人一組で交代で意見を出しながら実装をしています。

3.6.レビュー

実装したものをチームでコードレビューをしています。コードレビューを挟むことでコードの品質を担保しています。

3.7.ステージングリリース

コードレビューを経て問題がなさそうであればステージングリリースまで行います。

ステージングとは本番環境と同様の状態でシステムの動作や不具合のチェックを行う段階です。

3.8.本番リリース

ステージング環境で問題がなさそうであればリリースを行います。

4.感じたこと

技術的な学びはもちろんありましたが考え方の学びが多かった一年だなと思います。大きく分けて3つの学びがありました。

4.1.開発においてはデバッグできるかが大事

デバッグとはバグと呼ばれるプログラム上の間違いを見つけて排除する作業のことです。

今まではどのようにコーディングするかが大事だと考えていました。しかしながら実際に開発をしていくと多くの時間をエラーの対応に使うことになりました。

人為的なミスや、想定していないパターンでのエラーはよく出てきます。なのでいかにデバッグを効率よくするかが大事です。

その時に特に「エラー文を出す」「問題を切り分ける」「質問する」ことの3点が大事だったなと感じました。

4.1.1.エラー文を出す

プログラムを書いていく中で、エラーが発生した時にエラー箇所とどんなエラー内容だったかを出力してあげるようにすることでバグの場所の特定が容易になります。

4.1.2.問題を切り分ける

エラーが出たとしてもどこが悪いのか見当がつかない時があったりします。その時は条件を固定したり、検証範囲を狭めたりして問題となりそうな部分をあぶりだすことが有効だったりします。

4.1.3.質問する

どうしてもわからなくなったときには質問して教えてもらったりすることが大事になってきます。

先輩エンジニアに質問をすることで自分が持っていない視点があったりするのですんなりと解決することがあったりしました。

4.2.手運用でカバーすることも候補の一つ

顧客課題を解決するために機能を作っていきますが、やっていくうちにあれもこれもあったらいいとなって実装したい機能が多くなってしまいます。

時間と開発者は有限なので最小限の機能を考え、機能をリリースして顧客のフィードバックを元に改善していくことが大事です。

例えば本来システム化するところを人力で行って、利用されるかを試したりするなどの方法があったりします。

いかに素早く検証ができるかが大事だと身にしみて感じた一年でした。

4.3.どうやるかよりも取り組むべき課題の見極めが大事

どう実装するかも大事ですが、それよりも何を実装するかの方がとても重要です。実装したとしても使われなかったら意味がないので努力が水の泡となってしまいます。

そういった背景から実装している時間と同じぐらいチームでは課題に対する議論を行い、何を実装するかを検討しています。

また課題をいかに解像度を高めれるかが実装までスムーズに行えるかの分岐点となります。何を解決したいのか実際曖昧なまま進めてリリースできなかった機能があったりしたので気をつけたいところです。

5.おわりに

一年を通して開発エンジニアとして実装する力も大事ですが、取り組む上での姿勢やチームとしてどう動いていくかが重要だと感じました。

これからエンジニアとして業務に入る人の参考になれば幸いです!!

最後に、現在オールアバウトでは、エンジニアを絶賛募集中です。

ちょっと話を聞いてみたいなどでももちろん大丈夫です!

少しでも興味を持っていただけた方はぜひ採用サイトからご連絡ください。

corp.allabout.co.jp