主とする事業に集中するために、それら以外の事業を外部に委託するアウトソーシングという言葉は、ずいぶんと定着した感があります。ITというツールにおいて、どのような業種にかかわらず必須となっている存在であり、単純作業の効率化から始まり、その単純な処理形態同士を繋ぎ、今や複雑な連携ネットワークから構成されるシステムとなっています。
コンピュータが登場した当初は、使う人が自らその仕組みを理解し、使用するためには自らプログラムを組んでいました。今の30代くらいの人であっても、小学校の授業でパソコンを使用し、BASICなどの簡単なプログラムを組んだりした人も多いはずです。商業高校などではアセンブラやCを習います。このような授業を習う前に、ある程度コンピュータの基本的な仕組みを教えられ、どのような原理でプログラムが動作するかをアウトラインレベルでも認識があると思います。今でもプログラムの授業は存在すると思いますが、今はJavaやC++などオブジェクト思考の言語がメインであるように、コンピュータの進歩と共にプログラム言語も高水準化していると思います。
確かに高水準な言語であれば、Javaであればポインタなど意識しなくても良かったり、一通りの機能はライブラリが提供してくれているので、生産性は高いです。今後はオブジェクト指向の先を行く、フレームワーク思考のプログラミングがメインとなってくると思います。
このようになってくると、そのライブラリの中身やフレームワークが、いったいどのような仕組みとなっているのか、ブラックボックスとなります。そしてこの部分で問題があった場合や、その仕組み自身のノウハウなどは誰も知らない、また対応が出来ない状態となります。
これと似たような事柄にクラウドコンピューティングというサービス形態があります。これは上記の懸念をさらに深刻にさせる状態に招く危険があります。使う側としてはアプリだけ用意すれば、基盤的な要素においてはまったく意識する必要性はありません。確かに使うだけであれば非常に便利な存在ですが、このような状態はプログラミングで例えると、便利なライブラリを、クラウドサービス提供業者が握っている状態といえます。そして基盤技術においては、その存在が論理的な物ではなく、大部分が物理的な存在が多くを占めるため、クラウドサービス提供業者の存在に大きく依存することになります。
一度クラウドサービスを使用した形態になってしまうと、簡単には抜け出すことが出来なくなります。もしクラウドサービス提供業者がサービス料金の値上げをしてきたとして、サービスから脱退しようとしても、アプリとデータしか手元に残りません。無論これだけでは業務に使用することは出来ません。業務で使用するためにはアプリを動かす基盤が必要となりますが、そのときは、以前持ち合わせていたその技術はすでに陳腐化して使用不可能な状態か、失われているのです。単純に動かすだけであればまだ何とかなる可能性はありますが、業務に耐えうる為には冗長性の確保など停止させない基盤技術にはそれなりの知識やノウハウが必要となるのです。この部分が貧弱となると、会社における信頼性や生産性に大きく影響が出てきてしまいます。銀行など生活基盤を提供するような大企業においては、国民や日本の利益にも影響があるかもしれません。
少し前の話題ですが、JR東海においては日本車輌を買収しました。これはIT業界で当てはめて考えると、基盤技術を買収したことに近いと思います。この本意としてはリニア技術の獲得以外にも、新幹線の基幹技術の囲い込み・他社への技術流出防止という意味も存在すると思います。IT業界では今、この部分はアウトソースすることが流行していますが、この流れとは逆行する行為です。私はこのことが何を意味するのか、IT業界においても考える必要があると思うのです。