【スポンサーリンク】

Androidはもっとも普及したLinux(抽象化と隠蔽とインターフェース)

Androidはもっとも普及したLinux(抽象化と隠蔽とインターフェース)
  • Androidは、Linuxの技術をベースにしていますが、その複雑さを隠蔽することに成功しています。
  • この「隠蔽」には、ポジティブな意味があり、使いやすいインターフェースを提供することで一般向けに普及しました。
  • 技術が社会で広く一般化されるには、「シンプルに見せること」と「そのまま見せること」という、「わかりやすさ」の両面のバランスを取ることが大事です。
Androidはもっとも普及したLinux(抽象化と隠蔽とインターフェース)

Androidって、あんまり「Linuxっぽさ」を感じないよね。
けど、だからこそ普及したと思うとなんか複雑だね。

\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. Androidの成功:技術の隠蔽と使いやすさの融合

Linuxは、現代のデジタル社会を支える基本的なシステム(OS)の一つです。
しかし、長らく一般ユーザーにあまり普及してきませんでした。
いわば、「難解で近寄りがたい存在だった」と言えます。

そこに登場した Androidは、Linuxの世界に大きな変化をもたらしました。

古いPCの活用にChrome OS Flexという選択肢もありかも – スマホ教室ちいラボ
古いPCの活用にChrome OS Flexという選択肢もありかも – スマホ教室ちいラボ

Androidが一般向けに普及した理由は、Linuxカーネルを基盤としながらも、その技術的な複雑さを巧みに隠蔽し、驚くほど使いやすいインターフェースを提供したからです。

Androidの成功:技術の隠蔽と使いやすさの融合

実際、多くのAndroidユーザーは、自分が使っているスマートフォンやタブレットがLinuxベースのシステムであることを意識することなく、日々の生活でデバイスを活用しています。

Androidの成功:技術の隠蔽と使いやすさの融合

ちなみに、UNIXベースとして考えれば、macOSやiOSについても同様のことが言えます。

iOSも、UNIXベースのmacOSをモバイル端末向けにカスタマイズしたシステムです。

1-1. 従来のデスクトップ向けLinuxとの違い

Androidのアプローチは、従来のデスクトップ向けLinuxディストリビューションとは大きく異なります。

多くのデスクトップLinuxでは、(ディストリビューションによって差はあれど)ユーザーはしばしばシステムの内部に触れる機会があります。
ドライバーの問題やソフトウェアの依存関係など、技術的な課題に直面することがあります。

従来のデスクトップ向けLinuxとの違い

自分でシステムを理解して制御したい人々にとっては、この「わかりやすさ」が魅力的です。
しかし、一般ユーザーにとっては、「難解さ」という大きな障壁となってきました。

2. 「AndroidはLinuxベース」とは?

AndroidはLinuxの強力な基盤を活用しつつ、モバイルデバイス向けに最適化された独自の機能を追加することで、使いやすく効率的なOSを実現しています。​​​​​​​​​​​​​​​​

Androidは、その中核に「Linuxカーネル」を採用しています。
Linuxカーネルを基盤としてその上に、Android特有の層が積み重ねて構成されています。

「AndroidはLinuxベース」とは?
Androidシステムの階層構造
  • Linuxカーネル:
    ハードウェアとソフトウェアの間を取り持つ
  • Androidランタイム:
    アプリを実行するための環境
  • アプリケーションフレームワーク:
    アプリ開発者が使用するツールや機能の集合
  • ユーザーインターフェース:
    タッチスクリーンに最適化されたグラフィカルな操作画面

2-1. Linuxカーネルから継承した特徴

Androidは、Linuxの「マルチタスクOS」という特性を引き継いでいます。
複数のアプリを同時に実行したり、バックグラウンドでプロセスを動かしたりできるのはこのためです。

そのほかに、Androidに見えるLinuxとの共通項は、

  • ファイルシステム
  • ユーザーベースのセキュリティモデル

ユーザーのデータやアプリのデータを整理の仕方や、各アプリは独自の「ユーザーID」を持ち、他のアプリのデータにアクセスできない仕組みも、Linuxと共通する特徴です。

カーネル

「カーネル」とは、OSの最も基本的な部分で、ハードウェアとソフトウェアの間を取り持つ役割を果たします。

  • メモリ管理:アプリが使用するメモリ量を制御
  • プロセス管理:複数のアプリを同時に動かす
  • デバイスドライバ:カメラやWi-Fiなどのハードウェアを制御

つまり、スマートフォンの物理的な部品とアプリなどをつなぐ仕組みは、Linux由来なのです。

2-2. Androidランタイム(Javaの仮想マシン)

ただし、端的に言うと「AndroidアプリとLinuxソフトウェアは全く別もの」です。

Androidランタイム(Javaの仮想マシン)

特殊なモードでなければ、ターミナルやエディタを使って作業するわけではありません。

これは、Androidシステムには、一般的な Linuxディストリビューションとは異なる「独自の層」が追加されているからです。

Androidランタイム(Javaの仮想マシン)
Androidランタイム(Javaの仮想マシン)

Androidは、Linuxカーネルの上に構築されているシステムの大部分が、他のLinuxディストリビューションと異なっています。

中でも、大きな違いは、「Android ランタイム」の存在です。

Android ランタイム」は、Androidアプリケーションを実行するための環境です。
この実行環境は Javaベースのもので、アプリケーションコードの解釈と実行をし、メモリ管理など、ハードウェアとソフトウェアの橋渡しをします。

Java言語を採用したのは、スマートフォンやタブレットなど、多様なデバイスで一貫した動作を保証するためです。
また、セキュリティの面でも各アプリケーションは独立した環境で実行されるため、他のアプリケーションやシステムに影響を与えにくくなっています。

いかがわしいサイトを見てしまったけれど「大丈夫」?【アプリ サンドボックス】
いかがわしいサイトを見てしまったけれど「大丈夫」?【アプリ サンドボックス】
Androidランタイム(Javaの仮想マシン)

簡単に言えば、アプリがスマートフォン上で動作するための「舞台」のようなものです。

2-3. 中央集権的なアプリストアの存在

アプリの配布方法では、Androidのエコシステムが従来の Linuxコミュニティの価値観と異なることを示しています。

Androidアプリは、事実上は Playストア(などのアプリストア)を前提としています。

アプリストアの恩恵として、多くのユーザーが簡単にアプリを追加したり更新したりできます。
ただし、Google Play Storeは中央集権的なプラットフォームです。
アプリを公開するには、Googleのポリシーや審査基準に従う必要があります。

これに対して、apt(Advanced Package Tool)や yum などのLinuxのパッケージマネージャーは、分散型のリポジトリシステムです。
オープンソースの理念を重視し、ユーザーや組織は独自にリポジトリを設置しソフトウェアを配布できます。

中央集権的なアプリストアの存在

Androidでも公式ストア以外からAPKファイルを通じアプリをインストールすることは可能です。
しかし、「Playストアから締め出されたアプリ」ということで、セキュリティリスクのあるアプリが多い印象になっています(実際にそういう側面も大きい)。

中央集権的なアプリストアの存在

Googleが管理するために、そう言っているだけなんじゃないの?

2-4. ユーザー層が違えばアプローチも変わる

Linuxの主要なユーザー層は IT 専門家や技術愛好家になっています。
一方、Androidは、幅広い年齢層の一般消費者をターゲットにしています。

ユーザー層が違えばアプローチも変わる

ビジネスユーザーから学生、さらにはシニア層まで、技術的な知識レベルに関係なく、誰もが簡単に使えるよう設計する必要があったわけです。

この違いは、両システムの「カスタマイズ」に対する態度にも表れています。
Linuxユーザーは深いレベルでのシステムカスタマイズを好む傾向がありますが、Androidユーザーの多くは、アプリのインストールや基本的な設定変更などで十分だと考えます。

ユーザー層が違えばアプローチも変わる

複雑な技術を誰もが使えるようにするには、その技術をいかにユーザーフレンドリーな形で提供するかが重要です。

Androidは、Linuxに比べれば高度なカスタマイズ性を犠牲にする代わりに、使いやすさと安定性を獲得したと言えるでしょう。

ユーザー層が違えばアプローチも変わる

それでも iPhoneと比較したなら、Androidの方がカスタマイズ性が高いと言えそうですが。

3. シンプルなインターフェース

一般的なユーザーは、Androidの仕組みを知らずとも操作できます。
ユーザーにとって見える部分が「ユーザーインターフェース」。

「インターフェース」とは?
  • 「抽象化」
    →「複雑な仕組みを単純化すること」
  • 「隠蔽」
    →「内部の複雑な仕組みを見えなくすること」
  • 「インターフェース」
    →「ユーザーが直接触れる操作画面」

Androidの成功は、「ユーザーインターフェース」の重要性を示しています。
Androidは、複雑なLinuxシステムを背後に隠し、ユーザーにはシンプルなインターフェースのみを提示しています。

シンプルなインターフェース

ユーザーは、「Android」という表層だけを操作しているように感じ、その下で動いているLinuxの存在を意識する必要がないのです。

3-1. OSは見える必要はない

実は、Linuxの開発者であるリーナス・トーバルズ氏も「OSは誰からも見えない存在になるべき」と述べています。

Linuxが不可視の状態になったら、僕は本当にハッピーだよ。でも、OSは現時点において不可視の存在じゃない。OSはまだそこにある。僕は技術的な細かい部分にまで興味があるけど、多くの場合において、OSは誰からも見えない存在になるべきだと思う

リーナス・トーバルズ氏「OSは誰からも見えない存在になるべき」 – ZDNET Japan(2011-01-02 )

一般向けで求められるのは、直感的に操作でき、日常のタスクを効率的にこなせるツールです。
OSの内部構造や動作原理を理解することは、ふつうのユーザーにとって、「有益」ではあっても「必要」ではないのです。

3-2. 抽象化とインターフェース

インターフェース」というキーワードは、プログラミングにおいても重要な概念です。

プログラムが大規模化・複雑化していくと、コードを適切に管理していくことが難しくなります。
そこで、詳細を隠蔽化して抽象化した「インターフェース」を提供することは、コードの可読性と保守性を大幅に向上させる重要な手法になっています。

例えば、

データベース操作やネットワーク通信といった複雑な処理を、シンプルな関数呼び出しで実現できるように設計されています。
これにより、コードの再利用性が高まり、大規模プロジェクトの管理が容易になるとともに、チーム開発においてもメンバー間の協業がスムーズになります。

さらに、将来的な機能拡張や技術の進化に対しても、インターフェースを変更せずに内部実装のみを更新することで柔軟に対応できるようになり、ソフトウェアの長期的な進化と維持が可能になるのです。

抽象化とインターフェース

つまり、システムの細部を隠蔽しているのはユーザーだけではありません。
開発者自身もより高レベルの概念に集中できるようにするために、複雑な実装を隠蔽しながら分業しています。

3-3. ブラックボックス化されるシステム

一方で、オープンでカスタマイズ可能なシステムの重要性も忘れてはいけません。

かんたんなインターフェースで内部動作を隠すと使いやすくなりますが、システムの動作は「ブラックボックス」になります。
いわば「魔法」です。

すると、問題が発生した際に、何が原因なのかユーザー自身で解決することが難しくなります。
さらに、システムに対する過度の依存や、プライバシーやセキュリティに関する懸念も生じる可能性があります。

ブラックボックス化されるシステム

理想的な一般向けOSとは、「必要に応じて可視化できる不可視性」を持つべきかもしれません。
つまり、基本的には背景に徹しつつも、必要な時にはユーザーが内部を覗き込んだり、カスタマイズしたりできる柔軟性を備えているべきでしょう。

ちなみに、Androidでは、一部のプライバシーに関わる機能はアプリとして分離し、オープンソースにしています。

こちらもどうぞ。
Android 13のアップデートに1時間ほどがかかった(デバイス最適化)
Android 13のアップデートに1時間ほどがかかった(デバイス最適化)
Android 13のシステム アップデートを実行したら、約 1 時間ほど時間がかかりました。 ただし、ダウンロードやデバイス最適化中も、別のアプリに切り替えることができるので、全くスマホが使えないわけではありません。 環境 Pixel 5 (2020年製), Android 12 → Android 13 Android 13のデバイス最適化に時間がかかった Android 13のシステム アップデートの通知がありました。特に、新機能の必要はなかったのですが、興味本位で更新...

古いPCの活用にChrome OS Flexという選択肢もありかも
古いPCの活用にChrome OS Flexという選択肢もありかも
これまで、古くなって、サポートが切れた Windows PCは、・脆弱性のリスクを許容するか、・ネットにつながないか、・Linux系のOSを入れるか、として使うことが多かったです。 もう一つの選択肢として「Chrome OS Flex」がある、というニュース記事を見かけました。 PCを使っていても、インターネットしか利用していない、という場合には十分なはずです。 Chrome OS Flex Chrome OS Flexは、Chrome OSよりも軽量なOSです。 Chrom...

メモ帳のメニューの「…」には意味がある
メモ帳のメニューの「…」には意味がある
メモ帳の画面の上にある「メニュー」には、たくさんの操作項目があります。よく見ると、末尾「…」がついているものと、そうでないものがあるんです。 へー。確かに、違いがあるね。 「…」の意味 実は、この「…」には大切な意味があります。それは「項目をクリックすると、詳細についてのウィンドウが出てくる」という意味です。 つまり、印刷や保存などの処理は、すぐには実行されません。 こういうメニューで「…」がついてるとそれを実行するためのウィンドウが追加で出るんだけど、これを知ってからは「印...

LINEが普及し、プラメが普及しなかった理由を考える
LINEが普及し、プラメが普及しなかった理由を考える
「LINE」は、スマートフォンの普及と呼応して、従来のメールやSMSにはない独自性でユーザー層を広げました。 初期のユーザーが周りの人に「利用を促す」構造が発生し、強固なネットワーク効果が生まれたのです。 一方、「+メッセージ」は後発でLINEの優れた機能を取り入れましたが、SMSにも対応したことがかえって普及を妨げてしまいました。 SMSからRCSにスムーズに導入できる仕組みですが、すでにSMSの利用者層が少なくなっていたからです。 アプリの普及には、利便性と導入圧力のバラ...
(参考)
  • 「一般人向けのLinuxとして一番成功したのはAndroidだと思いますが、これをみればわかるように完全にLinux要素を隠蔽しています。 一般人向けのOSとはそういうものなのです。」- 暗黒美無王 dark Vimさん / X
QRコードを読み込むと、関連記事を確認できます。

Androidはもっとも普及したLinux(抽象化と隠蔽とインターフェース)
【スポンサーリンク】
タイトルとURLをコピーしました