22
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-04-08

はじめに

(特に)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]"

参考

22
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?