はじめに
(特に)iOS開発者にとってかかせない存在のfastlaneですが、本体にあるactionとは別のことをやりたいことがあったりするかと思います。
その場合は以下の方法があります。
- 独自actionを作成
- pluginを作成
独自actionだと、そのactionがあるプロジェクトのみの利用になりますが、pluginの場合は他の人も簡単に利用することができます。
今回は、pluginの作成にあたっての初めの一歩として「どのように作るか」の説明を自身のメモの意味も兼ねて書きます。
plugin作成の流れ
pluginの作成は以下の流れになります。
- 雛形の作成
- 実装
- actionの実装
- テストコードの実装
- pluginの公開
雛形の作成
以下のコマンドにより雛形を作ることができます。
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を使ってインストールをおこなっておきます。
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は以下のコマンドで試すことができます。
bundle exec fastlane test
テストコード
作成するpluginのテストコードはspec/以下になります。
- [plugin_name]_action_spec.rb
- テストを実装する箇所
- spec_helper.rb
テスト自体は以下のコマンドで動かすことができます。
bundle exec rspec
テストコードの書き方については、既存のactionのテストコードなどを参考にすると良いかもしれません。
Rakefile
Rakefileが用意されており、以下のコマンドで実行できます。
defaultのtaskはspec、rubocupになっています。
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]"