000%
COMMISSION Nº 06 · 2018–20 — TEAM CHAT
GRAP · iOS

GRAP — 旧ビルドと新ビルド、買収を越えて続いた二本立ての ownership。

GRAP で過ごした 2 年間の単独 iOS ownership です — レガシーのチームチャットビルドを 出荷し続けながら、4.0 を Swift でゼロから組み直し、その間に Kakao Enterprise の買収まで 抱えて越えました。

FIG. 01GRAP — IOS — GRAP · iOS
COMMISSIONiOS · Swift (Pods Obj-C) · MVVM · RxSwift family · CocoaMQTT-over-TLS2018.02 — 2019.12 → 2020.12

2018年から2020年までGRAPの開発を担当しました。アプリはヒソン触媒・アメイジング・ブルワリー・サムスン電子・ロック&ロック・大手宗教団体 など多様な業務領域で使われました。二つのバージョンを同時に管理する必要がありました — 古いビルドは止まらず出荷を続けなければならず、新しいビルドはその傍らで一から組み上げなければならない、という形です。同じ製品を、異なるコードベースと構成で管理しました。

アプリケーションは Swift で書きました。third-party レイヤーはその時代の韓国 iOS の標準的なツールチェーンを背景に、相応のサイズの Objective-C 表面を支えていました。ネットワーキング・リアルタイムメッセージング・アプリ内画像レンダリング・キャプチャとアルバム・identity・push と telemetry・keychain・attributed text、それらをまとめて束ねる RxSwift 系まで。

リアルタイムメッセージングには相互TLSを適用したMQTTを使いました — クライアントは自身の証明書を使い、開発中には暗号化が本当に効いているのかを、パケットのレベルで直接確かめました。同じアプリが、国境をまたぐチームのためのライブ翻訳も載せていました。メッセージ · 投稿 · コメントをその場で翻訳し、結果を先に見せて、確認を経てから送らせる作りです。そして既製のライブラリが足りない場所ではフォークを起こし、自分たちで修正しました — カメラとアルバムのピッカーがその一つです。

あの 2 年間で数十回のストアリリースが出て、顧客の目の前で起きたクラッシュが求めれば、即日の緊急ビルドもありました。push 証明書のライフサイクルは最初から最後まで私の持ち分でした — 毎年更新し、その手順書を自分で書きました。ツールチェーンの更新がクラッシュレポートのシンボル復元を壊したときは、復元処理を自動化したパイプラインを作りました。本番には 4 つの言語が載って出ていきました。

バックエンドはスロベニア出身の有能なエンジニアが率いており、日々の業務言語は英語でした。プロトコルにまつわるすべての問いは英語でやり取りされる文字ベースの設計対話に変わり、最終的には明示的な契約として結実しました。海外の有能なエンジニアと文字ベースの英語プロトコルの上で協業した経験は、エンジニア対エンジニアのコラボレーションをどう捉えるかという私の見方に、今でも大きく影響しています。(この時期の物語は Visuals · The Interview No. 004 — The Mission Song により詳しくまとめてあります。)

会社が Kakao Enterprise に買収された後も、GRAP と Kakao Work はそれぞれ独立したプロダクトとして運営されました。一つの事務所で二つの製品と、それぞれのリリース日程を同時に管理していた時期がありました。

— FIN —