複天一流:どんな手を使ってでも問題解決を図るブログ

宮本武蔵の五輪書の教えに従い、どんな手を使ってでも問題解決を図るブログです(特に、科学、数学、工学の問題についてですが)

カーナビの衰退とこれから(6): VICSの光ビーコンからの情報

4月25日のブログで「首都高に行くとETC2.0の機器を通じてVICSの情報が表示された」という報告をしたが、首都高に特有の現象なのか、それとも全国の主要道路に設置された光ビーコンでも同じ反応があるのか確認できていなかった。

本日、主要国道を走行中、信号待ちで止まった瞬間、Civicの「カーナビ」に相当するgoogle built-inによる地図表示に、渋滞情報と混雑情報が赤線と黄色線で表示された。もしやとおもって信号機の上をみると、光ビーコンらしき「釣竿」が道路に向かって迫り出していた。(しかも、ここは高速道路からはかなり離れた場所であり、そこからの電波がこの信号交差点に到達したとは考えにくい。)

このときCivicにはWiMAXは積まれておらず、通信可能な方法があるとすればETC2.0とGPSしかない状況であった。しかし、GPSが日本の交通情報を扱っているとは考えられないので、ETC2.0の装置のどこかに光ビーコンらしきものからの情報を読み取る仕組みがあり、その情報がgoogle built-inに流し込まれたと考えるのが自然であろう。このカラクリについての説明はどこにも書かれていない。

念の為、光ビーコンが設置されている場所を次のHPを利用して確認し、それが本日の信号と一致しているか調べてみた。驚いたことに、本日の信号には「光ビーコン」は設置されていなかったのだ(そこから五キロほど離れたところには3つほど設置されていたが、その情報が届いたとは思えない)。

そこで検索を続けてみると、どうも今日見た「ビーコン」は、光式ビーコンではなく、超音波式の「ビーコン」(正確には、超音波式感知器というらしい)だということがわかった。超音波式ビーコンからは交通情報が提供されているのであろうか?調べてみたが、そういう事実は確認できなかった。やはり、依然として謎である。

カーナビの衰退とこれから(5): ドイツ系の自動車のカーナビ

これまでの流れ

Googleマップから派生した、Google built-inというカーナビ用OS(らしきもの)が、日本車やアメリカ車の「ディスプレイオーディオ」に採用され、日本から始まった(いわゆる)「カーナビ」を駆逐し始めている。スマートフォンで動くタイプのGoogleマップの利用者は多いが、それを「カーナビ」の代替として利用すると、さまざまな問題が生じ、不満を持つ人が増えてくるようだ。実際にHonda CivicをWiMAXでネットに繋ぎ、Honda CONNECTディスプレイという名称がついた「カーナビもどき」を利用してみたが、すこぶる使いにくい。Gathersのカーナビにも問題があったとは思うが、Google built-inに比べれば、Gathersの方が「いい仕事をしている」と思う。

Google built-inに参加していない自動車メーカーの代表はトヨタとドイツ車である。トヨタは独自のT-connectという類似サービスを展開しているようだが、その詳細はトヨタ車のオーナーにやってもらった方がいいと思うので、ここでは省略する。ただ、ちょっと前の車検の際に借りた代車が旧式のプリウスだった。数日走った際に感じたナビの使い勝手は(正直)悪かった。Googleと似たり寄ったりだと思うが、しかし、それでも進行方向に対して地図を回転させる機能については、Google built-inよりは「上」だと思う(google built-inの場合、進行方向を向くモードにすると、上空斜め上からのbird viewとなるため、現在地から遠くの様子が見えにくくなる。また、縮尺が自由に変えられない)。

さて、ドイツ車の代表であるメルセデスBMWはどんなカーナビを使っているのであろうか?気になったので、調べてみた。どうも、どちらもLinux関連のOSを使っているようだ。理工系の人々には(ちょっと)興味を惹かれる内容ではないだろうか?

BMW OS

BMW(Miniも系列メーカー)は、BMW OSという独自のカーナビシステム用のOSを開発し、利用している。ベースにしていたのはLinuxだったが、最近Android OSに変更したという。しかし、Android OS自体がLinuxを基盤としているので、依然として"Linux系カーナビOS"と考えていいのではないだろうか?

最新のVer.9.0からがAndroidであり、Linuxを用いたその前のバージョンであるVer.8.xとは互換性が弱まってしまったようである。中古で買ったBMWのカーナビにVer.9.0のインストールをするのは基本的には不可能であるという話である(ただ、DOOMのようにチャレンジを試みる人がいても不思議ではない)。

私が興味を持ったのは、Miniの円形モニターである。これは画期的ではないか?地図回転の時、四角形より円形の方が理にかなっていると思う。目が回るかどうかは二の次で、技術的な追究という意味では非常に面白いし、評価できる!

toyokeizai.net

しかし、アグレッシブな技術革新は、連続性とか継続性の観点からは、ちと問題である。ApplepowerpcからIntelチップに変えたり、さらにはIntelから自社開発のM系チップに変えたりと、技術革新するたびにユーザーは戸惑うものであるが、AppleはUniversal Codeなどを提供してくれたので、Transitionがスムースで不満はあまりでなかった。BMWは、その辺りの「遺産相続」についてはあまり気にしていないようなので、不満が出ているかもしれない(この辺りの事情はオーナーの皆さんにお任せしよう)。

MercedesのMBUX

メルセデスはMBUXというシステムをカーナビに採用している。これもメルセデスの自社開発OSのようだ。ベースになっているのは、こちらもLinuxだという(メルセデスのHPでは確認がとれなかったが、こちらのページにそう書いてあった)。

ドイツ車の「カーナビ」について調べている時に見つけたのが、インフォテインメントシステムという言葉である。Information + Entertainmentを掛け合わせた造語であろう。要は、スマートフォン化したカーナビ、という意味である。

音声による操作は、ずいぶん前から採用されていたが、Info-tainment化が進んでからは、さらにそれが加速しているようである。メルセデスBMWはもちろん、ホンダが採用しているGoogle built-inでもそれは同じである。ただし、google built-inの場合は、ネットワークに繋いでいないとAIは返事をすることとも、反応することもできないが、ドイツ車の場合は(うまく反応できるかどうかはともかくとして)オフラインでも音声コマンドは利用できる(2015年ごろのモデル以降だと思うが)。

メルセデスは、BMWの革新とは逆に、保守系である。変わっていく部分もありながら、残していく伝統も結構あるらしい。少なくとも、カーナビの操作で利用できる「ダイヤル」ボタンはまだ採用し続けているそうだ。あれは個人的には便利だと思うので、ぜひ無くさないでもらいたいと思う。

タッチパネルは、運転しながら操作するのは非常に困難である(だからメルセデスのダイヤルボタンがいいのだ)。運転中で目をそらせない時にもかかわらず、どこを押せば良いのか目印がないから、どうしても「目視」してしまって危ないことこの上ない。これは(経絡秘孔の位置を熟知した拳法家以外は)運転中の操作ができないことを意味する。だからこそ、音声コマンドが推奨されているのであろう。しかし....認識率が低く、オンラインでないと使えない、というGoogle built-inの場合は....、経絡秘孔の修行に入らざるを得ないのである(笑)。

Google built-inのVMS

Google built-inで提供される交通情報のデータは、VMS (Vehicle Map Service)というWeb APIで取得することが可能だという。一連のソースコードがgit形式で公開されているという噂を嗅ぎつけたので、さっそく検索してみた。すると、Android/googleのサーバーの中にJavaScriptなどで記述されたコードが公開されているのを見つけることができた。AndroidLinuxベースのOSなので、一応公開系のソフトウェアなのだ!この点においては、Googleを評価したいと思う。

このコードを解読できれば、自分でAPIを操作して、自分なりのマップや交通情報処理をできるようになるはずである。余力があれば、ぜひチャレンジしてみたいと思った次第である。

カーナビの衰退とこれから(4):WiMAX/広域WiFiネットワークでつなぐ

これまでの流れ

Honda Civicを購入したら、「(Gathersの)カーナビ」が「(google built-inで作動する)ディスプレイオーディオ」に変わっていた。しかも、このデバイスを使うためには「毎月2000円近くのサービス費が必要」とディーラーに言われて驚き、怒り、そして落胆した。そこでなんとか「オフライン」つまり「無料」で利用できないか、いろいろ裏技を探ってみたら、オフラインマップというやり方があることに気がついた(いろいろと「地雷」はあるが)。ETC2.0で首都高を使うとオフラインマップに交通情報が表示されることもわかった。

今回は、フリーWiFiWiMAXなど、広域WiFiネットワークに繋いでみよう、というチャレンジである。

公共のFree WiFi

アメリカでは公共のFree WiFiがかなり以前から浸透していると聞く。

光回線は地面に穴を掘ってケーブルを埋設したり、電線に光ケーブルやその増幅デバイスを設置したり、と莫大な設備投資費がかかる。その上、長い工事期間が予想されるし、人件費の高騰などによる予想外の出費などの問題もあるだろう。WiFiはこれらの問題をかなりの程度軽減してくれるから、広い国土で通信施設を設置する立場からすればWiFiの導入は必然的ですらあったと思う。

日本では通信施設はNTTやKDDI(au)の寡占状態が黙認されているせいか、多額の税金がおそらく注ぎ込まれた光ファイバーの全国展開に関する「資金回収」が優先されたはずである。これは高速道路がなかなか無料化されないのと似た状況なんじゃないだろうか?そのせいか、日本ではWiFiによるネット接続はあまり行われていない。それどころか、4G携帯電話回線と契約する人が多数存在する。学生や貧乏社会人たちは、しかしながら、大学や会社の学内/企業内WiFi LANや、東京都千代田区などの無料公共WiFi接続、あるいはセブンイレブンスターバックスなどのフリーWiFiをうまく利用しながら、通信量を極力絞った契約で電話回線に払う出費を努力して抑えている感じに見える。本来、彼らは、彼ら自身の税金によって構築され国が提供する、安全かつ安い公共WiFiネットワークによって、「日本国民であるという恩恵」を受けるべきなんじゃないだろうか?

いずれにせよ、アメリカ合衆国、特に西海岸のカリフォルニアなどでは、公共の無料WiFiスポットがたくさんあるようなので、おそらくGoogle built-inやHonda CONNECTも、WiFi接続を無視するわけにはいかないだろうと思うのである。実際、Honda USAのHPにはWiFi接続が「デフォルトだ」というニュアンスで説明されている。日本のHonda CONNECTに相当するサービスはAT&Tが担当しているようだが、その宣伝はかなり控えめである。

myvehicle.att.com

「他の選択肢もあるでしょうが、私たちの提供するネットワークが全米最大ですよ」といった感じであるが、きっと「全米最大」といってもシェア30%程度だったりするのであろう(注:この数字はあくまで推測であり、根拠はありませんが、参考資料はこちら)。

一方、日本ではWiMAXという広域WiFiサービスが存在する。通信エリアはかなり広がってきているが、値段もそれなりにするし、ルーターと通信機器の2つを持ち歩く必要があり、それはかなり不便である。地下鉄に乗って移動する東京人にとっては、iPhone一つで済むというのは「最適解」だと思う。

このような状況と比較すると、無料/有料にかかわらず、WiFiの広域ネットワークの日本における普及は明らかに発展途上である(東京オリンピックのとき、海外からの観光客(特に北米だと思うが)から苦情が出て、都心部には外国人観光客向けのフリーWiFiサービスが若干増えたりもしたが)。

「俺はWiMAXでいく!」

いろいろな事情を経て、私は今、WiMAXが安価に利用できる環境にある。オフラインマップで日頃は切り抜けるつもりではいるが、いざとなったらWiMAXWiFiルーターをCivicに接続し、「オンライン」でgoogle built-inを利用することは可能である。これは、北米のWiFi事情があるがゆえのアドバンテージである。一般の契約の場合は、WiMAXの高速回線は月々5000円弱くらいだろう。新たにWiMAXに契約するくらいなら、Honda CONNECTに入った方が圧倒的に安い。したがって、今回の記事は「もともとWiMAXを使っていた人」向けの記事であって、一般解ではないことに注意されたい。

Civicのタッチパネルを操作するとWiFi接続のセクションが出てくるので、自分が契約するWiMAX回線の回線名を選び、パスワードを入れて接続することができる(詳細はこちらの説明を参照)。

www.honda.co.jp

WiMAXの電波がなくなってしまう恐れが強い場所、たとえば山岳地帯や北海道の平原地帯、瀬戸内海の離島など、にいく予定がある場合は、エンジンを入れたらすぐに、オフラインマップの更新をやっておこう。2GB程度の広域データでも15分程度でダウンロードできるので、走行中に完了できるはずだ。オフラインマップが消えないように、Googleアカウントにはログインしないように注意しよう。また、自動アップデートはWiMAXにつながっているときはスイッチオンにしておいた方が有利かもしれないが、自宅に戻ったらオフに戻すのを忘れないようにしよう。

WiMAXがあれば、一応は交通情報はすぐに入ってきて、Googleマップに表示される。これがVICS経由かどうかは、もはや不明である。

WiMAXがあるんだから、iPadでいいんじゃない?」という意見

WiMAXを車に持ち込めば、当然ながら車内全体がWiFiホットスポットになる。したがって、ネットワーク機器がつなぎたい放題である。Googleマップの表現は非常に見にくいし、醜いので、わざわざHonda CONNECTディスプレイにこだわる必要はなくなってしまう。

そこで、今日の午前中に、iPadのマグネット付きケースを使って、Honda CONNECTの上に、ケースで挟み込むようにしてiPadを被せてみたのである!(参考にしたのは、マジックテープで貼り付けたというこの方の記事)すると、見事にフィットしたのである(笑)。

infobuild.jp

あとは、本当はやりたくないが、GPSに関する許可をiPadに出せば、一応は現在地をiOSの「地図」アプリに表示してくれることであろう。ナビタイムというアプリを入れてみてもいいかもしれない。しかし、個人的には、iPadGPS受信をやるつもりはないので、このような「カーナビ」的な利用法は日常的にはしないつもりだ(旅行とか特別な場合にはやると思うが)。

最初に利用しようとおもっているのは、JARTICの高速地図と一般道のデジタル地図である。主要な道路の混雑情報は貴重なデータであるので、それをオンラインで利用したいと考えている。

一方で、知らない街の詳細部分の地図に関しては、迷ってから車を停車して(WiMAXで繋いだiPadの地図で)確認しようと思っている。また、一方通行がどうのとか、目的地までのルート選択だとかは、自分の脳みそで判断しようと思う。なんでもかんでもリアルタイムでやる必要はない、というのが持論である。時間をかけて解決した方がいい場合だってある。初めての街でも、地図を見ながら歩いているうちに、だんだん慣れてくるものだ。次の来訪時は地図を見なくても歩けるはずである。たとえば、ベニスとかフィレンツェなんかは、たぶん地図なしでも大体歩けるし、ロンドンやLAだったら車だって運転できる(と思うが、さすがにローマやマンハッタン、シカゴは無理かも)。これも、若い頃に地図を片手に散々迷ったおかげである。AIのトレーニングも重要だが、自分の脳みそのトレーニングもやはり重要なのである。そういう意味では、「だめなカーナビもどき」を作ってくれたホンダに感謝である。10年ぶりにカーナビのない生活に戻り、自分の頭で生きる世界に帰れそうな気がするからである(笑)。

カーナビの衰退とこれから(3):google built-inの詳細

前回のあらすじ

Honda CONNECTのサービスの内容と、技術的な詳細について調べてみた。特に技術的な情報が少なく詳細を知るのが大変であったが、前世代の類似サービスである「ホンダ インターナビ」というサービスの存在に辿り着くことができたため、その詳細な資料から類推することで、Honda CONNECTの概要が次第にくっきりとしてきた。その結果、ソフトバンクの4G/5Gの携帯電話回線の一部をホンダが「借り切り」、そこで吸い取ったデータを使って構築した交通情報や地理データを扱うネットワーク、およびそのサービスがHonda CONNECTの正体であることがわかったのである。

前世代の「インターナビ」と異なり、この交通情報ネットワークでは(日本の)VICSデータは利用しないし、利用できないらしい(確認はしてない)。その代わり、Googleが提供する交通情報が表示される。googleの交通情報は日本の交通環境を反映したものではないらしく、多くの人が不満を持っているのは「周知の事実」のようである(私はあまりgoogle mapをリアルタイムで利用しないので、どのくらい便利でどのくらい不便なのかよくわからない)。

しかし、4G/5Gの携帯電話網が整備されていない僻地は必ず日本あるいは米国のどこかに存在するはずである。したがって、そのような場所に車が行ったときに利用すべき「バックアップデータ」のようなものが使用可能な設定に必ずなっているはずだと推測し、それを使えば「Honda CONNECT」を経由しなくても「カーナビらしきサービス」が(無料で)動くだろうと考えたのである。

Google built-inシステム

Google built-inシステムというのは、googleマップの基幹部分をカーナビ用に応用し、車の電子制御システムやカーナビ部に組み込んで利用するタイプの「オペレーションシステム」らしい。OSといってもカーナビや交通情報の処理だけに利用するので、組み込みアプリ(ソフトウェア)と呼ぶべきなのかもしれない。

Honda CONNECTに契約した場合、CivicやAccordといったホンダ車のシステムは、ソフトバンクの4G/5G回線を使ってインターネットに接続し、Googleサーバーから地図データや交通情報を手に入れ、それを車に組み込まれたGoolge built-inへと流し込む。Google built-inはそのデータを処理し、Goolgeマップと同じ表現を用いて、車載ディスプレイに結果を表示する。

日本ならまだしも、米国には4G/5G回線網が貧弱な地域が広大に広がっているはずである。それにもかかわらず、このようなシステムを採用したHondaの判断は「愚」ではないか、と最初は思った。こんなサービス、他の車会社、特にアメリカの自動車会社は採用してないだろう、と思ったのだ。ところが、google built-inのHPを見て驚いた。なんと、メジャーなアメリカの自動車メーカーはすべて、Google built-inを採用していたのである!そしてNissanなど日本の自動車メーカーも軒並み参加である(トヨタは参加してない)。スェーデンのVolvo(だが中国の吉利汽車が株主)とNissan/Mitsubishiの関係と思われるフランスのルノーは参加しているが、ドイツ系は全く参加していないのが非常に興味深い。

google built-inに参加している自動車メーカー(Google built-inのHPより)

調べてみたら、Google built-inに参加していないトヨタも「T-Connect」というHonda CONNECTまがいの独自サービスを始めているそうである(驚)。G-Bookと呼ばれるサービスから派生したものらしく、2014年に始まったというから、ホンダのインターナビのパクリのように見えるが、Honda CONNECTよりは古いので、卵と鶏の関係のようにも見える。ただし、トヨタの場合は、T-Connectに加入しないとナビが使えないよ、というような脅しはかけてないと思う。あくまで自由意志による加入のようだ。

いずれにせよ、日本発の伝統的な「カーナビ」は次第に廃れ、ネットワークとリンクしたGoogleマップのような、スマートフォンのアプリから派生した地図サービスに取って代わられつつあるようである。ただ、ドイツ系の自動車会社の大半がgoogle built-inに参加してないというのは興味深い。彼らはこれからどういう判断をするのだろうか?

ちなみに、Google built-inというのは固有名詞的に使っていいと思うので、日本語に訳すときは「グーグルビルトイン」としていいと思う。しかし、Hondaの日本語HPでは「グーグル搭載」と訳されていて、いまいち意味が薄まっているような気がする。「グーグル搭載」という言葉のニュアンスは、どちらかというと「検索エンジンが車に備え付けられている」という感じで、誤訳に近い感じがする。強いて日本語にこだわるなら「搭載系Googleマップエンジン」とか「搭載型グーグルマップOS」とすべきだろう(漢字の固い印象が嫌な場合は「グーグルのせいれ(載せ入れ)」とか「グーグルはいってる(入ってる)」とかそんな感じだろうか?)。

Honda JPのHPでは「グーグル搭載」と表記

Honda USAでは”Google built-in"と表記

Honda CONNECTの実態を調べる際にも、この「グーグル搭載」という訳のせいで、なかなか正体を見抜けなかった。もし、固有名詞風に「グーグルビルトイン」と表記してくれたら、一発でgoogle built-inという「車搭載型OS」の存在を認識できたはずである。

さて、Honda CONNECTが提供する新しい「カーナビらしき」システムの心臓部は、Google built-inというGoogleマップから派生したシステムであることが判明した。しかし、依然としてその詳細についての資料は十分に見つけることができなかった(意図的なのかどうかわからないが)。しかし、「オフラインマップ(offline map)」という用語に気がついて、ようやく検索結果に必要な情報がヒットし始めたのである。

「オフラインマップ」とはなにか?

ディーラーが説明に窮したのは「オフラインマップ」と「Googleマップ」の違いであった。果たして、両者はどのような関係にあるのか?もしかして、前者はHondaの仕様であり、後者のデータとは異なるものなのであろうか?

かつて「カーナビ」と呼んでいたデバイスでは、地図データは日本全国(そしてその詳細部分の地図も含めて)すべて一気にインストールされていた。つまり、地図データ全体がカーナビの記憶装置に保存されていた。この「保存された地図データ」に相当するのが、Google built-inシステムで「オフラインマップ」と呼ばれるものである。

google built-inが搭載された「Honda CONNECT ディスプレイ」という「カーナビのようなデバイス」では、「地図アプリ」、つまりGoogleマップは、車が存在する「周辺」だけの地図データを「ちょこちょこ」ダウンロードする。彼らはそうは呼んでないが、これは「オンラインマップ」と呼ぶべきもの、あるいは物理学者だったら「ダイナミックマップ」と呼ぶだろう。

「無限の広さ」を持つと言っても、停電や災害などで通信施設に損害が出たら「ダイナミックマップ」は「小さな紙切れの地図」みたいになってしまうだろう。そんなとき、すでにメモリに蓄えてある地図範囲、つまり「車の周辺の地図データ」の意味が、数十キロなのか、数百キロなのかは気になるところである。しかし、これは資料に明示されていないし、ディーラーもメーカー(のコールセンター)も即答できない有様で、非常にイラつく。

ディーラーのみならず、メーカーやGoogleのエンジニアたちも「ネットに常時接続していれば、問題ないでしょ」という立場である。これは暗に「Honta Total care プレミアムを契約し、Honda CONNECT(ソフトバンクの4G/5G回線)を使え」と主張しているわけである。

しかし、上述したように災害時、あるいは僻地やトンネルなどを走行している際には「常時接続なんて無理でしょ」という不満もあるはずで、そこは彼らも理解しているようである。そこで「オフラインマップ」なるものを密かに用意しているようなのだが、この部分の性能を上げすぎてしまうと「カーナビ」のようになってしまうので、そうならないように「いろいろと地雷が仕掛けて」あるのである。利用者としては「ただのカーナビでいいじゃないか」と思うのだが、彼らは「サブスク料」と「(登録時の個人情報と、交通情報に関する)ビッグデータ」がどうしても欲しいらしいのである。

オフラインマップの使い方

「オフラインマップ」はGoogle built-inシステムが定めた概念で、通常のGoogleマップアプリにはない考え方である。つまり、Googleマップを「カーナビのようなデバイス」に利用するときは、ネットワークへの常時接続ができない場合もあるだろうから、それを想定した上で「若干の地図データをあらかじめダウンロードし、保存しておく」というアイデアである。保存された地図データのことを「オフラインマップ」という。(注:よくよく調べたら、Android系のスマートフォンGoogleマップアプリを利用するときも、Google built-inと同じようにオフラインマップが利用できるそうである。利用方法は両者ともにまったく同じである。)

もし、世界中の地図を一気にダウンロードすることができ、そしてそのデータが永久に利用できるとすれば、誰も車をネットワークにつながないだろう。そうなると「ビッグデータ」が集まらなくなるので、Googleとしては「商売上がったり」である。なんとかして、車をネットワークに常時接続させようと知恵を働かせるはずである。

というわけで、「オフラインマップ」にはいくつかの制限がある。制限について調べる前に、どうやってオフラインマップをダウンロードするか、簡単に記録しておこう。

Honda Total careプレミアムに契約し、Honda CONNECTが利用できる環境においては、オフラインマップは本来不要であるが、災害時や僻地走行に備えて一応はやっておいた方がよい場合もあるだろう。したがって、Honda CONNECTの利用者もオフラインマップのデータをダウンロードすることができる。たとえば、中央道の小仏トンネルや笹子トンネルで甲府あたりの地図を確認したいが、ソフトバンク回線が利用できないとする(注:仮の話で、たとえ話である。確認してないので本当のところはわからない)。この場合には、山梨の「オフラインマップ」をあらかじめ(Honda CONNECTが利用できる場所で)ダウンロードしておくのである。回線が利用できなくなったタイミングでGoogle built-inはオフラインマップにデータ表示を切り替え、トンネルの中でも甲府の地図を映し出してくれるだろう。

ダウンロードの手順は、Androidスマートフォンの場合とほとんど同じである(その情報へのリンクを挙げておく)。

このブログ記事の目的は「Honda CONNECTを利用せずにどうやってgoogle mapを利用するか」であるから、Honda CONNECTが使える環境を仮定したんでは元も子もない。次は、Honda CONNECTを使わない場合に、どうやってオフラインマップのデータをダウンロードするか考えてみる。

ディーラーが必死に調べた後に推奨してくれたのが「テザリング」という方法である。これは、手持ちのスマートフォンを利用してネットワークに接続する方法のようだが、スマートフォンの「電話回線」を利用するだけであり、WiFiの橋渡し(ブリッジ)というわけではないようである。たとえば、4G/5Gなどの携帯電話回線とCellular契約しているiPhone/iPadの場合のテザリング設定の仕方についてはこちらを参考にしてもらいたい。

テザリングによる接続にはいくつかの問題があることが、すでに色々なところで指摘されている。一番の足かせは、通信量に制限をつけた契約をしている場合である。オフラインマップの範囲にもよるが、たとえば「関東地方一帯」といった広範囲の領域をオフラインマップとしてダウンロードしようとすると、そのデータサイズは結構大きくて、1GB、2GBは平気で喰われてしまう。月々3GBの契約をしている人にとって、わずか1日で2GBのデータを消費してしまうのは躊躇われるだろう。

もちろん、目黒区とか千代田区といった具合に細切れにダウンロードすることもできる。この場合は100MB程度で済むこともある。しかし、これから大阪に旅行に行こうと思っている人が、大阪市だけのオフラインマップで十分だと考えるだろうか?やはり、関西圏一帯程度はまとめてダウンロードしておかないと不安だろう。東京から行く場合には、静岡や名古屋の地図が欲しいと思う場合もあるだろう。そんなこんなで欲張ると、5GB以上のオフラインマップのデータが必要になってしまうかもしれない。

テザリングが利用できるのは「かけ放題/つなぎ放題」の契約をしている人だけと考えていいと思う。

次のやり方はWiFiによる接続である。Civicはこのやり方を許容している。詳しい手順はこちらを参考にできる。自宅のWiFi LANの電波が届く範囲にCivicを駐車し、そこでネットワークに接続するのである。幸い、我が家の庭のとある部分にCivicを置くと、自宅LANのWiFiが接続できることが判明したのである。そこで、オフラインマップのデータを「たんまり」とダウンロードしてから旅立てばよいのである。交通情報を利用するなら問題だが、「地図」としてカーナビを利用するだけなら、自宅周辺の地図は要らないだろうし、職場の周辺も不要だろう。(しかし、実は後で説明するように、ETC2.0の情報を利用するためには自宅と職場など、よく行く場所の地図もダウンロードしておいた方がよい場合も出てくるので、注意が必要である。)

もちろん、公共のフリーWiFiを利用することもできる。しかし、セキュリティの問題や接続のスムースさ、容量制限などの問題などがあるから、できれば自宅のWiFiでダウンロードした方がいいと思う。

自宅LANにWiFi接続できたCivicに乗り込み(エンジンはかけず)、「日本中のオフラインマップをダウンロードしまくってやる!」と意気込んで作業に取り組んだのだが、なんと「オフラインマップのダウンロード制限」によってあえなく頓挫となったのである。正確なところはわからないが、関東、関西、沖縄に北海道...などと調子よく次々とダウンロードしていると、Google built-inから「ダウンロードの制限一杯となったので、不要なオフラインマップを消去してください」などと苦情を言われてしまうのである。データ容量で制限がかかったのか、それともオフライン地図の枚数(つまり地図領域の数)でひっかかったのか、今ひとつ不明であるが、とにかく日本全国の詳細なオフラインマップのデータをすべて一度にダウンロードすることはできなかったのであった。したがって、必要に応じて取捨選択しないといけない。

広域の地図は大きい場合で2GB程度のものがある。ダウンロードの時間としては15-30分程度かかる場合もある。したがって、Honda CONNECTの常時接続が羨ましく感じられることもある。しかし、「ビッグデータ」として扱われることはない、という安心感はある。

オフラインマップの「賞味期限」

オフラインマップはダウンロードしたら永久的にCivicに残る、ということにはなっていない。有効期間は一年である。ただ、こまめに「更新」していれば、半永久的に利用できる。たとえば、1週間後に更新すれば、地図データの差分だけをダウンロードしているようなので、ダウンロード時間がかなり短縮され、しかも有効期限が1週間先に延びる。

また、オフラインマップのデータ自体の「賞味期限」は一年なのだが、それは「定期的」にWiFiなどを利用してネットワークに接続していた場合である。「定期的」というのは30日以内を指すようである。たとえば、2週間おきにWiFiに繋いでさえいれば、オフラインマップのデータ更新をしなくても、オフラインマップは1年間Civicの中に居てくれる。もちろん、2週間おきにWiFiにつなぎ、かつその際にオフラインマップの更新をすれば、Civicが壊れるまでオフラインマップのシステムを利用し続けることができる。

しかし、海外旅行に35日行ってしまったとしよう。この間、Civicがオンラインにまったく接続されないと、オフラインマップは有効期限を待たずして消滅してしまうというのである。下手すると、googleマップのアプリごと消滅することもあるらしいので、気をつけた方がいいだろう(実際に試していないので、どうなるかは想像するだけだが)。消滅したアプリは、おそらくgoogleアカウントにログインして再インストールすることになるのではないだろうか?(あくまで推測)定期的に車に乗らない人は注意した方がいいだろう(たとえば、別荘にcivicを置いている人など)。もちろん、Honda CONNECTと契約していれば、オンラインになった瞬間にネットからデータが流れ込んでくるだろうから、30日経とうが1年経とうが、久しぶりにエンジンをかけたとしても何事もなかったかのようにgoogle builit-inは再起動するはずである(そうならなかったら暴動ものだろうが、そうならないとは言い切れないのがHondaの弱いところである)。

Google アカウントにはログインしない方がいい

自宅LANにWiFi接続できると、やってみたくなるのがGoogleアカウントへのログインである。Hondaのディーラーは「アカウントを作ってログインした方がいい」としつこい。Honda CONNECTディスプレイ(という「カーナビもどき」)はディスプレイオーディオなので、好きなアプリをGoogleアカウント経由でダウンロードできるらしいのである。また、地図情報の細かいところが利用できるようにもなるらしいのである。すごく魅力的なのだが、一度ログインするとオフラインマップの全てのデータが瞬時に消去されてしまう。 30分かけてようやくダウンロードした関西一円のオフラインマップが(グーグルアカウントにログインしたと同時に)瞬間的に蒸発するという、この虚しい出来事に勝るものはないのではないだろうか?

もちろん、アカウントにログインしたまま走行すれば、その記録が「ビッグデータ」としてgoogleサーバーに送り込まれるはずであるから、「気持ち悪い」というのもある。

googleアカウントにログインしたまま走行するのはやめた方がいいだろうし、オフラインマップを利用する人はログイン自体をやってはならない、というのが私の考えである。

ETC2.0がつながった時の不思議な反応

オフラインマップを使って首都高速を何度か走ってみたが、インターチェンジに入る前の一般道を走っているとき、街の細かい地図が所々消えていて閲覧できないところがあることに気がついた。これは「自動ダウンロード」のスイッチを入れてしまったせいではないかと疑っている。このスイッチは、現在地点やよく通過する場所などの情報をもとに、不要なマップデータを消去したり、追加した方がいい部分の地図を自動で追加ダウンロードしたりする機能をもっているらしい。これは「常時接続」を仮定した上での機能であり、「万が一常時接続が不能となった場合に備えて」という意味でのオフラインマップの準備をしているのである。したがって、日常的にオフラインマップを利用し、オンラインに「常時非接続」している人に取ってみたら、削除だけが実行されていくので、自動ダウンロードの機能は「敵」でしかない。現在、このスイッチを切っているので、果たして予想した通りの機能になっているか、確認が取れたら報告したいと思う。

白紙化した領域があるとはいっても、県道/都道や国道といった主要道路の情報は消えていなかった。したがって、「詳細地図」のデータから消去していくようである。

首都高ではETC2.0を使って料金を支払ったが、それと同時にオフラインマップに交通情報が表示され始めた。渋滞箇所や混雑箇所が赤やオレンジの曲線で示されたのである!首都高速だけでなく、国道などの主要道路の交通状況も表示された。通信しているのはGPSとETC2.0だけなので、おそらくETC2.0がVICSの電波ビーコンを受信して、その情報をgoogle built-inが処理したのではないかと想像している(裏が取れた情報ではないので恐縮だが)。この機能はどの資料にも書かれていない。VICSgoogle built-inは利用できない、という巷の説明にも反している。ただただ私だけが知っている「発見」である(「電波ビーコンはあります!」ってなもんである=笑)。知っている人がいたら、この不思議な現象の正体を教えて欲しいものである(特にGoogleのエンジニア、あるいはホンダのエンジニアの方々)。

Civicが納車になってから2週間が経とうとしている。私はまだHonda CONNECTに加入していないし、加入するつもりはまだない。しかし、オフラインマップを使って首都高速や主要道路を走り、交通情報もそれなりに利用できている。もちろん、googleマップはカーナビとしては「ダメ」である。しかし、毎月2000円近くを払ってから「だめ」なことを理解するよりは、財布の紐を閉じたままにして「だめ」を理解した方が、幾分マシであろう。

ポータブルタイプのカーナビを探す

ということで、ポータブルタイプのカーナビを現在探している。しかし、これもiPhoneなどスマートフォンの登場によって瀕死の状態にあるようである。ソニーが撤退し、パイオニアが撤退し、と屍が累々としているらしい。企業の方も、資金投入を躊躇しているようで、このままでは日本の電気メーカーは総崩れになりそうな気配である。なんとか、いいポータブルタイプのカーナビがないか現在調査中である。オートバイ向けのものが一縷の望みなのであるが、それすらもiPhoneにとって変わられつつあるようである...状況はかなり厳しそうである。正直、多くは期待できないのではないかとすでに諦めムードである。

VICSの未来は暗いのか?

しかし、このままいけば、VICSを利用しないgoogle built-in型の「カーナビらしきシステム」が日本中の車に搭載されることになり、VICS自体が無駄なインフラ、あるいは「オワコン」になってしまう可能性がある。膨大な投資をしてきた日本の自動車団体(官民両方)は旨味を味わうことができなくなるだろうから、必死に抵抗し、反撃に出るのではないだろうか?しかし、政府系のプロジェクトというのは、半導体の時もそうだし、アニメや漫画の時もそうだし、ふるさと納税の時なんかもそうだったが、まともにうまく行った試しがない。結局は市場原理に飲み込まれて敗北してしまうのであろう。ケンシロウのような救世主が現れるのを我々庶民は待つしかない。

カーナビの衰退とこれから(2):Honda CONNECT

前回のあらすじ

google built-inというオンライン接続型の「カーナビ」のシステムが流行し始めている。車を常時ネットワークに接続することで、地図データのリアルタイム更新を可能にすることができる。一見「すばらしい進歩」のように見えるのだが、その裏には「ビッグデータ」の収集という目的が見え隠れし、個人情報の盗み取りのようなIT活動が目に見えないところで広がっているようなのである。最近購入した車Honda Civicにもgoogle built-inシステムが導入されており、日本から始まった「カーナビ」の文化が、いまやアメリカのIT企業によって潰されてそうになっている。これはWalkmaniPodiPhoneに潰され、DVDやBlu-rayAmazon primeに潰されたような、「大きな革新」に相当する可能性がある。個人情報の奪取という意味では、音楽ファイルや動画ファイルとは比較にならないような「危険な革新」となる可能性すらある。

私は、昨年Amazon primeを退会した。iTunes(そして名前を変えたその後の同じサービス)についても作品の購入には10年以上利用していない。代わりに利用し始めたのがTsutaya Discasと、youtubeの(ミュージシャンによる)公式チャンネルである。先日、三省堂で見つけた「XXXラXX」を熟読して学びを深めれば(笑)、これらのサービスには高いポテンシャルがあることも魅力である(”XXXラXX”の部分はnote.comにて発表)。

ということで、Honda CONNECTについても、それには加入せずに、なんとか最低限のシステム機能を利用できないか考察してみることにした。もちろん、ベースにあるgoogle built-inを消し去ることはできない。しかし、Honda Civicは北米で人気の車種であるわけだから、カリフォルニアやアリゾナの砂漠地帯、オハイオジョージアの草原地帯、あるいはアパラチアやロッキーといった山岳地帯を走る際には、オンライン接続できない環境が必ず発生するはずである。そんな辺境地帯では、あらかじめ溜め込み保存しておいた地図データを利用しなくてはならないだろう。私が狙うのは「その部分」である。

Honda CONNECTのしくみ(ソフト面)

Honda CONNECTはオンライン接続のための技術的な側面(ハード面)と、そのサービスとしてソフト面と、2つの側面を持っており、ディーラーの中にはその部分の区分けができない人もいる。まずは後者から見ていこう。

「Honda CONNECT」とディーラーが呼んでいたサービスは、正確には「Honda Total Care プレミアム」というサービス商品である。このサービスに支払う料金は複合的であり、その内訳はこちらで確認できる。このHPのスクリーンショットが下の図である。

Honda CONNECTに支払う料金

車に搭載されたカーナビの種類によって3つのカテゴリーがあるが、これからは順次「google搭載Honda CONNECTディスプレイ」に入れ替わっていくらしい。私が欲しかった"Gathers"のカーナビでもHonda CONNECTに加入できるそうだが、しなくていいだろう(笑)。

一方、私が購入した新しいCivicは”google搭載”型なので、ディーラーの最初の説明を聞く限り「加入する以外の選択肢はなく、逃げようがない」ように思ってしまう。上のスクリーンショットは、google搭載型のカーナビモニターが備え付けてあるホンダ車に適用される料金体系である。私のCivicもこれに属する。

基本料金は月額550円である。オンライン常時接続の利点を活かして、車がトラブルを起こした際には、トラブルの場所や状況などを車のシステムが検知し、サポートセンターに知らせる助けをしてくれる。基本料金550円は、このような「保険/サポート」系のサービスへの支払いに相当する。また、広大な駐車場で自分の車の位置がわからなくなった時にネット経由で位置情報が自分のスマートフォンに届いたり、真夏に運転する際、家の中から車のエアコンをスマートフォンのアプリを使って事前に点けることができるなど、「いろいろと助けてくれる」そうである。ただ、これらの機能が不要だとしても「要らない」と言い張ることはできず、Honda CONNECTに加入するときに必ず支払わねばならないのが、この月額550円である。

いざという時しか旨味を感じることができないわけだが、車の位置情報や移動パターンのデータなどは、毎日毎日、”ビッグデータ”と称してgoogleやHondaのサーバーに転送され続けることになる。これはこれで「気持ち悪い」。

しかし一番の問題は550円の支払いだけでは、googleマップの地図データが「アップデートできないかも」とディーラーに説明される点である。つまり、追加の月額990円を払わないと、カーナビに地図が「映らない」状態でカーナビを利用することになる....と脅されるのである。

私がホンダのディーラーから提案されたのは、月々1540円(=550+990)を払ってHonda CONNECTに加入し、googleマップを基盤としたカーナビを不満なく利用できるようにしたらどうか、というものであった。

細かい話をすると、新しいCivicに搭載されたカーナビは、日本発案の、伝統的な「カーナビ」ではなく、北米のIT企業が発案した「ディスプレイオーディオ」である。つまり、スマートフォンのアプリの応用である(タッチパネルで操作するから、なおのことスマートフォンのアプリと同一視したくなる)。したがって、990円の料金の中には、音楽プレーヤーなど、googleマップ以外のアプリの使用権利も含まれている(これを「いいね」と思う顧客もいることだろう)。

料金表をよく見ると、鍵を無くした時のサービスだったり、車内WiFiだったり、さらなるサービスの加入も可能になっている。ネットを見ると「鍵を無くした時、Honda CONNECTを使った”スマホ解錠”で助かった」などといった「やらせ?」的な記事やコメントが目に付く。車内WiFiというのはホンダ車をWiFiルーターにしてしまうサービスで、営業先で仕事をするビジネスマンならドトールスターバックスに立ち寄る必要なく仕事ができる、という触れ込みであった。しかし、これらのサービスにすべて加入すると、月々の「サブスク料」は3850円に跳ね上がる。年間で4万6千円以上。地図データの更新を1年おきにやるよりも高い。

私が提示された「最低限」のパックでも年間1万8千円となってしまい、地図データを毎年更新するような感じになる(料金がこの値段に設定されたのは、毎年の地図データ更新とほぼ同じ値段ですよ、と営業に言わせるためであろう)。しかし、私の場合、3年とか5年とかで地図データを更新してきたので、Honda CONNECTは3倍から5倍の料金に見える。

Honda CONNECTのしくみ(ハード面)

Honda(本田技研)から提供されているHonda CONNECTの技術資料は非常に少ない。どうしてここまでひた隠しにするのか、と訝しく感じるほどである。やっと探し当てたのはプレスリリースのような文書で、システムの概要しかわからない。が、最初の一歩としては、ここから始めざるを得ない。

global.honda

この文書によると、Honda CONNECTが日本で始まったのは2020年初頭からだそうだ。予想以上に昔から始まっていたようだ。「日本で」始まったという書き振りは、北米で最初にスタートしたことを匂わせている。つまり、これはgoogleappleといったIT大手に主導されて始まった「北米系のサービス」である可能性が高いという推測である。日本人の感覚に合わないのは、たぶんこのせいだろう。

[この先はnote.comに移動しました]

カーナビの衰退とこれから(1):備え付けの「カーナビ」からスマホの「地図アプリ」へ

「エルチカ」プロジェクトはしばらくお休み

新年度が始まった。忙しくなってしまった。「エルチカ」プロジェクトに割ける時間が大幅に減ってしまった。

ということで、しばらくはこのプロジェクトはお休みである。システムデザインやコードの基本構造などは、すでに出来上がっているので、あとは実装するだけというのが悔しいところである。

カーナビについての考察(Honda Civicの場合)

ということで、手を動かさず、口を動かすだけの話題にしばらくは移行せざるを得ないのだが、実は、もう少し積極的な意味で「カーナビに関する考察」を以前からやってみたいと思っていたのである。ちょうど良いので、今月の残りはこの話題を取り上げてみたいと思う。

[この部分はnoteに移動しました]

Gathersと電装系の弱さ

Hondaの電装系はGathersという子会社が担当しているが、私はこれがあまり好きではない。Fitの初期型に家族が乗っていたことがあるのだが、カーステレオの待ち受け画面が「お魚」であった。海藻が揺れて、ぷくぷくと空気の泡が浮いていて、その間を落書きのようなお魚が泳ぐ待ち受け画面である。ホンダのディラーに「この待ち受けが”うざい”から消してくれ」と頼んだのだが、「消すことはできない」と言われ唖然としたことがある。その他、ステレオが壊れて音が出なくなったりもしたし、エアバッグの誤作動の問題もあった。電気系のシステム関連でリコールも複数回あった。このような体験から、「ホンダ車の電装系はだめ」という印象が強い。しかし、そのデメリットを遥かに上回る高性能エンジンがあったので、これまでは電装系の弱さにも目をつぶることができた。

今回の購入にあたっては、多分ダメダメであろうGathersカーナビについては「つけなくていいです」という対応をしようと思っていたのだが、「今回の新しいcivicではカーナビはデフォルトであり取り外せない」と「おさかなぷくぷく」のときと同じことを言ってきたのは「唖然再び」であったが、Gathersがこれまで発売してきたカーナビは(フランス企業に買収されたとはいえ)クラリオンのものをベースにしていたので、「ま、いっか」と軽く考え、そのままCivic購入を決めたのである。数ヶ月待たされ、先週ようやく納車となった。もちろん久しぶりのVTEC Turboエンジンは素晴らしかったので、存分に最初のドライブを楽しんだ。

しかし看過できない問題に乗ってみて気がついた。驚いたことに、新しいカーナビシステムがこれまでのGathers直系の製品ではなく、いま流行りの「ディスプレイオーディオ」、しかもgoogleベースのシステム「google built-in」だったことであった!ホンダはこれを「ホンダコネクト」というサービスを介して利用するよう働きかけているが、この評判が非常に悪い。VTECに目が眩んで、カーナビについて調べなかったのは私の落ち度ではあるが、ここまでひどいと誰が想像できようか?

「ホンダコネクト」とはなんだろうか?

google built-inについて説明する前に、ホンダコネクトについて見ておかねばなるまい。ホンダのディーラーは、ホンダ車を購入する消費者は迷わずこのサービスに加入するものと決めつけている。しかし、大枚をはたいてようやく新車を手に入れてもなお、月々2000円弱の「会費」のようなものをカーナビの使用料として払い続けなくてはならないと知ったら、多くの消費者は「だまされた」とか「弱みにつけ込むな!」と怒るはずである(私は怒った)。この「カーナビ使用料」というのは、google mapの使用料みたいなものである。つまり、新しいCivicのカーナビを利用するためには、google mapというアプリへの「課金」を認め、毎月二千円近く払わなくてはならない、とディーラーに説明されたのである。

これまで乗っていたドイツ車のカーナビは、地図データの更新は2、3年に一度しかやってくれないが、サブスク料というものはない。いわば「無料」である。(もちろん、地図データ更新の際の諸費用を考えれば、月々2000円のサブスク料と同程度なのかもしれないから、この計算は後でやっておく必要あるかもしれない。)ホンダのGathers系カーナビも昨年まではクラリオン社のカーナビをベースにした「備え付け」系のカーナビであったから、取り付け費用は高いが、一度導入すれば「無料」であったはずである(地図データの更新で数万円取られたかもしれないが、それは2、3年おきのことである)。クラリオン(かつては日立の系列)やパイオニアなど日本で始まったとされる「カーナビ」というデバイスは、そもそも地図データをシステムに一括保存する手法を採用していた。地図データはCDやDVDなどで提供されていたが、そのうちUSBメモリなどに移行し、近年はWiFiなどを利用したオンライン転送へと進化したはずである。そしてその最後のステージのところで、IT産業との競争となり、どうやら連敗の様相がここにきて強くなっている模様である(クラリオンはフランスの企業に買収されてしまったり、パイオニアパナソニックは事業を継続しているようだが、googleAppleとの競争は激しさを増しているようで、旗色がだんだん悪くなっているという噂である)。オンラインに常時接続されていれば、地図データ更新のためのCD/DVDを購入するという商スタイルは「時代遅れ」となるはずで、これはまさに音楽CDや映画DVDがappleiTunesamazon primeに潰された状況と同じである。まったく気がついていなかったのだが、カーナビで今この現象が繰り返されているのであった。

iTunesについては、パスワード失敗時のアカウント復活手続きがひどく面倒である点を除いては、あまり不満をもっていないが(youtubeの公式チャンネルなどで試聴できるので)、amazon primeには激怒している。無料で試聴したい作品が期間限定であったり、セールス、プロモーションの関係で視聴不可になったりならなかったり、あるいは、こちらの試聴パターンを解析して作品の有料化をコントロールしたりと、消費者の動向を監視して自由を奪っているように見える点に強い不満をもっている。

カーナビの地図データに関しても、ビッグデータと称して、自動車の位置やら運転の傾向などといった細かいデータを収集するだろう。たとえば、車でないと行き着けないような山間の洒落たカフェを「自分だけの隠れ家」だと思って時折通っていたところ、その行動データをカーナビに盗み取られ、(google検索を介して)ネットで公開されてしまったらどうだろうか?久しぶりに行ってみたら、外国人観光客で溢れていて順番待ちになるほど混雑してしまった、なんて状況だってありうるのである。また、オレオレ詐欺やら車の盗難など、犯罪者たちはGPSを使って個人の行動パターンを知ろうと血眼になっている昨今の現況もある。地図情報というのは意外に「究極の個人情報」である可能性があるのである。ということで、googleなどIT大手に自分の地図データを「ビッグデータ」と称されて盗み取られるのは非常に嫌である!ということで、次のことに興味を持った次第である。すなわち、

ホンダコネクトというサービスに加入しなくても、新しいcivicでカーナビ(のようなもの)を利用することは可能なのであろうか?

私が興味をもっていた「カーナビの考察」というのは、この一点に尽きる。何回かに分けて、この可能性を探ってみたいと思うのである。まずは、ホンダコネクトというサービスについて「説明」しているHPへのリンクを紹介しておこう(その内容は非常に分かりにくいが)。ホンダコネクトに加入しなくも大丈夫かどうか気になる人にとって、このHPから得られる情報は正直ほとんどないと言っていいだろう。加入するのが当然という書きぶりになっているからである。(つづく)

www.honda.co.jp

エルチカのためのシミュレータをpygameでつくる:一つ目エルチカ

これまでの経過

派手なエルチカモードの開発を計画しているが、実機でやる前にソフトウェアでシミュレーターを作ってからやってみようと思う。そこで、pythonpygameというパッケージを利用することにした。基本的な枠組みを理解し、アニメーションをpythonで制御するところまで前回はたどり着いた。

今回は、いよいよLEDをチカチカさせるところまでの挑戦だが、まずは結果から。

youtu.be

こんな感じのLEDシミュレータを7つ並べて7ビット2進数表現を光で行うのが最終目的である。7ビットというのはアスキーコードの仕様である。文章を文字列で扱い、それを2進数へ変換した後、LEDシミュレータに送り込んで「一文字」ずつ光らせる、という手順である。

pygameを使ったプログラミングの基礎

まずはpygameのパッケージを読み込む。

import pygame

これだけ書いて実行すると

% python3 led0.py

pygame 2.6.1 (SDL 2.28.4, Python 3.12.3)
Hello from the pygame community. https://www.pygame.org/contribute.html

というメッセージが出て、自動的に終了する。これがpygameへの第一歩である。

次に手続き(おまじない)として、初期化と処理の終了の宣言を書く。

import pygame

pygame.init()

pygame.quit()

どちらもpygameクラスに含まれるメンバー関数(pythonではメソッド関数、あるいはメソッドという場合が多いらしいが、python foundation のdocsではメソッドを主にしつつも、両方使っている)である。こちらのHPによると、init()は初期化に成功したpygameモジュールの数と、失敗した数をペアにして返値としているらしい。quit()はvoid型らしい。さっそく確認してみた。

import pygame

nReturn = pygame.init()
print(*nReturn)
pygame.quit()

実行したら"5 0"という表示が出た。5個初期化に成功したというが、一体何だろうか?(確認の仕方はまだ知らないので、今回はここで終わり...)

「ゲームプログラミング」の基本

ビデオゲーム」というのは、双方向通信が可能なインターアクティブなアニメーションのシステムである。逆に、この内容を持っているプログラムは「ビデオゲーム」だけとは限らない。いわゆるchat式AIなどに動画などによるレスポンスを組み込んだシステムや、アバターを介してコミュニケーションを行うネット上のバーチャル世界(メタバースなど)なども「インターアクティブアニメーションシステム」と言えるだろう。したがって、pygameで扱えるプログラムはゲームに限らないのだが、面倒臭いので、このようなタイプのプログラミングを一律に「ゲームプログラミング」と呼ぶことにしよう。

pygameの仕様について色々試行錯誤してみた結果、ゲームプログラミングというのは結局3つの要素から構成されていることがわかった。

  1. アニメーションのタイミングの管理
  2. 双方向イベントの管理
  3. 描画スクリーンの管理

アニメーションなので描いた絵が動き回るわけである。したがって、そのタイミングの管理が必要になる。次に、ゲームというのは、ビーム砲を連射したり、右に左に弾幕を避けたりするわけで、プレイヤーの操作とゲームの反応イベントの組み合わせ、あるいはゲーム中の発生イベントとそれに対する反応操作の組み合わせによって成立している。つまり、イベントという概念が重要になる。これもプログラムによって管理しなくてはならない。最後に、アニメーションというのは無数の静止画を少しずつ変化させて表示し直す(再表示)システムであるから、基本である画像表示を管理しなくてはならない。

これら3つの管理を統合的に行うと、ゲーム、つまり双方向にインターアクティブなアニメーションシステムが成立する。

pygameでも、これら3つの要素を組み合わせているので、その要素を過不足なく書き下した時初めて「システム」として動き出す。この観点から「最低限」のpygameプログラムを考えてみたら次のようになった。

import pygame
pygame.init()

screen = pygame.display.set_mode((WDT,HGH))
clock   = pygame.time.Clock()
event   = pygame.event.get()

pygame.quit()

(WDT,HGH)はゲームスクリーンのサイズである。具体的な数字を与えてから実行すると、一瞬スクリーンが表示され、そしてすぐさま終了する。エラーが出ないはずなので、これが「最低限」だと思われる。

フレームとフレームレートの設定

人間が視認できる時間間隔はどのくらいだろうか?Xeviousのプロゲーマーは除外するとして、大抵の場合は1秒程度ではないだろうか?そこで、上の「最低限プログラム」が1秒程度は継続するように修正を入れてみたい。

これはFPS、Frame per Second、によって管理する。フレームというのは静止画1枚分のことである。少しずつフレームの内容を変化させながら、次々に入れ替えるとアニメーションになる。この入れ替える間隔(タイミング)のことをFPSという。大抵のゲーム機では60が設定されているようだが、これは1秒間に60回フレームが変化するという意味である。かなりのスピードであるから、このFPSでのフレームの切り替えが見える人は、もはや「Xeviousのプロゲーマー」を超越しているのではないだろうか?

我々凡人はFPS=1、つまり1秒で1枚(1フレーム)を試してみよう。これなら、切り替えの変化に気づくはずである。また、これは1秒間同じフレームを表示し続ける、という意味になるので、上のプログラムが1秒間持続する、という意味にもなる。

import pygame

WDT=500; HGH=500; SCRsize=(WDT,HGH)
FPS=1

pygame.init()

screen = pygame.display.set_mode(SCRsize)
clock   = pygame.time.Clock()
event   = pygame.event.get()

clock.tick(FPS)
pygame.quit()

実行は、上のコードをpygame-min.pyと名付けたならば、

% python3 pygame-min.py

とやる。

先ほどは一瞬で消えてしまったゲームスクリーンが「ゆっくり」消えるのがわかるだろう。計測してみれば、おおよそ1秒間コンピュータのスクリーンに表示されているはずである。ためしにFPS=60に変更すると、一瞬で消えてしまうだろう。

clock.tick(FPS)という命令は、pygameクラスのtimeという属性を管理していることになる。プログラム中ではclockというオブジェクトとして具体化されている(インスタンスというのだろうか)。tickというのは時計の秒針が出す音(チクタクのチク)を意味する英語である。FPSを省略してprint(clock.tick())とやると、tick()とtick()の間の時間間隔を測定することができる。これは別の機会に試してみよう(今回は省略)。

スクリーンの変化の管理

ゲームはアニメーションなので、スクリーンに何か変化を持たせたい。そこで背景の色を変えてみる。今度はpygameクラスのdisplay属性を管理することになる。プログラム中ではscreenというインスタンスを通じてアクセスできる。変化を指定しても、その変化を画面に「反映」させなくては、変化を視認することができない。この「再描画」の処理はscreenというインスタンスではなく、display属性全体にかけなくてはならないようで、次のようにcodingしないとうまくいかなかった。

import pygame

WDT=500; HGH=500; SCRsize=(WDT,HGH)
FPS=1

pygame.init()

screen = pygame.display.set_mode(SCRsize)
clock   = pygame.time.Clock()
event   = pygame.event.get()

screen.fill("green"); pygame.diplay.flip()
clock.tick(FPS)
pygame.quit()

イベントの管理

最後はイベントの管理である。イベントは、get()メソッドで読み取るまでのすべてのイベントがメモリに積み重なっていく。あまり時間をかけすぎるとメモリーに負担がかかるので、適当なタイミングでリフレッシュした方がいいだろう。FPS=1というのが、ほぼ目安になると思う(FPS=10分とかにすると、膨大な量のイベントがキャッシュに溜まりかねない)。

プログラムが起動した直後に基礎的なイベントがたくさん記録され、「シーケンス」型で保管される(配列、あるいはリストのようなもの)。調べてみたらその数は12であった。どんなイベントがあるか表示させてみた。

import pygame

WDT=500; HGH=500; SCRsize=(WDT,HGH)
FPS=1

pygame.init()

screen = pygame.display.set_mode(SCRsize)
clock   = pygame.time.Clock()
event   = pygame.event.get()

screen.fill("green"); pygame.diplay.flip()
clock.tick(FPS)
print(event, len(event))

pygame.quit()

実行結果は次のとおり。

% time python3 pygame-min.py

pygame 2.6.1 (SDL 2.28.4, Python 3.12.3)
Hello from the pygame community. https://www.pygame.org/contribute.html

[<Event(4352-AudioDeviceAdded {'which': 0, 'iscapture': 1})>, <Event(4352-AudioDeviceAdded {'which': 1, 'iscapture': 1})>, <Event(4352-AudioDeviceAdded {'which': 0, 'iscapture': 0})>, <Event(4352-AudioDeviceAdded {'which': 1, 'iscapture': 0})>, <Event(32774-WindowShown {'window': None})>, <Event(32770-VideoExpose {})>, <Event(32776-WindowExposed {'window': None})>, <Event(32768-ActiveEvent {'gain': 1, 'state': 2})>, <Event(32785-WindowFocusGained {'window': None})>] 9

python3 pygame-min.py  0.12s user 0.08s system 11% cpu 1.746 total

実行時間は1秒と少し。この「少し」の部分はpythonシステム自体の起動に要する時間などである。したがって、FPS=0.5としても少数以下の部分はあまり変わらないはずである。実際に実験してみると、予想通り2.746となった。

記録されたイベントは9個であり、Audioシステム接続のイベントやビデオ関係のもの、そしてウィンドウ表示関連のものが記録されている。

次に、自分自身のイベントを表示させてみる。例として、ウィンドウに付属している「停止ボタン」(Windowsの場合は右上の「閉じるボタン」(赤いXボタン)、macOSの場合は左上の赤丸ボタン)を押して、そのイベントの記録の表示にチャレンジしてみよう。

FPS=1の場合、マウスポインターをウィンドウ角に移動させ、ボタンを選んでクリックするまでに5秒くらいは必要なので、forを用いて5回の「フレーム」を作ることにする。

import pygame

WDT=500; HGH=500; SCRsize=(WDT,HGH)
FPS=1

pygame.init()

screen = pygame.display.set_mode(SCRsize)
clock   = pygame.time.Clock()

for i in range(5):
    event   = pygame.event.get()
    screen.fill("green"); pygame.display.flip()
    clock.tick(FPS)
    print(event, len(event))

pygame.quit()

実行時間は5.763秒。予想通りである。実行結果の表示は次のとおり。

0 [] 0
1 [<Event(32768-ActiveEvent {'gain': 1, 'state': 1})>, <Event(32783-WindowEnter {'window': None})>, <Event(1024-MouseMotion {'pos': (86, 29), 'rel': (0, 0), 'buttons': (0, 0, 0), 'touch': False, 'window': None})>] 3
2 [<Event(1024-MouseMotion {'pos': (17, 0), 'rel': (-69, -40), 'buttons': (0, 0, 0), 'touch': False, 'window': None})>, <Event(32768-ActiveEvent {'gain': 0, 'state': 1})>, <Event(32784-WindowLeave {'window': None})>, <Event(32787-WindowClose {'window': None})>, <Event(256-Quit {})>] 5
3 [] 0
4 [] 0

実行してから最初のフレーム(0フレーム)には何のイベントも記録されていない。私が反応しきれなかったのである。第1フレームでマウスの動きが記録されている。そして第2フレームで256-Quit、つまり「閉じるボタン」が押されたことが記録された。私の反射神経だと実行してからボタンを押すまでに3秒が必要であることがわかった(笑)。

このようにイベントの記録を分析しながら、次にどういう動き、アニメーションをさせるかプログラムしていくのが「ゲームプログラミング」である。シューティングゲームなどではFPS=1のような「たるい」タイミングではイライラが募ることであろう。一方、オセロゲームのようなものであれば、FPS=1にした方がいいのかもしれない。コンピュータとしてはなるべく早く処理したいので、FPSは大きい方が嬉しいはずだが、人間の動きが追いついてくるまで「待たねば」ならないのである。ゲームというのは、実に人間よりの、コンピュータには気の毒なプログラムなのである....。

(つづく)