かわや(旧よろずや)のブログ

好きな乃木坂、映画、漫画などについて語ります。

祝データベース復活と変な技術用語(正規表現、連想配列)

以前のブログで軽く「乃木坂データベース」について触れましたが、その続編です。前のブログはこちら。

yorozu831.hatenadiary.jp

それで、データベースはこちらです。

www.kawaya3.shop

乃木坂データベースとは、名のとおり、乃木坂46に関する情報をデータベース化したものです。

メンバーの生年月日や卒業日などの情報を一覧形式で見ることができます。

あと、フィルターとソートの機能が付いていて、任意の条件で見ることもできます。

手前みそになりますが、フィルターとソートはこんな感じです。

データを「1期生」で絞り込み、選抜回数の多い順にソートをかけたところです。

ただ、データベースに付き物のクエリー処理や検索処理は備わっていません。きっといつか作るんでしょうが、実装までの道のりは相当に遠いと思います。そういう意味では真のデータベースとはいいがたく、今のところ単なるデータ閲覧ツールです。

 

今回のブログは技術的な内容がちょこちょこと出てきますが、そういうのに疎い人は読み飛ばしちゃってください。

それに大して深い話でもないので、少し調べただけで何を言っているのかわかると思いますので、興味のある方は調べてみてください。今回のブログでは、用語の解説は端折っています。

 

前のブログにも書きましたが、なんでこんなデータベースを作ったかというと、まず、データを使って分析できたら面白かろうという想いと、ブログと連動するようにしたら面白かろうという想いがありました。

それから、最近のWeb開発事情にすっかり疎くなったので、少し勉強したほうがいいかなと思ったという側面もあります。以前に少しだけWeb開発に関わったことがあるのですが、いろいろと楽しかったので、あの楽しみをもう一度というところですね。

しかし、まあ物事、思ったとおりには運びませんな。その辺の話はあとで書きます。

 

Web開発を仕事としてバリバリやってきたわけではないので、バリバリやっている人から見れば、「わかってねえなあ、この人」という突っ込みは多々あるんじゃないかと思いますが、まあ生暖かい目で見てくれると嬉しいです。

 

レンタルサーバーを引っ越した理由ですが、前のレンタルサーバーの容量が少ないことが理由です。お金を払えば容量を増やせるのですが、そこまでするほどの熱意もないので、無料のレンタルサーバーに引っ越した、ということです。

今までと違ってページの上部に広告が表示されますけど、まあ、しかたないでしょう。

 

移行に立ちはだかった課題とその対処

乃木坂データベースの処理は、Perlという言語で実装していました。

自分のパソコンの環境はもちろん、前のレンタルサーバーでも問題なく動いていたのに、新しいレンタルサーバーではなぜか動きませんでした。

どこでエラーを起こしているのかまではわかったのですが、なぜエラーになるのかさっぱりわかりませんでした。

具体的には、Perlのパッケージを呼び出している部分なのですが、原因不明。海外の英語版のページを含めていろいろと探しまくったのですが、エラーの原因がわかりませんでした。

いろいろと試してみたのですが、万策尽きたところでPHPに変えたら動くかもしれないと、なんの根拠もなくPHPという言語への乗り換えを始めました。

PHPの経験はまったくなかったのですが、Perlによく似た言語で比較的、習得するのは簡単でした。

それと処理がある意味、ワンパターンになっていて、簡単に言うと「データをそのまま一覧にしているだけ」なので、メニューが1つうまく移行できれば、後はそれを真似っこすれば簡単にできるというわけです。

 

Perlという言語はよくも悪くも「緩い」言語で、配列の要素がなくてもエラーにならず、そのまま処理が通ってしまうため、想定していないケースでもそれなりに動いてしまいます。

今回、PHPに移行したおかげで、ロジックの抜けが何箇所か見つかったので、そういう意味ではよかったかもしれません。

それとPHPでは、普通の配列と連想配列を区別しないところが気に入りました。

 

ところで、PHPやPerlでお馴染みの技術用語の中に、前々から「この技術用語、変だよ」と思っていたものがあるので、この機会に書いてみたいと思います。

具体的には「正規表現」と「連想配列」です。

 

変な言葉その1「正規表現」

テキスト処理で大活躍する「正規表現」ですが、前々からこの言葉、変だと思っていました。

どこで生まれた言葉かわかりませんが、もともと海外の技術用語(regular expression)だったので、それが日本に入ってきたときに誰かが「正規表現」と訳し、それが定着してしまった、というのが裏事情ではないかと思います。

英語のプロではないため、言っていることに自信があるわけではないのですが、「regular expression」が本来意味するところは、「規則(パターン)に従った式」なのではないかと思います。

「regular」を辞書で引くと「規則正しい」とか「正規の」とか「いつもの」とかいう訳が載っていますね。

「expression」を辞書で引くと、「表現」とか「顔つき」とか「式」とかいう訳が載っています。

辞書の訳をくっつけて「正規表現」にしたんだと思います。

「正規表現」をそのまま日本語として解釈すると、「正しい規則に従った表現」、あるいは「正しい規則に従って表現したもの」となると思います。

100%間違っているわけではないのでしょうが、正直「なんかずれてません?」と思います。

「expression」は「式」ですよね。こんなやつなんで。

[\w/:%#\$&\?\(\)~\.=\+\-]+

自分だったら「バターン式」とかにするんじゃないかなと思います。

実際、文字のパターンを定義する式なんで、この方がいいんじゃないかと。

 

とはいえ、今となっては「正規表現」撲滅運動を起こしても、何ともなりませんが(笑)。

 

変な言葉その2「連想配列」

これも海外から輸入された技術用語だと思います。元の言葉は「associative array」です。

これも変な言葉なんですが、ここで使われている「連想」は大ウソなので、「正規表現」よりも罪が深いんじゃないかと思います。

「連想」というと、AとくればB(Aで想起される言葉はB)、というパターンの言葉だと思います。たとえば、「北国と言えば雪」みたいな感じの使い方です。

でも、「associative array」の「associative」が言っていることは、「紐づけ」という意味なんじゃないでしょうか。辞書で言えば「関連付け」という訳がそれに当てはまると思います。

 

「associative array」は、キーとそれに対応する値のペアを格納する配列のことです。ということなので、「associative」は、キーと値の紐づけ(関連付け)を指しているように思います。

いや、どう好意的に解釈しようと「連想」は相当遠いと思います。直感的に理解することはまず不可能なんじゃないでしょうか。

まあ、いまさらですが、「紐づけ配列」とかの方がいいんじゃないかなあ。名前がちょっとダサいので、「マップ配列」とか。

 

まあ、すでに言葉として定着してしまった今となってはどうにもなりませんが。