インタフェース設計論 授業ページ
2. GUIとCLIの歴史
資料
講義ページ (on Scrapbox)
参考情報いろいろ
Twitter
ハッシュタグ: #sfcid2017
個人プロジェクトをScrapbox上に作成
sfc-id2017-CNSログインアカウント
出席登録/レポート提出/質問などあらゆることに利用
計算機インタフェースの歴史
生物進化の系統樹
カンブリア爆発
様々な生物「門」が一気に発生
カンブリア爆発
計算機の制御パネル?
飛行機のコックピット
昔話: 8008で作った計算機
1976ごろ
8008マイコン
紙テープリーダ
文字ベースのインタフェース (CLI)
Command Line Interface
キーボードを利用
文字の入出力で計算機を利用
CLIシステムの伝統
大型計算機のTSS
Time Sharing System
大型計算機を共有
ミニコン
Unixの「シェル」
Apple IIのBASIC
DOSの「コマンドプロンプト」
DECのミニコン
Digital Equipment Corporation
PDP11, VAX11など
VMSというOS
VAX11
1976 @ DEC
「MIPS」の標準
ちなみにIntel Core i7は15万MIPS
Apple II
1977 @ Apple
ビットマップ表示可能なパソコン
Unixのシェル
MacのTerminal.appなど
デモ: Unixターミナル
CLIの基本操作
while true do
プロンプトを表示してユーザ入力待ち
e.g. C>
ユーザがコマンドを入力して改行キーを押す
コマンド文字列を計算機が解釈して実行
end
例: Unixのdateコマンド
計算機が文字端末に"% "を送って表示
ユーザがキーボードから"date"と入力
"date"という文字列が計算機に送られる
送られた文字列を計算機が解釈
時刻を調べ、結果文字列を文字端末に送る
送られた文字列を文字端末が表示する
Unixの貢献
全二重通信
機械の反応を待たない
正規表現の普及
リダイレクション
オブジェクト指向風入出力
ユーザとデバイスの差が無い
デバイス自体はブラックボックス
Unixの
/dev/tty
シリアル接続文字端末向け入出力デバイス
ダム端末対応
機械タイプライタのような端末
入力された文字を送る
送られてきた文字を表示
CLIのプログラミング
「スクリーンエディタ」
「ラインエディタ」との対比
Emacs, Vi, ...
要するに普通のエディタ
カーソルをどこにでも移動できる
ポインティングデバイスは無い
端末の「エスケープシーケンス」を利用
VT100
CLIの利点
作成が簡単
機械と人間の区別が無い
メールサーバのインタフェース (SMTP)
グラフィカルユーザインタフェース (GUI)
GUIの歴史
Altoが最初のもの (1973)
Xerox PARC (Palo Alto Research Center)で発明
Xerox PARC
Alto
1973 @ PARC
GUIワークステーションのさきがけ
ビットマップディスプレイ
マウス/ウィンドウ/メニュー
Altoハードウェア復活??
Xerox Star
1981発売
Ethernet
TCP/IPではない
JStar
1982発売
日本語対応
Sketchpad
Ivan Sutherlandのシステム (1963)
Andrew
1982 @ CMU
ウィンドウシステム他
MIMEの起源
X Window System
1984 @ MIT
X11は1987年
ウィンドウサーバとマネージャを分離
何故か今でも現役
(増井Window System)
1985 @ シャープ
シャープのワークステーションで動作
イベントはウィンドウ階層の根から伝播
ウィンドウマネージャ記述言語
並列動作ツールキット
Lisa
1983 @ Apple
AppleのGUIパソコン
ジョブズがAltoを見て驚いて作ったもの
Macintosh
1984 @ Apple
もともとJef Raskinのプロジェクトだった
ジョブズがRaskinを追い出す
NeXT Computer
1985創業 by ジョブズ
1988 NeXT Cube発売
現在のMacの原型
Windows95
1995発売
頑張ってDOSをGUI対応
GUIのメリット
直接操作
連続的
可逆的
具体的
c.f.
% turn right 30
これでは間に合わない
連続性/可逆性
少し操作すると少し反応
逆に操作すると戻る
こうなっていないものがまだ多い
スイッチ
アプリ起動
GUI部品とその進化
メニュー
スクロールバー
スライダ
...
メニューの進化
AltoのSmalltalkのメニュー
Lisaのメニュー
パイメニュー
T-Cube
フリック入力
スクロールバーの進化
Smalltalkのスクロールバー
スクロールバーにマウス移動で矢印表示
スクロールの方向や操作を指示
スクロールバーの矢印
Lisaのスクロールバー
改良版スクロールバー
Lisaの画面
Macintosh System 4.2 (Finder version 6)
NeXTStep
GUIの進化まとめ
メニューやスクロールバーの発明から30年
微妙に機能が異なるものが登場
徐々に使いやすく進化
GUIとオブジェクト指向
GUI部品をオブジェクトにする
ウィンドウ
メニュー
...
GUIツールキット
オブジェクト指向のGUIライブラリ
現在の主流
インタフェースビルダ
GUIオブジェクトを対話的に編集
Cocoa
MacのGUIライブラリ
Xcode: インタフェースビルダとコンパイラ等の統合
Eclipse
GUIの欠点
資源が必要
作るのが大変
テストが大変
グラフィクスが大変
GUIの欠点
並列プログラミング
自動実行をやりにくい
正確な値を指定しにくい
GUIの拡張
3次元GUI
ズーミングGUI (ZUI)
3次元GUI
多くの情報を表示可能
格好良いインタフェース
3次元デスクトップ提案など
しかし全く普及せず
3次元GUIの問題点
3次元空間の把握は難しい
3次元空間の移動/操作は難しい
計算機操作だけのために3次元操作は無理
ズーミングGUI (ZUI)
無限のデータを扱える
一時研究の流行になった
ZUIの問題点
迷いやすい
難しい
Pad
ズーミングインタフェースの先駆
平面を無限に連続的に拡大/縮小
巨大な階層をなめらかにブラウジング
ビデオ: Pad
Pad++
Padの拡張
フィルタ機能 / Overview+Detail / etc.
ツールキット化
Jazz, Piccolo
ビデオ: Pad++
PhotoMesa
ビデオ: PhotoMesa
計算機の進化
計算機やプログラミングの進化
30年進化してない?
小さく/速く/安くはなったが
全然違うものも考えるべきでは?
古い知恵も役にたつかも?
生物進化の系統樹
カンブリア爆発
様々な生物「門」が一気に発生
カンブリア爆発
機械の進化
多数の絶滅を経由して現在に到る
Lisa
1983 @ Apple
AppleのGUIパソコン
まとめ
CLI⇒GUIの変化は重大
連続的/可逆的操作
その後大きな進展が無い
スマホやタブレットは普通のGUI
頭も体も動かさない方向
装置も面倒も減る
新しいイディオムが欲しい