iOSアプリ開発を補助するRuby入門

botman_blue iOS

はじめに

iOSアプリ開発をしているとたまにちょっとしたスクリプト作りたいなぁと思うことがあります。今やってるプロジェクトも Ruby で書かれたスクリプトがあるのですが Ruby 読めないのでちょっとした修正もできない!!ってことでスクリプトの修正やちょっとしたスクリプトなら Ruby で書けるようになるための Ruby 入門を書きたいと思います。

今回の目標は ios-snapshot-test-case で作成したスクショ一覧をいい感じに Markdown で出力することです!

ios-snapshot-test-case については下記参考

Rubyの公式ドキュメントがパッとどれかわからなかったけどたぶんこれっぽい

環境構築

Mac には最初から Ruby が入っているのでこのままでもいいのですがせっかくなのでプロジェクトごとに環境を切り替えれるように設定します。

とりあえず rbenv を Homebrew でインストールします。

後は下記のような感じで任意のバージョンの Ruby をインストールします。(ruby -v で任意のバージョンになっていればOK)

今回は使いませんが gem を使うなら bundler も入れといた方がいいです。(gem はたぶんパッケージ管理ツールかつライブラリ自体を指すっぽい)
詳細は下記参考
MacにHomeBrew,rbenv,bundlerをインストールする

Ruby文法

環境構築ができたところで Ruby の基本的な書き方についてです。rbenv install --list を実行すると 2.7.1 が一番新しそうなのでこれを使おうと思います。ドキュメントはたぶんこれ👇
https://docs.ruby-lang.org/ja/2.7.0/doc/index.html

変数と定数

Ruby の変数と定数の種別は変数名の最初の一文字によって、ローカル変数、インスタンス変数、クラス変数、グローバル変数、定数のいずれかに区別されるらしい。

種類 宣言 説明
ローカル変数 foo = "piyo" 小文字または _ で始まる
インスタンス変数 @foo = "piyo" @ で始まる
クラス変数 @@foo = "piyo" @@ で始まる
グローバル変数 $foo = "piyo" $ で始まる
定数 FOO = "piyo" アルファベット大文字で始まる

データ型

データ型は下記のようなものがあります。

データ型 説明
Integer 整数 hoge = 2
Float 小数 hoge = 3.14
Array 配列 hoge = ["value1", "value2"]
Hash 連想配列 { "key1" => "value1", "key2" => "value2" }
FalseClass false hoge = false
TrueClass true hoge = true
NilClass nil hoge = nil

演算子

算術演算子

  • +
  • -
  • *
  • /
  • **(べき乗)
  • %(余り)

比較演算子

  • ==(左辺と右辺が等しい)
  • !=(左辺と右辺が異なる)
  • <
  • >
  • <=
  • >=
  • <=>
    左辺 < 右辺 であれば -1、左辺 == 右辺 であれば 0、左辺 > 右辺 であれば 1、比較できない時は nil を返す
  • ===
    self === obj の場合、指定された obj が self かそのサブクラスのインスタンスであるとき真を返す

<=> 以外はすんなり使えそう

論理演算子

  • and ( && )
  • or ( || )
  • not ( ! )

構文

参考ドキュメント

条件分岐

if

unless

if の反対

unless はじめてみた。便利かも。

case

switchみたいなやつ

繰り返し

while

until

for

処理抜け

for 文とかを途中で抜けるやつ

他にも下記がある

  • redo
  • retry
  • raise
  • begin
  • return
  • BEGIN
  • END

メソッド

メソッドの書式は下記

慣習的にメソッド名は lower snake case で記載し真偽値を返すメソッドは ~? 、 破壊的なメソッドは ~! とすることが多いようです。

クラス

スクリプトでクラスを使うこともないかと思いますが軽く。。。
クラスの書式は下記

呼び出し制限として private, public, protected があるみたいです

メソッドの前につけるやつばっかだったのでちょっと不思議。

文字列操作

文字列操作色々
参考

長さ

抜き出し

結合

大文字・小文字変換

トリミング

置換

検索

Array

配列操作いろいろ
参考

初期化

追加・削除

その他便利メソッド

スクリプトをつくる

なんとなく書き方がわかったところで ios-snapshot-test-case で作成したスクショ一覧をいい感じに Markdown で出力してみます!

https://gist.github.com/imaizume/6aa2537c1c6778b50873c813eb7a15f1ほぼこここのやつ使えばできますがちょっとだけ書き換えてみます。

スクショはこういう感じのやつ

上のスクリプトを markdown_generator.rb という名前で ReferenceImages_64 と同階層に保存し下記のようにターミナルで実行する

そうすると Reports ディレクトリに Hoge_20200906.md というファイルが出力されます。(_以降は生成日です)

おわりに

これで Ruby でちょっとしたスクリプトが書けるようになりました!!

色々あって git にあげることができなかったので最終的に PDF に出力して共有することにしました。スクリプトで全部やりたかったのですが PDF 変換するいいやつがなかったので MacDown で出力してプレビューでサイズを落とすことにしました。。。

最終的にはこういう PDF になりました!!

pdf

参考

コメント

  1. Elise Sieger より:

    I’ll right away grasp your rss as I can not to find your e-mail subscription link or e-newsletter service. Do you have any? Please let me understand in order that I may subscribe. Thanks.|

  2. Gilbert Okamura より:

    It’s amazing designed for me to have a web page, which is valuable designed for my experience. thanks admin|

  3. Val Daber より:

    I take pleasure in, lead to I discovered just what I was looking for. You have ended my four day lengthy hunt! God Bless you man. Have a nice day. Bye|

  4. Woah! I’m really loving the template/theme of this site. It’s simple, yet effective. A lot of times it’s difficult to get that “perfect balance” between user friendliness and appearance. I must say you have done a awesome job with this. Also, the blog loads extremely quick for me on Firefox. Superb Blog!|

  5. Andreas Zagorac より:

    We are a gaggle of volunteers and starting a brand new scheme in our community. Your website provided us with useful information to work on. You’ve performed a formidable job and our whole neighborhood will likely be grateful to you.|

  6. Jeri Yazzie より:

    Helpful info. Fortunate me I found your site accidentally, and I am stunned why this coincidence did not happened earlier! I bookmarked it.|

タイトルとURLをコピーしました