雑種路線でいこう

ぼちぼち再開しようか

データ活用やら機械学習の時代に情シスとベンダーってどうなるんですかね

だらだらしていたら連休が終わってしまう。連休中に仕上げるはずだった、あの原稿も、火曜の講義資料も、さっぱりできていないのに困ったものだ。この連休中けっこうな時間を割いたのは、くだらないことに手元のラップトップをLinuxからWindowsに戻すことだった。
Blockchainの評価・デモと機械学習の勉強用に買った重いゲーミングノートで、LinuxのリハビリがてらfabricやirohaのビルドにDockerが欲しいし、TensorflowでGPGPUを使おうとするとUbuntuが良さげだというので入れてみた。2か月ほどいじってみる間にBlockchainを動かすだけならDocker for Windowsで十分だし、TensorflowやKerasもWindows版でGPGPUを扱えるようになり、Linuxは仮想環境だけで一通りの用事を済ませられそうなのでWindowsに戻すことにした。Windows 10のCreators UpdateでEdgeのブラウザ拡張周りの仕様が変わったらしく、その辺を手元で調べたいこともあった。
誤算はお目当てだったWindows 10 Creators Updateを結局導入できなかったこと。ASUSのROG GL502VSというゲーミングノートはプレインストールされたWindows 10 Homeでしか動作保証しないという奇妙な警告がカタログに書かれているんだけど、Ubuntu 16.04はあっさり問題なく動いて拍子抜けしたところ、意外にもWindows 10 Creators Updateが入らなかった。プレインストールOSからアップグレードしようとすると、再起動後のセットアップがクラッシュしてロールバックしてしまうし、無理やりUSBで1からインストールしても起動前にクラッシュしてしまって使い物にならない。ASUSのフォーラムでも英語で多くの悲鳴が上がっていた。まだ発売されて間もないモデルだし、この数週間で改善されるだろうけど、残念なことだ。さらについてないことに最近Visual Studio 2017がローンチしたお陰で、Visual Studio 2015のコミュニティー・エディションをダウンロードできなくなってしまった。Windowsコンパイラなんて新しければ良さそうなものだけれども、WindowsPythonだとインタプリタのビルドに使ったのと同じバージョンのコンパイラを使ってモジュールをビルドする必要があったり、NVIDIAのCUDA ToolkitやらIntelのMKLが最新のVS2017にまだ対応していないからVS2015が欲しくなるのだ。PythonのモジュールをビルドするだけであればVisual C++ Build Toolというのが新たに公開されて、こちらをインストールすればいいんだけど、CUDA ToolkitやMKL、Python用のアドオンなんかを使おうとするとVS2015が欲しい。結局デスクトップのダウンロードフォルダーにVS2015のセットアップが残っているのを思い出して、それを使うことにした。
データ分析向けのソフトウェア環境構築のTIPSは混迷を極めていて、Qiitaなんかをみればいくらでも記事を見つけることができるけれども、半年前の情報がもう古かったりする。VS2015が無償では手に入らなくなったこともそうだし、AnacondaのPythonが3.5.2から3.6.0に上がっただけで別のトラブルが出てきたり、CUDAやらcuDNNのバージョンもころころ上がる。最新バージョンを入れればいいというものでもないのである。結局VS2015、Pythonは一旦Python 3.6系のMinicondaを入れた上で、これではTensorflowのWindows版バイナリがないしVisual StudioIDE機能も対応していないのでPython 3.5.3の仮想環境を構築することにした。途中TheanoからGPUが見えないトラブルを解決するために設定ファイルをいじり、MinGWを入れ、ライブラリ関連の環境変数を追加するのに結構な時間を要した。バッドノウハウの塊過ぎて、どうせすぐ陳腐化するのでQiitaに書く気さえしないんだけど、ここまで苦労するならUbuntuで環境構築した方がずっと楽だった。閑話休題
データ分析環境をつくるとデータを分析したくなるが、Kaggleを見ても何から手をつけていいのか分からないし、最初はサンプルコードで参照しているmnistとかciferといった典型的なデータセットをいじる。何せデータの入手元と、料理の仕方が示されていて、前処理もされているデータがあるのは心強い。とはいえそれをいじってる間は、どんなにデータやコードと戯れたところで富を生まないのである。プログラミング言語なんかだと、覚えて何かプロトタイプでもつくれば達成感も利用価値もあるのだけど、データ分析というのは分析対象やら使途がなければ毒にも薬にもならない。チューニングも楽しいけど、既成のデータセットで精度をチューニングしていくのは、俺様アプリをつくるのと比べて地味というか、とりあえずAppStoreやGoogle Playに並べておけば儲かるかもしれないとか夢を持てるアプリとは大違いだ。
データサイエンティストが足りないという話の次にくるのは、データがGAFAに独占されているという話で、どっちも足りなければ何も困ってないじゃないかという気もするのだけれども、それでは競争の土俵に乗ることもできないという堂々巡りの議論が日本中のあちこちで行われている。IT系の女子から話を聞いていても、いわゆるプログラマーだけでなく企画とか事務補助の女子まで連休中にPythonを勉強したいといっていた。(たぶんサンプルバイアスはあるけど)エンジニアとしての興味というよりは、何か大事なことが起こっているという直感が働くのだろうか。Pythonはもともと諸学者に向いた言語で、何かを始めようとしたとき他に覚えなければならないことが極端に少ない。その気になれば、かなり複雑なシステムをつくることもできるし、部品となるライブラリが充実している。充実しすぎているが故に環境構築で苦戦することもあるけれども、動作環境を選ばないし、JavaC++と比べたら取っつきやすく、Java Scriptなんかと比べて応用範囲が広く、もともと似たようなコンセプトだったPerlRubyよりも頭一つ抜けた感がある。
ちょっと触ってみれば分かるけどDeep Learningは難しい。KerasであれDeelであれ、ひとつひとつのサンプルコードは非常に短くて、何だか自分でも書けそうな気がしてくるところが罪作りだけれども、気の利いた前処理のされたデータセットが整っているからであって、自分で何かを処理しようとし始めた途端に前処理も実装も手間がかかる。理論やアルゴリズムはあるけれども、その組み合わせやパラメーターは、ちょっと複雑になるともう、試行錯誤の結果こうやったらうまくいったという感じ。そのうち体系化なり理論化されるんだろうけども現時点では手探りで、裏を返すと教科書になっていないというのは、結構チャンスが転がってるということでもある。
ITの世界ってこの四半世紀はコンシューマリゼーションともいわれるように、世界中の誰もが等しくチャンスを与えられる方向に向いていたのが、Deep Learningのライブラリ自体の敷居は非常に低いんだけど、ちょっと頭抜けたことをやろうとすると、計算能力もデータもフィードバックも物量で突っ込んでいく必要が出てくるし、物量を支配しているものが強くなる、重工業の時代に逆戻りしつつある気がしている。安直にクラウドを借りると使用料でびっくりしちゃうんじゃないかという恐怖もあって、GPUの陳腐化が早いことを考えれば借りた方が安そうな気もするけれども、手元のマシンで試行錯誤したくなるわけだ。そのうち減価償却まで考えて計算したいけど。
とはいえ手元の計算機でPythonの環境を手動で整えて、という世界はホビイストや研究者の世界では残るだろうけれども、いま浮足立っている企業の多くは、SaaSなりPaaSで使うようになるのだろう。Azure Machine Learning Studioなんかをみると、データの入出力や機械学習モデリング自体はビジュアルプログラミングが向いているし、それで表現しきれない部分もコードスニペットを埋め込むので十分という気がする。G SuiteやOneDriveから簡単にそういった機能にアクセスできて、もうちょっと高度なことはPaaSを叩くように自分でコーディングして、その向こうでGPUだかFPGAコンパイルされてもユーザーは気づかないようになるのだろう。そして各社とも撒き餌となる処理系や学習済みモデルを提供して、データとユーザーを自社クラウドに囲い込むのだろう。だいたい昨今のDeep Learningブーム自体が、オンプレミスでデータを抱え込むの、そろそろ止めませんか?ってキャンペーンになってる気もする訳で。これからはAIだ、データが大事だとかいってる時点でお釈迦様の掌の上で踊らされているのに、そこで競争力がーといっても、そりゃ飛んで火に入って無理ゲーでしょうよと。
斯様に今の段階での勝負はついていて、といってもWindowsの独占的影響力がWindows 95からiPhone登場までの10年ちょっとしか続かなかったように、個々の製品やサービスの覇権がそんなに長く続くものでもない。ひっくり返すチャンスはいくらでもあるし、それを虎視眈々と狙っているベンチャーは数多あるのだろう。AppleAmazonMicrosoftも覇権を維持し続けるために何度も生まれ変わっているし、GoogleFacebookもこれから転機や生まれ変わりを経験するだろう。かつてのソニーが『イノベーションのジレンマ』で称賛されたように。
クラウドで、半導体で、Webサービスで、米国どころか中国にも引き離されるのは既定路線として、残念ながら機械学習の進展は日本の競争力に更なる深刻な打撃を与えるだろう。恐らく民間企業も政府も今のままではマトモにAIを活用できず、米欧亜の後塵を拝することになる。特に大きな課題は雇用の流動性が低いためにユーザー企業でエンジニアのキャリアパスを構築できずSIerをバッファーとして利用していることだ。
これは今に始まったことではないが、個人情報保護法制の強化によってユーザー企業のデータにSIerが触れなくなり、試行錯誤が大事なデータ解析で事前の要件定義や正確な工数見積もりは難しく、丸投げの請負契約は難しい。これまでITを軽視し、要件定義さえちゃんとできれば確実にプロジェクトを遂行できると考えて安易に開発を丸投げし、エンジニアに相場に応じた待遇やキャリアパスを提供してこなかったユーザー企業や政府は深刻な打撃を受けるだろう。今のところデータサイエンティストが足りない以前に、その受け皿さえ十分にないのである。
政府で様々な会議体がAIやデータ利活用について議論しているが、残念ながらその多くが研究者やサプライサイドの視点で、専らデータが足りない、もっと速いスパコンが欲しい、日本独自の技術が必要だといった問題提起が多く、従前の情報サービスを支えてきたエコシステムやユーザー企業のリテラシー機械学習の特性と合っていないことについて十分に議論が尽くされているとは言い難い。現実問題として課題認識を持ったとしても、平場で自分たちに都合の悪いことを話せといわれたところでユーザー企業にとっても役所にとっても厳しい。
とりあえずコスパとか考えなければ速い計算機はカネで買うことができるので計算機は整備する。となると当面なくて困るのはデータということになる。ユーザー企業のデータにベンダーが手を突っ込めないから利用者の許諾を取ってデータ活用の器を別に用意しようというのが日本におけるPDSとか情報銀行の議論だが、私は難しいと感じている。GoogleAmazonFacebookは確かにユーザーのデータをマネタイズしているが、ユーザーはGoogleAmazonにデータを預けているという実感を持っている場合は少ない。用事があるからツールとしてのGoogleAmazonを使っているのであって、その副次的な結果としてデータが溜まっているに過ぎないからだ。利用規約を通じて同意しているが、そもそも消費者との関係においてデータは主役ではないのである。だから利用者にとってデータを切り売りするといっても実感が湧かないし、気持ち悪いという印象を持つだろう。さらにデータの分析だけを通じて分析技術を精緻化したり、マネタイズすること自体が難しい。データを取ったユーザーとの関係でデータを使い、フィードバックを受けて初めて分析結果の品質を検証して磨き上げマネタイズできる。もとより収益モデルができているところのパフォーマンスを改善するためのツールに過ぎないからだ。
もちろんデータ活用がうまくいきそうな産業分野もある。まずは工作機械や自動車といった元気のいい製造業は、自分でデータを持っているだけでなく、海外のメーカーと競争しており、自前の研究開発やソフトウェアチームを持つだけの余裕を持っているので、機械学習を使いこなして自己の競争力に結び付けるだろう。キャッシュリッチで柔軟なユーザー企業も、クラウド移行なりを契機に内製比率を高めたり、丸投げではないベンダーコントロールを実践している。逆にいえば情報システムはSIerに丸投げで、伝統的な新卒一括採用で中途採用比率が低く、コンプライアンス意識が過剰な組織(このご時世にそんな会社あるのか?)といったところが困ることになりそうだが、そうした会社は国際的な競争に晒されていなかったり意外と何とかなるのかも知れない。
Twitter界隈ではSIerの人月商法がおかしい、遠からず行き詰まるといった言説に溢れていて、これからどう業態を変えていくのか議論が喧しいけれども、ユーザー企業であれ政府であれ、顧客サイドの意識が変わらない限り、サプライヤーとしては如何ともし難い。これまでもオープン化やクラウド化の波を生き延び、利益率は厳しいながらも生き延びているのだから、これからも環境変化を乗り越えて、顧客ニーズを満たそうとするだろう。受託型のシステム開発における仕事の進め方や質を変えていけるかどうかは、まず発注側にボールがあるのではないだろうか。
昔話を聞くことが多い公共分野でいうと1980年代くらいまで日本でもシステムの内製が一般的であったらしい。いまどきSQLくらいは仕事で使うことがあっても、JavaPHPのコードを書ける情シス要員は仕事というよりも趣味の領域だが、四半世紀前の話を聞いていると普通にCOBOLFortranやJCLで役人がコードを書いていたようである。1990年代のオープン化のタイミングで技術体系が大きく変わり、パッケージを入れるようになってから現場の要員がコードを書かなくなったようだ。1985年の電電民営化で政府全体の情シスの役割を担ってきたデータ通信本部が切り出されて、2000年代に入って行政改革と調達改革できれいに分離された。特許や年金のシステムで問題となったレガシーシステムやベンダーロックインは、もともと内製であったシステムを後から組織再編で引き裂いたものの、雇用流動性が低い組織で内製を続けたことによる設計負債に押しつぶされた面もあったのではないだろうか。意外と今の仕組みの延長線上でも、その気になれば内製化を図りつつ、切り出せる仕事を外に出すスタイルに転換できるのかも知れないけれども、それだけやったところで人事が硬直的であり続けるならば設計負債は溜まっていく、そうしないためのアーキテクチャーや組織経営が必要とされている。
データ活用というと個人情報保護法の制約なく技術を持ったベンダーがデータを分析できるようにしたい、そのために本人同意なしにデータ流通を図れる匿名加工情報を個人情報保護法に入れてみたり、本人同意を得て情報を蓄積して活用する仕組みを医療分野でもつくろうとしているけれども、どこまでうまくいくかは分からない。これらの発想の根っこに、今ある情報をかき集めるだけでそこに価値があるに違いないという思い込みがあるが、GoogleであれFacebookであれ、米国においてビッグデータを収益化してきた企業は、明確なレベニューモデルを持った上で、意志を持ってデータを集めてきたのであって、とりあえず貯めておいたデータが後から価値を生んだ訳ではない。もちろん創業期のグーグルには検索連動広告といった収益モデルはなかったので、先行投資の期間が続いたことになるが、その間に彼らが磨いたのはサービスであり、顧客との繋がりであって、その時代に集めてきたデータそのものではないだろう。結局のところデータとは意思を持って集めるからこそ処理する受け皿に設備投資しつつマネタイズできるのであって、利用者に対するサービスも目的もはっきりしない間は、本人の同意を得ることも、処理基盤に投資することも、ましてやマネタイズすることもできない。利益が生まれる過程で確かにデータは流れているけれども、それはエコシステムの血液のようなものであって、無理をして一人分の献血をかき集めたところで、どう捏ね繰り回したところで一人の人間をつくれる訳ではないのである。
コストを度外視すれば計算機を買うことはできる。計算機が手に入れば捏ね繰り回せるデータが欲しくなるが、データが手に入ったところで捏ね繰り回しただけでは価値を生むことはできない。データは媒介に過ぎず、利用者は用事をこなすことを求めていて、その商流に入り込まない限り、マネタイズなどできないのである。そしてマネタイズしようとした途端、適正な価格で計算機を買うことがいかに難しいか、ユーザーを獲得してストリームラインでデータを処理できる基盤を構築することがどれだけ難しいか、それはベンダーに丸投げできるようなものではなく、経営レベルでの意志と戦略、それを実現する組織と顧客基盤を抱えて初めて意味を持つのだということを痛感する。その上で今この瞬間どうおもちゃをぶん回すかの次に、この技術が何を可能にするものであって、それが自分たちのビジネスに対してどのような価値を齎し得るか、それを実現するために何の種を撒く必要があるか、といったところから考え直す必要があるのではないだろうか。
ベンダーなりSIerはそれっぽい提案をしたり一緒に悩んで試行錯誤することはできる。そのときの契約形態は請負よりもリスクを互いに共有した何かになるだろう。もちろん機械学習だけであれば、それが得意な学生を新卒で採用した方が安上がりだが、厳しい競争の中で優秀な人材を惹きつけるのは大変だし、技術の適用領域を見極めて提案し、組織に対して変革を促す仕事は、特に日本的な組織において新卒には荷が重い。そうした上流工程だけでは業界としての裾野を抱えられないんだけれども、優れた学習済モデルを構築するまでの試行錯誤やらデータの前処理、ましてやテストまで含めると、いまのところ機械学習ってかなり力業であって、OA化で紙が増えたのと同じように、人間の仕事を減らすよりは、むしろ増やすことになりそうな気がする。それは結局のところ自分で仕事をこなすよりも、新人に仕事を教え込むことの方が面倒なのと同じことだ。僕らはAIに仕事を取って変わられることを心配する前に、雇用流動性が高い国々が次々とそうした技術をモノにして生産性を高めていく中、自分たちの仕事の進め方で適切に変わっていけるだろうか、何をやるべきか自社のデータを捏ね繰り回しながらプロトタイピングの内製化で試行錯誤しつつ、モノになりそうなシナリオについて機械に仕事を教え込むと同時に組織やビジネスプロセスを見直していけるか、みたいなところが重いのではないだろうか。よくデータサイエンティスト不足が云われているけれども、日本においてボトルネックは本当にそこだろうか?それ以前に土俵に立つための障壁が結構あるんじゃないだろうか?これからAIを活用するプロジェクトの死屍累々のなかで、その辺の現実が炙り出されていくのではないだろうか?とモヤモヤ考えていたら眠くなってきた。おやすみなさい。