パソコン・GUI操作入門に関する世界観(4.概念)です。
基本的に、Windowsでは「アプリケーション」と呼ばれる「プログラム」を実行し、その中で事務作業を行う。アプリケーションにはMS-WordやAdobe Illustratorなどが含まれ、新しくインストールすることで新しい道具を使うことが出来る。
アプリケーションで作られたデータは、ファイルとして保存できる。この時、WordやIllustratorならば専用のファイル形式になるため、保存されたファイルをそのアプリケーションで開く(プログラムがデータを読み込む)ことでデータの作業を再開できる。
ファイル形式は汎用的でオープンであることもあり、PNGやHTMLのようなファイル形式である時は、多くのアプリケーションから開く・閉じる・保存が出来る。また、どんなファイル形式であっても、ファイルマネージャであるExplorerからファイル操作ができ、コピー・削除・名前変更・フォルダを移動することができる。
データはアプリケーションで作業している時に、アプリケーションが異常によって不正終了して途中まで作業していたデータが消えることがある。たまに上書き保存をすることを心がけよう。また、コーヒーをこぼしたとか、ハードウェアの破損や操作中の失敗によって、保存していたデータもいっぺんに無くなることがある。大切なデータは、定期的にバックアップ(そのデータのコピーを別のコンピュータ機器に保管しておく)を取るようにしよう。フリーソフトのファイル同期ソフトなどをインストールすることで簡単にバックアップを取ることが出来る。
Windowsソフトウェアも参照のこと。
プログラムを作る時には、プログラミング言語というプログラムを書くための特殊な言語とそのコンパイラを用いて、プログラムを記述する。コンパイラとは翻訳機の意味であり、あるプログラミング言語で書かれたプログラムコード(ソースコード)をパソコンのCPUで実行可能な「機械語」に変換する。
基本的に、WindowsではC/C++言語で書かれたプログラムを、MicrosoftによるWindowsのライブラリ(関数やOSの機能を実行するためのルーチンが書かれたもの)と一緒にVisual C++というC++言語のコンパイラを用いて、Intel x86_64の機械語に変換する。
ただし、MicrosoftはVisual BasicやC#という言語のコンパイラも開発している。この場合は少し技術の仕組みが違って、機械語にコンパイルするのではなく、.NET Frameworkと呼ばれる専用の中間言語実行マシンを用いて、まず中間言語にコンパイルし、それを仮想マシンの上で実行する。これはJavaという言語を模したもので、Javaではこうすることでさまざまなシステムで同じプログラムを動作させることが出来るが、.NETの場合はさまざまな言語から同じクラスライブラリを実行することができる。だが、中間言語を仮想マシンで実行するのは、機械語をCPUで実行するよりも遅く、パフォーマンスが悪い。その代り、C/C++では実現できない高度な生産性(簡単に難しいプログラムが書ける)が可能となる。
コンパイラでも中間言語でもないものとして、インタープリタ言語がある。日本人によるRubyなどの言語がそれに当たる。高い生産性と短い記述量を誇る反面、逐次的に命令を機械語に一行一行変換して実行するため、実行速度が遅い。
また、プログラムは言語とコンパイラだけではなく、関数がなければ動かない。それを含んだものをライブラリとかAPIと呼ぶ。APIには、さまざまな専門的な関数から、OSの仕組み(プロセス実行、メモリ管理、ファイルシステム操作など)を行うための「利用可能な機能」が存在する。コマンドの入出力やGUIのプログラムの構築は、OSのライブラリとAPIをそのプログラミング言語から利用し、コンパイルして実行ファイルをOSやプラットフォーム(仮想マシンなど)の上で実行することで開発する。
本当は、仮想マシンやインタープリタは何も特殊なプログラムではなく、C言語で書かれ、C言語でコンパイルしたプログラムとライブラリによって作られていることが多い。すなわち仮想マシンやインタープリタはたとえばC言語によって書かれた普通のプログラムである。
プログラミングをはじめようやUNIXシステム管理(コンパイラ)も参照のこと。
パソコンはCPUで動いているが、そのままでは機械語のプログラムを単純に動かすことしかできない。ここで、WindowsなどのOSを仲介させる。
OSと呼ばれる「巨大で高度なソフトウェアシステム」がハードウェアの中で動くことで、ユーザーはさまざまな機能をOSで実行できる。
WindowsはOSの一種で、GUIアプリケーションの実行やマルチタスク(複数のプログラムを同時に動かすことが出来る)やネットワーク接続などを実現している。事実上の標準OS(デファクト・スタンダード)なため、ハードウェアやアプリケーションなどにおいても利用できる種類が多い。
Windows以外のOSとして、AppleのMacに搭載されているmacOSや、オープンソースで開発されているLinuxやFreeBSD/NetBSD/OpenBSDなどの*BSD系UNIX、ワークステーションとしてかつて広まっていた商用UNIX、モバイル向けのGoogleによるAndroid(Linuxカーネルをベースに独自のモバイル向けプラットフォームを実現)やAppleのiOSなどが存在する。また、IBMなどによるメインフレームコンピュータにもOSは搭載されているが、オープンである場合は少なく、IBMの独自技術べったりな環境でプログラムを開発する。
Linuxは誰でも開発・配布することが可能で、さまざまなコンポーネントをカーネルに追加しなければOSとして動作しないため、Red Hat/FedoraやDebianやUbuntuのようなディストリビューションと呼ばれる亜種が存在する。Linuxには標準のデスクトップ環境も存在しないため、GNOMEやKDEなどからユーザーが好みに応じて選ぶようになっている。そのため、軽量なデスクトップを使うことが出来る場合もある。サーバー用Linuxなどの場合ではGUI環境を最初から使わない(インストールしない)こともある。この場合、DOSのようなコマンド型の入出力システムをコンソールやネットワークから利用する。多くの場合LinuxのGUIシステムはWindowsと良く似ており、同じマウス操作やキーボード操作が可能であるが、Emacsやviのように全くWindowsと違う場合もある。特にUNIXコマンドはDOSよりも賢くて使いやすい場合が多い。
CPUは進歩のスピードが速く、昔のCPUに比べて何十倍も計算速度の速いCPUが開発されている。パソコン向けのCPUの大手はIntelとAMDで、モバイル向けのCPUとしてARMなどがある。かつてはMacの昔のCPUだったIBMのPowerPCなどのCPUもあった。ワークステーションなどの巨大コンピュータ向けとしてはSun SPARCやDEC AlphaなどのCPUアーキテクチャも存在した。だが、時代はIntelによる標準支配が長く、WindowsとともにWintelと呼ばれる。スーパーコンピュータなどもIntelとLinuxを使ったスカラー型のスパコンが開発されることが多いが、日本などはベクトル型の独自のスパコンも長らく開発されていた。
インターネットを使うと、外部の「サーバー」と呼ばれるコンピュータと自分の「クライアント」と呼ばれるコンピュータが繋がり、データやプログラムの通信のやり取りを行うことが出来る。
この時、データやプログラムは自分のコンピュータの中にある場合もあれば、外部にある場合もある。
特に、アカウントなどで専用のデータやページを操作する場合は、IDとパスワードを入力する。パスワードを決める時は、簡単ですぐに分かるパスワードを使ってはならない。そして、控えはネットワークに繋がったコンピュータではなく、紙かオフラインのコンピュータ機器に保存すること。
インターネットからファイルをダウンロードしたりアップロードしたりする時は、さらに注意が必要。OSのセキュリティホールをついてコンピュータウィルスが入る恐れがあるため、不用意にメールの添付ファイルを開いたりしてはならない(怪しいメールは見ないで無視すること)。フリーソフトはおかしなサイトからダウンロードせず、必ず公式のサイトであることに気を付けること。
基本的にサーバー・クライアントシステムを説明したが、ネットワークはサーバー・クライアントによるネットワークだけがネットワークではない。ピア・ツー・ピアのように、それぞれのパソコンがひとつひとつ繋がり合うネットワークも存在する。これはビットコインやファイル共有ソフトなどで多く見られる。
ネットワークも参照のこと。
インターネットで情報を調べる時は、ロボット型検索エンジンというものを利用し、キーワードで世界中のWebサイトを検索できる。
これは、Googleのような巨大なインターネット企業が提供しているもので、ロボットがクロールと呼ばれる「ネットの探査」を定期的に実行しており、キーワードを入力するだけでそのキーワードに関連付けられたページの候補が上がってくる。
複数のキーワードを組み合わせて使うこともできる。たとえば、カレーライスのレシピを検索したいなら「レシピ カレーライス」と空白で区切って検索することで、インターネット上のレシピサイトなどの情報を検索できる。
また、検索エンジン以外の情報収集の方法として、掲示板・ブログ・SNSなどが挙げられる。これは個人が特定のサイト(有名サイトであることが多い)に情報を投稿しているもので、さまざまな不特定多数が繋がり合って情報共有をしている。だが、犯罪予告や悪質な誹謗中傷などの犯罪の投稿は削除される。
また、ニュースサイトのような集積ページから各ニュースを表示したりすることもできるし、楽天やヤフオクなどの場合では一つのWebサイトと言ってもたくさんの人々の集まった「巨大Webサービス」になっていることもある。
本当は、Googleと検索エンジンからしか情報が検索できないわけではなく、他のサイトに対するページのリンクは誰でもすることができる。リンクとは、ページから別のページへと移動するテキスト形式のボタンであり、クリックすることで記述された特定のページに移動できる。リンクはそのホームページの内部である場合も外部である場合もある。さまざまなサイトからリンクが行われるため、たまに犯罪のサイトに対するリンクなども存在する。フィッシングサイトのように、ある有名サイトを模倣したページの見た目を盗用し、パスワードを盗むといった手口もある。
検索エンジンでどの候補が上に表示されるか、という問題は、Googleは「たくさんのページからリンクされるページを上にする」という方法を取っている。
また、掲示板サイトは名前の表示されない匿名であっても、IPアドレスが記録される場合がある。IPアドレスは、その個人のネットワーク機器の持つ固有の数値で、個人の特定が可能であることが多い。犯罪サイトや犯罪投稿をすると、このIPアドレスから逮捕されるケースもある。現実の世界と同じように、犯罪をしないこと、犯罪に巻き込まれないことに気を付けてインターネットを利用しよう。
もちろん、ネットワークで繋がるからには回線で物理的に繋がっている。NTTなどの電話・通信回線を利用した、ブロードバンドサービスに加入しなければ、パソコンをインターネットに繋げることはできないし、多くの場合パソコンに設定が必要である。もちろん加入には料金がかかる。従量制であることも月額定額制であることもある。また、ケータイやスマホである場合は、モバイルネットワークに別途加入する必要もある。
自分のホームページを作りたい場合は、レンタルサーバーに加入するか、あるいは自宅サーバーを自分で運営するか(この場合LinuxなどのOSと専用のプログラムを利用して、ハードウェアの電源を常に入れ続ける。運営や管理が大変であるためおすすめはしない。)が考えられるが、最近はブログサービスやSNSを使うことで、誰かのサイトやサービスの中でアカウントを作って情報を無料で発信する(ただし広告などがつく)ことが出来る。無料ホームページサービスなども同様である。この場合は、ブログサービスの中のアドレスがURL(ホームページの居場所を特定する住所)となり、そのサービスで利用できる範囲のページ構成しか使うことは出来ないし、完全に自分専用のアドレス(独自ドメイン)も利用できない。Googleの広告サービスなども利用できないことが多い。レンタルサーバーなどで金を払う場合、PHPやSQLのような高度なWebプログラミング環境を利用できる場合もある。無料ホームページでは利用出来ないことが多く、またブログサービスのアカウントでは自分独自のPHPスクリプトを実行して完全に独自のサービスを構築することは出来ない。会社で行うサイトやサービスなどの場合は、きちんと業者のインフラ・サービスを利用しよう。最近はクラウドで大規模なインフラを整えることもできる。
Webサービスも参照のこと。
メタファーとは、GUIにおける隠喩のこと。GUIでは、コンピュータのさまざまなものを現実のものに喩えた「デスクトップ」を実現する。
たとえば、アイコン、メニュー、ウィンドウなどは、現実の引き出しやもののシンボル、操作画面を喩えたものである。ファイルやフォルダのようなものも、紙の書類のメタファーになっている。
こうしたメタファーはアラン・ケイが研究用として取りいれた後にスティーブ・ジョブズやビル・ゲイツが独自のOSに搭載して人気を博したもので、従来のコマンドラインとは違う、「何も分からないユーザーが使っても使える」ような「手軽で高度なウィンドウシステム」を作り出している。
これはオープンソースでも同様で、GNOMEやKDEはWindowsと全く「モノマネ」であるかのようなデスクトップ環境を作っている。だが、ある意味これらも改善を重ねており、KDEにはWindowsには存在しないような「最初から高度なソフトウェア全部を統合的に開発して搭載する」いう発想があり、テキストエディタやオフィススイートからマルチメディア・デザイン系のソフトウェアもひとつのKDEプロジェクトで一貫して開発している。目指しているのは「Linuxにおける第一のデスクトップ環境」である。GNOMEはそれぞれのソフトウェアの独自性や独立性が強い代わり、「シンプルで易しいデスクトップ環境」を目指している。GNOME 3では、デスクトップ環境が提供するのは「アクティビティバー」と呼ばれるスマートなひとつのメニューだけであり、そこから機能の全てにアクセスできる。標準では低機能だが、エクステンション(拡張機能)を入れることで、MacやWindowsに搭載されているような「Dock」を導入したりすることも出来る。特に、「Dash to Panel」を導入すると、一見しただけではWindows 10と見分けがつかない。この状態のGNOME 3でFirefoxやGoogle Chromeを使うと、Windows 10でFirefoxやChromeを使うのと全く同じであり、そもそも入れ替える必要もない。この場合、違うのはファイルマネージャが違うぐらいである。KDE陣営には残念なことに、GNOMEの方が標準的な地位を得ているが、彼らはプロジェクトとして競い合うことで、「オープンソースにおける健全な競争体制」を行っている。これはとてもありえないことである。
本当は、必ずしもみんながGNOME 3が好きなわけではなく、MATEという昔のGNOMEをforkしたバージョンもあるほか、「Applications Menu」「Places Status Indicator」「Window List」を入れることで昔のGNOME 2風にも出来る。こちらを好む人間も多い。特に、Window Listを入れると、Windows XPのようなウィンドウリスト型のタスクバーを使うことが出来るのでおすすめである。
GTK+/Qtの隠れた名機能として「テーマエンジン」が挙げられる。テーマを切り替えることで、お望みのルック・フィールにアプリケーションのツールキットの見た目を変えられる。GNOME-Look.orgなどにさまざまなサードパーティによるテーマが投稿されているので参考にしてほしい。中にはWindowsやMacと全く同じボタンに出来るものもある。本当は、Windowsでも、昔のWindows XPに外部パッチを当てることでこれは可能だったが、なぜか標準のWindowsではこの機能を使うことができなかった。よってあまり知られていないが、僕は昔のWindows XPの見た目をさまざまなテーマに変えて遊んでいたことがある。