一緒に歩くといいことあるよ!
本稿執筆現在、( i|mac|tv|watch)OSは無事バージョンが上がり、iPhone 7も筆者の手元に届きました。が、macOS Sierra、Apple Watch Series 2は間に合いませんでしたし、次期MacBook Proは影も形もありません。そんな微妙な時期ですが、Pokémon GO は今もなお大ニュースであり続けています。
まず、待望のバディシステムがバージョン1.7.0に搭載されました。ポケモンを進化させたり強化させたりするためには、「 ほしのすな」という共通通貨と「種族のアメ」という固有通貨の双方が必要なのは読者の皆さんもご存じのとおりですが、どんなポケモンをGETしても増える前者と異なり、後者はその種族のポケモンGETからしか入手ができず、レアポケモンの育成は困難を極めていました。それが、選んだポケモンと一緒に歩くことで、一定距離ごとにアメがもらえるようになったのです。これで理論上は、ミニリュウが一匹さえいれば確実にカイリューをGETできることになったわけです[1] 。
ポケモン図鑑完成の難易度はこれで下がる一方、バディシステム以前以後ではある意味別のゲームでもあるわけで、なんとかその前に図鑑完成まで持っていけたらいいけど難しいなあと思っていた矢先の9月10日、幸いにも国内142種目 をGETすることができました(図1 ) 。
図2 レベル32を達成
図2 のようにゲーム開始から50日目、歩行距離415km、捕まえたポケモン5,990匹、孵(かえ)した卵623個、ポケストップ回し8,120回 。しかし、Pokémon GOはオープンエンド。レベルカンストはあってもゲームオーバーはありません。その後も歩き続けてなんぼなわけですが、幸いなことに歩き癖がすっかりついて、この1ヵ月平均で20,000歩/日歩く体になっていました(図3 ) 。台風で土砂降りの日でさえ1万歩は歩かないと欲求不満になるなんて。
図3 20,000歩/日も歩く体のログ
図4 ラ++と歩く日々
そしてバージョン1.7.0が到着したのが、iOS 10アップデート直後。さらにiPhone 7と同日にPokémon GO Plus到着というわけで、ラ++と歩く日々がまだ続いています(図4 ) 。
ボタンのないiPhone 7、ボタンしかないPokémon GO Plus
で、iPhone 7です。これまた読者の皆さんご存じのとおり、穴とボタンが1つずつ減りました。イヤフォンジャックとホームボタン。後者はなくなったというより機械式から感圧式に生まれ変わったのですが、それで耐水性能を獲得しました。耐水という点では先行していた競合他社のスマフォはジャックやコネクタに蓋をつけ、ホームボタンそのものをなくしてタッチスクリーンに表示するという、わかりやすい代わりに不恰好なものでしたが、そういったことをせず、ある意味「そのままの姿」で実現したというのが実にAppleらしい後出しじゃんけんでした。
iOS 10(のデフォルト設定)で一番戸惑いが多かった「ホームボタン触るだけでアンロックできていたのに押さないといけなくなった」というのも、iPhone 7ではむしろ自然ですし、機械式ではないのに押した感覚を実現するTaptic Engineはホームボタンを「仮想機械式」にするにとどまらず、たとえばメニューのダイアル選択でカリカリと本物のダイアルを選択している感触まで実現するなど実によくできています。機械的可動部は減ったのに機械的感触は増えている。実に見事です。
その意味でPokémon GO Plusというデバイスは、ある意味その真逆にあります。ついているのはLEDで7色、もとい4色に光るボタン(もちろん機械式!)が1つだけ。筆者はApple Watch(Series 1)のミラネーゼループに留めてますが、笑っちゃうぐらいだっさい(図5 ) 。
図5 Pokémon GO PlusをApple Watch(Series 1)のミラネーゼループに留める
図6 Pokémon GO Plusだけでは ゲームプレーに限界がある
しかしこれのおかげで、iPhoneの画面をにらめっこしなくてもPokémon GOできるようになりました。もちろんボタン1個でできることはたかが知れていて、ポケストップ回しとポケモン捕獲。それもスーパーボールやハイパーボールといった高性能ボールは使えず、赤白ボール1回だけ。失敗すればポケモンハイさようなら(図6 ) 。これでピカチュウを取ろうとしてはいけません(笑) 。
しかし Pokémon GO の一番の狙いはトレーナーを歩かせることにあり、だとしたらむしろ画面をにらめっこしているのは避けるべきことで、オープニング画面も歩きスマフォしているとギャラドスに食われるぞと警告しているぐらいです。実際筆者も恥を忍んで、もとい恥も外聞もなく使ってみたところ実に快適でした。ぼうけんノートに「ミニリュウに逃げられた」という記録を見つけてちょっぴりムッとはしましたが。
しかし、よく考えてみると、Pokémon GO Plusって実にムダなデバイスではあるのですよ。ポケストップに近づくだけでアイテムGETできたり、ポケモンが近くにいるだけで自動捕獲したり、つまりノーボタンにしたほうが実装面では楽なのですから。しかしそれだともはやPokémon GOはゲームではなく単なる通知アプリになってしまいます。Pokémon GO Plusは、まさにその余計なワンクリックがあることでポケモンの存在をリアルにしているわけです。
iPhone 7とPokémon GO Plus。かたや物理を略すことでリアルにし、かたや物理を加えることでリアルにする。リアルとはいったい何なのか。そんな哲学的な疑問がリアルに沸き起こってきます。AR=Augumented Reality=強化現実といっていますが、もう弾言してしまいましょう。リアルとは「実体」ではなく、リアルとは「実感」なのだと。物理的事実だけではなく、論理的虚構だけでもなく、双方合わせて我々が「これが世界だ」と感じているもの、それがリアルなのだと。複素現実=Complex Realityという言葉が思い浮かびましたが、ちょっと数学的すぎるかなあ……。
上野の不忍池でプレイが禁止されたり、レインボーブリッジに向かうお台場の自動車専用道路にプレイヤーが押し寄せたりとPokémon GOはリリース後2ヵ月経過した今も社会現象であり続けていますが、驚くべきなのは、楽しんでる人も迷惑を被っている人も誰も「ポケモンなんて存在しない。ただのデータだ」という人がいないこと。もはやポケモンは虚構ではない、今そこにある現実なのです。
これが我々プログラマにとって何を意味するか。我々は、リアルを想像し改変する力を得たということなのです。メタファーではなくリアルに。ふと、金子勇 さんのことを思い出しました。Winnyが無罪判決を勝ち取れたのは、まだまだその影響がコンピューターネットワークに留まっていたからではないのかと。仮に誰かポケソースを偽造するツールを作って、それを利用した誰かがミュウが湧く偽ポケソースをどこかに設置して、結果押し寄せたトレーナーで圧死者が出たら、ツール作成者は著作権ではなく殺人の幇助で追訴されるのではないか……。
妄想にすぎない、というにはARはすでにリアルすぎるというのは心に留めておいたほうがいいかと。
Swift Playgroundsはモバイルプログラミングを実現するか?
このまま妄想を続けたい誘惑を振り切って、Swiftの話題に入りましょう。ARがモバイルアプリを「デスクトップでしかできなかったことがどこでもできる」から「実際の場所に行ってみないとできない」と一段進めたのであれば、モバイルプログラミングとはいったい何を意味するのでしょうか?
Swift Playgrounds for iPadはその試みの1つかもしれません。
図7 を見てのとおり、リアルキーボードなしでもフルセットのSwiftプログラミングができます。それも「単に動く」以上にある程度のモバイル最適化が進んでいます。カーソルの位置によって正しい構文として成立する表現が候補に現れますし、変数やリテラルをクリックすればその型にあった候補が現れます。
図7 Swift Playgrounds for iPad
とはいうものの、やはり「iPadの方がMacよりも快適にプログラミングできる」というにはほど遠く、実際に使いこむには大まかな作業はMacで行い、それをiPadでレタッチするというiWorkに近い使い方に現状落ち着くと思うのですが、ここで1つ問題が。
現時点で、iPad以外の環境でiCloud DriveがSwift Playgroundsに対応していないようなのです(図8、図9 ) 。
図8 Swift Playgrounds for iPadはiCloudに対応している
図9 Swift Playgrounds for iPadはiPhoneに未対応であることに注意
スクリーンショットを見てもわかるとおり、iPadのiCloud DriveにはPlaygroundsがあるのに、iPhoneの方にはない。Macも同様です。macOS SierraとXcode 8.1待ちということでしょうか……。
というわけで冒頭で述べたとおり「微妙な時期」だけあってなんとも微妙な結果となりましたが、次号までにはmacOSもSierraになるはずですし、もしかしたらMacBook Proも刷新されているかもしれません。次回は本連載の主旨どおり、Swift言語メインの記事をお届けできる……はずです。
第1特集
MySQL アプリ開発者の必修5科目
不意なトラブルに困らないためのRDB基礎知識
第2特集
「知りたい」「 使いたい」「 発信したい」をかなえる
OSSソースコードリーディングのススメ
特別企画
企業のシステムを支えるOSとエコシステムの全貌
[特別企画]Red Hat Enterprise Linux 9最新ガイド
短期連載
今さら聞けないSSH
[前編]リモートログインとコマンドの実行
短期連載
MySQLで学ぶ文字コード
[最終回]文字コードのハマりどころTips集
短期連載
新生「Ansible」徹底解説
[4]Playbookの実行環境(基礎編)