• 「人月」を売った男

最近のプラットフォームには「開発者モード」が搭載されることが多い。PC-9801シリーズ全盛期には、パソコンは「ソフトなければタダの箱」とまで言われていたが、アプリケーションはプラットフォームのエコシステムの必須要素であり、ソフトウェア開発を活発にするのはプラットフォームを作ったものの責任でもある。このため、オペレーティングシステムにとって、ソフトウェア開発は、最も重要な応用分野であり、ソフトウェア開発がやりにくいプラットフォームは、どれだけ使いやすくとも価値は半減する。

しかし、PCが普及し、さらにスマートフォンが裾野を広げる現在、セキュリティ的な危険を予測できないユーザーが大多数を占める。そうなると、ソフトウェア開発には必要でも、一般ユーザーには危険となりうる機能をどうするのかが問題となる。その結果が「開発者モード」なのだ。

危険を予測できないユーザー向けに、アプリケーションのインストールを特定の「ストア」に限り、セキュリティホールになりそうな機能を禁止しておく。しかし、それではソフトウェアの開発に支障が出るため、リスクを理解することを前提に、一般ユーザーには危険な機能を解放するのが「開発者モード」だ。

さまざまな機能が有効になる反面、日常的な利用に支障が出ることもあれば、セキュリティ上の問題を抱える。筆者は、USBデバッグを有効にしたまま旅客機の座席にある充電用USBコネクタに接続したら、USBデバッグ接続を開始するかどうかのダイアログが出たことがある。現在のAndroidでは、スマートフォン側で認証したPCとしかUSBデバッグ接続しないが、古いAndroidではUSBデバッグ接続を有効にするだけで接続できたこともあった。「いいこと」もあれば、「悪いこと」もある「等価交換」の世界なのである。表01は、Android、Chromebook、Windows 11の開発者モードの有効化、無効化の手順だ。

■表01
開発者モード有効化 開発者モード無効化
Windows11 設定→プライバシーとセキュリティ→開発者向→開発者モードをオン 同オフ
Android 設定→デバイス情報→ビルド番号を7回タップ。設定→システム→開発者向けオプションをオン 設定→システム→開発者向けオプションをオフ
Chrome Book 電源オフでEscとリフレッシュキー(F3)を押しながら電源ボタン。Ctrl+D、Enter 再起動して確認画面でスペースキーを押す。Enterで無効化処理開始

昔のWindowsは「野放し」、よく言えば「自由」だったが、Windows 10で開発者モードが搭載され、さまざまな開発者向けの機能も追加された。初期段階でスマートフォン用のWindows 10 Mobileと操作性やコードを共通にしていた関係もあるのだろう。開発モードはレジストリ設定などでも行えるが、設定アプリから行うと、SSHサーバーの有効化などいくつかのオマケが付く。

Windows 11と10の開発者モードは、ほぼ同等だが、Windows 11には追加機能もある。そのうちの1つは、標準コンソールを変更する機能。もう1つは、Webブラウザ経由でシステム情報にアクセスする「デバイスポータル」(写真01)で、接続元をローカルホストに限定するというオプションだ。

  • 写真01: Windows 10/11の開発者モードでは、「デバイスポータル」機能が有効になり、Webブラウザでマシンのさまざまな状態を取得できる。これは、Windows MRのHMDの向きや視野などを表示しているもの

Androidの開発者向けオプション(写真02)の有効化は、ファミコンの隠しコマンドのようだ。Googleが開発用のツールAndroid Studioを提供しており、PCにスマートフォンを接続してデバッグなどを可能にするUSBデバッグ機能がある。Android SDKなどに入っているadbコマンドでAndroidのシェルに入ることができる。

  • 写真02: Android Studioなどの開発ツールをWindowsにインストールして、開発者オプションを有効にしたAndroidスマートフォンと接続すると、スマートフォン側のログや画面ビットマップなどを取得できるほか、コンソールからshellに入ることも可能

Chromebookの開発者モードは、ログインしなくても有効にできる反面、移行時に必ず、マシンが初期化され、再起動のたびに確認で一定時間入力待ちを行い、ログインできるようになるまでに時間がかかる。このため、日常的に利用するマシンに設定しておくのはちょっと面倒だ(ChromeOSのアップデートのたびに再起動するため)。

開発者モードで利用できるDeveloper Consoleは、ChromeOSそのものというか、ほぼLinuxとして使える。Linuxには「仮想コンソール」と呼ばれる機能があり、通常はCtrl+Alt+ファンクションキーで切り替えが可能だ。ChromeOSでは、Ctrl+Alt+F2(右矢印キー)、Ctrl+Alt+F3(リフレッシュキー)、Ctrl+Alt+F4(全画面キー)に3つの仮想コンソールが割り当てられており、Ctrl+Alt+F1(左矢印キー)がGUI画面になっている。ChromeOSのDeveloper Console(写真03)は、これを使ったものでroot権限も利用できふる。

  • 写真03: ChromebookでDeveloperモードを有効にすると、Ctrl+Alt+リフレッシュキー(F3)でDeveloper Consoleに入ることができる。ここでは、bashが動き、多くのコマンドが利用可能で、ほぼLinuxである。Ctrl+Alt+←(F1)でGUI表示に戻ることができる

今回のテーマは開発者モードなので、ソフトウェア開発に関わるネタである。1つは、フレデリック・ブルックスの“The Mythical Man-Month:Essays on Software Engineering”である。筆者が読んだときには「ソフトウェア開発の神話」(企画センター)という邦題だったが、現在では「人月の神話」(丸善出版)と題名を変えて出版されている。OS/360の開発に関わった著者のソフトウェア開発にまつわるエッセイをまとめたのがこの本である。

もう1冊は、ロバート・A・ハインラインの「月を売った男」(創元推理文庫)だ。筆者は中学生の頃に読んだが「これでSF?」と思い、なんの感銘も受けなかった。しかし、社会人になりコンピュータと関わり「ソフトウェア開発の神話」を読んだときに、ようやくその意味を理解した。どちらも未読なら「月を売った男」のほうから読む方がいい。そのあと「人月の神話」の「バベルの塔は、なぜ失敗に終わったか」のところを読んでほしい。