終章だからITは君の未来につながっていく
大事なのは仕組みを理解すること
ネットワークとかクラウドとかいろいろ教わったけど、ぶっちゃけ仕組みがわからなくても使うだけなら意外と困らないよね
それはどうかな。例えば、電灯はスイッチの入れ方を知っていれば使える。でも、スイッチを入れたのに電灯が付かなかったらどうする?
お母さんを呼ぶ
わぁ、残念。少しは自分で直そうとしようよ
スイッチを入れても電灯が点かない理由はいくつか考えられるよね。電球が寿命、ブレーカーが落ちている、停電している、屋内配線が切れている……
だから、対策がわからないのはしかたないよね?
それもどうかな? 電気が発電所から電線を通して届き、宅内の分電盤で各部屋に配分されていて、それを受けて電灯が付いていることがわかっていれば、原因の予測ができないかな?
電灯だけが点かなくて他の家電が動いていたら、原因は電灯の何かだよね
そうなら、電球が寿命の可能性が高いかな
このように技術の仕組みがわかっていることは大事なんだ。ITでもいろいろなサービスがあるけど、それはネットワークや仮想化などの仕組みの組み合わせでできている。だから、仕組みがわかっていれば、何か起きたときに原因を予測することが可能になるんだ
技術に限らず、物事には表面的な側面と本質的な側面があります。ITの世界でもサービスの使い方を学ぶ利用技術と、サービスの仕組みを学ぶ本質的な技術があります。
最近は、ITでもさまざまな便利なサービスを利用してシステムを開発していくので、「使い方だけを知っていればいい」と思いがちですが、基本的な仕組みを知らないと、起こりうるリスクや問題が起きたときにどう対処すればいいのか見当がつきません。
また、サービスの使い方は、新しい機能が追加されたりして頻繁に変化しますし、似たようなサービスがたくさんあるので、表面的な知識ではいずれ変化についていけなくなってしまいます。仕組みを理解して本質的な知識を持っていれば、自分自身の考えに基づいて理解できるので、異なるサービスや、新たなサービスにも対応することができます。
それに、実は仕組みを知っていないと、ITの世界では十分な成果を上げることが難しいんだ
サービスの仕組みを知っていれば、原因がサービスアプリにあるのか、サーバー側の可能性が高いのか、通信経路の可能性があるのかといったことを推測できます。これにより、問題を回避したり、解決を早められる可能性が高くなります。また、こうしたことはシステムを設計するときも同様で、あらかじめ利用頻度に応じて負荷を分散できる設計にしておくとか、使えなくなった場合に別の予備のサービスに切り替えるといった設計を行っておけば、問題が発生しても損失を最小に抑えることができます。
なるほどねー。損を出さない仕事ができるってことか
仕組みを知ることで、他人に惑わされない自分の判断ができる。新たな課題に対応できるエンジニアを目指したいものだね
OSSを通してITの仕組みを学ぼう
そういえば、ミドルウェアとかOSもいろんな種類があると思うけど、いっぱいありすぎてどうやって勉強すればよいのかわからないよ~
OSSが台頭した現在は、昔よりも勉強しやすくなっているんだけどね
SOS? 何か助けてほしそうな名前だな……
SOSじゃなくてOSS。オープンソースソフトウェアの略で、プログラム(ソースコード)が公開され、だれでもネットワークを経由して見たり、開発に参加することができるものだよ。今、ITシステムを動かしているミドルウェアとかOSなどの基盤となるソフトウェアの多くはOSSとして開発されているんだ
今、インターネットの普及や技術の進歩による高速化、低価格化によって、IT技術は私たちの生活に深く入り込み、なくてはならないものになってきています。あらゆるものがインターネットにつながり、今までにないサービスが次々に生まれています。
こういった中、さまざまなサービスの基盤となるソフトウェアの多くがOSSになってきています。主要なOSSには、OSのLinuxや、データベースのMySQLやPostgreSQL、クラウドのIaaS基盤のOpenStack、コンテナ管理のKubernetesなどがあります。今やこれらの力なしでは、Webもインターネットもクラウドも維持することが難しくなっています。
このようにOSSが台頭した一因には、インターネットの普及によって世界中のエンジニアがネットワークでつながり、協力し合ってソフトウェアを開発する環境が整ってきたことがあります。しかし、さらに大きな要因として考えられるのは、誰もが必要とするソフトウェアは、オープンな環境でよりたくさんのエンジニアの協力によって開発したほうが、開発コストの分散や、方向性のすり合わせが進み、標準プラットフォームとして受け入れやすくなることです。
こうして多くの開発者や企業の支持を得られた主要なOSSは、世界中の開発者によって、最新技術の取り込みや、機能強化、セキュリティ対策、バグ修正や多言語化などが頻繁に行われ、共通のプラットフォーム(基盤)の重要なOSSとして注目され、事実上の標準として多くのエンジニアに使われています。
前に説明してくれたOSのLinuxもOSSの1つだよね
そう、他にも多くのOSSが使われているんだ。OSSはソースコードが公開されているから、ITシステムの仕組みをソフトウェアの内部を見ながら理解することができるんだ
ソフトウェアの内部を見るって、プログラムを読んでいくの?
いきなりOSのような大きなプログラムを読むのは難しいけど、ソフトウェアの多くは、小さな機能を実現するプログラムを組み合わせて大きな機能を実現している。だから、オープンソースの小さなプログラムを読んで勉強していけば、それを活用して作られている大きな機能を実現する仕組みも理解しやすくなるんだ。
OSSは多くの情報がインターネット上にあり、容易に参照することができます。また、ソースコードが公開されているため、どのように実現されているか技術の仕組みがわかりますし、いろんな人のコードを通してさまざまなプログラミング手法について考えたり学んだりする機会となります。
例えば、コンピューターを動かしているOSであるLinuxは、単純な機能やコマンドを実現するプログラムを組み合わせて大きな機能やコマンドが作られています。そのため、1つのコマンドのプログラムを読むだけでも、コンピューターのアーキテクチャについて理解を深めることができます。複雑に見えるITの世界も、技術の積み重ねで成り立っているので、単純なところからしっかり学んでいくことでその仕組みを深く理解していくことができます。
また、OSSならインターネットや、コミュニティを通して、仕組みについて、調べたり質問したりすることも可能です。つまりOSSは、技術の仕組みを学ぶ有効性の高い教材といえます。
OSSコミュニティに参加してみよう
主要なOSSには個々の開発コミュニティが存在し、世界中のエンジニアが参加し活動を支えています。開発コミュニティでは個々に運営ルールが決められ、多様なエンジニアが協力して開発ができるようになっています。日本からもコミュニティに参加し活躍しているエンジニアもいますし、日本で生まれたOSSのプログラミング言語のRubyなどもあります。
また、日本での普及や利用上の利便性向上、エンジニア育成などそれぞれに目的をもって活動しているユーザグループ、ユーザ会などのコミュニティ活動も行われており、誰でも参加することができます。
これらのコミュニティに参加し、活動を通して多様な人と意見を交わすことで、視野が広がり、新たな人間関係を作れたり、考えを整理したりといったことも期待できます。
近年では、OSSが企業の大切な業務システムなどにも使われたり、最新技術が生まれる場になってきており、こういった中、OSS開発コミュニティを支援したり、日本からのニーズをより取り込みやすしたりするために、NECや日立製作所、富士通など日本の主要IT企業や、トヨタ自動車などの自動車産業、NTTやKDDIといった通信事業者を始め多くの企業がOSSのコミュニティにエンジニアを参加させたり、その活動資金を提供したりしてOSSの活動に貢献しています。
OSSコミュニティについての詳しい解説や参加方法については多くの情報がインターネット上にありますので、ぜひ調べてみてください。
OSSコミュニティ情報へのリンク(2021.8時点)
本リンク先は、本教材執筆時のもので、ごく一部ですので最新の情報を調べて入手ください。
オープンソースのコミュニティとエコシステム
(LinuC レベル 1 Version 10.0 学習教材(新規追加出題範囲)より)
https://linuc.org/docs/v10/level1text.pdf#page=39
Linux Foundationのサイト
オープンソースコミュニティへの参加
https://www.linuxfoundation.jp/resources/open-source-guides/participating-open-source-communities/
ITの進展が新たな社会の仕組みを生み出す
スマホやアプリの裏側にある世界を通して、今の便利な社会を支えている技術について学んできたけど、こういった技術の進展は、社会の仕組みやあり方まで変えるようになってきているんだ。みんなは、昔と変わってきたって思うことは何かな?
例えば、本とかちょっとした雑貨とか、最近は洋服とかもお店に行かないでネットで買ったり、出前もチラシを探したりしないし、図書館に行って調べ物をすることもなくなってきたかな?
ネットで買い物って当たり前すぎて、変わったって気がしないけど……
それはもう慣れちゃったからだろうね。ITによって便利なサービスが生まれると消費者の行動が変わり、従来のビジネスのモデルが成り立たなくなって、お店や、仕事に変化が出てくるんだ。だから、そういった変化に対応するために企業も行政もどんどん変わっているよ
ITは社会に新たな利便性を提供し、人の行動様式を変化させます、これによって従来のビジネスモデルが成り立たなくなり、企業や行政も変化への対応を求められます。この変化に対応できない事業は消滅し、新たなビジネスが生まれることになります。
例えば、洋服や靴などもAmazonなどのネット販売で購入する人が増えていますが、これは気軽に無料で返品できるようになったことも大きいでしょう。返品には当然ながら物流のコストがかかります。しかしそのコストを含めても、店頭販売に必要となるコストと比較して優位性があるということです。
その結果として実店舗が減少したり、商品を手に取って確認したり比較したりする場を提供する空間という位置付けに変化したりしています。
このようなネットとリアルを融合した新たな販売形態を持ったビジネスにより、現金はさらに使われなくなり、人手が必要となる仕事の内容も変わり、人の流れが変わるなど、さまざまな影響が出てきます。また、ネットビジネスではグローバルで受注することも可能になりますが、取扱の品目や決済にかかるルールは国によって異なります。それらへの対応も必要です。
このように、ITによる影響は多方面にわたるため、ITは社会システムにおいて考えておかなければならない重要な要素といえるでしょう。
だからITは君の未来につながっていく
スマホやアプリを支えている仕組みって、実は、今の便利な社会を支える仕組みにつながっているのね
そうなんだ。今もインターネットを介したさまざまな新しいサービスが生まれているけど、それらを支えている基本的な仕組みは同じだ。だから、新たなサービスを見かけたら、今回学んだ知識をもとにして考えてみると新しい発見があるかもしれないよ
最近AI(エーアイ)とかIoT(アイオーティー)って名前もよく聞くよね。それらは今回出てこなかったけど、「基本的には同じ」っていえるの?
AIはサーバーやクライアントのプログラムから使われるものだし、IoTはスマホやパソコンだけでなく家電やセンサーなど、あらゆるモノをインターネットにつなぐことを指す言葉だから、全体のサービスとしての仕組みは同じといっていいだろうね
今話題のAI(Artificial Intelligence)は、日本語では人工知能、現在主流の手法から機械学習やディープラーニングとも呼ばれますが、非常に簡単に説明すると、プログラムに人間的な認識能力を与えるものです。
「知能」という名前から誤解されやすいのですが、現在のAIに、人間のように物事を筋道立てて考える思考能力は今のところありません。画像に映っているものの意味を当てたり、似たものと似ていないものを選り分けたり、合成音声や翻訳の精度を上げたりといった、人間が意識せずに使っている認識力に近いものをプログラムに与えます。AIが大きな影響力を持っているのは事実ですが、プログラムの結果の精度を上げるのが主な効果であって、プログラムの目的そのものを変えることはありません。その点で、「基本的な仕組みは変わらない」といえます。
もう1つのIoT(Internet of Things)は、家電や自動車、監視カメラや電気メーターなどあらゆるモノがインターネットにつながり、サーバーやクラウドに接続され相互に情報交換される仕組みのことです。これまでインターネットは、主にパソコンやスマートフォンを通して利用するものでしたが、それがさらに広がり、無数のモノから集めた大量のデータをもとに分析や制御を行うことができます。IoTも社会に大きな変化をもたらし始めていますが、インターネットという通信網の基本的な仕組みの上で動いているという点では変わりません。
基本的な仕組みを理解していれば、新しい技術が生まれてきても、それに対応できるんだよ
現在のITの中核となっているコンピューターは、1945年にフォン・ノイマンという人によって書かれた論文「電子計算機の理論設計序説」がベースになっており、基本的な仕組みは現在も変わっていません。フォン・ノイマン型コンピューターは、頭脳となる中央演算部や中央制御部(CPU)と、記憶装置(メモリ)を中心に、入力装置、出力装置、外部記憶装置などで構成されており、記憶装置からプログラムを読み込みながら実行していきます。第1章のコラム「スマホもパソコンもコンピューター」で説明した構造ですね。
1949年に誕生した最初のフォン・ノイマン型コンピューターは真空管という部品で作られていましたが、その後、半導体トランジスタになり、より集積度の高いIC、LSI、超LSIへと発展していきます。それに伴ってコンピューターの性能は飛躍的に進化し、数値計算以外の用途へと広がり、ついには複数のコンピューターをまとめて仮想的に扱えるようになり、インターネットを介してさまざまなサービスを柔軟に行うことができるようになりました。第6章「クラウドの世界」で紹介した仮想マシンですね。
誕生から半世紀以上経ち、コンピューターでできることは大きく変わりました。しかし、コンピューターの基本設計、つまり基本的な仕組みは同じなのです。
基本の仕組みの知識から、将来的に何が実現可能かを予測することも不可能じゃない。コンピューターが誕生した頃に、今のIT社会に近いものを想像した人だっているんだよ
じゃあ、「基本の仕組み」ってやつだけわかっていれば、あとは知らなくても大丈夫だよね
うーん、そんな簡単にはいかないんじゃないの。基本の知識だけで未来を予測できるのって、大天才の話でしょ
まぁ、実際にITを活用していくには、もうちょと詳しく具体的な知識が必要だね。特にネットワークも含めて理解したいなら、前に説明したLinuxの勉強から始めるのがおすすめだよ
へー、Linuxがいいんだ?
Linuxはサーバーやクラウドはもちろん、スマホや組込み機器などでも使われてるし、工場の製造ライン、自動車の情報システム、ブロックチェーンを使った金融サービスなど多くのシステムはLinux上で動いているんだよ
私、もっと詳しく知りたくなってきたかも。
それより、ITで今の社会をもっと便利にして儲かるようなこと考えてみたいな。IT、結構面白いじゃん
みんなもこれから、自分の将来について考えることが多くなると思うけど、その中でしっかりITも活用できるようになってくれると嬉しいな。だって、ITはみんなの未来につながっているからね。
今回は「スマホの裏側」を解き明かす中で、ITの仕組みや、歴史から得られる教訓や特徴についても説明してきました。
実際にITを使いこなしていくにはさらに深い学習が必要となりますが、今の社会とITは切っても切れない関係にあります。自分自身がやりたいことを考えていく中で、ITを活かせることは大きな強みになるでしょう。ITを極めてエンジニアになろうとする方はもちろんですが、そうでない人もITに翻弄されず、しっかりと使いこなしていくには、ITの正しい理解がとても重要です。
1ついい忘れたんだけど、これからITを勉強するときは、いわれたことや、書いてあることを鵜吞みにせずに、どんなことも「何で?」「どうしてだろう?」と疑問を持って取組むといいよ。そうすると、自分で調べ、確認し、学び、考えていく行動につながっていくよね。そして、この行動が仕組みの理解につながり、自分の考えができあがっていくんだ。
はーい
はーい