Gyazoチームで機能ベースの開発に参加。Rails本体の認可や課金から、macOSクライアント、動画処理サービス、ブラウザ拡張まで、機能に必要な部分を全部実装。
GyazoチームでGyazoの開発に参加しています。機能ベースで開発するチームなので、フロントエンドからバックエンド、必要ならネイティブ側まで、その機能に必要な部分は全て触ります。Gyazoは複数リポジトリ(Rails本体、macOS/iOSクライアント、Goの動画処理サービス、ブラウザ拡張、課金基盤)で構成されていて、そのほとんどにコミットしています。
Gyazo本体(Ruby on Rails)
一番コミットが多いリポジトリです。
- アクセスポリシーと認可: Teamsのデフォルトアクセスポリシー、API経由の画像アクセスポリシー、課金プランに応じた機能ゲート(非対応ユーザーへの402返却)など、権限まわりを継続的に実装
- フロントエンドの近代化: knipを導入して未使用コードを検出して削除、JSXファイルの拡張子統一。lint移行やTypeScriptバージョン移行、UIライブラリ脱却の調査をして、それぞれ提案書としてまとめた。歴史のあるRailsアプリのフロントエンドをどう現代化するかという技術負債の仕事
- ほかに描画ツールで保存後に画像が崩れるバグの修正など、細かい修正多数
macOSクライアント(Swift)
ウインドウ単位の撮影と録画機能を実装しました。ケバブメニューの追加、カーソル描画の改善、キー操作(SPACE / ESC)まわり、@MainActor化によるクラッシュ修正など。デスクトップアプリはWebと違ってリリースを巻き戻せないので、変更の入れ方は慎重になります。
動画処理サービス(Go)
動画の再生速度変更(0.25〜2.0倍速)、trim、音声削除、静止画フォーマット変換ダウンロードを実装しました。Proプラン向けの機能ゲートは認可判定を本体側に委譲する形にしています。
ブラウザ拡張・iOS・課金基盤
キャプチャ通知のアクションメニュー改修、iOSでの画像複数選択とリンクコピー、決済レスポンスへのクーポンやサブスク詳細情報の追加など。
使った技術
- TypeScript / React
- Ruby on Rails
- Go
- Swift (macOS / iOS)
学び・所感
- 「機能ベースで縦に切る」開発スタイルは、特定のレイヤーだけ得意な状態を抜けて、プロダクトとして責任を持つ感覚が育つ
- 大きなプロダクトに対しても、堅牢さと開発スピードを両立させる進め方を学んだ
- 社内のドッグフーディング文化や BizDev とのコミュニケーション設計など、技術以外の学びも多い