🧭

LayerXサマーインターン体験記

2024/09/17に公開

はじめに

こんにちは、SomaTakataです!🌞
2024/09/02 ~ 2024/09/13 の二週間、LayerXサマーインターン1期生として参加してきました!🎉

今回は、サマーインターンの詳細と感想を書いていきたいと思います。📝

https://tech.layerx.co.jp/entry/2024/05/09/182525

インターンの流れ

インターンの流れは大きく分けて二つです!

  • 講義パート 3日間(9/2 ~ 4)
  • 開発パート 7日間(9/5 ~ 6 , 9 ~ 13)

講義パート

講義パートでは、フルスタック開発ハンズオンがあり、以下のオレンジの枠部分の技術について深く学ぶことができました。📚✨

ハンズオン

ハンズオンでは以下のことを学びました。

  • スキーマ駆動開発について
    • 実際に手を動かしてスキーマを作成
    • それをもとに、gqlgenでコードを自動生成
    • 生成されたコードをもとに処理を実装
    • graphql-code-generatorでフロントエンドのコードを自動生成
    • 上記をハンズオンで行い、スキーマ開発の恩恵を身に染みて感じることができました。
      • 僕が思ったスキーマ駆動開発の恩恵とは:
        • コードの自動生成による開発効率の向上🚀
        • スキーマで一括管理されることによるデータに起因するバグの減少🐛❌
        • スキーマが外部との共通の基盤になることによるチーム間コミュニケーションの円滑化💬🤝
  • GORMでの論理削除の実装
  • DataLoader による N+1問題 の解決
    • 興味があれば以下の記事を見てください!📖
  • Goのエラーハンドリングについて
    • if err != nil の必要性について
  • ログについて
    • 構造化されたログの必要性📊
  • テストについて
    • 実務ではどのように行っているのか🔍

https://tech.layerx.co.jp/entry/2022/06/13/120000

特別講座

フルスタック開発の他にも、CTOのymatsuさんやCEOのfukkyyさんの講話を聞く機会があり、エンジニアリングだけでなく、自分のキャリアを考える良い機会となりました!🧑‍💼✨

チーム開発パート

チーム開発パートでは、以下の技術構成でできたアプリケーションが配布され、それを顧客の要望(架空企業の要望一覧)をもとに各チームで機能の優先度を決定し、機能追加をし最終的に発表を行うというものでした。

僕のチームは 「僕らの羅針盤」 です!🧭

チーム開発パートでは以下のことを行いました。

  • ワーキングアグリーメントの作成
  • バクラクビジネスカードの基礎知識を身に着ける
  • 課題の理解と検討
  • ドメインエキスパートへのヒアリングによるドメイン理解
  • インセプションデッキの作成
  • リリース計画の作成
  • チーム開発
  • デモ会
  • 日報
  • チーム振り返り
  • チーム発表

ワーキングアグリーメントの作成

ワーキングアグリーメントを作成することにより、チームの約束事ができ、チーム開発においてスムーズなコミュニケーションをとることができるようになりました。🤝

https://www.agile-studio.jp/post/apm-working-agreement

バクラクビジネスカードの基礎知識を身に着ける

バクラクビジネスカードがなぜこれだけ使われているのか、誰のどういう課題をどのようにして解決しているのかというのをチームで調べ、それをまとめプレゼンで発表しました。他のチームとは違い、寸劇を行いました。プレゼンで寸劇を行うということが人生で初めてで、すごく楽しかったです!🎭

https://bakuraku.jp/card/

課題の理解と検討

架空の企業の要望一覧をもとに、顧客が今どういう課題を持っているのか、本質的にはどの部分に困っているのかということを考え検討しました。🤔

ドメインエキスパートへのヒアリングによるドメイン理解

課題の検討で考えた仮説をもとに、自分たちが今どのような情報が欲しいのかというのをリストアップし、15分という決められた時間の中でヒアリングを行いました。⏱️

インセプションデッキの作成

インセプションデッキを作成することにより、自分たちがどのような顧客に対してどのような価値を提供したいのか、やらないことはなにかなど、チーム内で共通認識を取ることができました。🗂️

https://www.ryuzee.com/contents/blog/7147

リリース計画の作成

リリース計画を決めることにより、いついつまでに何を実装し、その時にどうなっていなければいけないということが明確になり、行動計画を立てやすくなりました。📅

チーム開発

開発が本格的に始まったのが月曜日で、1日約4時間~5時間ほどしかなく決められた時間の中での開発だったので、自分たちのチームでは主要な部分は得意な人が全て実装しました。自分はフロントエンドが得意で、UIのほぼすべてを一日で実装しきりました。ほかの人はバックエンドの部分を実装しました。
爆速開発をチーム全体で体験するため、二日目以降は残っているタスクをフロントエンドとバックエンド一貫して任せることにより、チーム全体が爆速開発を体験できるようにしました。💨💻

デモ会

一日の最後にデモ会というものが用意されており、その日各自が作った成果物を発表する場が設けられていました。これを行うことによって、自分自身が今日やったこと・やれなかったことが明確になり、次の日の計画が立てやすくなりました。🎤

日報

自分が今日できたこと・できなかったこと・明日やること・感想を書くことによって一日の振り返りをすることができました。このような時間がなければ、振り返りを詳細にすることはなかったと思うので、時間を設けられていてありがたかったです。🗒️

チーム振り返り

日報で書いたことをチーム内で共有し、またチームメンバー同士の評価(good, motto)を書き共有する時間。これをすることにより、客観的に今日の自分はどうであったかというのを振り返ることができました。👥

チーム発表

発表では今までの成果を発表しました。UI・UXにこだわり設計し、またプレゼンもこだわったことにより、最優秀賞を頂くことができました!🏆🎉

インターンで使用したアプリケーションの技術構成

サマーインターンのここが良かった

  1. 二週間の間にLayerX・爆速開発について知るための充実したスケジュール構成
  2. 提供されているアプリケーションの環境のしやすさ

主にこの二つが挙げられます。
1の二週間の間にLayerX・爆速開発について知るための充実したスケジュール構成については上記で挙げているので、2の提供されているアプリケーションの環境のしやすさについて話したいと思います。

環境構築は開発において一番嫌いな工程なのですが、LayerXで配布されたアプリケーションの環境構築はすんなりとできました。

インターンで使用したアプリケーションの技術構成にもあるように、開発環境としてdevboxを使用しています。これにより、誰でも手元のコードだけで(コンテナなどを作らずシェルだけで)開発できるようになります。また、Makefileがあり、主要なコマンドは全てmake ○○で実行できた点もよかったです。🚀

おわりに

LayerXのサマーインターンは二週間毎日が濃密で楽しい時間でした。
LayerXのこともっと知りたい!爆速開発って何?って方にお勧めです。
来年以降も本当におすすめできるインターンなので、ぜひ参加してみてください!✨

Discussion