こんにちは! 24Bのきつねでございます。先日traPで開催されたQSoCというイベントに参加したので、その概要や感想を書いていきます。ノクナートン先輩による2022年のQSoCに関するブログ記事もぜひご覧ください。
QSoCとは?
端的に言えば「SysAd班の活動の体験会」です。
traPの7つの班のひとつ、SysAd班は "System Administrator" の略称であり、traP内で使われる様々なサービスを開発・運営しています。中でもコミュニケーションサービス「traQ」は自分の作品を部内で共有したり、進行中のプロジェクトについて相談をしたり、個人チャンネルで雑談をしたりと日常的に使用するのでtraP部員にとっては欠かせないものになっています。他にも予定管理のknoQ、備品管理のbooQなど多くのサービスがSysAd班によって運用されており、SysAd班以外のtraP部員も欲しい機能や使用感などに関して積極的にフィードバックを送っています。
QSoCはSysAd班員の手助けを得つつ部内のサービスの改良に参加するイベントです。今年は6月末から7月上旬までの2週間程度を開催期間として、この間の自由な時間にIssues(改善・解決したいことリスト)から好きなものを選んで解決しました。今回のQSoCには私を含めて14人による20のプルリクエストがマージされました!
期間中の流れ
QSoCは自由参加で、開会式も決まった会場もないような比較的ゆるめのイベントです。それぞれの参加者に対してSysAd班員のメンターが1人割り当てられ、期間中はメンターの手を借りつつ自由なペースでサービスを改良していきます。
QSoCでのサービス改良は、それぞれの改良点について大まかに以下のような流れを辿ります。
- "good first issue"(初心者向け)のタグが付いたIssueの中から1つ選ぶ
- Issueで求められている通りにソースコードを書き換えてみる
- GitHub上でプルリクエストとして自分が書き換えたソースコードの採用を提案する
- SysAd班員の誰かがレビューをしてアドバイスをくれる
- 3-4を繰り返し、LGTM(Looks Good To Me)の評価を得たら採用決定 🎉
- 提案したソースコードをメインにマージ(統合)する
私は共同開発の経験がほとんどなかったので、まずQSoCの開催期間の早いうちにメンターのzer0-star先輩にtraQでアポイントを取り、進捗部屋でTypeScriptや共同開発の作法を逐一教えていただくことにしました。我ながら褒めちぎりたい行動力です。
そこで教わったことを反芻しつつ、その後は一人で時間のある時にGitHubを開き、Issueを見つけて先ほどの流れを繰り返しました。少し早く大学に着いた時に1-2限が始まる前の教室で先輩からのレビューを確認したりとか、そんな感じです。
結果として、QSoC期間中に「1文字の数字のスタンプを検索可能にする」「URL内のリガチャを無効化」「メッセージの投稿日を表示」の3つのIssueを解決することができました。3つ目の「メッセージの投稿日を表示」はIssuesから見つけたものではなく、私自身がtraQを使用していて改良したいと思っていた部分に実際に取り組んだ成果です。
感想
東工大に入学するまでの私は開発と言えばPythonを少し書いたことがある程度で、Gitも、traQの実装に使われているTypeScriptもほとんど触ったことがありませんでした。traPに入り興味のあったSysAd班に所属したはいいものの、右も左も分からない状態でみんなが使うサービスの開発に参加してよいものだろうか?迷惑をかけないか?となかなか手が出せずにいました。だからこそ、初心者として開発に参加することができるQSoCというイベントは私にとって願ってもない機会でした。とても感謝しています。
traPではGit講習会が毎年開催されており、自分でリポジトリを作成しコミットをするという操作そのものはそこでも練習できます。しかし、GitHub上でのコミュニケーションの取り方や、プルリクエストが承認されてマージへと至る流れなど、実際に開発に参加してみなければ分からないこともとても多いです。QSoCへの参加を通してこうした共同開発のノウハウを学べたことはとても大きな収穫でした。
QSoCは “traQ Spring of Code” という名の通りtraQをメインの改良対象としたイベントですが、Jomonやanke-toといった他の部内サービスの改良のプルリクエストもかなり勢いよく飛び交っている印象を受けました。自分たちで日常的に使っているツールだからこそ「ここがこうだったらいいな」という改良案はいろいろ出てきますし、それを自分の手で実現できるとなれば精が出るものです。開発環境で自分の改良が反映されているのを確認する瞬間は冗談抜きに感動ものです。
初めて一人でプルリクエストを出す瞬間の恐怖と言ったらなかったですが、メンターはもちろん、レビューしてくださる先輩方も皆本当にびっくりするくらい優しくて丁寧で、怒られたりする心配は杞憂でした。行動力はあればあるほど嬉しいことが待っています。traP部員でSysAd班での共同開発に興味がある方はぜひ参加してみることをお勧めします。
来年の今頃にはQSoCで教える側に立てるように、今のうちからスキルを積んでおきたいですね。他の班での活動もかなり忙しくなってきましたが、時間を見つけてフロントエンドだけでなくバックエンドの技術も学んでおこうと思います。
おわりに
traP公式ブログは幅広い分野の創作・開発に関する知見の宝庫です。ぜひ色々見ていってください!