2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【IT】プログラマーが正規表現を使いこなすメリットとは?

1 :ノチラ ★:2018/06/01(金) 18:00:49.92 ID:CAP_USER.net
皆さん、正規表現は使っていますか? 開発者にとってテキスト処理は面倒な場面も多いですが、正規表現を駆使することで一気に効率化することもできます。今回、『正規表現辞典 改訂新版』の著者・佐藤竜一さんに、正規表現を使うメリットや本書についてうかがいました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 また、絵文字のように複数のコードポイントを消費して目に見える1文字を表すケースもこれまで以上に増えました。本書でも可能な限り、これらのポイントについて説明しています。
https://codezine.jp/article/detail/10855

410 :名刺は切らしておりまして:2018/07/06(金) 20:58:14.60 ID:9T+frKyA.net
>>409
工業でもプログラムやるぞ
そういう仕事にもつくしな
俺は機械組立やめて転職
正直そのまま続けてたほうが収入はでかかった
仕事は今のデスクワークのほうが楽だけどな

411 :名刺は切らしておりまして:2018/07/06(金) 23:28:18.10 ID:QrHpJM0K.net
>>391
その劣化コピーがスタート地点だよ
劣化コピーにすらなれない奴らは毎回宝くじ買っては
「あー1000000000円当たらねーかなー」とくだらないこと考えてる

412 :名刺は切らしておりまして:2018/07/06(金) 23:45:41.48 ID:GAdLeb+q.net
メリットもクソも正規表現くらい使えないプログラマーなんてクソ過ぎるだろ

413 :名刺は切らしておりまして:2018/07/07(土) 09:43:44.39 ID:7sOK7nY7.net
スレが伸びてると思ったら専門卒の爺の自分語りかよw

414 :名刺は切らしておりまして:2018/07/09(月) 00:36:28.25 ID:hr0aEUUP.net
分かりにくく書く
これ重要だな

415 :名刺は切らしておりまして:2018/07/10(火) 13:31:44.36 ID:dbeLwBS/.net
ちょっと分かりにくく書いただけで
レビューなんてソース読まずにOK出してたな

416 :名刺は切らしておりまして:2018/07/17(火) 23:24:15.33 ID:UX0LwBlk.net
形態素解析の中身とか正規表現の地獄みたいになってるのかな

417 :名刺は切らしておりまして:2018/07/17(火) 23:26:45.49 ID:v5n7MHCo.net
>>349

418 :名刺は切らしておりまして:2018/07/20(金) 14:51:58.21 ID:kyWIdXtg.net
噛みつきはしないんだから
怖がらずに正規表現撫でてみて

419 :名刺は切らしておりまして:2018/07/21(土) 15:55:18.06 ID:3qrCbS/b.net
>>418
無理だ
自分で書かないといけないんだから
馬鹿には無理だ
土方プログラミングみたいなフローチャート仕事とは違うんだ
フローが非直感的すぎるんだ馬鹿には
バックトラックとか理解できるわけない

420 :名刺は切らしておりまして:2018/07/24(火) 16:06:39.42 ID:eTDjymZg.net
5、6桁の数字の因数分解が暗算でできる程度の頭がないと無理

421 :名刺は切らしておりまして:2018/07/24(火) 16:22:07.53 ID:PPQQWyv5.net
131071

422 :名刺は切らしておりまして:2018/07/24(火) 16:35:20.12 ID:FIHwt0vj.net
wordはなぜ正規表現を部分的にしかサポートしていないのか
不便だったからマクロで正規表現全部使えるようにしたわ

423 :名刺は切らしておりまして:2018/07/28(土) 10:53:06.49 ID:JLDoJ5/i.net
>>422
プログラマーでない人だと逆に混乱するからだろ

424 :名刺は切らしておりまして:2018/07/28(土) 10:57:45.75 ID:Q4vRmUTp.net
プログラマーでない人 最初から使わない
プログラマーな人 使えるとあれば、使おうとする

あるべき姿 全く対応しないか、完全に対応する

425 :名刺は切らしておりまして:2018/07/28(土) 11:10:13.11 ID:DlTuILrB.net
正規表現をディスる人って、自称PCに詳しいニワカがワイルドカードのつもりで使って大失態→正規表現は糞、みたいなのが多そう

426 :名刺は切らしておりまして:2018/07/28(土) 14:59:58.66 ID:O+lwHRp5.net
名前が良くない

427 :名刺は切らしておりまして:2018/07/28(土) 15:03:15.17 ID:1bJ4xWD5.net
芸術的な物は許されるが、低俗でひわいな物は公序良俗に反する

428 :名刺は切らしておりまして:2018/07/28(土) 15:05:08.07 ID:7ClbgDgV.net
>>425
いまさら、正規表現とかアルゴリム辞典とか、知ってて当たり前の知識で、しかもどちらも他人の
成果物の寄せ集め本にしただけなのに、まるでその分野の第一人者気取りで、ドヤ顔してるから、
ディスられているだけ。

429 :名刺は切らしておりまして:2018/07/28(土) 15:10:44.96 ID:7ClbgDgV.net
>>425-426
性器社員と非性器社員、低俗で卑猥なのは、どっち?

430 :名刺は切らしておりまして:2018/07/28(土) 15:11:21.57 ID:O+lwHRp5.net
HO

431 :名刺は切らしておりまして:2018/07/28(土) 15:25:28.08 ID:ZqVbctuL.net
初歩、基本だけでも知ってたほうが得することが多いのに、
その事を理解できるまでに費やすエネルギーが出ない、予約録画さえできないのが普通に居るくらいだし。

432 :名刺は切らしておりまして:2018/07/28(土) 15:43:04.57 ID:JLDoJ5/i.net
>>429
性社員に決まってる

433 :名刺は切らしておりまして:2018/07/28(土) 18:02:52.91 ID:UP1hg8hs.net
知ってて当たり前なら知ってろよー
知らなきゃディスられるの当たり前

434 :名刺は切らしておりまして:2018/07/28(土) 19:22:16.52 ID:sa7gzCeV.net
>>429
お前

435 :名刺は切らしておりまして:2018/07/28(土) 20:22:00.31 ID:yFhj0RQP.net
>>16
わかる

436 :名刺は切らしておりまして:2018/08/03(金) 14:52:05.84 ID:Ou4RP9u2.net
正規表現も使えないプログラマーとかおらんだろ今時
淘汰される時代

437 :名刺は切らしておりまして:2018/08/03(金) 15:08:04.46 ID:pMaAk8ki.net
複雑な正規表現は自己満足

438 :名刺は切らしておりまして:2018/08/03(金) 15:21:21.09 ID:x3QDRFme.net
そんなに複雑じゃない

439 :名刺は切らしておりまして:2018/08/05(日) 15:15:04.32 ID:+ZZ4uA51.net
プログラマー板みると正規表現使えないエンジニアや三項演算子知らないエンジニアがいて安心するわ

440 :名刺は切らしておりまして:2018/08/05(日) 21:30:05.89 ID:0fFTr4cU.net
>>237
つnkf

このレベルの変態はゴロゴロいる
https://twitter.com/search?f=tweets&q=%23%E3%82%B7%E3%82%A7%E3%83%AB%E8%8A%B8
(deleted an unsolicited ad)

441 :名刺は切らしておりまして:2018/08/06(月) 10:02:23.18 ID:eai5p9Dd.net
SEDでテキスト加工は基礎教養にすべきだなあ。

442 :名刺は切らしておりまして:2018/08/07(火) 09:21:31.36 ID:CBegUgR6.net
>>440
古いバージョンのnkfは暗黙の変換がdefaultで入ってるから要注意コマンド
必ずバージョンをチェックしよう

443 :名刺は切らしておりまして:2018/08/07(火) 10:02:52.39 ID:kEzRz551.net
わしも安定のsedが好みだな。あるいはperlかな
文字コード変換が目的でないとnkfは使わない

444 :名刺は切らしておりまして:2018/08/07(火) 10:55:11.66 ID:VAoIB4RP.net
nkfはオワコン

445 :名刺は切らしておりまして:2018/08/07(火) 18:22:17.99 ID:afizN7Md.net
>>8
1行分だけならとか三項演算子あるけどなるべくやめとけ
iOSのサーバ証明書バグみたいになる

446 :名刺は切らしておりまして:2018/08/07(火) 22:26:17.07 ID:9NKmePs2.net
>>237
つ python

447 :名刺は切らしておりまして:2018/08/14(火) 09:01:31.62 ID:slEsp2WY.net
正規表現もローカルルールがあって使える使えないがあるからなぁ

448 :名刺は切らしておりまして:2018/08/14(火) 09:57:56.61 ID:ZRZz8rNd.net
正規表現に頼るコードは悪いコード

449 :名刺は切らしておりまして:2018/08/14(火) 10:06:40.98 ID:PcTS0OcO.net
最初sedで覚えた私は、perlの正規表現みて愕然とした経験がある
もちろn大概の正規表現はそのまま使えたけどね
拡張された仕様をみて、今までの苦労は何だったのだろうとショックだったな

450 :名刺は切らしておりまして:2018/08/17(金) 13:29:01.36 ID:IeUljPKv.net
perl5 rulesが全く流行らないのがw
悪くないがなんか違うんだよね

451 :名刺は切らしておりまして:2018/08/29(水) 01:26:10.98 ID:fighBoSL.net
とある実名顔出しSE
副業はグルメブロガーの話題のツイート

・プログラマーは下流の仕事
https://twitter.com/micky19750930/status/1034099972252229632

・管理したことないから分からないだろう
https://twitter.com/micky19750930/status/1034390479360614400

・これがなぜRTされているか分からない
https://twitter.com/micky19750930/status/1034368852589596675

プログラマーは下流の仕事とい言い切る上流下流をも管理するSE
https://twitter.com/5chan_nel (5ch newer account)
(deleted an unsolicited ad)

452 :名刺は切らしておりまして:2018/09/02(日) 15:37:36.90 ID:kpXCKV3a.net
正規表現とSQLはおぼろげでもいいから覚えといて損はない
面倒なところはクイック・リファレンス的なの読むのでもググるのでもいいけど

453 :名刺は切らしておりまして:2018/09/02(日) 15:40:59.24 ID:Ca8z5XUR.net
SQLはそれが使用可能な環境でないと無理だが
正規表現って、普通にエディタでサポートしているから
使おうと思えばどこでも使える

454 :名刺は切らしておりまして:2018/09/02(日) 16:00:21.15 ID:RLS441y+.net
IT革命は雇用を生み出さなかった。

455 :名刺は切らしておりまして:2018/09/22(土) 06:17:07.83 ID:FlrL0sQi.net
>>41
その100倍ぐらい長くて複雑なの書いた事ある。
今自分で読んでも分からん

456 :名刺は切らしておりまして:2018/09/22(土) 12:32:17.54 ID:GPPBIo5P.net
awkはいいぜ、たったの1行だ。

457 :名刺は切らしておりまして:2018/09/25(火) 19:13:20.16 ID:IWkkbU0A.net
>>41
このくらいの長さのやつは変換生成してる

458 :名刺は切らしておりまして:2018/09/25(火) 19:13:38.93 ID:IWkkbU0A.net
>>456
えっ!?

459 :名刺は切らしておりまして:2018/09/27(木) 16:15:32.49 ID:uQJmHuGb.net
awkはちょっとした集計をしてみる位なら良いんだけど
変数のスコープが使いにくいので大きいものは作れない

総レス数 459
107 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★