X



【IT】プログラマーが正規表現を使いこなすメリットとは?
■ このスレッドは過去ログ倉庫に格納されています
0001ノチラ ★
垢版 |
2018/06/01(金) 18:00:49.92ID:CAP_USER
皆さん、正規表現は使っていますか? 開発者にとってテキスト処理は面倒な場面も多いですが、正規表現を駆使することで一気に効率化することもできます。今回、『正規表現辞典 改訂新版』の著者・佐藤竜一さんに、正規表現を使うメリットや本書についてうかがいました。

――『正規表現辞典 改訂新版』は目的別の検索ができるリファレンスですが、正規表現の歴史や背景についても解説されています。今回は佐藤さんに本書についてお尋ねしますが、まずはご自身のことを教えてください。

佐藤:勤務先はいわゆるSIerですので、各種システムの企画・構築を主業務としています。主に担当しているのは企業向けのアプリケーション開発基盤の構築や、個別システムに対するアプリケーション・アーキテクチャの立案といった分野ですね。

 世間的には「アーキテクト」と呼ばれる職種になりますが、私自身はプログラマーとして個別の問題と向き合い、頭を絞るほうが好きです。

――仕事では正規表現をどう活用されているのでしょうか。

佐藤:個別のアプリケーションにおける入力値検証などに利用することはもちろん、アプリケーションやミドルウェアのトラブルシュートにおけるログの分析や、既存データのクレンジングなどに活用しています。

 ログ分析では必要なログのみを抜き出す、あるいは不要な部分を刈り取るために正規表現は欠かせません。データのクレンジングでは不要なデータを排除する、あるいは不正なデータを正しい形式に整形するといった作業が必要となりますが、このような局面でも正規表現はそのパワーを存分に発揮してくれます。

読みやすさやメンテナンスのしやすさで差がつく
――プログラマー(開発者)として、正規表現を使いこなすのと使いこなさないのとでは、どんな差がつきますか?

佐藤:テキストを相手にする処理では、正規表現を活用することで簡潔かつ分かりやすい記述が可能となるケースが多々あります。正規表現をうまく使えないプログラマーは、ちょっとした処理でもループでテキストを文字単位に分割し、複雑な条件分岐を処理中に記述してしまいます。

 このようなプログラムは確かに動作するかもしれませんが、読みやすさやメンテナンスのしやすさという観点で見れば大きなマイナスとなるでしょう。

「正規表現を使いこなす」という質問からすると拍子抜けされるかもしれませんが、正規表現を使って解決すべき現場の問題の多くは、基本正規表現と拡張正規表現の範囲でも十分まかなえます。

 ですので、本当に基本的な部分をちゃんと理解するだけでもプログラマーとしては大きなアドバンテージになります。大切なのは個々のメタキャラクタの意味をきちんと押さえること、そして実践を繰り返すことでしょう。最初はとっつきにくく見える正規表現も、慣れてくるうちに自然と記述できるようになります。

――開発者以外でも正規表現を使えることでどのような利点がありますか?

佐藤:現在は開発者以外の方でも、各種のクラウドサービスなどのツールやリソースを活用して生産性の向上、さらにはビジネス上の成果を求められる時代です。処理対象の指示や結果の加工に正規表現が必要とされる、あるいは正規表現を使うことでより柔軟な処理を実現できるといった局面は今後も増えてくるはずです。

 たとえば、RPA(Robotic Process Automation)ではExcelやPDFファイルから特定のデータのみを抜き出し、妥当性を判断し、加工したうえで最終的な結果を得るといったことが普通に行われます。このような処理は、それこそ正規表現が最も得意とする領域です。

結果に辿りつく過程を理解してほしい
――2005年に出版された初版と、この改訂版が出る間に、どのような変化がありましたか?

佐藤:本書の前書きにも書きましたが、Unicodeが文字コードの標準的地位を獲得したことです。文字の選択はUnicodeのプロパティにもとづいて行われるため、たとえば1文字の数字を表す「\d」はUS-ASCII以外の数字にもマッチすることが当然になりつつあります。

 また、絵文字のように複数のコードポイントを消費して目に見える1文字を表すケースもこれまで以上に増えました。本書でも可能な限り、これらのポイントについて説明しています。
https://codezine.jp/article/detail/10855
0308名刺は切らしておりまして
垢版 |
2018/06/07(木) 20:48:36.30ID:ipwWzVNo
まあ使えないとちまちま手作業で切り貼りするような単純作業が発生して労働負荷が上がる。
それでも若いうちは頑張って素早く操作してカバーしてしまうんだよな。
0310名刺は切らしておりまして
垢版 |
2018/06/08(金) 07:51:10.67ID:G2N95yhx
>>309
複雑な条件じゃなかったら正規表現使うまでもないからな
0312名刺は切らしておりまして
垢版 |
2018/06/08(金) 09:18:45.07ID:HoA1/RFn
正規表現に戸惑うくらいのバカだから
AGどころかKMPもBMも知らんし
バカサーチを手書きでも仕方ないよね
バカはバカなりに工夫してる
下手なことして自分のバカが原因で躓かないように
0313名刺は切らしておりまして
垢版 |
2018/06/08(金) 09:35:50.71ID:rJ/3M75L
先に構文解析しようよ…
0316名刺は切らしておりまして
垢版 |
2018/06/17(日) 18:55:46.75ID:mHtokcv7
正規表現使えるとドヤ顔できるのに、納期内、定時内で仕事が終わらないのは、無能だから?
バグの原因は、正規表現で検索できないの?(w
0317名刺は切らしておりまして
垢版 |
2018/06/17(日) 19:43:43.84ID:nSjOxi2+
>>316
100パーセントお前の会社のせい。
本人が無能→そんな人材しか採用できないお前の会社の格の低さのせい
納期が短すぎ→そんな仕事しか獲ってこれないお前の会社の格の低さのせい、または経営陣、または職場全体のモラルが低い
0319名刺は切らしておりまして
垢版 |
2018/06/17(日) 20:49:59.47ID:a0+MCWLB
splitしてjoinしたほうが1万〜10万倍早いのに
なぜかパターンマッチを使ってしまう謎の人たちは
何考えてんのかわからない
機械が低速の時代はまず他の方法を探せって言われた
0320名刺は切らしておりまして
垢版 |
2018/06/17(日) 21:52:22.68ID:mHtokcv7
>>317
フリーランスですが? 納期が短いって、何人がかり、何年がかりで開発してるの?

>>318
正規表現が使えないとは一言も言ってないのだが?
0321名刺は切らしておりまして
垢版 |
2018/06/18(月) 00:05:55.80ID:pc8CnG4I
何で日本のソフトウエアエンジニアってこういう些細な事でマウント取ろうとするんだ?
そういう余裕のなさが一番かっこ悪い。時代遅れでもある。
0322名刺は切らしておりまして
垢版 |
2018/06/18(月) 02:44:16.93ID:8SuKcQrM
>>319
正規表現が遅い環境では、splitもjoinも遅くて使えんよ
0324名刺は切らしておりまして
垢版 |
2018/06/18(月) 06:29:10.48ID:rIDQX/TN
>>323
>>321
0325名刺は切らしておりまして
垢版 |
2018/06/18(月) 09:51:16.76ID:TagCs7rD
正規表現信者怖過ぎ
こいつらバグ作り込みまくるから死んで欲しい
0328名刺は切らしておりまして
垢版 |
2018/06/18(月) 10:26:30.70ID:dLxaFcet
とりあえず程々にしとけよ
0330名刺は切らしておりまして
垢版 |
2018/06/18(月) 18:39:07.49ID:FFID6/mN
正規表現信者とか頭大丈夫か?
正規表現なんてプログラマが普段使う最低限の技術のうちの一つでしかないわ
最低限にすら達しないカスがプログラマぶってるのが恐ろしい
0331名刺は切らしておりまして
垢版 |
2018/06/18(月) 18:41:32.15ID:FFID6/mN
どこの学校でも正規表現くらい情報技術のイロハとして教えるだろ
正規表現使えないって高卒でプログラマになったのか?
0332名刺は切らしておりまして
垢版 |
2018/06/18(月) 21:36:16.60ID:i2PRCr3z
プログラマで正規表現ができるとマウントが取れるとかないでしょw
0333名刺は切らしておりまして
垢版 |
2018/06/18(月) 21:37:16.63ID:i2PRCr3z
正規表現が使えないってマウスが使えないレベルでやばいいじゃん、プログラマとしては
0334名刺は切らしておりまして
垢版 |
2018/06/18(月) 23:00:35.72ID:X+EMgDVY
使えない奴なんていねーよwww
0337名刺は切らしておりまして
垢版 |
2018/06/19(火) 11:10:12.37ID:m2Ufy7pq
誰もが必要なら自分に可能な範囲で使うもんなんだ
言語というものは
母国語含めた自然言語だってそう
0338名刺は切らしておりまして
垢版 |
2018/06/19(火) 13:14:31.92ID:DNMHrDFa
>>337
こういう肝心な事理解してない奴だらけだから
意味不明な宗教論争にしかならないんだよなぁ
0339名刺は切らしておりまして
垢版 |
2018/06/19(火) 14:58:00.71ID:HuUXYvvf
「エクセルで業務効率化」とか言ってる連中が何時間もかけて参照とコピペでちまちま作業してたから
CSVに落として正規表現かけて、トータル5〜6分で全工程終わらせてやった
0342名刺は切らしておりまして
垢版 |
2018/06/21(木) 08:05:48.61ID:dt/jL3uq
複雑な文字列の抽出が一発でできたときの感動とコードがシンプルなところかな。
0343名刺は切らしておりまして
垢版 |
2018/06/21(木) 17:03:09.15ID:RxJRXYbs
プログラマーがSQLを使いこなすメリットは?
と聞かれても割と困るのと同じ
0346名刺は切らしておりまして
垢版 |
2018/06/22(金) 05:29:33.72ID:72JbRteZ
>>34
表現しきれないなら使えるわけないだろ
馬鹿か
お前が言いたいのは
式が複雑になりすぎる時は利用を断念することも検討しろ
という事だろ
簡単な日本語も使えない奴は何やっても駄目
0347名刺は切らしておりまして
垢版 |
2018/06/22(金) 05:51:41.84ID:2xFhDOPQ
>>346
素直に読めば分かることなのに、角の立つ言葉を使って反応するのはヨクナイ。
もういい加減そういうのやめようよ。

確かに正規表現が厄介なのは、複雑になると漏れがないかが検証しずらい事。
あえて複数行に分ける、とかいう判断が「使いこなし」のポイントだとおもう。
0348名刺は切らしておりまして
垢版 |
2018/06/22(金) 06:32:59.44ID:26DGerur
エクセルの関数でjavascriptが使えるようになるらしいから、エクセルでの正規表現も使いやすくなりそうだね
0349名刺は切らしておりまして
垢版 |
2018/06/22(金) 10:02:52.87ID:DnVkL9HP
パーサー使うべきところで正規表現で一時しのぎするゴミ
これが正規表現信者
0350名刺は切らしておりまして
垢版 |
2018/06/22(金) 10:30:14.77ID:nzTHn5xl
>>349
パーサーの内部で正規表現使われてるかもしれないじゃないですか
0351名刺は切らしておりまして
垢版 |
2018/06/22(金) 12:21:47.22ID:WB5xe+PA
>>350
パーサーが何かも知らないの? ってか、プログラム書けないんじゃ?
0353名刺は切らしておりまして
垢版 |
2018/06/22(金) 16:17:52.35ID:fjgYA0q2
>>351
ん?
パーサーって構文解析器だろ
内部で正規表現使ってたって不思議ではないぞ
0357名刺は切らしておりまして
垢版 |
2018/06/23(土) 17:06:20.32ID:i2rBHJSP
>>349にとってパーサーってなんなんだw
0360名刺は切らしておりまして
垢版 |
2018/06/23(土) 22:33:51.17ID:ZAipo41a
いつもある程度複雑になって、先読みとかキャプチャーとかググって、メンテ考えるとspilitでちぎって手続きした方が楽じゃね?ってことになって、部分的な共通関数にバリデーションチェックでひっそり使うくらい
グダグダ文章ごめん

この手の話って、使いこなして当然とかの厨房が湧いて荒れるよね、大概。

俺は大手のプロジェクトに参画してるやつだけに意見聞きたい
0362名刺は切らしておりまして
垢版 |
2018/06/23(土) 23:35:12.77ID:YNvxLlN0
spilitねえ
0363名刺は切らしておりまして
垢版 |
2018/06/24(日) 00:15:50.59ID:vqBJHehR
>>361
大手のプロジェクトって人数必要だから5次受け6次受け当たり前、
正規表現どころかC言語すら怪しいレベルの奴がいっぱい集まってるぞ
0364名刺は切らしておりまして
垢版 |
2018/06/24(日) 00:19:02.77ID:vqBJHehR
>>362
大手のプロジェクトに参画して喜びの止まらない10次受けくらいの底辺企業のバイト高校生あたりがイキッて書き込んでるんだろ
0365名刺は切らしておりまして
垢版 |
2018/06/24(日) 08:28:41.19ID:ue0L4hxn
今時正規表現なんて可視化するサイトあるやろ
そこ放り込めばメンテも楽にできるわ
0366名刺は切らしておりまして
垢版 |
2018/06/24(日) 10:32:40.70ID:9jQxJQ07
いやいやいやいや、メリットとかw
正規表現とANSI SQLは、基礎知識だろ
むしろ何で知らないの?ていうレベル。
開発SE経験ゼロのプロマネとかならいそうだけど。
0367名刺は切らしておりまして
垢版 |
2018/06/24(日) 10:34:01.85ID:L5BVLvSX
プログラマー板を見てると正規表現を使えないエンジニアの話が出て来たりするから、何か自信が湧いてくるわ。
0369名刺は切らしておりまして
垢版 |
2018/06/25(月) 12:10:02.13ID:OgfHLZ8h
底辺が嬉しそうに語りながら、保守を考えない一本釣りの正規表現を書くのがムカつく

SQLとかも同じ、一本のSQLにロジック入れまくるやつ
0370名刺は切らしておりまして
垢版 |
2018/06/26(火) 13:36:35.01ID:sPTHfimp
20年以上前の話だけど
あるシステムで吐き出すログファイルを
sedスクリプトで編集して有用な情報を出力するようにした事ある
その行数は100行を超えていた
その後どうなったかは定かではない
0371名刺は切らしておりまして
垢版 |
2018/06/26(火) 19:47:32.35ID:bgwEWw4q
>>370
パターンスペース、ホールドスペースも使った?
俺はsedは最長でも20式くらい
awk,perlが標準では入ってない時代のUNIXで書く必要があったから
確か両スペース共使わないとうまく1パスで処理できなかった
0374名刺は切らしておりまして
垢版 |
2018/06/27(水) 14:37:11.71ID:28PODMfa
そういう時はさくっとJavaScriptで書いてNodeだな最近は
昔はPerlだったけど
0375名刺は切らしておりまして
垢版 |
2018/06/27(水) 18:38:06.01ID:4ms0/n8k
Javascriptはもうちょっと正規表現の仕様がまともだったらなあ
機能は多くなくていいから

仕様書に操作的意味が書いてあるのは評価できる
0377名刺は切らしておりまして
垢版 |
2018/06/27(水) 23:11:51.13ID:1Gx+bgGm
Hello Worldレベルならともかく、糞遅いPythonで文字列処理はありえないなぁ。
0380名刺は切らしておりまして
垢版 |
2018/07/02(月) 22:20:41.55ID:lloehE9/
正規表現は最後の手段だよ
どうしても正規表現しか使えない場合は正規表現使う

正規表現わかりませんは論外だけどな
クソ長くて複雑な正規表現も論外だが
0381名刺は切らしておりまして
垢版 |
2018/07/02(月) 22:47:36.58ID:iPM1Z4oi
長年使われてきた知見の蓄積があって、枯れたライブラリがあって、確立された手法がある

使わない理由がないのだが、
なんで最後の手段なの?他にもっとよい方法がいっぱいあるの?
0382名刺は切らしておりまして
垢版 |
2018/07/02(月) 23:50:36.84ID:jzwBvwlU
枯れたライブラリって具体的にどれのこと? エスケープ文字とか互換性ないし、そもそも日本語の
処理に至っては、文字コードの関係でグダグダなのに?
0383名刺は切らしておりまして
垢版 |
2018/07/05(木) 12:29:54.20ID:B2K44SA7
文字コードとか何年前の時代の老人ですか
0384名刺は切らしておりまして
垢版 |
2018/07/05(木) 12:42:31.47ID:WCE9VysN
日本語をまともに扱えないゆとり脳に大人気のPythonのことですね。
0386名刺は切らしておりまして
垢版 |
2018/07/06(金) 01:28:18.86ID:MYrmgALe
>>385
bnfってなに?
0387名刺は切らしておりまして
垢版 |
2018/07/06(金) 01:57:09.24ID:sZZ3sZbn
BNF記法知らないのかよ
0390名刺は切らしておりまして
垢版 |
2018/07/06(金) 08:07:21.59ID:aiDijQ22
大学で情報工学を体系的に学んだプログラマと、
プログラム言語やIDEの使い方を知ってるだけの専門卒プログラマ

一口にプログラマといっても全く別物ですから
0391名刺は切らしておりまして
垢版 |
2018/07/06(金) 08:44:15.92ID:tt5rLYzn
>>390
大学で学んだって、他人の成果である過去の知識を詰め込んだだけの、単なる劣化コピーでしょ。
0393名刺は切らしておりまして
垢版 |
2018/07/06(金) 09:48:22.97ID:ddb17xik
専門卒の人も偏差値高かったら東大や京大行ってたやろ?
なんで専門なのか世の中の人がどう思うか考えた方がええで
0394名刺は切らしておりまして
垢版 |
2018/07/06(金) 10:07:51.54ID:MXkHC94t
>>386
もぐりですね
0395名刺は切らしておりまして
垢版 |
2018/07/06(金) 11:12:08.31ID:xBDvcLLu
1位が驚きの結果に…「美人度が高い国ランキング」トップ10
http://znfhk.lordmarty.com/7.jpg
0396名刺は切らしておりまして
垢版 |
2018/07/06(金) 11:27:12.24ID:tt5rLYzn
>>393
偏差値は国立大に入れるレベルにあったけど、そもそも受験してないし、専門学校も中途退学
しようと思ったくらい。 一応卒業したけど、就職活動も専門学校卒業前年の夏休み終わった
9月からくらいで、1ヶ月か2ヶ月くらいしかしてない。 それに、別に他人の目なんていちいち気に
しませんよ。

んで、まだ世間一般には、コンピュータはアニメやSFの中で電球がチカチカして計算するものって
くらいの認識しかなかった当時、アルバカーキーのマイクロソフトを訪問した4人の日本人の1人が
経営していた会社に入社した。 同期入社が確か7〜8人で東京理科大卒の人も1人いたね。

実は入社するまで会社のことはよく知らんかったけど、入社3ヵ月後には新製品の回路設計
やってたかな。 もし高卒までタイムスリップして、記憶を消して人生リセットできると言われても、
たぶん似たような選択肢を選ぶと思うナァ。

まぁ、300万からの借金を抱えて大卒を選ぶのも本人の自由や。 せいぜいガンバレや。
0397名刺は切らしておりまして
垢版 |
2018/07/06(金) 11:29:46.57ID:tt5rLYzn
まぁ、論文を捏造したり、研究成果をデッチあげて国の研究費を遣い込むってのは、
大学でしかできないですね。
0398名刺は切らしておりまして
垢版 |
2018/07/06(金) 12:32:52.26ID:orEl4YaJ
国立大入れるなら300万使ってでも行けよ
生涯賃金で考えないの?
専門学校でもいくらかはかかってんだろw
0400名刺は切らしておりまして
垢版 |
2018/07/06(金) 18:29:05.90ID:qPy+AImc
>>399
「学び」をそういうことだと捉えている人は多い。まともな「学び」の
経験がない人、いわゆる低学歴の人によく見られる。
0401名刺は切らしておりまして
垢版 |
2018/07/06(金) 18:58:01.14ID:9T+frKyA
>>391
まるで独自言語でも開発した、みたいな人や
まさか他人が作ったもの借りて日銭稼いでないよな?
0402名刺は切らしておりまして
垢版 |
2018/07/06(金) 19:50:22.73ID:tt5rLYzn
おやおや。この国は、いつのまにか低能先生予備軍がイパーイのようですね。 誰も
使わない独自言語なんて、まさに典型的な研究者のオナニー、車輪の再発明ですよ。

それに、正規表現使うとか、vi使うとか、正規表現の解説書とか、他人がつくった
もの借りて日銭稼いでる典型じゃないですか。

昔から人工知能やら音声合成やら研究していますっていたけど、古くはPrologや
Lisp、最近だとTenserflowとか、どれも他人が作ったものじゃないの?

学び(wとか、研究していますとかいえば、上から目線で語れるとでも?
0403名刺は切らしておりまして
垢版 |
2018/07/06(金) 19:51:12.42ID:O/b+FERj
【移民いれて、穴埋″】 25△39△17△20△10△2▼13△13△5△5▼3△ <311> 26▼28▼22▼21▼
http://rosie.5ch.net/test/read.cgi/liveplus/1530842425/l50


サリンの犠牲者たったの10人、放射能の犠牲者は毎年20万人!! 移民20万人入れて誤魔化し!
0404名刺は切らしておりまして
垢版 |
2018/07/06(金) 19:58:59.26ID:9T+frKyA
>>402
それは別に悪いことじゃないと思うけどお前さんは違うんだろ?
0405名刺は切らしておりまして
垢版 |
2018/07/06(金) 20:05:38.41ID:tt5rLYzn
>>404
別にいいとも悪いとも言ってないが? 日銭稼ぎが悪いみたいな中二病丸出しの
>>401=404 って、もしかして低能先生みたいな高学歴のヒキコモリなの?
0406名刺は切らしておりまして
垢版 |
2018/07/06(金) 20:06:47.26ID:9T+frKyA
>>405
あれあれ?どこかに日銭稼ぐのが悪いと書いてありましたか?
0407名刺は切らしておりまして
垢版 |
2018/07/06(金) 20:24:45.32ID:tt5rLYzn
>>406
ハイハイ。 悪いと書いてないだけで、

> まさか他人が作ったもの借りて日銭稼いでないよな?

の下りに悪意がないとでも? そういうコミュ症に加えて、大卒という無駄に高い
プライドが邪魔して、仕事が続かなくてヒキコモリになっちゃうんですね。

戦後間もなくならともかく、大卒なんて今じゃ量産型ジムやボールと同じくらいの
価値しかないのに。
0408名刺は切らしておりまして
垢版 |
2018/07/06(金) 20:26:19.05ID:9T+frKyA
>>407
なんで大卒をそんな毛嫌いしてるのか知らんが俺は工業高卒だぞ
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況