第16話 井の中の蛙

 文字列関数たちの処理は時間こそかかったがトラブルなく終わった。トラブルと言えばイノウエの危険運転ぐらいだ。ともあれサイトウ不在の中でも無事クエストを終えられたことでおれは少しworkerとして自信をつけることもできた。


 詰め所に戻り、イノウエはハイボールを飲みながらおれの知らない関数について説明をはじめた。


「そうですね、SPLITのことは説明しにくいのでREGEX関数から説明します」


「REGEX関数っていうことはひとつだけじゃないんですか?」


「REGEXはregular expression、つまり正規表現のことなの。タカハシさん、正規表現はわかりますか?」


「はい、同僚のエンジニアに前に少しだけ教えてもらったことがあったので。Excelに貼り付け前のCSVを加工したりするのに使っていました」


「なんだ、知ってるんじゃないですか。あ、すいませーん、ハイボールおかわり濃いめで」


 イノウエは少し悔しそうにしながら、1/3ぐらいのこっていたハイボールを一息に飲み干した。


「正規表現を知ってるなら話は早いですね。REGEX関数は正規表現に基づいた文字列関数なの。検索のREGEXMATCH、抽出のREGEXEXTRACT、置換のREGEXREPLACEの3つがいまあるREGEX関数」


 そういいながらイノウエはそれぞれの構文を紙ナプキンに書いた。


=REGEXEXTRACT(テキスト, 正規表現)

=REGEXMATCH(テキスト, 正規表現)

=REGEXREPLACE(テキスト, 正規表現, 置換)


「よくExcelしか知らない職人がFINDやLEFT、それから多重にIFを使って都道府県を抜き出す関数を書くけど、REGEX関数を使えばこういうふうに一発なの」


=REGEXEXTRACT(住所, ".{2,3}[都道府県]")


「これなら記述も最小だし、見ただけでなにを意図した式なのか一目瞭然でしょ?この1行だけで東京都港区六本木6丁目10−1 六本木ヒルズ森タワーから東京都も抜き出せるし、鹿児島県志布志市志布志町志布志2丁目1−1 志布志市役所志布志支所からも鹿児島県が抜き出せるわ」


 おれは圧倒された。REGEX関数のすごさに。そして志布志支所の住所を一切噛まずによどみなく喋ってみせたイノウエに。REGEX関数の記述に比べたら通常の文字列関数なんてまったくのゴミだ。どちらのほうがいいかなんて議論する余地がない。実行速度については比べられないがおそらくシンプルな分早いのだろう。仮に速度が遅かったとしてもこの可読性の差は埋められない。可読性はただ読みやすいだけじゃなく、更に他の処理を埋め込んだ際の応用性にもつながってくる。複雑な処理をできる限りシンプルに書くのは応用性を保つためでもあるのだ。


 イノウエのことを完全に甘く見ていた。さっき頼んだハイボールだってもうなくなりかけて次を頼んでいる。ペースが早い。だというのに流れるようにこの説明をしている。この世界に来て一緒に仕事をしたworkerはサイトウとイノウエだけだ。サイトウは常に落ち着いていてベテランで頼りになると思っていたがイノウエのことは正直舐めていた。VLOOKUPにいいようにされるし自分のやり方に頑固なところもあって柔軟性に欠ける。だがイノウエもworkerとして転生してくるだけの相応の実力を持っていたのだ。おれには自覚が足りなかった。おれはworkerとして、いやそもそもExcel職人としてもまだまだひよっこだった。誰にもつくれないシートが作れた。しかしそれはたかが20人程度の会社の中でのことでしかなかった。世界は広かった。GoogleSpreadsheetsという新しい潮流を試すこともしていなかった。愚かだ。あまりにも愚かだ。


 おれが沈黙をする中、イノウエはハイボールの追加を頼んでいた。



 ※今回の関数

 REGEXEXTRACT https://support.google.com/docs/answer/3098244

 REGEXMATCH https://support.google.com/docs/answer/3098292

 REGEXREPLACE https://support.google.com/docs/answer/3098245


 ################


 REGEX関数について書くにあたって、はたしてそもそもこれがGoogleSpreadsheetsの独自関数なのか、それともExcelにあったけど僕が知らなかっただけなのか、それがわかっていなかったので調べ直したのですが、どうやらExcelにはない関数のようでした。IMAGE関数その他に比べれば代替可能で凡庸な機能ともいえますが、そのぶん応用性の高い関数でもあります。


 ※改訂

 元々都道府県を抜き出す正規表現を

 .+[都道府県]

 と記載していたのですが、これだと「京都府」が例外で「京」になってしまうという指摘をいただいたので修正しました。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます