未来の DX について考える

先日、夜の 11 時ころ、用事があって近所のコンビニに買い物にでかけました。

その際、コンビニ駐車場にあちら系の方のものと思われる車が2台分の駐車スペースに横向きに駐車されていました。コンビニに入ってみると、思いのほか若いにーちゃんだったので「少しやんちゃなだけの人なのかなあ」と思うと同時に「常識で考えて、もっと遅い時間帯なら誰にも迷惑にならないと思うんだけど、なんでこの時間帯にこの駐車方法なんだ?」って思いました。

そのとき、ふと、今自分の思った"常識"って何?って思ったのです。「もっと遅い時間ならいいの?」「そもそも、こんな駐車方法だめでしょ。」というのもありますが、何をもって常識だと判断したんだろうと自分で疑問に思ったのです。

常識とは、改めて調べてみると以下のような定義でした。
--------------------------------------------------------------------
常識(じょうしき、英語: common sense)
社会的に当たり前と思われる行為、その他物事のこと。 社会通念ともいう。 
--------------------------------------------------------------------

なんか漠然としてるなあ。大多数の人の考えが常識となるとしたら、以下のようなアンケートを取って、一番多い選択肢が常識ということになりますよね。

質問:
夜のコンビニ駐車場に複数台の駐車スペースに跨いで駐車しても許せる許容範囲はどれですか。

1 : 複数台の駐車スペースに跨いで駐車することは許せない
2 : 23 時過ぎなら許容できる
3 : 0 時過ぎなら許容できる
4 : 2 時 ~ 4 時あたりなら許容できる

実際にこのようなアンケートを取ることはないでしょうけど、こういうことをデータ化して統計を出さないと、自分の考えが常識的なのか、非常識な考えなのか分からないんじゃないだろうか。

ある瞬間、何となく周りとずれている気がする、と思ったことがないだろうか。それがどの程度のずれなのか、正確に分かる術はあるのでしょうか。なんか、この学校、この職場は宇宙人ばかりだなと感じたときに、ひょっとしたら、自分が宇宙人ではないだろうか、と思ったことはないだろうか。

私はコンピュータ技術者として、こういう情報をデータ化したいと考えてしまう。昨今、個人情報とか言いながら、データ化することを恐れるような傾向がみられるが、自分はもっともっとデータ化してほしいと思っている。

具体的にどのような方法で、このような常識をデータ化できるのか考えていきたい。

エンジニアにも旅をさせろ

自分も含めてエンジニア気質な人って、あまり外に出ていかないイメージがあります。

買い物とか、遊びで外にでることはもちろんあるんでしょうけど、例えば異業種交流のような社交の場にはなかなか出てこないイメージがあります。

技術を極めたいから外に出ている暇はない、それよりも技術を磨け、という侍気質です。自分もそうでした。

でも、あるとき、ライターやっている友人に誘われ、友人曰く「天才会議」という催しへ参加しました。その友人は、業界で大活躍している方々を取材していて、そこで知り合った社長、人気急上昇中のブロガー、優秀なお医者さんなど、世間で活躍している方々を集めて、異業種交流会を行うという催しです。

参加してみると、皆さんの話がとても面白い。

例えば、お医者さんがどのようなエビデンスを基にして病気の診断をしているのか、病気に関する統計データとはどのようなものがあって、どのような尺度でそれを信用しているのか、また社長だとどんな斬新なアイデアで商売をしているのか、また苦労話など、初めて聞く話ばかりなのです。こういうところの話って「取材には答えられないんですけど実はこんなことがあって」みたいな、世間には声を大きくしていえないけど、実際はこうなんです、みたいな生の声があります。こういう意見は実際に人に会わないと聞けないです。


他にも、面白い仕事をしている方々の話を聞くことができました。とても勉強になりましたし、視野も広がった気がします。エネルギーのある方々なので、Facebook などで繋がっていると、日々、その方々が頑張っている様子がみえて、とても励みになります。

その後も、何度か別の催しに参加させていただいていますが、その度に知り合いが増え、視野も広がりました。また、エンジニア業界ではトップに近いレベルにいると自負している自分が、周りの人からどのように見えるのか、ということもよく分かります。自分の会社に目が行く人、自分の持っている技術に興味がある人、商売目線で見ている人、そもそも自分に興味なさそうな人、それが何か悪いということではないのですが、そういう見られ方をするんだなっていう勉強になります。また、もっと頑張ろうと思えるのです。

ということで、エンジニアにも旅をさせましょう。

ミミミミミッミ

ミミミミミッミって何?というところからでしたが、この書籍の著者の文章の書き方が私は好きです。

 

ミミミミミッミ

https://booth.pm/ja/items/1861943

「さてはアンチ(ウイルス)だな、オメー」
登場以来、数々の攻撃における認証情報窃取に悪用されてきた指定暴力団Mimikatz。本書ではその基本原理から検出回避方法まで徹底解説。君だけのMimikatzを作成してWindows Defenderの奥歯をガタガタ言わせたれ!
※本書はC言語の学習とWindowsのセキュリティを実験するための本です


もう、この文言だけで虜になってしまいます。こんな感じで楽しい文章書けたらいいなあ。読む側も退屈しないよね。

セキュリティに携わる人なら誰もが知っている Mimikatz (ミミカッツ) を説明した本なのですが、一見、複雑な要素の多いセキュリティの学習を楽しく解説してくれている点がとても素敵です。

あ、念のため言っておきますが、会社パソコンにこのツールを安易にいれないでくださいね。私の会社の場合は、グローバルセキュリティがインドにあって、ツールをデスクトップで動作させた日には、すぐさまチャットで叱られます。

「すみません。セキュリティ案件の調査目的で動作検証していたのです。」と英語で弁明するのですが、恐らくは皆さんの会社でも、とても面倒なことになるので止めましょう。

話は戻りますが、このツール、様々な攻撃パターンを試すことができるので、その攻撃をどのように防ぐのか (最近のパッチを当てましょうね)、どのような兆候がみえるのか、といった検証ができます。zerologon とか LSA Protection とかね。

 

Time Travel Debugging でコンピュータの動きを知ろう

Windows OS のデバッグをする人にはお馴染みの TTD (Time Travel Debugging) ツールですが、このツール、コンピュータ教育に使えるんじゃないのかな?と思うのは私だけだろうか。

Time Travel Debugging - 概要
https://learn.microsoft.com/ja-jp/windows-hardware/drivers/debugger/time-travel-debugging-overview

まあ、その前に、コンピュータがどうやって動いているのか、というコンピュータ概論は理解していただいた上での話しではあるのですが、実際にコンピュータのデータの動きが見たい人にはよいのではないでしょうか。

コンピュータはご存じのとおり、デジタルデータを解釈して動作しています。メモリ内にデータを読み込み、プロセッサがそのデータを読み取り、解釈してプログラムが動きます。

デジタルデータはマシン語として解釈されて動いていますが、このデータを人間にも分かりやすく表現してくれるのがアセンブリ言語です。このアセンブリレベルまで確認できるのが、WinDBG などのデバッグツールです。

デバッグはメモリダンプを出力した瞬間、もしくはデバッグブレークした瞬間の静的なデータですが、このデータを動的にキャプチャできるのが、この TTD ツールです。

UNIX にもあるとよいのですが、今のところ、Windows にしかないツールです。

以下具体例となりますが、例えば、以下のようにスタックにレジスタの値が積まれる動作をみる場合、

t コマンドで、アセンブラコードを一個進めると、push rdp コマンドにより、以下のようにスタックに rbp レジスタの値が積まれる動作が確認できます。

この操作はライブデバッグと同じなのですが、ここで t- コマンドって打つと、この処理を巻き戻せるんですよ。動的なデータとしてキャプチャしているので、自由自在です。
調査なんかでも、直接的にはこの処理で例外が発生しているけど、この値はもっと前のここのデータからきています、みたいな調査もできます。


勉強の話に戻りますが、アセンブリを勉強しながら、スタックがどのように積まれるかって、本をみても理解しにくいですよね。でも、TTD を動かして、進めたり戻したりしてレジスタの値をみたり、スタック ポインタの位置をみたりすれば動きが理解できるんです。C 言語のポインタや仮想アドレスを理解する上でも良いツールだと思います。

Visual Studio とか開発環境でもアセンブリ表示できるんですけど、TTD は対象プロセスのコードがなくてもアセンブラ コードが見えるのが便利です。悪いことに使っちゃだめですよ。

昔は、SoftIce などの優秀なデバッガ ツールがありましたけど、最近はみなくなりましたねえ。こういうコンピュータの深層部をみる必要がない、とか言う人がいますけど、本当にそうですかねえ。

最終的にエンジニアとして生き残るのは、こういうレベルでコンピュータを理解する人だけだと私は思いますよ。普通にコード書く仕事は AI に飲み込まれるでしょうし、その AI がどう動いているのか、みたいな根本的な部分は結局のところメモリ内の動作が見れる人しか役に立たないんじゃないかって私は想像しています。

私の言葉を信じる方は、まずは上原さんのデバッグの本を読んで勉強しましょう。これができて、やっと TTD を使える感じかな。

ちなみに、この本のプロデュースは私がしていたりします。宣伝したいわけではありません。エンジニアとして生き残りたい人は少し理解できるようにしましょう。

説明したように、TTD ツールはコンピュータの動作がステップ毎に確認できるので、データをみてコンピュータを理解したい人にはうってつけだと思います。

斜め上からもの申す

大手メーカーの重要な問題の調査をしていると、たまに出てくるのが「斜め上からもの申す」幹部社員だ。

メーカーの担当者と様々調整しながら調査を行っていると「横から失礼します」と入ってくる。横からという物言いではなく、完全に少し上から目線で物申すという感じだ。

「あなたたちの調査は一向に進んでいないように感じる。」
「このようなやり取りに意味があるのでしょうか」
「開発部門に聞けば、すぐに分かるだろう」
「エラーメッセージが分かっているのに、何で原因がわからないんだ」

今時の PC はホストコンピューターじゃないんだから、メッセージと処理が 1対1 じゃないんですよ。もう、あなたたちの時代とは違うんだから、もう少し勉強してから言ってくれ、と言いたい。※時代は自分も被っているんですけどね。。

オープン系のコンピュータは、非同期に様々なコンポーネントが交錯しているから、物凄く複雑な動作をするんです。

複数の大手メーカーで見かけるから、なんとなく、それが仕事みたいになっているんですかね。正直なところ、相手をするのも面倒臭い。

多少言いたいことは分かる、というレベルならよいのですが、全くもって筋違いなクレームが多い。自分は面倒臭いので、毎回この手の方には、ぐうの音も出ないくらいの長文メッセージで返答し、一点の突っ込みも許さない文章を返して、一回で撃沈するようにしている。対抗してきた方は今のところいないですね。

こういう類の方々は技術力があるわけではないので、対抗しようがないのです。論理性もないただのクレームなんですけど、これは一体何の仕事なのだろうかと毎回思います。こういう幹部が生き残っているような会社はダメですよ。ほんと。

いやーこの方々はですね、こういう理由で必要なんですよ、という意見のあるかた、メッセージをお待ちしております。何かご存じでしたら教えてくださいませ。本当に理解いたしかねまする。

デジタル庁のデジタル化について その2

デジタル庁のデジタル化について、の続きです。

デジタル庁の方と打ち合わせをさせていただき、私の意見を説明させていただきましたところ、意見を聞いていただける方がいらして、実際に以下のような対応をしていただくことができました。

ご担当の方は、マイナンバーの担当ではなく、法人担当の方なのですが、私の主張している話は、マイナンバー以外にも法人番号に関しても言える話ですので、できるところから対応していただけることとなり、実際にデジタル庁内にも意見を提出いただくことができました。

具体的には、以下のデジタル庁サイトに情報がアップされています。

https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/9abb8161-865e-4a57-96ca-1877c44e092d/3199e277/20221027_meeting_administrative_research_outline_02.pdf


Ph.1 ~ Ph.4 と進化していくことを想定したシナリオとなっています。入り口部分のデジタル化から始まり、最終的にはデータ駆動社会を目指すという大きな流れと、具体的にどこがシステム化していくのか、という部分を色分けしていただいております。

実際のこのようなデジタル化を進めていくうえでは、法律改正、活用範囲の定義、各省庁・自治体との調整が必要になります。色々な項目を順次整備していく必要があるわけですが、まずは以下のように制度毎にどのような項目があるのかを分類しています。

https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/849b8994-72c9-4f42-8e28-d5d3d8c9144e/96aa10df/20230222_meeting_administrative_research_working_group_outline_03.pdf


項目を分類したあとで、共通する項目があるので、以下のように法人基本情報を整備してはいかがでしょうか、という提案をしていただいております。


このように法人基本情報を整備することだけでも、現在の作業の大幅な工数削減につながります、という改善案なのですが、理想のデジタル化に向かっている改善案を提案いただけたことは本当に素晴らしいことだと思います。

ご協力いただけたデジタル庁担当者の方には本当に感謝しております。

しかし、法人番号だけではなく、個人番号 (マイナンバー) に関しても、各省庁および自治体でも取り組み初めて欲しいと思います。

早くデジタル化しないと、データも蓄積しないのです。データが蓄積しないと AI の活用ができないのです。だからデータ整備は急いでほしい。10年後に日本は何も準備していなかった、となっても挽回できないのです。だから私は叫び続けて参ります。

デジタル人材って何?

「2030年に不足するデジタル人材は79万人と言われている」


この手の話を聞くと毎回思うのが、デジタル人材って何だ?ってことです。

デジタルに理解のある人材を増やしたい、ということであれば教育をどのように行うのか、ということだと思うのですが、現在の学校教育だとプログラミング教育なんてことをやっていて、それが駄目とは思わないんだけど、ちょっとずれている気がします。

コンピュータがどうやって動いているのか、という点ではプログラムがどう動くのか、という理解が大切ですが、デジタル情報がインターネット上をどのように行き来しているのか、行き交うデータのセキュリティはどうやって確保されているのか、みたいな教育も併せて必要ではないかと思います。

先日まで NHK でやっていた「笑わない数学」の暗号理論みたいなのは分かりやすくて良いと思います。C 言語コーディングの本だけを読むのではなくて、アルゴリズムの本を読む、みたいなところが必要なんじゃないでしょうか。