2023年8月~9月にかけてLINE技術職インターンシップ・ハッカソンコースを開催しましたので、その様子をご紹介します。
このコースは、本格的なチーム開発を体験していただくこと、新しい技術に挑戦して今後につながる学びを得ていただくことなどを目的としています。
今年で5回目の開催となったハッカソンコースですが、例年どおりの京都オフィスでの開催に加え福岡オフィスでもハッカソンインターンを実施し、初の2拠点開催で総勢22名の方にご参加いただきました。
また、最終日の成果発表会は数年ぶりにオフラインでの実施となり盛況だったので、成果発表会の様子を中心にレポートをしていきたいと思います。
なお、オリエンテーション〜開発までの詳細は昨年のハッカソンレポートをご確認ください。
2023年のハッカソンインターンの概要
今年の開発テーマは昨年に引き続き「フードデリバリーアプリ」の開発でした。
京都オフィスは京都の大文字焼きがハッカソンの開始日だったことに因んで、チームdai、チームho、チームmyoの3チームに分かれて、福岡オフィスは福岡を代表する駅である博多駅と天神駅からとって、チームhakataとチームtenjinの2チームで開発に臨みました。
オリエンテーション〜開発の期間はオンラインがメインでしたが、どちらのオフィスでも、SlackやZoom、Confluence、Miroなどをフル活用し、メンターに相談を重ねて開発を進めていきました。
成果発表会の概要
最終日に13日間の集大成となる成果発表会が京都オフィス、福岡オフィスで開催されました。
インターン生はぎりぎりまで資料や成果物を修正し、成果発表会に臨みます。
これまで伴走してきたメンターはもちろん、それ以外のLINEやLINE Fukuokaのエンジニアたちも参加してくれました。
各チームごとの発表内容をそれぞれ特徴的だった点についてメンター陣からのコメントをご紹介します。
チームdai
チームdaiの開発したアプリは、雨雲レーダーのオーバーレイ、ユーザーレポート、ユーザーと注文者・店舗とのチャットといった独自機能のアイディアを考えられていました。デザインを情報設計から取り組んでおり、ユーザーが必要なものは何か、ユーザー視点で考えられていたことがよかったです。
サーバサイドの観点では、ここ数年のLINE KYOTOのハッカソンインターンの中で、初めてしっかりとした負荷試験まで行ったチームというのが良いところでした。さらに改善まで行うサイクルに取り組んでいたのが素晴らしかったです。
また、開発プロセスの観点では、最初にデザインを用意して認識を合わせてから開発を開始するなど、手戻りを少なくする工夫や、Makefileなどでプログラム以外のリソースを適切にメンテナンスしていたのが機能の充実、完成度に繋がっていたと思います。
チームho
チームhoの開発したアプリは、マンションの入り口で迷わないようにするためのノート機能やブラックリスト機能といった実際のサービスで必要となる機能がよく考えられていました。BtoBのアプリという馴染みのないものであるにも関わらず、解決すべきユーザーのペインポイントをうまく捉えることができていたと思います。
サーバサイドの観点では、最適化について理論に基づいてアルゴリズムを組み立て、加えてプロダクト特性を意識したアレンジも加えられている点がとても良かったです。
また、時間が少ない中でインフラ面でのKubernetesへのチャレンジ、少し荒削りでも「動く」ソースコード作りなど、ハッカソンとしてのプロダクト作りを実践できていたと思いました。
チームmyo
チームmyoの開発したアプリは、大事なアクションをボタンでなくスワイプで操作するなど誤操作を防ぐ工夫をしたり、アプリキルからの復帰、Androidネイティブのマテリアルデザイン機能を利用してダイナミックカラーに対応するなどUXにこだわりが見られました。
サーバサイドの観点では、経験のなかったGraphQLやサーバサイドKotlinにチャレンジする姿勢がとてもよかったように思います。
また、インターン中もフロントエンドとバックエンドの垣根なくDB定義やAPI定義が活発に議論され、発表会でもトラブルの際に仲間内で助け合うなどチームワークが特によかった印象を受けました。
チームhakata
チームhakataの開発したアプリは、"楽しくデリバリーをする"というゴールから出発し、ゲーミフィケーションを取り入れ、経験値・レベル、アチーブメント、クーポンの発行、加速度センサーを使用したドライバーの分類など、多彩な機能が考えられ、それぞれが確実に実装されていました。
タスク管理やAPIドキュメンテーションの作成もきちんと行い、チームワークの高さが印象的でした。
クライアントの観点からは、UIとコードの完成度は高く、デザインの作成やフォームのバリデーション、細かなアニメーションの実装など、UI/UXへのこだわりが感じられます。
バックエンドの観点からは、docker composeを使用して開発者全員の環境を統一し、効率向上を目指す姿勢や、レビュー中に指摘された認証認可機能を素早く実装できたことから、アジャイルな開発の迅速な動きができていたと思います。
チームtenjin
チームtenjinの開発したアプリは、既存のドライバーアプリのレビューコメントの分析やUI/UXのデザインベンチマークを取るなど、事前準備をしっかり行なった上で開発されている印象を受けました。
ドライバーの働きやすい環境の実現のためにチャット機能や商品の受け取り時のQRコードによる認証等のアイデアが出されており、実現性も考えられていて良かったです。
ほぼ全員が未経験の言語、ミドルウェア、ツールを採用するなど果敢にチャレンジする姿勢がとても良かったと思います。
Confluenceやmiroを活用しドキュメントをしっかり用意している点や設計時からクライアント・サーバー全員が集まって一緒に確認するなど、チーム開発をしっかりと意識されていた点も素晴らしかったです。
コードレビュー会
成果発表の後はメンターから各チームに向けて、コードレビューを実施しました。
2週間という短い期間のハッカソンということを考慮して、コードを綺麗に書くことまでは求めていませんでした。
ただ、もう少し考慮した方がいい点、改善した方がいい点、よかった点などを説明させていただきました。
具体的なよかった点としては、 開発用にMakefileを利用したり、Github ActionsでCIを回したり、開発効率を改善をしている点、エラー処理がかけていたり、docstringでコメントが記載されている、エンドポイント設計が適切であるなど、コードの実装や設計が丁寧な点を話しました。
また、もう少し改善した方がよかった点としては、似たような名前のオブジェクト定義がある、用途ごとにパッケージ構成を分けていないなど、開発効率を落とす点、また、不適切なエラーハンドリングをしている点を指摘しました。
総評としては、Unit TestやE2Eテストを書くチームもいたり、OpenAPIからコード生成していたり、各チームの学生の工夫や特色が見られた点がよかったです。
表彰式
すべてのチームの発表が終わったら、いよいよ表彰式に入ります。
表彰は順位をつけるのではなく、各チームの特徴や工夫が見受けられた点に着目して評価をしていきます。
どのチームも素晴らしい成果物を発表してくれたので、メンターたちも大いに悩みつつも、今年のハッカソンの各チームの表彰結果は下記の通りに決定しました。
京都 |
チームdai | パフォーマンス賞、完成度賞 |
---|---|---|
チームho | グッドフィーチャー賞、インテリジェンス賞 | |
チームmyo | グッドチームワーク賞、グッドUX賞 | |
福岡 |
チームhakata | グッドUX賞、完成度賞 |
チームtenjin | チャレンジャー賞、チーム開発賞 |
それぞれの賞は、メンターから見て下記の基準で評価されています。
- パフォーマンス賞・・・サービスのパフォーマンス向上を明確に意識し、開発時にそのための仕組みを導入して測定結果から改善を行っていた点を評価しました。
- 完成度賞・・・テストコードも多くdomainを意識した設計などプロダクトとしての完成度が高く、それらを実現するためのチーム開発の工夫を含め評価しました。
- グッドUX賞・・・ユーザーへの配慮が感じられるような優れたUI/UXを実現できたかどうか、また魅力的なデザイン性の画面を作成した点や、実際に使う場合を想定して実装されている点等を評価しました。
- グッドフィーチャー賞・・・適切な課題設定を行い、設定した課題を解決する実装ができている点を評価しました。
- インテリジェンス賞・・・ドライバーと注文のマッチングに関する最適化を、ロジカルに考え実装できている点を評価しました。
- グッドチームワーク賞・・・フロントエンドとバックエンドの担当者それぞれが協力して設計を行い、助け合う姿勢をを評価しました。
- チャレンジャー賞・・・GO 言語や WebSocket、iOS など、未経験/経験の浅い技術にチャレンジしたこと、チャット機能やQR コードによる認証などなど +αとなる機能開発に取り組んだことを評価しました。
- チーム開発賞・・・未経験な技術を多く使う中で、調査を行い開発環境・設計・API仕様に関するドキュメントを整備し、チームで協力して開発を行った点を評価しました。
まとめ
以上で 2023年 LINE技術職インターンシップ・ハッカソンコースはすべて終了です。
限られた期間の中ではありましたが、本格的なチーム開発体験、新しい技術へのチャレンジ、それらを通した学びの機会になっていれば嬉しいです。
ご参加いただいた皆様、本当にありがとうございました!
インターンシップ・ハッカソンコース中に使用された技術の一覧
京都
|
福岡
|
||
---|---|---|---|
Server side | Language | Python, Kotlin, Go | Python, Go |
Framework・Library | FastAPI, Echo, Gin Web Framework, GORM, Spring Boot | FastAPI, SQLModel, Gin Web Framework | |
Technique | WebSocket, GraphQL | WebSocket, OpenAPI | |
Client side | Language | JavaScript, TypeScript, Kotlin | Swift, React |
Framework・Library | React, React Native, Jetpack Compose, Apollo | SwiftUI | |
Technique | WebSocket, GraphQL | WebSocket | |
External Service | - | Google Maps Platform | Google Maps Platform |
Database・Storage | - | MySQL, Redis, Verda Object Storage | MongoDB, MySQL |
Infrastructure | - | Docker, Verda (Private Cloud), Verda Virtual Machine, Verda App Runner | Docker, Verda (Private Cloud), Verda Virtual Machine |
おまけ ~ After Party~
成果発表会が終わった後は対面でのAfter Partyを開催しましたー!
みなさんこれまでの緊張がほぐれ、社員・学生入り混じってのワイワイ盛り上がりました!
※未成年の参加者の方にはアルコール類は提供しておりません。