連載52回を通して
本連載もいよいよ最終回。プログラミングという行為の未来を、Swiftを交えながら考察します。
BASIC=最初のキラーアプリ
パーソナルコンピュータという製品がいつ始まったかは諸説ありますが、筆者はAltair 8800やTK-80など、組み立てが必要だったものはマイコンという前駆者として見ています。パソコンが成立したのは1977年。この年Commodore PET、TRS-80、そしてApple II(図1 )が登場しました。共通しているのはキーボードを備え、CRT(いわゆるブラウン管)と接続することを前提とする完成品であったこと。これで一般人も、買ってコンセントにつなげるだけでコンピュータが使えるようになったのです。その翌年には日本でもSharp MZ-80や日立ベーシックマスターが、さらに翌年にはNEC PC-8001が登場し、8bitパソコンの時代が到来しました。これらのパソコンには、キーボードとCRTの他にもう1つの共通点がありました。
図1 Apple Ⅱ
電源を入れるだけで、ROMに焼き込まれたBASICインタープリタが起動したのです(図2 ) 。OSはありません。いやこのROM BASIC自体が、現代風に言えばOSでありシェルでありテキストエディタだったのです。フロッピーディスクやカセットテープ(!)に収録されたパッケージソフトもすでに存在しましたが、それらを実行するのもBASICという「シェル」に“ load”
なり“ cload”
なりという「コマンド」を打ち込んでいたのです。
図2 N88-BASIC
つまりBASICというプログラミング言語にしてプログラミング環境こそがパソコン最初のキラーアプリなのであり、プログラミング自体がパソコンの主用途だったのです。そしてこのBASICをベンダー各社に提供していたのがMicrosoft。同社最初のヒット商品です。
PCの時代
そして80年代とともに、パソコンは16bitの時代に入ります。1981年にIBM-PCが登場し、PCという略称とともにパソコンがビジネスにも受け入れられ、そして1984年にはMacintoshが登場し、現代へと続くパソコンの系統が早くも出そろいました(図3 ) 。それにつれ、プログラムというのはユーザが作るものからユーザが使うものへと変化していきました。メモリを128KBしか搭載していなかった初代Macに至っては非力すぎて、プログラムの開発には当時ですら1万ドルもしたLisaが必要だったぐらいです。高額だったのはハードウェアだけではありません。開発用ソフトウェアも別売りだったのです。Apple純正のMPWは1,000ドル以上しましたし、サードパーティーのLightspeed C(後のThink C、後のSymantec C)も数百ドルしました。
図3 Macintosh 128K
https://ja.wikipedia.org/wiki/Macintosh_128K より
“The network isthe computer”
そして90年代。32bit CPUとインターネットがパソコンの世界にもやってきました。この2つは、大学の文明と文化をパソコンの世界にもたらしました。プリエンプティブなマルチタスクOSと、のちにオープンソースとして知られる開かれたソースコードです。パソコンのソフトウェアは最も巨大で巨額なコンピュータと遜色(そんしょく)なくなり、開発環境は無料配布が当然となりました。
「コンピュータ」と「デバイス」の違い
そして21世紀。その登場以来最も身近なコンピュータであったパソコンは、その地位をついにほかに譲ることになります。“ Every once in a while a revolutionary comes along that changes everything” 。そうのたまったSteve Jobsが2007年に披露したのは、iPodで、携帯電話で、インターネットコミュニケーションデバイスの3つを兼ね備えたもの。iPhoneです。Jobsは豪語しました。「 デスクトップコンピュータと遜ないインターネット体験を提供するために、デ
スクトップ級のOSを乗せた。iPhoneはOS Xで動く」 。しかしiPhoneが画期的だったのは、パソコンを手のひらサイズに小型化したことではありません。パソコンには不可欠だった、キーボードとポインティングデバイスを廃したことです。パソコンをそのまま縮小したOS、Androidを擁していたGoogleは直ちに方針を転換し、許される限りAndroidをiPhone化しました。それとともにGoogleとAppleの蜜月時代は終わりを告げましたが、それ以上に重要なのは、メインのインターネットコミュニケーションデバイスがパソコンからこのスマートフォンに移ったことでしょう。
「デバイス」 。今や性能はパソコンと引けを取らず、カメラやGPSやセルラーモデムなどパソコンにないI/Oを標準装備しているスマートフォンは、しかしコンピュータとは呼ばれずデバイスと呼ばれています。その一番の理由は、開発環境を欠いているからでしょう。AppleはiOSのアプリ開発はiOSデバイスではなく、Macで行うことを事実上強制していますし、その制限がないはずのAndroidも開発はおもにPC上で行われています。
パーソナルコンピュータ以上にパーソナルなスマートフォンが、しかしプログラミングには用いられないのはなぜでしょう? UX=User eXperienceのために捨ててしまったキーボードとポインティングデバイスが、DX=Developer eXperienceでは不可欠だから、少なくとも開発者にはそう思われているからというのがその理由であるように筆者は感じています。
現代プログラミングの基礎:イベントハンドラ
現代におけるプログラミングは、極論してしまえばイベントハンドラをUIに結わえていくという作業です。macOSではなく、OS Xよりさらに前のMacOSの時代、Macにはこれを直感的に体験できる、HyperCardというソフトウェアプラットフォームが標準搭載されていました(図4、図5 ) 。
図4 HyperCard
図5 Hypertalkの編集画面
HyperCardにおける「アプリ」は、プログラムとデータが渾然(こんぜん)一体となったスタックというファイルで、そのプログラミングはアイコンやボタンやテキストフィールドといったUI要素にHyperScriptと呼ばれるプログラミング言語でイベントハンドラを書くことです。感覚としてはプログラムを書いているというよりPower PointやKeynoteのスライドを作っている感じで、プログラミングというよりオーサリング(authoring)と呼ばれることが多いのもうなづけます。未体験という方はHyperCard Archive にアクセスしてみてください。ブラウザ上でMacエミュレータを動かして体験できます。
UI要素にイベントハンドラを結わえるというのは、Webサイトにも酷似していますし、iOSのStoryboardも概念はまったく一緒です。SwiftUIはSwiftコードとGUIを行ったり来たりできますが、白黒がフルカラーに、解像度がRetina Displayに、HyperTalkがSwiftにそれぞれ進化しても、やっていることはクリソツです(図6 ) 。
図6 SwiftUIでの開発
アイコンやボタンを正確に配置するのは直指ではたしかに難しいですし、コードをソフトウェアキーボードや音声で入力するのは厳しい。しかしこれらはあくまで「今のところ」であって、将来もそうだとは言い切れない。ましてやiPad Proは端子もLightningからUSB-Cに代わり、Apple Pencilという正確無比なポインティングデバイスとキーボードが接続可能。OSもiOSからiPadOSへとフォークするということは、いよいよXcode for iPadが来るのでしょうか(図7 ) 。
図7 Xcode for iPadが来るのか?
型ではなくキー入力が不要という意味でのタイプレス言語としては、図8 のScratch のような事例もすでにあります。そしてSwift Play grounds for iPadを見れば(図9 ) 、キー入力なしのSwiftプログラミングも不可能ではないように見えなくもありません。
図8 Scratchの開発画面
図9 Swift Playgrounds for iPad
変わるプログラミング言語、変わらないプログラム編集
ここまでプログラミングの手法として何が変わったかではなく何が変わらなかったかを見てきました。その結果明らかなのは、「 文字列をキーボードで入力する」というスタイル。もう半世紀以上そのままです。せいぜい加わったのはUIアイテムの配置や指定にポインティングデバイスを利用することになったぐらいで、キーボードから呪文を唱えるという行為は、速度も容量も今の100万分の1だったころからまるで変わっていない。SwiftがObjective-Cを置き換え、Swift UIが登場した今もそこは半世紀前と同じ。ASCIIに収められない仮名、漢字、絵文字が使えるようになったのは小さくないけれど、やはり叩くのはキーボード……。
とはいえ脱キーボードは無理でも、省キーストロークにはSwiftは大いに貢献してはいます。型が静的なおかげか補完候補の表示はずっと高速かつスムーズなのです。しかし今のところ入力補完による快適性向上は物理キーボード入力では感じられても、仮想キーボードではあまり感じられない。遠からぬ将来、HoloLensやOculusなどのVRギアをつけたままプログラムを編集する機会も増えることを考えれば、そろそろプログラミングも脱キーボードに備えるべきだと思うのです。Swiftのスローガンどおり 、今後もSafeでFastであるだけではなく、Expressiveであり続けるためにも。
―と、ここまでキーボードで入力したところで筆ならぬキーボードを置くことにします。これまでご愛読ありがとうございました。
第1特集
MySQL アプリ開発者の必修5科目
不意なトラブルに困らないためのRDB基礎知識
第2特集
「知りたい」「 使いたい」「 発信したい」をかなえる
OSSソースコードリーディングのススメ
特別企画
企業のシステムを支えるOSとエコシステムの全貌
[特別企画]Red Hat Enterprise Linux 9最新ガイド
短期連載
今さら聞けないSSH
[前編]リモートログインとコマンドの実行
短期連載
MySQLで学ぶ文字コード
[最終回]文字コードのハマりどころTips集
短期連載
新生「Ansible」徹底解説
[4]Playbookの実行環境(基礎編)