Ruby はエレガントな構文を持つ動的インタープリタ言語で、Ruby on Railsフレームワークで知られています。モバイル開発では、Rubyは主にFastlaneを通じて使用されます。これはiOSおよびAndroidアプリケーションのビルド、テスト、デプロイを自動化する標準ツールです。Fastlane公式ドキュメントによると、このツールは世界中の10万以上のプロジェクトで使用されています。
重要なポイント
Ruby は1995年にまつもとゆきひろによって作成された動的インタープリタ型オープンソース言語です。Rubyの核となる原則は「最適なシンプルさ」(最小驚愕の原則)です。この言語はブロック(クロージャ)、純粋なオブジェクト指向アプローチ(数値を含むすべてがオブジェクト)、および強力なメタプログラミングシステムで知られています。
Rubyはバージョン3.1からJITコンパイルを備えたYARV(Yet Another Ruby VM)インタープリタ上で動作します。現在のバージョンRuby 3.4(2025)には、デコレータ、改善されたPrismパーサー、RBSによる実験的な型サポートが含まれています。RubyGems — パッケージマネージャー — には20万以上のgemが含まれています。
Ruby on RailsはRubyで構築された最も有名なWebフレームワークですが、モバイル開発ではRubyは異なる方法で使用されます。その主なニッチはFastlaneです。コード署名からストア公開まで、モバイルアプリのライフサイクルのすべての段階を自動化するRubyスクリプトとgemのエコシステムです。
Fastlaneで作業するには、メソッド、do-endブロック、シンボル(:symbol)、ハッシュ構文{ key: value }などのRubyの基本的な理解のみが必要です。Pythonとは異なり、Rubyはインデントではなくendを使用してブロックを閉じます。メソッドは括弧なしで呼び出すことができます — これはFastlane DSLで積極的に使用されています。
# Fastlaneで使用される基本的なRuby構文
def download_assets(version, platform: "ios")
paths = {
ios: "ios/Assets.car",
android: "android/app/src/main/assets"
}
url = "https://cdn.example.com/assets/#{version}/#{paths[platform.to_sym]}"
puts "Downloading from: #{url}"
unless File.exist?("temp/assets")
Dir.mkdir("temp/assets")
end
result = system("curl -o temp/assets.zip #{url}")
raise "Download failed" unless result
end
download_assets("1.2.3", platform: "android")この例では、download_assetsメソッドはversion引数とオプションの名前付きパラメータplatform(デフォルトは"ios")を受け取ります。#{...}による文字列補間は、値を直接文字列に埋め込みます。unlessはifの反対で、条件が偽の場合にコードを実行します。
Fastlane はRubyで書かれたオープンソースツールです。gem install fastlaneでインストールし、モバイル開発者の最もルーティンなタスク(スクリーンショット作成、コード署名、TestFlightやGoogle Play Consoleへの公開)を自動化する一連のコマンドを提供します。
Fastlaneはツールで構成されています:sigh(証明書管理)、match(チーム内の証明書同期)、gym(iOSビルド)、gradle(Androidビルド)、deliver(iOS公開)、supply(Android公開)、snapshot(スクリーンショット)、scan(テスト)。すべてのツールは単一のFastfileからアクセスできます。
大規模プロジェクトでは、Fastlaneは単一パイプラインで50以上のアクションを処理します:バージョンインクリメント、CDNからのアセットダウンロード、ビルド、署名、App Store Connectへのアップロード、Slack通知の送信。パイプライン全体が単一のコマンドで実行されます:fastlane release。
Fastfile はアクション(レーン)のシーケンスを記述するRuby風DSLファイルです。各レーンは個別のタスクです:beta(テストビルド)、release、screenshots。レーンは渡されたパラメータで他のレーンを呼び出すことができます。
# Fastfile — iOSアプリビルドパイプライン設定
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "TestFlightビルドの構築とデプロイ"
lane :beta do |options|
increment_build_number(
build_number: options[:build]
)
match(type: :appstore)
gym(
scheme: "MyApp",
export_method: "app-store",
configuration: "Release"
)
upload_to_testflight(
app_identifier: "com.example.myapp"
)
slack(
message: "Build #{options[:build]} がTestFlightにアップロードされました"
)
end
endbetaレーンは順次実行します:ビルド番号のインクリメント(increment_build_number)、証明書の同期(match)、アーカイブのビルド(gym)、TestFlightへのアップロード(upload_to_testflight)、Slack通知の送信。:buildパラメータは名前付き引数としてレーンに渡されます。
Fastlaneは単一のFastfileで両方のプラットフォームをサポートします。Androidの場合は、platform :android内でgradle、supply、google_play_track_version_codesアクションとともにレーンを使用します。
platform :android do
desc "APKのビルドとGoogle Play Internal Testingへの公開"
lane :beta do
gradle(
task: "assemble",
build_type: "Release",
flavor: "Production"
)
supply(
track: "internal",
apk_paths: ["app/build/outputs/apk/release/app-release.apk"]
)
end
endFastlane には200以上の組み込みアクションが含まれています。以下はモバイル開発にとって最も重要なもので、カテゴリ別に整理されています。
| アクション | プラットフォーム | 目的 |
|---|---|---|
| match | iOS | Git経由で証明書とプロビジョニングプロファイルを同期 |
| gym | iOS | .appおよび.ipaアーカイブをビルド |
| scan | iOS | シミュレーターでUIテストを実行 |
| snapshot | iOS | 異なるデバイスでの自動スクリーンショット生成 |
| deliver | iOS | ビルド、スクリーンショット、メタデータをApp Store Connectにアップロード |
| pilot | iOS | TestFlight管理:ビルドのアップロード、テスター追加 |
| gradle | Android | Gradleタスクを実行:assemble、test、bundle |
| supply | Android | APK/AABとメタデータをGoogle Play Consoleにアップロード |
| screengrab | Android | Google Play向け自動スクリーンショット |
| firebase_app_distribution | 両方 | Firebase App Distributionにビルドをアップロード |
match は開発者間でiOS証明書とプロビジョニングプロファイルを同期するためのFastlane gemです。すべての秘密情報は暗号化されたGitリポジトリまたはS3に保存されます。Matchは証明書がない場合は自動的に生成し、有効期限が切れたら更新します。
# 新規プロジェクトのmatch初期化
$ fastlane match init
# App Store証明書の作成と同期
$ fastlane match appstore
# チームのDevelopment証明書の作成
$ fastlane match development
# 有効期限切れ時の全証明書の更新
$ fastlane match --forceMatchは開発者だけが知るパスフレーズで秘密鍵を保存します。各開発者は証明書リポジトリをクローンし、matchを実行して現在のプロファイルをインストールします。Appleの証明書の有効期間は1年で、matchが自動的に更新します。
Fastlane は任意のCI/CDプラットフォームと統合します:GitHub Actions、GitLab CI、CircleCI、Bitrise、Jenkins、Xcode Cloud(xcode-build経由)。FastlaneはCI上でfastlane <lane_name>を使用して実行され、いずれかのステップが失敗するとエラーコードを返します。
GitHub Actionsの設定には、Ruby、fastlaneのインストール、bundle exec fastlaneによるレーンの実行が含まれます。iOSビルドにはmacOSランナーが必要です。Androidビルドはより安価なubuntu-latestを使用できます。
# .github/workflows/deploy.yml — Fastlaneを使用したCI/CD
name: Deploy Mobile App
on:
push:
branches: [main]
jobs:
ios-deploy:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
- run: bundle install
- run: bundle exec fastlane beta
- env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}ワークフローはmainへのプッシュ時に実行されます。macOSランナーはFastfileからbundle exec fastlane betaを実行します。MATCH_PASSWORDは証明書の復号化のためにGitHub Secretsを介して渡されます。レーンが完了すると、Slackアクションが通知を送信します。
RubyGems はRubyのパッケージマネージャーです。Fastlaneはプラグイン(新しいアクションを追加するgem)を通じて拡張されます。fastlane-plugin-versioningプラグインはバージョンを管理し、fastlane-plugin-firebase_app_distributionはビルドをFirebaseにアップロードします。GitHubには500以上のFastlaneプラグインがあります。
プロジェクトルートのGemfileは、再現可能なビルドのためにすべての依存関係のバージョンを固定します。bundle installはGemfile.lockからgemをインストールします。モバイル開発に不可欠なgemには、fastlane、cocoapods(iOS依存関係)、xcodeproj(.xcodeproj操作)が含まれます。
# モバイルプロジェクトのGemfile
source "https://rubygems.org"
gem "fastlane", "~> 2.220"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)Fastlane は唯一の自動化ツールではありません。モバイルチームにとって重要な基準に基づいて、主要な代替ツールと比較してみましょう。
| 基準 | Fastlane (Ruby) | Bitrise (Web) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| 柔軟性 | 最大(コード) | 中(ステップ) | 低(制限あり) | 高 |
| iOS | 完全サポート | 完全 | 完全(組み込み) | セルフホスト型macOS経由 |
| Android | 完全サポート | 完全 | なし | 完全 |
| 証明書(match) | 組み込み | Code Signing経由 | 自動 | fastlane経由 |
| ローカル実行 | はい | いいえ(CIのみ) | いいえ | act経由 |
| プラグイン | 500以上 | 200以上の統合 | なし | 20,000以上のアクション |
Fastlaneは複雑なパイプラインに対して最も柔軟なツールであり続けています。BitriseはRuby開発者がいないチームに便利です。Xcode CloudはシンプルなiOSプロジェクトに適しています。GitHub Actionsはチームが既にGitHubを使用している場合に最適です。
よくある質問
Ruby はモバイルアプリケーションを記述するためではなく、Fastlaneを通じてビルド、テスト、デプロイのプロセスを自動化するために使用されます。FastlaneはiOSおよびAndroid開発におけるCI/CDのデファクトスタンダードです。
Fastlane はmacOS、Linux、Windowsで動作しますが、iOSビルドにはXcodeとmacOSが必要です。Androidビルドは任意のプラットフォームで実行できます。開発者はローカルでmacOSを使用し、CIではiOSにmacOS、AndroidにLinuxを使用します。
Fastlaneで作業するには、Ruby の基本的な理解で十分です。FastlaneはFastfileでRuby風DSLを使用します。一般的なタスクには、gem、do-endブロック、基本的な構文の知識で十分です。Rubyの深い知識は必要ありません。
代替手段:Gradle(Android、組み込み)、Xcode Cloud(Apple)、Bitrise(Webインターフェース)、GitHub Actions(YAML)。Fastlaneはアクションとプラグインの豊富なエコシステムにより、最も柔軟なツールであり続けています。
はい、Fastlane は大企業でも使用されています。すべてのアクションと設定ファイルはリポジトリでバージョン管理され、matchはリポジトリまたはS3での証明書の安全な保存を保証します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。