{
  "$type": "site.standard.document",
  "content": {
    "$type": "app.wtr.content.markdown",
    "markdown": "おはようございます。watura です。2026年4月5年目に入りました。前職よりはもう長くいて、前々職においつく勢いです。\n\n入社から5作目です。\n\nこの一年はTALES iOSアプリをずっとやっていました。4年なので、半分近くがTALESだと?!とすこしびっくりしています。\n\nいかにiOS アプリ開発でも生成AIによる開発効率化を行えるかを試行錯誤する1年でもあった気がします。\n\n日進月歩すぎて、なにやってきたかさっぱり覚えていないので、最近使っているSkillとかをちょろっと書いておいてみます。  \nたぶん、半年とかしないうちに陳腐化するんでしょうけどね!\n\nなお日々、スキルやAGENTS.mdはベストプラクティスみて修正して!とかこのドキュメント読んで修正して!といった指示を与えて見直しを行なわせ続けています。\n\n### 開発環境\n\n*   Claude Code\n    \n*   Xcode\n    \n    *   Xcode MCP + オレオレMCP Proxy\n        \n*   たまにCursorとかZedとかHelixとか\n    \n\nTALES MOBILEリポジトリはアプリ系モノレポにしていて、iOS/Android/共有ライブラリが一つのリポジトリに入っています。  \niOSの開発のときに、Androidの情報が不要だったり、共有ライブラリもそこまで必要がないので、Skillでそれぞれの情報を読込むようにしてあります。\n\n最近つくったスキルで、 **/open-xcode** がめっちゃ便利です。  \nやることは、ごにょごにょした上でxcodeで現在編集中のプロジェクトを開くというものです。  \nClaude Code→Xcodeへの遷移がスムーズになるため、複数のWorktreeでそれぞれ別の開発を行なっているときなどに,正しいXcodeを開くという動作がめっちゃ楽になりました。\n\nまた、不完全ではあるものの、WorktreeのルートにあるXcodeのuserdataをあたらしいworktreeのXcodeにねじ込むことで,最初から動かしたいスキーム・ターゲットをセットした状態でひらけるようにするという機能も追加しました。  \n少なくとも執筆時点では、xcode mcpはスキーム・ターゲットの変更には対応していません。なので、手動で調整してあげる必要がありました。  \n無理やりXcodeのステートを書き換えるようにしたので、ターゲット類を私の希望するデフォルト状態にできるようになりました。\n\nその結果、\n\n1.  実装したいIssueを与える\n    \n    1.  FigmaがあればMCPで見に行く\n        \n    2.  他Issueがリンクしてあったら見に行く\n        \n2.  いろいろ情報収集し実装をはじめる\n    \n3.  実装ができたら、**/open-xcode** スキルが発動する\n    \n4.  **/xcode-build** スキルも発動する\n    \n    1.  コンパイルできるようになるまでがんばってくれる\n        \n5.  **/xcode-test** でtestも多少はためす\n    \n6.  **実装に私が満足できていたら手動で** /appium スキルでその機能のスクショをとりにいかせる\n    \n7.  機能へのアクセスをe2eテストに落とす\n    \n\niOSアプリ開発において、Claude Codeとかにいい感じにビルドをさせるというのは結構面倒くさい処理です。  \nあと、このIssueを与えたりしたときに /worktree が実行されて初期化とかブランチ名いい感じとかうごくようにしたいなぁと試行錯誤しているところです。\n\n```\n⏺ /open-xcode\n\n  xcworkspace(優先)か xcproj を開く。\n\n  探索順序\n  - iOS/App/App.xcworkspace\n  - iOS/App/App.xcproj\n  - note.xcproj\n  - 上記になければfdでglob検索\n\n  動作\n  1. talesリポジトリの場合、スキーム切替スクリプトを実行(Xcode未起動時のみ)\n  2. openコマンドでプロジェクトをフォアグラウンドに\n  3. 引数があればxedでファイルを開く\n\n  引数\n  - なし → プロジェクトを開くのみ(編集中ファイルがあればそれを開く)\n  - ファイルパス → そのファイルを開く\n  - ファイルパス:行番号 → 指定行で開く\n\n  例\n  - /open-xcode\n  - /open-xcode Feature/SampleFeature.swift\n  - /open-xcode Feature/SampleFeature.swift:95\n```\n\nまあ、**これらの処理はスクリプトにしてサクッと実行させる方が確実に実行されていい気がしてます**!\n\n### 最近よく使っているスキル一覧\n\n**ビルド・テスト**\n\n*   /open-xcode\n    \n    *   Xcodeプロジェクトを開く(ファイル・行番号指定も可)\n        \n*   /xcode-build\n    \n    *   Xcode MCPでiOSビルド\n        \n*   /xcode-test\n    \n    *   Xcode MCPでiOSテスト\n        \n\n**コンテキスト読み込み**\n\n*   /ios-context\n    \n    *   iOS開発ルール・ドキュメント読み込み\n        \n*   /android-context\n    \n    *   Android開発ルール・ドキュメント読み込み\n        \n*   /sharedlib-context\n    \n    *   SharedLibビルドルール読み込み\n        \n*   /graphql-context\n    \n    *   GraphQLスキーマルール読み込み\n        \n\n**コードレビュー**\n\n*   /code-review\n    \n    *   PR品質・パフォーマンス・セキュリティレビュー\n        \n*   /review-comments\n    \n    *   PRレビューコメントへの対応\n        \n\n**ワークフロー**\n\n*   /commit\n    \n    *   Conventional Commitsに沿ったコミット\n        \n*   /publish\n    \n    *   コミット+PR作成\n        \n*   /worktree\n    \n    *   git worktree作成・作業開始\n        \n*   /tales-issue-task-run \\[#issue\\]\n    \n    *   Issueからタスク分解→実装→PR作成\n        \n\n**その他**\n\n*   /release-note \\[ver\\] \\[platform\\]\n    \n    *   マイルストーンからリリースノート生成\n        \n*   /appium\n    \n    *   E2Eテスト用ドキュメント参照\n        \n\n### MCP Server\n\n*   Xcode MCP(オレオレMCP Proxy経由)\n    \n    *   ビルド・テスト・プレビュー\n        \n*   Appium MCP\n    \n    *   E2Eテスト・アクセシビリティチェック\n        \n\n* * *\n\nエンジニアとしAIすすみ過ぎてどうすんの?アプリ開発者とかもうオワコンなんじゃないの?みたいなことを書いていたりもしたのですが、マジでただコードを書くだけの人って不要だよなとなりました。\n\n少なくとも今現在においては、作られていくコードを効果的に誘導していくみたいなところに職人芸が出てくるんじゃないかなぁという気がしています。\n\nというわけで、開発を少しでも楽にするぞというところをすすめていくために、AIをたくさん使いいろいろやってきています。  \nまた、この記事を書いていたら、もう少しああしたらよくなるなとかいろいろ思いつくので、どんどん進めたいですね。"
  },
  "path": "/blog/n1b7c22579c45",
  "publishedAt": "2026-04-07T00:00:00.000Z",
  "site": "at://did:plc:c656e4nvjol7kh35tfmzkgpu/site.standard.publication/3mmnvl6ln3226",
  "title": "note に入社して4年たっていた。",
  "updatedAt": "2026-05-25T07:14:58Z"
}