Shopifyが実践するAI駆動型開発の最前線:Claudeとオープンソースツール「ROST」が拓く生産性の新境地
テクノロジーの進化が止まらない現代において、AIはあらゆる産業に変革をもたらしています。ソフトウェア開発の現場も例外ではありません。特に、大規模なコードベースと複雑な開発プロセスを持つ企業にとって、AIの導入は生産性向上とイノベーション加速のための不可欠な要素となりつつあります。
今回、私たちはEコマースの巨人ShopifyがどのようにAIを活用し、開発者体験を向上させ、そしてその成果をオープンソースコミュニティに還元しているのか、深く掘り下げていきます。Principal EngineerであるObie Fernandez氏が語る、Claudeと彼らが開発したオープンソースツール「ROST」の組み合わせが、いかにして開発の未来を再定義しているのか、その全貌を解き明かしましょう。
Shopifyの巨大な開発基盤と生産性の挑戦
まず、Shopifyが直面している開発環境の規模感を理解することから始めましょう。Obie Fernandez氏が所属するAugmented Engineering Groupは、「AIを使ってShopifyの開発者体験を向上させる」ことをミッションとしています。彼自身、AIを活用したアプリケーション開発に関する著書「Patterns of Application Development using AI」の著者であり、この分野の深い洞察を持つ専門家です。
Shopifyは、世界でも有数の大規模なRuby on Railsアプリケーションを擁する組織です。メインアプリケーションは20年近くにわたり開発が続けられており、数百万行にも及ぶコードで構成されています。現在、約5,000ものリポジトリが存在し、年間で約50万件ものプルリクエスト(PR)が生成されるという、驚異的な開発活動が行われています。
このような途方もない規模の開発環境では、生産性の維持が最大の課題となります。新しい機能の追加、既存システムの改善、技術的負債の解消、そして何よりも安定した運用を保証しながら、開発速度を落とさずに進化し続けることは至難の業です。コードベースの肥大化は、開発者が変更の影響範囲を把握することを困難にし、テストの実行時間やデプロイの複雑さを増大させます。この課題に立ち向かうために、ShopifyはAIの力を借りることを決断しました。
AI活用における二つのアプローチ:エージェント型 vs. 構造化ワークフロー
AI、特に大規模言語モデル(LLM)の活用には、大きく分けて二つの異なるアプローチが存在するとObie Fernandez氏は指摘します。この区別を理解することが、Shopifyのソリューションの核心を理解する鍵となります。
1. エージェント型ツール(Agentic Tools):探索と自律性
まず一つ目は、エージェント型ツールと呼ばれるアプローチです。これは、AIを「アシスタント」や「ツール」として活用し、適応的な意思決定、反復、そして自律性を要求されるシナリオに最適です。
特徴と得意なタスク:
- 探索的・曖昧なタスク: 解決策への経路が事前に明確でない場合に威力を発揮します。例えば、新しい機能のプロトタイピング、複雑なバグの原因特定、既存コードベースにおける最適なリファクタリングパターンの探索などが挙げられます。
- LLMの推論と判断に依存: エージェントは、与えられたタスクに対して自身の「思考」と「判断」に基づき、最適な行動を計画し、実行します。試行錯誤を繰り返し、状況に応じて戦略を調整する能力が求められます。
- 継続的な適応とデバッグ: 予期せぬ問題に遭遇した場合でも、エージェントが自律的にデバッグを行い、解決策を反復的に見つけ出すことが期待されます。
Claude Codeの役割: Anthropicの「Claude Code」のようなツールは、このエージェント型アプローチの典型です。開発者は広範な指示を与えるだけで、Claude Codeがコードの生成、デバッグ、テスト、リファクタリングといった一連のタスクを自律的に遂行します。Shopifyの開発者たちは、Claude Codeの導入当初からその能力に興奮し、急速に利用が拡大していきました。ピーク時には約500人のデイリーアクティブユーザーを抱え、毎秒25万リクエストを処理するに至ったという事実が、その驚異的な効果を物語っています。
2. 構造化ワークフローオーケストレーション(Structured Workflow Orchestration):一貫性と再現性
もう一つは、構造化ワークフローオーケストレーションというアプローチです。これは、予測可能で明確に定義されたステップを持つタスクに最適であり、一貫性、再現性、そして明確な監視を重視します。
特徴と得意なタスク:
- 予測可能で定義済みのステップ: 解決策への経路が事前に明確であり、特定の順序で一連の操作を実行する必要がある場合に適しています。
- 一貫性と再現性: 大規模なシステム変更や移行において、すべての変更が同じ基準と手順に基づいて行われることを保証します。
- 明確な監視と制御: 各ステップの実行状況を把握し、必要に応じて介入できるため、予期せぬエラーのリスクを最小限に抑えられます。
- インテリジェントなコンポーネント補完: ワークフローの各構成要素において、AIの力を活用して特定のタスクをインテリジェントに完了させます。
Shopifyでの具体的な適用例: Shopifyでは、以下のような大規模な作業にこのアプローチが非常に効果的であると判明しています。
- レガシーコードベースの移行: 例えば、Python 2からPython 3への移行、あるいはJavaScriptの古いフレームワークから最新のものへの更新など、大規模かつ定型的なコード変換作業。
- 大規模システムのリファクタリング: パフォーマンスの改善、セキュリティ脆弱性の修正、あるいは特定の技術的負債の解消など、目的が明確でステップが定義しやすいリファクタリング。
- 自動テスト生成と最適化: 数十万にも及ぶテストコードの網羅性を分析し、欠落しているテストを自動生成したり、既存のテストを最適化したりする作業。
- 型システム(Sorbet)の適用と改善: Rubyのような動的型付け言語に静的型付けシステムであるSorbetを導入・維持する際に、型定義の自動生成や型チェック結果に基づくコード修正を支援する。
ShopifyのAI駆動型開発を支えるオープンソースツール「ROST」
Shopifyは、この構造化ワークフローオーケストレーションを実現するために、自社で「ROST」というツールを開発し、オープンソースとして公開しました。ROSTは、AI時代のワークフロー定義言語とも言える存在です。
ROST誕生の背景:スクリプトの乱立問題
Obie Fernandez氏が強調するように、Shopifyには「ティンカリング(いじくり回す)」という文化が深く根付いています。これはCEOのTobi Lütke氏が長年にわたり育んできたもので、エンジニアだけでなく、営業やサポート部門に至るまで、誰もが自らの業務を改善するためのツールを開発する自由な気風があります。
AIの登場は、この文化に爆発的な影響を与えました。Claude Codeのようなツールやチャット補完モデルが利用可能になると、たちまち社内のあらゆる場所で「AIを活用したスクリプト」が生まれ始めました。特に、複数のプロンプトを連結したり、一連のタスクを自動化したりする「プロンプトチェーン」型のスクリプトは数百種類にも及んだと言います。これは、各チームがそれぞれのニーズに合わせて個別に開発を行った結果であり、LangChainのような既存フレームワークを使うチームもあれば、独自のスクリプトをゼロから書くチームもありました。
もちろん、これはイノベーションの証ではありますが、同時に非効率性とメンテナンスの課題も生み出します。同じような目的のスクリプトが複数存在し、ベストプラクティスが共有されず、改善が局所的になるという問題です。そこでShopifyのAugmented Engineering Groupは、組織全体の共通ニーズに対応し、AI活用ワークフローを標準化するためのソリューションとしてROSTを開発しました。
ROSTのコンセプトとコア機能
ROSTは、「set your money on fire(お金を燃やす)」というジョークから名付けられた(!)ワークフローオーケストレーションツールです。その名の通り、非効率なプロセスによって無駄になるリソースを効率化することを目指しています。
1. Rubyによる実装:Rails開発者への親和性 ROSTはRubyで実装されています。PythonやTypeScriptがAIツールの主流言語となる中で、これは珍しい選択かもしれません。しかし、Shopifyが世界最大級のRuby on Rails組織であることを考えると、この選択は理にかなっています。Ruby on Railsが持つ「規約に基づいた開発(Convention over Configuration)」のアプローチは、ROSTの設計思想にも影響を与えています。ROSTは、Ruby on Railsと同様に、規約に則ることで少ない記述で強力な機能を提供するよう設計されており、Rails開発者にとって非常に直感的で使いやすいツールとなっています。 重要な点として、ROSTを利用するためにRubyで開発する必要はありません。プロンプト指向のタスクとBashスクリプトなど、様々なコマンドラインツールを組み合わせてワークフローを構築できます。
2. 決定論的ワークフローと非決定論的タスクの融合 ROSTの最大の特長は、決定論的なワークフローの中に、Claude Codeのような非決定論的なAIエージェントの処理を組み込むことができる点です。これにより、ワークフロー全体の一貫性と再現性を保ちながら、AIの自律的な判断能力を最適なタイミングで活用することが可能になります。 Obie Fernandez氏はこれを「ピーナッツバターとチョコレート」の完璧な組み合わせに例えています。それぞれ単体でも優れていますが、組み合わせることでより強力な効果を生み出すのです。
3. 効率的な開発とデバッグを支援する機能
- セッションの保存と再開: 複雑な多段階ワークフローを開発する際、途中のステップでエラーが発生すると、最初からやり直す必要がありました。ROSTはワークフローのセッションを保存し、任意のステップから再開できる機能を提供します。これにより、デバッグや調整の時間が大幅に短縮されます。例えば、5ステップのワークフローで5ステップ目をデバッグしたい場合、最初の4ステップを何度も実行する必要がなく、4ステップ目の状態から直接デバッグを開始できます。
- ツール関数キャッシュ: ワークフロー開発中、同じデータセットに対して繰り返しツール(LLMへのプロンプト呼び出しや外部コマンドの実行など)を呼び出すことがあります。ROSTはこれらのツール呼び出しの結果をキャッシュすることで、実行時間を劇的に短縮し、開発効率とコスト効率を高めます。
4. 将来性:高度な制御フローの導入 ROSTは現在も進化を続けており、将来的にはワークフローに条件分岐、ループ、ブランチングといった高度な制御フローを導入する予定です。これにより、プロンプトの実行結果を真偽値やリストとして解釈し、それに基づいて次のステップを動的に決定するといった、より洗練されたAI駆動型ワークフローの構築が可能になります。
Claude CodeとROSTの強力な相乗効果
ShopifyにおけるAI駆動型開発の「魔法」は、Claude CodeとROSTが互いに補完し合う関係を築いている点にあります。この双方向の連携こそが、大規模開発の課題を克服する鍵となっています。
1. エージェントがROSTを呼び出す:広範なタスクから具体的なワークフローへ
Claude Codeのようなエージェント型ツールは、探索的で曖昧なタスクに優れていますが、多段階にわたる複雑なワークフローを完全に自律的に実行させることには課題があります。Obie Fernandez氏は、「モデルが指示に従う能力がどれほど向上しても、本質的に非決定論的であり、エントロピーの蓄積がある」と指摘します。ワークフローの各ステップでわずかなエラーや判断ミスが積み重なると、最終的な結果が大きく乖離したり、モデルが回復に多くのリソースを費やすことになったりします。
ここでROSTの出番です。開発者はClaude Codeに対して、「テストを最適化したいが、そのためにROSTのワークフローツールを使う」と指示できます。例えば、「roast test grade をこのファイルまたはディレクトリで実行し、その推奨事項に基づいて作業を進めよ」といった具体的なコマンドとしてROSTのワークフローを呼び出すのです。これにより、Claude Codeは自律的な判断を必要とする部分に集中し、定型的で明確なステップはROSTに委ねることで、信頼性の高い結果を生み出すことができます。
2. ROSTがClaude Code(SDK)を呼び出す:ワークフロー内の特定タスクをAIエージェントに委譲
逆に、ROSTのワークフロー内からClaude CodeをSDKモードで呼び出すことも可能です。ROSTのワークフローは、複数のステップで構成されていますが、その中の特定のステップでAIの力を借りたい場合、狭いスコープのタスクをClaude Codeに実行させます。
具体的な利用例:
- コード移行: 大規模なコード移行は、全体のステップは明確でも、個々の変換作業にはAIの知見が役立つ場合があります。ROSTがコードベースの特定部分を抽出し、Claude Codeに「このレガシーコードを新しいパターンに変換せよ」とSDK経由で指示します。
- テストの修正と反復: テストコードの自動生成や最適化を行うROSTワークフローにおいて、生成されたテストが失敗した場合、ROSTがその結果をClaude Codeに渡し、「この失敗したテストを修正し、パスするまで反復せよ」と命じます。
このように、ROSTが全体のオーケストレーションと決定論的なステップを管理し、Claude Codeがワークフロー内の特定の「非決定論的」かつ「探索的」なミニタスクを実行することで、両者の強みが最大限に引き出されます。Shopifyでは、この組み合わせがテストの最適化、Sorbet型システムへの対応、大規模なリファクタリングなど、多岐にわたる開発タスクで「爆発的な広がりを見せている」と言います。
未来への展望と開発者へのメッセージ
ShopifyにおけるROSTとClaude Codeの連携は、AI駆動型開発の新しいパラダイムを提示しています。これは、単にAIツールを個別に使うのではなく、組織全体の開発プロセスに深く統合し、標準化することで、その真価を発揮できることを示しています。
開発者体験の変革
この取り組みは、開発者の日々の業務を大きく変える可能性を秘めています。ルーティンワークや反復的なタスクの多くがAIによって自動化されることで、開発者はより創造的で、複雑な問題解決に集中できるようになります。テストカバレッジの向上、技術的負債の解消、大規模なコード移行といった、これまで時間と労力がかかりすぎたタスクが効率的にこなせるようになり、結果として高品質なソフトウェアをより速く提供できるようになるでしょう。
ROSTのオープンソース化が示す方向性
ShopifyがROSTをオープンソース化したことは、この画期的なソリューションを広くコミュニティと共有し、AI駆動型開発のベストプラクティスを確立しようとする意欲の表れです。特にRuby on Rails開発者にとっては、Railsの規約ベースのアプローチを踏襲したROSTは非常に馴染みやすく、インラインプロンプトの宣言やERBを使った出力テンプレートなど、多くの魅力的な機能が用意されています。
Obie Fernandez氏は、ROSTがまだ初期バージョンであることを認めつつも、その可能性に大きな自信を見せています。社内でのテスト最適化への適用からわずか数週間でオープンソースとしてリリースされたROSTは、すでにコミュニティで注目を集め始めています。今後、制御フローの導入など、さらなる機能強化が進めば、より複雑でインテリジェントな自動化ワークフローが実現し、AI駆動型開発の新たな標準となる可能性を秘めています。
結論:AIが拓く開発の未来
Shopifyの事例は、AIが単なるコード生成アシスタントに留まらないことを雄弁に物語っています。大規模組織が直面する生産性の課題に対し、エージェント型の自律性と構造化ワークフローの再現性を巧みに組み合わせることで、開発プロセスそのものを変革する可能性を示しています。
Claude CodeのパワーとROSTのオーケストレーション能力を組み合わせることで、Shopifyは開発者体験を向上させ、技術的負債を解消し、そして何よりもイノベーションを加速させています。これは、AI時代のソフトウェア開発における「魔法の組み合わせ」であり、多くの企業が学ぶべき先進的なアプローチと言えるでしょう。
もしあなたが、大規模なコードベースと格闘する開発者であるなら、あるいはAIを開発プロセスに深く統合することに関心があるなら、ShopifyのROSTとClaude Codeの組み合わせに注目する価値は大いにあります。これからのソフトウェア開発は、AIとの共創によって、これまで想像もしなかったような生産性と創造性を手に入れることになるでしょう。Shopifyの取り組みは、その未来を私たちに示してくれています。