見出し画像

正規表現を推してみる

はじめに

IT学習のロードマップは、きのこたけのこ級の論争に発展することもある。
つい先日も、とあるエンジニアが独自のロードマップをSNSであげてて賛否両論を浴びていた。 

「プログラミングしろ!」「ネットワーク大事!」「AWS勉強しろ!」「大人しくITパスポートでも取っておけ!」。
みなさんの上げている科目や技術が大事なのはよくわかる。ただ、このような論争が繰り広げられる度に私はこっそりこう思うのだ。

あの、正規表現は…?

私の観測範囲では、IT初学者へのいちカリキュラムとして正規表現を提案してる人はいないように見えた。
個人的に正規表現は、「感動の度合い」でいったら他の技術よりも強烈なものであったため、蚊帳の外にされるのは面白くない。一方その存在が地味なため、IT初学者の関心を惹かないのも事実なのだろう。

この記事では正規表現の魅力、なぜ初学者に勉強されないのかについて考える。なお、具体的な正規表現の文法などについては触れない。

正規表現の魅力

数学赤点の私がいうのもためらわれるが、正規表現とは「文字列の因数分解」のようなものであると思っている。つまり、複数パターンの文字列を簡略化して表せるのだ。

簡単な例を挙げてみる。以下のような文字列群があったと仮定しよう。

Tanaka01
Tanaka02
Tanaka03
・
・
・
Tanaka99​

ここには似たような文字列が100行存在する。正規表現では以下のように表現できる。

Tanaka[0-9]​{2}

たった一行に集約されてしまった。なんて、簡素なのだろうか。しかも正規表現はもれることがない。「Tanaka70」「Tanaka43」がうっかり漏てれしまうことは発生しないのだ。便利すぎる。

しかも、思ったより文法は難しくない。もちろんある程度練習は必要だが、初歩的なものであれば2、3日で覚えられる。練習環境構築も至極簡単だ。正規表現はほとんどのエディタに搭載されてるので、適当なテキストをwebから引っ張ってくるだけで完成だ。あとは適当に文字列検索や置換を試してみるだけで良い。

最後にこれは個人的な主観だが、訳の分からない呪文を詠唱してるみたいでかっこいいよね。

なぜ初学者に勉強されないのか

ここに関してはいくつか仮説がある。

1.なくても困らないから
「必要は発明の母」ではないが、人間必要に駆られない限り勉強はしたくないものだ。
思えば、私もプログラミング入門書を写経してサンプルアプリを作ったことはあるが、その中で正規表現を使わないと乗り越えられない課題はなかったと思う。

正直現在も、正規表現を「開発」で使うことはそれほど多くはない。個人の経験上、正規表現が大いに役立ったのは悲しいかな

トラブってる時

であった。「障害調査のため数十万行のログから、とあるパターンのエラーメッセージを抽出する。ただ、類似パターンの××は除外」だの「バグの水平展開調査で150個あるソースコードファイルの中から、類似部分を抜き出す」だの、このような物量の暴力と入門サイトを作ってる時には対峙しなかったろう。

トラブルは迅速に解決しなければならない。上司や顧客の超偉い人の「できたか?」「まだか?」のプレッシャーは相当なものだ。こんな場合に、一行一行ログを目で追っていたら相当な時間がかかってしまう。

またトラブルというものは1度目は許してくれるが、同じようなものを2回発生させたら鼻血出るまで怒られる。なので、類似パターンは必ず潰さないといけない。この場合、偉い人たちに「どのように類似パターンを見つけて直したのか?」と絶対に聞かれる。その時「目視確認で全ソースをチェックして修正した」と「〇〇という正規表現パターンで全ソース検索して該当箇所を修正した」はどちらが説得力はあるだろうか?

根性論大好きor正規表現よくわからないおじさんが上司の場合、ひょっとすると前者を選択するのが正解かもしれないが、選択肢は二つ持っておいて損はない。

2.名前が堅苦しいから
あなたは「正規表現」という言葉を初めて聞いた時に、どのようなものなのかピンと来ただろうか?私の脳内では、ハテナの文字が踊っていた。

これは「regular expression」を直訳したら「正規表現」となったのだろうから訳のまずさではなく、もともとから良くわからない言葉なのだ。

どうか正規表現にたいして余り身構えないで欲しい。「使い方を覚える程度」なら本当に簡単な技術なのだ。
※正規表現の裏側の仕組みを理解しようとすると相当しんどそうなので、このような表現にしている。

3.勉強するほどでもないから
もしかしたら多くのIT初学者の中で正規表現なんぞは勉強するほどでもない、楽勝なカリキュラムなのかもしれない。

そんな方々に私から言えるのはたった一言

講釈垂れてすみませんでした。

おわりに

正規表現はたしかに優先度的にはあまり高くないかもしれない。それでも短い修練で高い効果をもたらしてくれる威力抜群の技術であると断言する。
是非こっそり練習していつの日かみんなの前でさりげなく披露してみよう。「おおっ!」って思われるかもしれない。
そしてなろう系主人公のごとく「俺またなんかやっちゃいましたか〜?」と振る舞ってみよう。ほんの少し気持ちが良いはずだ。

この記事が気に入ったらサポートをしてみませんか?