fastlaneのpluginを作成方法をまとめてみた


はじめに

(特に)iOS開発者にとってかかせない存在のfastlaneですが、本体にあるactionとは別のことをやりたいことがあったりするかと思います。

その場合は以下の方法があります。

独自actionだと、そのactionがあるプロジェクトのみの利用になりますが、pluginの場合は他の人も簡単に利用することができます。

今回は、pluginの作成にあたっての初めの一歩として「どのように作るか」の説明を自身のメモの意味も兼ねて書きます。

plugin作成の流れ

pluginの作成は以下の流れになります。

  • 雛形の作成
  • 実装
    • actionの実装
    • テストコードの実装
  • pluginの公開

雛形の作成

以下のコマンドにより雛形を作ることができます。

command
fastlane new_plugin [plugin_name]

コマンドをうつと以下を聞かれます。
またplugin_nameにはfastlaneやpluginという単語を含むことはできません。

  • plugin name
  • short summary
  • detailed description

全て答えると以下の雛形が作成されます。

構成
 - .gitignore
 - .rspec
 - .rubocup.yml
 - .travis.yml
 - circle.yml
 - Gemfile
 - LICENSE
 - Rakefile
 - README.md
 - fastlane-plugin-[plugin_name].gemspec
 - fastlane/
   - Fastfile
   - Pluginfile
 - lib/fastlane/plugin/
   - [plugin_name]/
     - actions/
       - [plugin_name]_action.rb
     - helper/
       - [plugin_name]_helper.rb
     - version.rb
   - [plugin_name].rb
 - spec/
   - [plugin_name]_action_spec.rb
   - spec_helper.rb

実装

実装をする前に、まずbundlerを使ってインストールをおこなっておきます。

command
bundle install --path vendor/bundle

plugin本体

実装する箇所はlib/fastlane/plugin以下にあります。
pluginのバージョンはverion.rbに書きます。

actions/

  • [plugin_name]_action.rb

action本体のコードはここに実装します。
デフォルトだとself.run(params)に以下のように実装されています。

def self.run(params)
  UI.message("The sample_for_you plugin is working!")
end

この実装だと上記のメッセージが表示されるだけになります。

helper/

  • [plugin_name]_helper.rb

actionで利用するhelperになります。
作成したmethodは以下のように呼び出すことができます。

Helper::[YourPluginName]Helper.[your_method]

動作確認

fastlane/Fastfileには以下のように書かれています。

lane :test do
  [action名]
end

そのため、作成しているpluginは以下のコマンドで試すことができます。

command
bundle exec fastlane test

テストコード

作成するpluginのテストコードはspec/以下になります。

  • [plugin_name]_action_spec.rb
    • テストを実装する箇所
  • spec_helper.rb

テスト自体は以下のコマンドで動かすことができます。

command
bundle exec rspec

テストコードの書き方については、既存のactionのテストコードなどを参考にすると良いかもしれません。

Rakefile

Rakefileが用意されており、以下のコマンドで実行できます。
defaultのtaskはspec、rubocupになっています。

command
bundle exec rake

上記コマンドで、テストと併せてrubocupでコーディングルールのチェックもしてくれます。
設定されている内容については.rubocup.ymlを確認するとわかります。

pluginの公開

作成が終わったら、RubyGemsに登録することが推奨されています。

公開までの流れは、公式のドキュメントに書かれています。
流れとしては以下のとおりです。

  • RubyGems.orgにアカウントを作っておく
  • plugin自体をGithubに公開しておく
  • fastlane-plugin-[plugin_name].gemspecのhomepageを上記のGithubのURLにしておく
  • 以下のコマンドでリリース
bundle install
bundle exec rake install
bundle exec rake release

pluginの利用

最後に作成したpluignの利用についてですが、世に公開しなくても当然利用することはできます。

  • 「自身のPC環境にコードがある場合」
    • 開発時などに
  • 「githubで公開されている場合」
    • 社内利用などに
  • 「リリースされている場合」

pluginを利用するにはfastlane/Pluginfile(とGemfile)に記述する必要がありますが、上記それぞれの書き方は以下のとおりです。

#自身のPC環境にある場合
gem "fastlane-plugin-[plugin_name]", path: "../[dir_name]"

#githubで公開されている場合
gem "fastlane-plugin-[plugin_name]", git: "https://github.com/[userid]/[repository_name]"

#リリースされている場合(バージョン指定をする場合)
gem "fastlane-plugin-[plugin_name]", "[version_number]"

#リリースされている場合
gem "fastlane-plugin-[plugin_name]"

参考