TechCommit AdventCalendar2024 1日目の記事としてTechCommit運営のinoueがお送り致します。
この記事ではIT技術学習者コミュニティのTechCommit内で行っている『チーム開発プロジェクト』の運用方法や狙い、採用技術などについてまとめていきます。
個人開発をされている方はもちろん、社内研修や他コミュニティ運営者の方にも参考にしていただける内容があれば幸いです。
またTechCommitメンバーの方は興味があればぜひ一緒にチーム開発に参加してくださいね!
目次
なぜ”チーム開発”のプロジェクトをしているのか
特に狙いとして置いているのは次の3つです。
- 実践的な技術や開発手法の学習の機会を作る
- 実績を作れる場を提供する
- クリエイティブさを楽しむコンテンツにする
順番に解説します。
1. 実践的な技術や開発手法の学習の機会を作る
チーム開発プロジェクトでは、技術選定から、集客の施策、UX向上のための情報設計/UI設計などプロダクト開発に必要なものを一気通貫で行なっています。
特に集客方法やユーザーフレンドリーなUIを考えるなどは、今まで経験がないITエンジニアの方に、新鮮な気持ちで実践的な考え方などが身につけられるかと思っています。
書籍を読んだり、勉強会などを実施するのももちろん大事ですし実施もしていますが、『プロダクトに現実として起こっている問題をどう解決していくのかという意思決定』こそITエンジニアの成長に直結すると考えています。
インプットはもちろんとして、しっかりしたアウトプットを協力して出していく場で、成長機会を作っていけたらと思っています。
なお、運営者自身が勉強したいと思っているので、基本的にはスタンダードな(またメンバー内に得意な人がいる)スキルスタックをベースにしつつ、モダンな技術も一部積極的に取り入れています。
2. 実績を作れる場を提供する
いわゆるい業務未経験と呼ばれている方や、全然違うスキルセットの人を中心に、しっかりした基礎力をつけると同時に面接等でも面白おかしく話せるネタを作ってもらえたらいいんじゃないかなと思っています。
SNSなどでよく見かける『ポートフォリオ作成』なども悪くはないですが、現役のITエンジニアの方の開発の仕方を横で見たり、真似して機能追加をしてみるという経験の方が効率的に、そして本質的なアピールポイントになっていくはずです。
チーム開発を通じてどのようなことを学び、そのプロダクトでどんな機能追加をしてきたのかをしっかり話せるようになれば、業務経験と同等の評価を得られるだろうと考えています。(もちろんその為には特に初学者の人には結構頑張って学んでもらう必要がありますw)
OSSなどにコントリビュートするのは敷居が高くとも、コミュニティ内のいわば身内の人との開発であれば、色々聞きながら進めてもいただきやすいかと思います。
3. クリエイティブさを楽しむコンテンツにする
チーム開発プロジェクトの関わり方も、できるだけ間口を広げようとしています。
技術的なコミットはおそらく一部の方を中心にモブプロなどで行なっていくことになるかと思いますが、それ以外にもプロダクトとしての使い勝手のフィードバックなどでも貢献できるように、スクラムで言うところのスプリントレビューなどもやっていく予定です。(見える部分がちょっとできてくるであろう来年くらいから)
プロダクト内での学びなどもLT等でコミュニティ内を中心にどんどん知見を共有していくことで、開発に直接関わっていない方にも勉強になったり自身のプロジェクト推進のモチベーションアップにつながればと思っています。
どんなものを作っているのか
現在チーム開発ではmagarecoという漫画のレコメンドサービスを開発しています。
ひとまずは漫画のレビューサイトとして公開し、データの集まりに応じて、好きな漫画を登録したら他の人がおすすめしている漫画をおすすめしてくれる機能にしていければと動いております。
特に漫画好きの人が「おすすめの漫画ある?」と聞かれた時に「このページ見て!」と共有できる好きな漫画まとめサイトにしていこうと考えています。
詳細はメンバーの方には別途DesignDocを共有しています。
(なお、細かい内容などはユーザーインタビューなどもしつつ更新されていく予定なので、とりあえずそういうものかー程度の認識でも大丈夫です!)
採用技術の基準
開発はぼちぼち行なっている部分もあるものの、一部まだ技術選定を行なっている段階です。
採用技術の選び方としては、
- 現在のメンバーでレビューしてある程度品質が担保できる(ようになる)ものとすること
- 現役のWebアプリケーションエンジニアでも一部学びのある(学びたい)要素も含むこと
- できるだけその分野で人気なもの/大きめの運用事例があるものを使うこと
といった基準になっています。
あまり新しい要素を入れると頓挫しやすくなりますが、学習の一つの目的として輪読会なども行なっていけると良いと思っており、毎週関連技術の勉強会(輪読会)も行なっています。
主な採用技術
ざっくりですが、現状下記のような技術構成になっています。
- インフラ
- AWS
- ElasticBeanstalkでEC2/S3/ALB/RDSなどスタンダードなもの
- SQS(主にJobキュー管理用)
- AWS
- バックエンドアプリ周り
- Ruby on Rails
- Rspec(テスト)
- PostgreSQL(DB)
- フロントエンドアプリ周り
- Vite(ビルドツール)
- React
- TanStackRouter(ページの切り替え)
- TanStackQuery(APIリクエストや状態管理とか)
- Jest(テスト)
- UIライブラリなどは審議中
- API
- GraphQL
なお、CI/CDはGitHubActionsにより、各種テストやLintを回したりAWS上のstaging等の環境にデプロイしたりといったスタンダードな方法で行なっています。
メンバーの方で興味がある方は、適宜DesignDocも共有するのでぜひ参照してみてください!
主な使用ツール
とりあえずまだ本番にも特別なツールなどはあまり使っていません。
特にGraphQL関係など開発を便利にするツールをちょこちょこ調べながら入れる予定です。
とりあえず現状使っているものを記載します。
GitHub
いつの間にかGitHubOrganizationが無料で使えるようになってたので、コミュニティ用のorganizationを作成してプライベートリポジトリでメンバーのみ見れるようにしています。
GitのホスティングはGitLab等も考えていましたが、結局『無料の頑張らない範囲』で運用するのは現状GitHubでも変わらないこと、また好みの問題ですがGitHubActionsなどに慣れていることなどもあってGitHubを使用することにしました。
Renovate
https://github.com/renovatebot/renovate
ライブラリアップデート監視します。
Sentry(予定)
エラー管理/監視ツールです。
まだプロダクトを本番に出してないので出したら入れます。
Datadog(予定)
APMなどです。アプリの動作が遅いところなどを監視します。
死活監視などはどこまで真面目にやるかは要検討…。
まだプロダクトを本番に出してないので出したら入れます。
進め方
現在は月曜日夜と土曜日の夜に、oVice(バーチャルオフィス)に集まって、モブプログラミングで作業を進めたり、必要なら技術のキャッチアップのための輪読会などを行なっています。
毎月第一日曜日にも進捗などを全体に共有したり等も行なっていますが、もう少し頻度や時間などは増やそうと思っています。
ドキュメンテーションと運用
ドキュメントツール
GitHubOrganizationにドキュメント用のリポジトリを作成して、その中でプロジェクト別にドキュメントを入れていこうと思っています。
ドキュメンテーションツールなども無料の範囲で使えるのは大体5人くらいまでという制約があったり、GitHubWikiも無料のOrganizationでは強制publicになるなどもあり、ちょっと悩みましたが今はリポジトリとして管理することにしました。
(organizationに招待されたら見れるようになります)
主に整備している(しようとしている)ドキュメント
- DesignDoc(全体)
- プロジェクトごとにどういう経緯でどういう技術などを採用しているのかざっくりまとめます。
- 厳密にはDesignDocの範疇に含まれないと思われますが、チーム内での活動方針(集まる時間)やタスクの管理方法、レビュー時の注意事項なども記載します。
- DesignDoc(機能/Epic)
- 機能や採用技術ごとになぜ採用に至ったのか、どういう狙いでどう使っているのかをまとめます。
- またその技術を最低限使えるようになるための、おすすめの勉強方法やサイトなどの紹介も記載します。
最後に
少し詳細に踏み込んだ内容も記載しましたが、チーム開発の雰囲気や狙いなどが伝われば幸いです!
特にTechCommitメンバーの方は月曜や土曜夜など、ふらっとoViceに遊びにきて、何やってんのかな〜と聞き専ででも覗きにきてください!!!
それでは次回 TechCommit AdventCalendar2024 2日目はtomoさんです!
