Garoon チームにジョインした4人の24新卒のメンバー、Fuji(Webエンジニア)、yuki(プロダクトデザイナー)、reo(QAエンジニア)、Atria(モバイルエンジニア)が、それぞれの1年目を振り返ります。 サイボウズでの新卒1年目の様子をぜひご覧ください!
Garoonとは、サイボウズが開発、提供している中大規模企業向けの多機能グループウェアです。詳しくは製品ページをご覧ください。 garoon.cybozu.co.jp
Fuji
自己紹介
Webアプリケーション職能のFujiです。開発本部、主にGaroonの性能改善と性能全般に関するタスクを行うNozomiチームに所属しています。
学生時代の趣味開発では、WebサイトやAndroidのネイティブアプリ、Unityでのゲーム開発、機械学習のコンペや競プロにトライしてみたり、と広く浅く様々な技術に触れていました。また、大学の研究で医療分野への機械学習の応用を行なっており、Pythonをよく書いていました。
学生生活最後の年に友人に誘われたことをきっかけにフルマラソンに初挑戦し、社会人になってから本格的にランニングを開始しました。3月末には3度目のフルマラソンを走りました。
1日のスケジュール
時刻 | 内容 |
---|---|
9:00 | 始業。週3程度で出社、残りは在宅です。 |
12:15 | お昼 |
13:15 | 昼会。進捗の共有やPRの依頼、モブの設定、スケジュールの確認、その他共有、ちょっとした雑談など。 |
13:45 | モブに向けて情報を収集、個人タスクを進める |
14:30 | チームでモブ |
15:30 | 個人タスクを進める |
17:00 | 社内勉強会 |
18:00 | 退勤 |
やったこと
各種研修
4月:新卒メンバーの全体でのビジネス研修
5-7月初旬:エンジニア新人研修 (関連記事:2024年のエンジニア新人研修の講義資料を公開しました - Cybozu Inside Out | サイボウズエンジニアのブログ)
7月中旬:Garoonチームへの配属、Garoon内の4つのサブチームを体験
8月:reoさんとの既存不具合の改修研修
9月:Nozomiチームへジョイン、今に至る(関連記事:Garoonのパフォーマンスを改善するNozomiチームの紹介 - Cybozu Inside Out | サイボウズエンジニアのブログ)
各種性能改善
1.メール整形処理の高速化
ブログ記事として投稿しました。詳細はブログをご覧ください。 blog.cybozu.io
2.スケジュール表示の高速化
Nozomiメンバーと共に複数の改善を実施し、特に効果が大きかったものはリリースノートに掲載されました。 garoon.cybozu.co.jp
3.ファイル管理アプリにおけるアクセス権書き出し機能の高速化
特定条件下でタイムアウトが繰り返し発生し、機能が利用できなくなることが報告されたため、タイムアウトが発生しないように改修しました。
分散トレーシングの導入
サイボウズでは、自社で構築したデータセンターにてクラウドサービスを提供しています。全社的にKubernetesで動く新たなインフラ基盤「Neco」への移行が進められており、これに関連してGaroonのサービス監視体制増強のために分散トレーシングを導入しました。
関連記事 : 【連載】Cybozu.comクラウド基盤の全貌 - Cybozu Inside Out | サイボウズエンジニアのブログ
1年目を振り返って
1年目ながら、技術的な挑戦や規模の大きなリファクタリングを、個人で、モブで、所属チームで、関連する複数チームと協力して、と様々なメンバーと共に取り組むことができました。上記以外にも、主体的に行った性能改善の提案が身を結んだり、ソフトスキルとハードスキル、両面で成長を感じる1年でした。
また、業務以外での部活動やイベン10にて、同じ趣味の方と出会ったり、その後のタスクでお世話になった方と早い段階で話す機会があったり、普段の業務では繋がりが薄い職種やチームの方とお話しできる機会があったりと、とても顔が広くなったと感じています。
関連情報 : コミュニケーション方法 | 採用情報 | サイボウズ株式会社
総じて、仕事とプライベートをうまく両立しながら、自分らしく働けた1年目でした!
yuki
自己紹介
プロダクトデザイナー職能のyuki(@snowyk25)です。Garoonの中でもモバイルアプリの要件定義やUIデザインをメインに担当しています。出身は情報系の学部卒で、在学中に「ユーザーの課題に寄り添ったサービスづくり」に関心を持ち、デザインの勉強を始めました。
学生時代はオーケストラでコントラバスを演奏していました🎻
やったこと
スケジュールを表示するウィジェットのデザイン
Garoonに登録された当日の予定を表示するウィジェット機能のデザインを担当しました。先輩のサポートからもほぼ独り立ちをし、初めて全部自分でデザインした要件になります。
アプリトップページのリニューアルプロジェクト
今後のデザイン観点で負債になりうる箇所を整理し、自らPMに提案してアプリトップページのリニューアルプロジェクトが始まりました。議論の叩き台なども進んで作成し、プロジェクト自体のロードマップを敷いてリードする立場を担いました。
Figmaでのプロトタイプを作り込み、社員を対象にしたユーザーテストも実施し、最適なUIを模索しました。先日こちらの機能もリリースされました!
新機能をユーザーに認知してもらうための施策提案
Garoonモバイルアプリの課題として、リリースした新機能がユーザーに認知されていないというものがありました。そこで新機能の導線にバッジを配置し、アプリをアップデートした際に新機能の存在に気づいてもらえるような施策を行いました。とある新機能はバッジを用いた訴求を行ったことで、訴求前と比較して機能の認知度がおよそ4倍に上がるという成果も出すことができました!
Figmaの整備・運用改善
Garoonを担当するデザイナー内の課題として、ファイル作成単位などの運用ルールが定まっておらず、過去のデザインを探しにくい状態になっていうというものがありました。
そこで過去のファイルを洗い出して整理してデザインデータを集約する場所をまとめ、運用しやすい構成にアップデートしました。メインの作業ファイルを1つにまとめたことで、新規のデザイン要件を作成する場所に迷わなくて済むように改善され、各々の業務がしやすくなりました!
1日のスケジュール
時刻 | 内容 |
---|---|
8:00 | 出勤 個人作業は朝会までの時間に集中して進めます |
10:00 | チーム朝会① Android開発チームの朝会に参加し、タスクの確認や実装上の相談を行います |
10:30 | チーム朝会② 要件検討チームの朝会に参加し、その日取り組む内容を確認します |
11:00 | Garoonモバイルチームでのリファインメント |
12:00 | お昼(&移動) |
13:00 | デザイン作業 |
16:00 | デザイナー同士でのレビュー会 |
17:00 | 退勤 |
1年目を振り返って
1年目ながらも提案や意見を発信しやすい環境に恵まれ、常にチームに必要なことを考えながら主体的に動くことができました。チームへのデザイン提案も、職種ごとの視点の違いに向き合いながら試行錯誤できる良い経験になりました。
要件検討の活動の中での役割分担や、仕様についての認識をしっかりと合わせる必要性など、チームで開発に取り組む難しさも感じましたが、コミュニケーション面や役割分担などの工夫についても知見を貯めることができた1年でした!
reo
自己紹介
QAエンジニア職能のreo(@i_moqa)です⛄️
Garoonで使用しているOSS(オープンソースソフトウェア)の更新、セキュリティを維持および向上するための開発・保守を担当しているYukimiチームに所属しています。
学生時代は、開発インターンでPHPを使った開発に携わっており、テストについてQAチームと議論する機会が多くありました。
その経験を通して、品質保証の重要性を実感し、QAエンジニアという職種に興味を持つようになりました。
マイブームは、銭湯や温泉に行ってリフレッシュすることです。
同期メンバーと一緒に行くことが多いですが、最近では1人で行くことも増えてきました。
月に2回ほど、銭湯や温泉に行くほどのお風呂が大好き人間です♨️
やったこと
PHP のバージョン更新対応を実施しました(8.2系 → 8.3系)
具体的に行ったこと
PHP8.3への移行に向けて、現行のPHP8.2との互換性を調査
バージョンによる変更点を踏まえて、必要なテスト計画を立案
テストケースの設計 〜 実行までを担当
Ubuntuのバージョン更新対応をしました(20.04系 → 22.04系)
具体的に行ったこと
- バージョンの更新に伴う影響範囲を確認し、必要なテストを実施
Garoonで使用しているOSSの脆弱性対応を行いました
具体的に行ったこと
影響が懸念されるものを対象に調査を実施
必要に応じて他チームとも連携し、該当OSSのアップデートを行い安全性を確保
Garoonで使用している自作パッチの調査・対応しました
具体的に行ったこと
現在適用されている自作パッチの内容と使用箇所を調査
自作パッチの不要化に向けて、外した場合の影響をリスクベースで評価
評価結果をもとに、自作パッチ解除に向けた方針を整理
1 日のスケジュール
所属しているYukimiチームではスクラムを採用しており、1週間のスプリントで作業を進めています。
水曜日にスプリントプランニングを実施し、PO(プロダクトオーナー)とSM(スクラムマスター)が中心となりチーム全体でスプリントの目標を設定します。
その目標達成に向けて、個人作業やモブで作業を行うことが多いです。
時刻 | 内容 |
---|---|
9:00 - 10:00 | 個人作業 |
10:00 - 11:00 | デイリースクラムの実施 デイリーリファインメントの実施 |
11:00 - 12:00 | モブ作業 or 個人作業 |
12:00 - 13:00 | 昼食(出社した際は、チームメンバーとご飯に行くことが多いです) |
13:00 - 17:00 | モブ作業 or 個人作業 |
17:00 - 18:00 | 情報整理(ドキュメントの整備や疑問点の整理を行います) |
18:00 - | 退社 |
基本的にはリモートワークで作業をしており、社内イベントなどがある際に出社しています。
1 年間を振り返って
GaroonのQA エンジニアとしての1年間は、大規模プロダクトならではの課題と挑戦の連続でした。
複雑なアーキテクチャを理解してテスト設計をすることは難しい反面、日々新しい発見があり、成長を実感しやすい環境でした。
特に、開発メンバーとのモブの中で、開発側の視点や意図を深く理解するために、チーム内で積極的にヒアリングを行うなど主体的に動けたと感じます。
また、同期との得意分野を活かした勉強会や、QA勉強会支援チーム「ミネルヴァ」による定期的なフォローアップなど、継続的な学習環境をうまく活用することができた1年でした。
Atria
自己紹介
こんにちは!AndroidアプリエンジニアのAtria(@AtriaSoft)です。
24新卒としてサイボウズ株式会社に入社し、北海道からフルリモートでGaroonモバイルのAndroidアプリを開発しています。学生時代は情報系の大学に通っており、スマートフォンの本人認証に関連する研究をしながら趣味開発をしていました。
マイブームは長距離ドライブ。先月はガソリン代が2万円近くになってしまい、流石にやりすぎたなと思っています。
やったこと
ウィジェットの導入
Garoonモバイルv1.11にて、ウィジェット機能をリリースしました。
この機能は事前にホーム画面にウィジェットを配置しておくことで、Garoonモバイルアプリを起動しなくても当日の予定を確認できる機能となっています。
ウィジェット開発にはJetpack Glanceを利用しました。
Jetpack GlanceはJetpack Compose-Likeな記法でAndroidウィジェットを作成できるJetpackライブラリです。ここで重要なのが、これはあくまでも"Compose-Likeな記法"というところです。
実際に書いてみると「なんでそんな挙動が?」という不思議な動きをしたり、Jetpack Composeと比べて痒いところに手が届かなかったりします。Jetpack Glanceを用いて開発を行った際に遭遇した問題とその解決方法を、同じGaroonモバイルのAndroidアプリ開発チームの臼井さんが記事にしてくださっているので一読をお勧めします。
Jetpack Glanceを利用したことがない方でも「Glanceでの開発ってこんな感じなんだ」とイメージを持てると思います。
Jetpack Glanceを利用した開発は技術的にチャレンジングで面白い仕事ができました。今後も機能をブラッシュアップしていきたいですね。
アプリトップページの大規模刷新
Garoonモバイルv2.2にて、開発中の新機能として新しいアプリトップページをリリースしました。このプロジェクトはyukiさんと共同でオーナーシップを持って取り組みました。
自分は普段プログラマーとして動いていますが、このプロジェクトについては価値探求を行うチーム(詳しくはデュアルトラックアジャイルのディスカバリーで調べてください!)に一時的に移動して活動を行いました。
チーム内では意思決定をまとめるためのドキュメントの用意や、機能を実現するために必要そうな工数の見積もり、懸念点の洗い出し、プロトの作成など幅広い作業を担当しました。
そして、ある程度価値探求やドキュメント周りの仕事が落ち着いたのち、GaroonモバイルのAndroidエンジニアとしてPG業務に戻り開発タスクも行いました。
新しいアプリトップページは今までのWebViewベースだった旧画面を一新し、フルネイティブで実装されています。 フルネイティブで実装できる環境を活かしてpull to refresh機能も追加されており、WebViewベース時代の画面と比べて"アプリっぽさ"が出せていると思います。「スケジュール」や「メール」などへの導線もトップに現れることでアクセスしやすく改善しました。
新しいアプリトップページは自分にとって価値探求から実装まで関わることのできた思い入れのある機能になりました。入社時点ではここまで大きな仕事ができるとは思っていなかったので、新卒にこんな大きなチャレンジをさせてくれたチームに感謝しています。
1日のスケジュール
基本的なスケジュールは以下の通りです。
スクラムイベントがある日やイベントごとがある場合はモブプログラミングの時間に差し込まれる感じです。
時刻 | 内容 |
---|---|
9:00くらい | kintone上に始業の連絡をして個人作業や通知チェックを済ませます |
9:45 | 朝会。チームメンバーとオンライン上で顔合わせをして、進捗状況を話し合ったり、課題を抱えていないかの確認や、チームが今日をどのように過ごすかの相談をします |
12:00まで | モブプログラミング。通話を繋いで画面共有をしながら作業します |
お昼 | 洗濯や自炊などの家事を進めたり、オンラインゲームのデイリーを済ませたりしています。 気分がいい時は車で近くの銭湯に寄ってリフレッシュしています |
13:00 | モブプログラミング再開 |
18:00 | 退勤! |
出社は普段全くしていません。
強いて言えばイベントの参加のために、1-2ヶ月に1回くらいのペースで北海道から東京に出張/出社することがあります。
1年間を振り返って
気づいたら2年目になっていました。ウィジェット機能の追加に加えてアプリトップページの大規模刷新という、インパクトある機能を2つ提供まで漕ぎ着けたことに喜びを感じています。
まだまだGaroonモバイルは進化の余地を残していると思うのでフットワーク軽く動いて、より良い価値を提供していきます!