見出し画像

システムを作れず、描けず、理解できず

20世紀最大の発明

 20世紀から現在までの間に生み出された、最大の発明といったら何を思い浮かべるだろうか。テレビ、パソコン、スマホ、原子力発電、飛行機、ロケット、いろいろ思い浮かぶと思う。しかし、我々の日常でなくてはならないが、目を向けようとしない限り気づかない、最大の発明の1つがある。それはプログラミング言語である。この一文はおそらく、ほとんどの人が失笑するか、不思議に思うのではないだろうか(こう思った理由はあとで述べる)。
 さてプログラミング言語とはいったいなんであろうか。言葉だけの意味であるならば、コンピュータに実行させたい処理を与えるための言語となる。
確かに、スマートフォンのアプリケーション、自動車、飛行機、電車の動作、ネット通販のサイトなど大なり小なりコンピュータの動作を行っている。しかし、プログラミング言語がもたらしたものは「コンピュータに実行させたい処理を与えるための言語」という小さいものではない。プログラミング言語がもたらしたものは、我々が普段使用する言語でもって、システムを簡単に実現、制御できるようになったことである。
 上記のように考える理由について、これから述べていく。

システムとは

 今回の私の意見に欠かせないものに「システム」というものがある。さて、システムとはなんだろうか。システム単体の意味についてわかりやすいものは以下の意味だろう。

システム

系。体系。組織。多数の構成要素が集って有機的に秩序ある関係を保ち,一つの目的の仕事を果す機能または組織体。たとえば生物は多くの細胞という構成要素の集合であり,さらに個々の細胞はそれぞれの機能を果しつつ他の細胞と有機的な連携を保って,生命体というシステムを構成している。また官庁や企業なども,各種の機能を果す部課を構成要素とするシステムであり,各要素は相互に有機的な連絡を保ちつつ行政や企業目的を遂行している。経済,社会のあらゆる分野で,その要素と個々の機能を分析し,その目的達成のために最も能率のよい組合せをつくろうとする考えから,システムという概念がクローズアップされてきた。

出典:ブリタニカ国際大百科事典 小項目事典ブリタニカ国際大百科事典 小項目事典について

参照:コトバンク

言いたいこと、具体的な例など基本的にはこの文章の通りだと思う。上記例以外にも具体例を挙げるならば、自動車というものは人を乗せて遠くまで運ぶ多数の部品で構成された地上を移動するシステムだし、火力発電所というものは、石炭、石油といった燃料を燃やし、水を蒸発させ、その水蒸気を使ってタービンを回転させ、電気を発電する大規模なシステムだし、会社というのは、仕事を発生させ、部署、部門、プロジェクトといった単位で取り組み、その仕事をこなすことでお金を増やすことを目的としたシステムといろいろ挙げられる。また、一見例として見えないかもしれないが、ただの金属の塊も、地球という大きな塊も、中身に注目してみれば原子、分子、植物、生物、無機物、その他いろいろなもので構成され、その存在を保ち、なんらかの働きかけをしているのだからシステムと言えるだろう。

システムとイノベーション

 さて我々の生活、価値観、社会そのものを変える出来事というものが多々ある。その中でも「産業革命」と呼ばれる名前は今まで勉強してきた中で有名だと思う。その中でも蒸気機関と呼ばれるものによって、蒸気機関車を含む交通、流通関係、そして炭鉱での排水ポンプに使用され、工業化、産業の発展に貢献したことはなんとなく覚えているか、今回のことで思い出したと思う。
 この蒸気機関だが、なぜここで取り上げたか。それは、現代使われているインターネット、スマートフォンのように生活を、いや、システムの1部分を大きく変えたからである。蒸気機関とは簡単にいえば「水蒸気を圧縮したり、膨張させたりしてエネルギー、動力を得るための仕組み」である。しかし、これがその当時の人々に与えた意味は「人や馬といった生物、風や水といった自然のように場所や時間、そして疲労や危険といった制限なしにエネルギー、動力を取り出せるようになった、画期的なもの」だと思う。産業革命前の車と言ったら馬車が思い浮かぶのではないだろうか。当然のことながら馬車というぐらいだから馬が要る。そして馬を維持、即ち養うために食費や寝床の確保、糞の処理といった状態の維持にかかるコスト、労力は半端なかったと考えられる。さらには馬を操るためにはある程度の訓練が必要になる。そのため個人が気軽に扱える乗り物とは言いづらかったと思う。それが、蒸気機関の出現で、馬を買うもしくは維持をする必要がなくなり、鉄道によって大陸を縦横断できるようになり、自動車が生まれと生活、社会システムが一変し便利で快適な生活になったのだと思われる。
 現代であればインターネット、スマートフォン。インターネットはメールから始まり、今ではチャット、通話、動画視聴や情報検索など、広大な情報通信網でもって時間、場所の制限なく情報の取得、コミュニケーションを取れるようになった。スマートフォンもパソコンでしかできなかった機能アプリを使って拡張でき、掌サイズに収まった高機能な機器として、場所、機能の制限を取っ払った。
 そして、昔はハードパッケージに、今ではアプリケーションとして親しまれているソフトウェア。メール、ウェブサイト、チャット、家電、乗り物、スーパーマーケットやコンビニエンスストアで使用されている電子機器、会社で使っている基幹システム、ありとあらゆるところで使用され、今やなくてはならないものの数々である。これらソフトウェアシステムを構成し、制御しているのは、紛れもなくプログラミング言語である。今では、プログラミング言語が使える開発環境さえあれば、誰でもシステムを作れる時代になった。それ故に、プログラミング言語も最大の発明と言えるだろう。
 イノベーションというのもまた、上記例より今までになかった、より便利で新しい価値を持ったシステムへの移行及び普及ではないかと考えている。
 ところが日本ではシステムという概念を正しく評価できず、その一部のみに注目、注力を繰り返し、そして本来なら大事な核心部分は研究、開発、保守、点検を外部に委託してしまった

システムに対する理解が不足している

 前回、システム開発でシステムに対する理解が不足していると述べた。システム開発における具体的でわかりやすい失敗例が見つからなかったが、失敗の原因として上がるのは「発注元とのコミュニケーション不足」や「見積もりが曖昧」、「発注元の要求をかたっぱしから詰め込んで行った」などである。そこでシステム開発以外のものでわかりやすい例として、「ラーメン」を使って説明する。基本的にラーメンを構成する基本的なものは「麺」と「スープ」の2種類だと思う。これらがないとただの麺もしくはスープだろう。そのスープについて、醤油、塩、味噌、豚骨といった中から選ぶ。そこにオプションとして、メンマ、チャーシュー、煮卵といった具、即ちオプションがついてラーメンを彩る。このラーメンの注文でわざわざ「味噌と塩のスープを何対何の配合で混ぜて」や「煮卵載せられるだけ載せて」、「ラーメン麺なし」とは頼まないだろう。ところが、システム開発をはじめとした設計、デザイン、要求から仕様を決定する場面ではこういったことが起きるのである。
 システム開発の要求定義、要件定義からの仕様決定の過程を調べると、発注元が求めている要求を聞き、要件としてまとめ、仕様に起し、できたドキュメントを発注元に渡す作業を行うのが一般的である。発注元が欲しいシステムのイメージ、即ち前述した「ラーメン」というものが頭に思い浮かべられなければ、いくら発注元が要求しても発注先は理解できないし、また、発注先がいくら仕様について説明したり、決定を求めても発注元は理解できないし、決定することができない。また、発注元の要求が膨大になったり、的外れなものになってしまうのも求めてるシステムを理解していないことが原因だと考えている。

システムを丸ごと外注してしまった

 突然だが米国ではITサービスを提供する企業に所属する技術者よりも、ユーザ企業に所属する技術者が多く、システム開発は内製が主流とのこと(参考:paiza開発日誌、「日本も米国もSIerは同じ」は本当か?日米SIerの構造的な差とは 及び type 、厚切りジェイソン「Why Japanese Engineer!? アメリカではもっとエレガントに開発してるよ!」 )。実はこれ、不思議なことではないと考えている。
 例えとして、着せ替え人形や自動車といったパーツや部品を変えることで、自分オリジナルのものが作れるものを考えてほしい。このものについて、着せ替え人形であれば自分が想像した、理想に近くなるように着飾り、汚れがつかないように管理、チェックするだろう。自動車でもどういった部品を、どのように接続し、どういった操作をすればいいのか勉強し、実際に動作させ、壊れないように保守、点検するだろう。社内で使用しているシステムも同じである。業務と呼ばれるお金を稼ぐシステムについて、どうやったら仕事が効率化したり、画期的な製品を作れるか考え、試行錯誤して構築して運用させ、保守、点検、評価を行う。ところが日本では、この大事な業務システムを要求だけ言って他社(他人)にまかせ、構築してもらい、保守、点検まで行わせる。そのため、社内システムに足りないものが出てきても対応が遅くなったり、不便でもそのまま使用し続けたりする。そして、業務の質を下げるのだと考えている。

システムの一部にしか着目、理解できなかった

 日本ではシステムの一部に注目、注力を繰り返すだけで、新しいシステムの作成に漕ぎ着けられなかったのだと思う。例えば今は衰退してしまった白物家電産業。かつては高い技術を保持し、皆が注目する花形の産業だった。だが、テレビ、洗濯機、エアコン、冷蔵庫といった家電は初めて登場したその時から大きくその役割、システムを変えていない。例えばテレビであれば「電力を与え、外部から映像、音声情報を取得し、それをもとに映像、音声を出力するシステム」、冷蔵庫であれば「電力を与え、容器内の空間を冷却し、容器内に入れたものを保存するシステム」とその本質は大きく変わってはいない。にもかかわらず液晶パネルをはじめとした一部分に注力し、本質とは関係ない余計なオプションを付与し続けてしまった。結果、本質部分だけを残し、価格を大幅に抑えた海外メーカーに突き放されてしまったのだと思う。この問題は「いいモノを作る」ことに注力してしまった製造業でいまだに蔓延っている根深い問題だと考えている。

これから

 日本では政治、経済、教育、文化、生活といったあらゆるシステムのほとんどは外部から調達してきた。それでもこれらを自分たちに合うように形を変え、適合し、普及させてきた結果が今の日本だ。それゆえにITをはじめとした最新のテクノロジー、世界で流行している仕組みやシステムのみならず過去に実際にあった仕組みやシステムの実態や評価といった諸々を知って理解する場と機会が少ないのは重大な問題だと考えている。その弊害はシステムを開発するために必要なパソコンが不要だというパソコン不要論や若者の政治離れ、文系学部不要論といった形で現れていると考えている。
 さて日本でもようやくプログラミング教育が必修科目となり、知識としてのプログラミングは身につくだろう。しかし、そのプログラミング教育によって我々の生活で使われているソフトウェア「システム」まで辿り着けるのだろうか。そんな疑問が頭から離れない。

いいなと思ったら応援しよう!