今、話題の人工知能(AI)などで人気のPython。初心者に優しいとか言われていますが、全然優しくない! という事を、つらつら、愚痴っていきます

P03.社長室の秘密 [小説:CIA京都支店]

»

初回:2019/04/17

8.社長室の秘密

 早坂に社長室の調査データを渡してちょうど一週間がたった月曜日の午後、P子と丈太郎はCAI京都支店の打ち合わせスペースにいた。P子はすでに午前中に早坂から解析結果を聞いており、その報告を丈太郎が受ける所だった。

「結構面白い結果が出たわよ」

 P子は丈太郎がどういう反応をするのかを楽しむようにそう言った。

「これが床下の赤外線撮影した画像を温度分布に分解(※1)した写真ね。で、こっちが床下の動画を解析して、3Dモデル化したもの」

 P子は、パソコンの画面を丈太郎に見せながらそう言った。床下の温度分布の写真は20枚程度あった。動画から抜き出したようで色々な角度や場所の写真だったが、所詮床下なので丈太郎から見るとどれも同じような感じに見えた。

「ん?」

 ほんの少し、床板の温度が違う箇所が不自然に見られた。要するにパネル毎に温度が異なっているようで、自然現象では説明が付かない分布をしているように思えた。

「気づいた?で、これがその箇所の温度分布のヒストグラムを平坦化(※2)してコントラストを上げてみた写真なの」

 P子はわざと隠していた5枚ほどの写真をパソコン上に表示した。

(試した?)

 丈太郎は P子の手法にだいぶ慣れたみたいで、冷静に5枚の写真を見た。先ほどの違和感がはっきりと映っていた。

「これってフロアタイルの温度が、タイル毎に違うってことですか?」

「そうね。なぜだと思う?」

「上に載っている机や本棚とは関係なさそうだし...そうするとタイルの材質か何かが影響している...とか?」

「夜間のデータしかないからあくまで推測だけど、この赤色=高温のタイルの方が昼間に蓄積した温度が下がりにくく、青色=低温のタイルが下がりやすい、つまり熱伝導率が高い材料(※3)じゃないかしら、というのが仮説ね」

「確か社長室のフロア(※4)は、コンクリート製だったと思います」

「じゃ、もう一つの3Dデータも見て」

 P子は3Dモデル化した画像を映し出したパソコン画面を指差した。丈太郎は先ほどの色がまばらになっている箇所を拡大してみた。

「パネルの形状と厚みが微妙に違いますね」

 丈太郎はそういうと、拡大した3Dデータのフロアと色分けされた温度分布の写真を並べた。青色に表示されたタイルが、ほんの数ミリだが厚みがあった。

「で、これが3Dモデルに温度分布を重ねて解像度をアップしたデータね」

 P子はそういいながらパソコン画面で、別の3Dモデルのデータを表示した。そこには厚みの違いと温度分布の違いに相関があることがすぐに分かった。

「で、結論は?」

 P子に催促されるように『フロアのタイルが厚いほど温度が下がりやすい』と言おうとして踏みとどまった。ここは、建築学科でもゼネコンでもないので、そんなものを調査しているのではない。では何が違うのか?

「材料が違うんですか?」

 丈太郎が恐る恐る尋ねると、P子は軽くうなずき『たぶん、"金"(きん)よ』と言った。

9.木を隠すなら...

「金ですか?」

 丈太郎は思わず大きな声を出しそうになったが、小声で聞き返した。あくまでオープンな打ち合わせスペースだったので、周りに誰がいるかもわからない。

「『木を隠すなら森に、金を隠すなら無理に』って、早坂さんが言ってたわよ」(※5

「これって隠し財産?というか横領?社長が?」

「あと本棚の裏の画像ね。この部分がたぶん"金"だと思うわ」

「そんなにいっぱいあるんですか?」

「2000年頃から買い始めてたはずだから。当時は1,000円/グラム程度だったけど、今では4,500円/グラムになってるから、横領したお金で資産運用してるような物ね。(※6)しかもまともな方法で購入していたとも思えないし」

「で、これを横取りする?とか」

「馬鹿ね。私たちは夜盗(※7)でも何でもないんだから。親会社のヨソノ工業の社長さんに告げ口するのよ」

 P子は茶目っ気たっぷりに『告げ口』という単語で表現した。

「でも、いきなり『あなたの弟さんが"金"を隠してますよ』なんて言えないでしょう」

「そこであなたにお願いがあるの。フロアパネルを1枚だけ普通のパネルと入れ替えて持ち出して欲しいの。本当に金かどうかを確認する必要があるの」

「でも今回のミッションって、我々にメリットはあるんですか?」

 P子の説明では、ヨソノ工業社長の余園一郎はヨソノシステムから異母兄弟の弟一族を追い出したいと考えていた。そこに横領の話を持っていけば追い出した後に、その隠し財産も手に入れられるので大きな恩を売ることができる。

「隠し財産が、現金なら簡単なんでしょうけど、出所不明の"金"じゃそう簡単に現金化できないもんね」

 P子は続けた。

「私たちは、その"金"を現金と交換してあげるの。相場の半値程度でね。実際の所、横領分は当然税金は払ってないし、しかも金相場は3倍近くまで跳ね上がってきてるので損はないはず。CIAとしては安く"金"を手に入れられるの」

 丈太郎は『FRBの金庫に"金"はない』(※8)という都市伝説を聞いたことがあるが、その一環として米政府が金の回収を行っているのか?と考えた。

10.もう一つの課題

 丈太郎の作戦としては、パネルを持ちだすという事は別のパネルを用意して交換する必要がある。まずは交換用のパネルの入手から始めようと考えた。その為社長室のパネルの搬入業者を見つける必要があり、それを知っているのは事務の浅倉さんという所まで掴んでいた。

 浅倉さんというのは、初めての面接の日に会議室まで案内してくれた女性だ。

(パネルの話の後で食事に誘うか、食事に誘った後でパネルの話をするか...)

 丈太郎にとっては今回のミッションの中で最大の難関だと感じていた。

 丈太郎にはもう一つの課題があった。いや客先常駐のSEであれば、そちらが本来の業務だった。

「城島さん、すみませんが会議室の方までお願いします」

 ホカノ氏が余園常務や他のプロジェクトメンバーにも声をかけていた。今日はヨソノ工業の生産管理システムの機能追加の方針検討会の日だった。実は丈太郎に良い案があり、先にホカノ氏にその趣旨を説明していた。今日はその内容のレビューを行うという事で、発案者の丈太郎も同席することになった。

「では城島さん。説明のほどよろしくお願いします」

 ホカノ氏も内容を把握しているので説明はできたが、人の手柄を横取りしている...みたいに思われても嫌だし何より丈太郎はプレゼンがうまかった。(※9

「CIA京都の城島です。本日はよろしくお願いいたします」

 丈太郎は提案書の趣旨の説明を始めた。

 【目的】取引先や納品先の住所や社名を中国語で登録したい。
 【課題】ORACLEデータベースが、JA16SJISTILDEで構築されているので
     中国語が登録できない。
 【手段1】データベース本体をAL32UTF8で再構築する
 【問題】カラムのバイト数を増やすだけではなくアプリケーション内部の
     変更や全テストなど多大な工数がかかる。
 【手段2】NVARCHAR2 を部分適用する
 【問題】Javaからアクセスする場合、暗黙の型変換などで
     パフォーマンスが落ちる可能性がある。(※10

 【提案】通常のVARCHAR2にUCS(ISO/IEC 10646)で
      数値文字参照(文字参照)のまま格納する方法(※11

「今回はJava+Tomcatで構築されておりフロントエンドはブラウザを使用します。皆さんお馴染みの『小なり記号』は、< 「<」という表記を使いますが文字実体参照と言って、「♪」という形式で、16進数による指定を数値文字参照(文字参照)と言います。この場合、ISO 10646の文字番号で指定できこれがUnicodeと同じ体系なので中国語の表記が可能です」

 丈太郎は続けた。

「ブラウザから入力された中国語等をエンコードし&#+unicode;形式に変換してそのままASCII文字8バイト文字としてデータベースに格納し、検索時にはそのまま画面出力すれば、ブラウザ上に勝手に元の中国語として表示されます」」

 レビュー参加者が少しざわついた。

「この場合、変換はデータベース格納時だけですので修正箇所は登録画面だけです。検索画面は今まで通りで構いません。検索条件に使用する場合は、LIKE検索でも使用できますし、文字列の連結も通常の関数が使用できます。ただそのカラムは 1文字が10バイトとして格納されますのでディスク容量は食います」

「ディスク容量に関しては、マスタデータなので計算上それほどの負担にはなりません。また Shift-JISに変換できない文字だけをUCS変換すれば、データ量の増分も抑えられると思います。」

 プロジェクトリーダーであるホカノ氏がフォローしたことで、他の出席者にも安心感が出始めていた。

「少しだけサンプルプログラムを作成してきましたので、ご覧ください」

 丈太郎はそういうとテスト環境の業務画面を表示し、適当にgoogle検索したページから中国語をコピーして、その画面の住所欄にペーストした。そのまま登録ボタンを押すとデータが登録され、再検索すると先ほどペーストした文字列がそのまま画面上に表示されていた。

「このWeb画面のソースと、データベースに格納されたデータをお見せします」

 丈太郎は慣れた手つきでWeb画面のソースを開き、該当箇所の文字を表示するとともに、データベースの検索結果を表示した。

 ここでホカノ氏も言葉をはさんだ。

「この提案の一番いいところは既存のシステムにほとんど手を付けずに、住所と社名を中国語対応できるという事です。検索画面も含めたすべての入力は、Javaのフレームワーク経由でORACLEに渡されるので、変換箇所は 1か所で済みます。なので登録プログラムの変更も最小限で済みますし、業務ロジックは修正の必要がありません。住所と社名のカラムの桁数は増やす必要がありますが、大きな対応ではありません」

 システム部長兼常務の余園まことが質問した。

「先ほどデモで見せてもらった画面だが、生産管理システムのテスト環境だったと思うんだけど...」

「はいそうです」

「もしかして、すでに開発が完了した...ということなのか?」

「半分イエスです。テスト環境でのプログラムの修正は完了です。後は既存のEXCELで管理している中国の顧客データの移行と、帳票の出力周りが残っています」

 丈太郎が答えると、ホカノ氏も同意した。

「当初の予算の1/3で済みそうです」

 まだ30代の余園常務は、自分より年上であろうホカノ氏に『よくやった』と言うと『後の詳細のレビューは君たちに任せたよ』といって会議室から退席した。

 残されたレビュー参加者達が一斉に質問してきた。ただし期待と好奇心に満ち溢れた質問であり、和気あいあいとした雰囲気に包まれていた。


======= <<注釈>>=======

※1 赤外線撮影した画像を温度分布に分解
 赤外線サーモグラフィとは
 http://www.avio.co.jp/products/infrared/what-thermo.html

※2 ヒストグラムを平坦化
 ヒストグラム その2: ヒストグラム平坦化
 http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_histograms/py_histogram_equalization/py_histogram_equalization.html

※3 熱伝導率が高い材料
 ウィキペディア(Wikipedia)より
 https://ja.wikipedia.org/wiki/%E7%86%B1%E4%BC%9D%E5%B0%8E%E7%8E%87

※4 社長室のフロア
 フリーアクセスフロアとは?
 http://www.sdn.co.jp/products/earth/floor/gaiyo.html

※5 早坂さん
 話が長い事で有名。また、メモ帳を持たずに質問に行くと追い返される。

※6 金価格推移
 https://gold.tanaka.co.jp/commodity/souba/y-gold.php

※7 夜盗
 https://kotobank.jp/word/%E5%A4%9C%E7%9B%97-648726

※8 『FRBの金庫に"金"はない』
 『アメリカのFRBの金庫にもう金はない』
 https://blog.goo.ne.jp/jpnx05/e/e67fa97995cea609468e3ca25419c1b8

※9 丈太郎はプレゼンがうまかった
 フィクションです。丈太郎君のプレゼンは上手なのですが、私の文章力ではそれをうまく表現できませんでした。

※10 暗黙の型変換などでパフォーマンスが落ちる
 OracleでSJISのデータベースの文字列カラムにUnicodeの絵文字をJavaで格納するには
 https://www.sakatakoichi.com/entry/2015/07/09/181309

 NVARCHAR2列とVARCHAR2列が混在するテーブルでwhere句にインデックスを付与したVARCHAR2列を指定すると、なんとインデックスが使われず、フルスキャンとなります。

 Oracle Database JDBC開発者ガイドおよびリファレンス 10g リリース2(10.2)
 http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/global.htm
 21 グローバリゼーション・サポート

※11 UCS(ISO/IEC 10646)で数値文字参照(文字参照)
 文字参照に使う文字コードとして ISO/IE C10646 を使うことになっている
 https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E5%8F%82%E7%85%A7

 UCS(ISO/IEC 10646)
 https://ja.wikipedia.org/wiki/ISO/IEC_10646
 UCS-2はUnicodeと同じ体系である。

 https://so-zou.jp/web-app/text/encode-decode/
 トップ Webアプリ テキスト処理 エンコード / デコード

 HTML エンコード (数値文字参照) 欄が変換結果です。

この下の例文の&#****を直接HTMLソースに書いて見てください。

通常の文字数値文字参照
こんにちは &#x3053;&#x3093;&#x306B;&#x3061;&#x306F;
안녕하세요 &#xC548;&#xB155;&#xD558;&#xC138;&#xC694;
您好 &#x60A8;&#x597D;
مرحبا هناك> &#x645;&#x631;&#x62D;&#x628;&#x627;&#x20;&#x647;&#x646;&#x627;&#x643;
សួស្តីទីនោះ &#x179F;&#x17BD;&#x179F;&#x17D2;&#x178F;&#x17B8;&#x1791;&#x17B8;&#x1793;&#x17C4;&#x17C7;
Comment(0)

コメント

コメントを投稿する