D IT Y

タマキ工務店のIT日記

チェリー本輪読会 第8週目まとめ

f:id:shirotamaki:20210619091936p:plain

🍒 はじめに

チェリー本輪読会の第8週目のエントリーになります。

輪読会の概要については第1週目にまとめています。

🍒 輪読会 第8週目まとめ

第6章6.1.1〜第6章6.2.2章まで

期間:2021年07月12日〜2021年07月16日

正規表現とは?

「パターンを指定して、文字列を効率よく検索・置換するためのミニ言語」

チェリー本ではこのように表現されています。

正規表現Rubyだけのものではなく、他プログラミング言語でも使える汎用的な表現方法です。

いくつかの文字列を一つの形式で表現するための表現方法とも言えます。

英語で書くと、Regular Expression となり、Regex, Regexpと略されます。

正規表現をゼロから学習するための参考資料(Qiita記事)

チェリー本でも紹介されていますが、まずはこちらの伊藤さんのQiita記事を元に学習を進めていきました。

輪読会では、その1からその3までを取り上げました。その4については、Qiita記事にもあるように「中級者向け」の内容となり、一気に難易度が上がっています。今回はチェリー本の本筋から外れてしまうため、一旦こちらは各自で目を通すだけにし、深追いするのはやめました。

メタ文字

正規表現では、さまざまなメタ文字が使われています。

メタ文字とは「コンピュータープログラムに与える文字列データの中で、特別な意味や役割を持つ文字のこと」です。\[ ]- などのことを指します。

例えば、\dは半角数字1文字を表します。[AB] は、AまたはBが1文字であることを表しています。

正規表現とは、このようなメタ文字の組み合わせで表現する、検索・置換するためのミニ言語です。

RubyMineで正規表現の置換モードを使う

ショートカットコマンド command + R にて、入力できる項目が表示されます。

その後、矢印の箇所をクリックにしONにすることで、正規表現の検索・置換モードへ切り替えられます。

f:id:shirotamaki:20210804172838p:plain

このような形で、正規表現がマッチする箇所がハイライトされます。

f:id:shirotamaki:20210804172913p:plain

タブ文字は何文字分か?

タブ文字は \t で表現できます。

タブ文字の見た目が「スペース何文字分か」は、出力するエディタなりコンソールなりの設定によって異なるようです。Rubyではタブ文字は半角スペース2文字分が推奨されていることが多いため、私もRubyMineでは、文字数「2」へ設定しています。

Rubyでは、内部に含まれるものを記述する時、常に2文字のインデントが推奨されています。 参照:独習Ruby on Rails(40頁)

環境設定command + ,から、エディター > コードスタイル > Ruby で変更できます。

f:id:shirotamaki:20210804172941p:plain

\t の代わりに\sを使うこともできる

\s は、空白文字を表します。\s には、タブ文字\t改行文字\nや復帰文字\rなども含まれています。ただし、\s にマッチする文字は、言語や環境によって違うので注意が必要です。

Rubyの場合は、こうなります。\s = [ \t\r\n\f]

正規表現との出会い

余談ですが、初めて正規表現と出会った時のことを思い出したため書きたいと思います。

数ヶ月も前の話しですが、Railsチュートリアルへ取り組んでいるとき、講師の@yasulab さんが、解説動画内でこのようなことを仰っていました。

  • 正規表現は奥が深い。
  • 正規表現にテーマを絞ったカンファレンスも開催されており、好きな人にはたまらない。
  • 正規表現をツマミに酒が飲めるww
  • 正規表現は実際に試しながら学んだ。

そこでは、正規表現の教科書とも言える、O'Reillyから出版されている本も紹介されていたのですが、こちらの本はなんと正規表現だけで528頁もあるそうです。(チェリー本の正規表現の章は25頁)

www.oreilly.co.jp

@yasulab さんも、こちらの本を全部は読んでいないそうで、正規表現は実際使っていくうちに覚えていったそうです。

やはり「手を動かす」ことが大事なのですね。

今回改めてチェリー本で正規表現を学び直すなかで、正規表現をツマミにお酒が飲める気はまったくしませんがww、コーヒーくらいなら楽しめるようになってきたと思います。

いつかは、フクロウ本にもチャレンジしてみたいです!

るりま勉強会(Kyoto.rbへ潜入!)

輪読会でお世話になっている(id:sanfrecce-osaka) さんの紹介で、この日(2021年7月11日)るりま勉強会が開催されることを知りました。Kyoto.rbで開催されるとのことで、初めて参加してみました。

以前、ブログや、LTの題材としても取り上げたり、日々慣れ親しんではいるものの、まだまだ知らないことも多く苦手意識がある「るりま」。今回、少しでも学び、気づきが得れればと思い参加しましたが、結果、とても良かったです。特にRuby熟練者からのるりまに関する話しは貴重で、とても学びの多い勉強会でした。

  • 10年近くRubyを使っているが、それでも知らないメソッドはたくさんある。など、現役エンジニアからの声。
  • るりまの読み方
  • permalink, rdoc とは?
  • ターミナルでsayとすると、音声で読み上げてもらえる!(小ネタ的なことも!)

などなど。

同じく参加された(id:fuga__ch) さんのブログに詳しい勉強会の内容がまとまっています。 勉強会の詳細が知りたい方はぜひ!

fuga-ch85.hatenablog.com

また、今回の勉強会には多くのフィヨルド生や卒業生が参加されていました。普段より多くの参加者に対し、主催者の方も驚かれていましたww 有益な勉強会を開催してくださったKyoto.rbの皆さま、ありがとうございました!ぜひまた第二弾!楽しみにしております!

参考書籍

🍒 まとめ

今週から入った正規表現。Qiitaの記事を中心に、その1からその3まで進めました。

こちらの記事は「正規表現初心者」を対象としている内容なので、とてもわかり易かったです。

謎の呪文が\d{2,5}[-(]\d{1,4}[-)]\d{4} 謎ではなくなり、基本的な正規表現についてはポイントを抑えることができました。

「手と目で覚える正規表現

伊藤さんも仰っているように、手を動かして使い慣れていくことが、正規表現を身につける一番の近道だと思いました。今回学んだRubyMineの検索・置換モードや、Rubular を活用し身につけていきたいと思います。

次週も引き続き正規表現へ取り組みます。

では、また来週!(次回、第9週目)