#5920

隠されたイチゴ


web制作

今日は試しにサブPCからWord 2019で書いてみます。
文字数設定をしてルーラーとグリッド線を表示してみると、さながら手紙を書くようですね。
これはなかなか快適。さすが15,000円相当というだけはある。

ところで昨日余談として書いた「ググっても分からない問題」ですが、
7割方解決することができました。しかしまだ完全に解決したわけではありません。

いま、自分は研修課題としてサイト内検索機能を作っています。
Webに詳しくない人に一言で説明するならGoogle検索のちっちゃいバージョンですね。
詳しい人に一言で説明するならMySQLを用いたあいまい検索によるデータの抽出です。
仕組み自体はシンプルであり、web制作の初歩とも言えるものです。
しかしこれを作るにあたって、次の問題に悩んでいました。

  • 日本語であいまい検索をすると想定通りの結果が出る
  • サーバーで「a」だけで検索すると想定通りにならず全レコードが抽出される
  • ローカルで「a」だけで検索すると想定通りの結果になる
  • 「b」だけで検索すると想定通りの検索結果が出る

なぜ、「a」と検索したときだけ想定通りの検索結果が表示されないのか。
果たしてこれだけで答えが分かる人なんているのでしょうか?
もしそんな人がいたらぜひいろいろお話を聞いてみたいものです。

散々調べていくうちに分かったのは、phpmyadmin(phpでデータベースの中身が見れるソフト)
から見るとデータベースは正常通りに表示されているけれども、
コマンドライン、つまりLinuxで表示した場合は文字化けしているということでした。
そしてローカル、サーバーそれぞれで異なる文字化けの仕方をしている。
サーバーの方は半角のaや記号などが大量に羅列されているタイプの文字化けであるのに対して、
ローカルの方はほとんどが漢字で構成された文字化けでした。

なるほど、これを検索していたからサーバーで「a」と検索すると全件ヒットしていたのか。
しかしこの答えは、「日本語は無事に検索できる」という状況を説明できません。
それに、どんなに調べてもサーバーの文字コードの異常を突き止めることはできませんでした。
Linuxで何度charsetを調べてもUTF-8と出てくる。
当然phpの検索実行ファイルでリクエストしているのもUTF-8。
理論上は文字化けが起きるはずがありません。

6時間調べてもどうしても分からなかったので、匙を投げて教官のもとに持っていきました。
いつもはドヤ顔の教官も見たことないほど真剣に苦戦していましたが、
一緒に見ていくとついに原因に行き着きました。それは、なんとスペルミスだったのです。

自分がずーっと見ていたのは、検索を行うプログラム本体。
しかし原因があったのは、そもそも検索するデータをエントリーするためのプログラムで、
二週間以上前の課題で作ったものでした。
そこのPDO設定を見てみると、「UTF8」とすべきところが「UFT8」になっている……。

試しにそれを直してデータを再エントリーしたらデータベースの文字化けは直りました。
散々悩んで、結局文字化けの原因はスペルミスだったわけです。
サーバーサイドの設定ファイルやSQL文を疑いまくっていましたが、とんだ濡れ衣でした。
いやー、ホント恥ずかしい。プログラマーあるあるではありますけど。
昨日の自分は、「知見をまとめてブログに掲載したい」とかドヤ顔で言っていますが忘れてください。
こんなのまとめ記事にできるわけがありません。

しかも、データベースの文字化けは直りましたが根本的なところは直っていない状況です。
文字化けは直ったはずなのに、検索結果は相変わらず想定通りの結果が出ないからです。
さらに、依然としてローカル環境の文字化けは直っていません。
むしろ、いろいろいじっているうちにphpmyadmin上でも文字化けするようになり悪化しています。
まぁでも、サーバーや設定ファイルが原因ではなく、
あくまでも自分が書いたファイルに原因があると断定できたのは大きいと思います。
まさか、スペルミスを突き止めるために丸一日費やすことになるとは思いませんでしたが。

前にもwebプログラマーは論理力が必要だと書きましたが(#5887『論理の壁』2020年02月01日)、
短期間でそれを再び痛感することになりました。
例えば、目の前に何も乗っていない真っ白のホールケーキがあったとします。
「この中のどこかにひとつだけイチゴ(原因)があるのでそれを突き止めてください」
と言われたときに、半分にズバッと切ってこっちには確実に入っていない、
あっちには絶対に入っていると言えるようなスキルが欲しいと切実に思うのですが、
それはホールケーキを見ていればいずれ解決するものではありません。
やはりこの辺の推理力というか論理力は、経験値がものを言うのだろうなと思います。
もちろん、経験値とは別に論理的思考力も大事ですが、
それもそれで一朝一夕で身に付くものではありません。
自分の場合、すでに本を一冊中絶しているのでなかなか険しい道だろうと思っています。

でも、ある種の問題解決能力は今後生きていく上でも必須のように思います。
結局、研修は規定期間内に終わらず、他の大多数と同じく延長に突入してしまいましたが、
このチュートリアル期間に少しでも能力を高めていきたいところではあります。

……それにしてもこの課題、明日で完成できるのか……?

0

コメントを残す