TipKitは表示状態の管理まで内部で完結するため、既存アーキテクチャと齟齬が生じたり、移行時に全ユーザーの表示状況がリセットされたりする問題があります。my route for iOSでは@ParameterとonAppear・onChangeで状態を同期させ、ロジックをViewから切り離して外部から表示制御できるようにしました。
Articles by Ryomm
著者一覧

iOSDC Japan 2025にゴールドスポンサーとして協賛しました!
iOSDC Japan 2025にゴールドスポンサーとして協賛した記録です。絵本のような質感を狙った冊子「アプリのひみつ アプリ内製開発ストーリー」の制作、AIファーストを掲げてVTuber風キャラクターを立てたブース企画、そして社員2名の登壇内容を紹介します。
![[iOS] すぐできる!CIクレジット超ドケチ節約術 cover](/assets/thumbnails/blog/authors/ryomm/2025-04-21/thumbnail.webp)
Bitriseの1回あたりの実行時間が25分に膨れ、予算超過でPRのマージを抑える事態になったmy route(iOS)で、CIクレジットを節約した取り組みです。CLIツールのセットアップ見直しやスナップショットテストのTestPlan分離などにより、平均22分を12分に短縮し約45%を削減しました。

my routeアプリにSwift Package Managerがやってきた!
my routeアプリでCocoaPodsからSwift Package Managerへ移行しました

【SwiftUI】独自のStyleを定義してスタイリッシュなコードを書こう
SwiftUIで独自のStyleを定義すると、用途別に乱立した構造体名を覚えなくても `~~Style()` から候補を辿れるようになり、コードが読みやすくなります。LabelStyleを例にカスタムスタイルの作り方を示し、my routeのProgressViewで背景のグレー表示までスタイルに含めた実例を紹介します。

【Slack CLI】block_idが衝突してSlackにメッセージを送れない
Slack CLIでrich_text型のデータを結合してBlock Kitのメッセージを送ろうとすると、`parameter_validation_failed`で失敗することがあります。原因はblock_idの重複でした。インタラクティブな動作が不要ならblock_idを削除すればSlack側が自動生成してくれる、という解決策を紹介します。

【学びの道の駅シリーズ】超エキサイティングなSlack bot「まなびぃ」つくった
社内の勉強会やイベントを収集・検索できるSlack bot「まなびぃ」をSlack CLIで開発しました。DataStoreや開発環境をSlack側が用意してくれる利点と、Block Kitを使うかは最初に決める、block_idの扱いに注意する、Workflowはビルド時しか実行されないといった開発Tipsを共有します。

iOSDC Japan 2024へ初スポンサーとして出展するにあたり制作した数々のノベルティを紹介します。くもびぃ紙クリップ、シールと台紙のセット、マルチカードツール、トートバッグ、パンフレット広告、そしてプロダクトごとに問題を用意したブース企画まで、こだわりの舞台裏をお届けします。

社内LT「Slackを使いこなせ!Slack効率3000倍」の文字起こしです。クエリを使った検索、カスタムレスポンス、メンションとユーザーグループ、通知とリマインダー、ハドル、メール転送、ワークフロー、Slack CLIでのカスタムアプリまで、業務の困りごとを解消する機能を一気に紹介します。

UITextViewをSwiftUIで使えるようにUIViewRepresentableする
UITextViewをSwiftUIで使うためにUIViewRepresentableで包むと、isScrollEnabledをfalseにすると改行されず、優先度を設定しても垂直方向の領域が調整されない問題に当たります。iOS16から使える`sizeThatFits()`でNSAttributedStringの高さを計算して解決した手順を紹介します。
![[iOS] Snapshot Test のリファレンス画像を任意のディレクトリに作成する cover](/assets/thumbnails/blog/authors/ryomm/2024-04-26/thumbnail.webp)
[iOS] Snapshot Test のリファレンス画像を任意のディレクトリに作成する
スナップショットテストのファイルが増えて目的のテストを探しづらくなったため、サブディレクトリに分けました。swift-snapshot-testingの`assertSnapshots`ではリファレンス画像の作成場所を指定できないので、`verifySnapshot`に絶対パスを渡してリファレンス画像を従来の場所に保つ方法を紹介します。

my routeアプリにスナップショットテストを導入しました
my routeアプリ(iOS)にswift-snapshot-testingでスナップショットテストを導入した記録です。API取得後の反映を待つ、端末によるframeのズレ、WebViewやカメラ画面の扱いといったUIKitアプリ特有の試行錯誤と、Bitriseを使ったCI戦略、肉眼で判断できない差異の炙り出し方を紹介します。

1on1で「ラフなLT大会をやりたい」と口にしてから約1ヶ月で、室町オフィスでの社内限定LT大会を実現した記録です。12名の登壇者が集まり、コーポレートITの協力でZoom配信も実施しました。Slackから離脱せずに楽しめる工夫と、ウェビナーのリアクション設定という反省点も共有します。