テスラのある生活
とあるソフトウェア開発者から見たテスラの魅力
2022.06.04
こんにちは。テスラモデル3オーナーのkenmazと申します。
テスラはハードウェアとしてだけではなく、ソフトウェアの面からみても、非常に革新的な電気自動車です。私はソフトウェア開発者で、ここ10年ほどは主にiOSなどのモバイルアプリ開発を専門としています。自動車関係のソフトウェアの知識は全くありませんが、それでもテスラのソフトウェア面には多くの魅力が詰まっていると感じます。
テスラを納車したのは2021の3月です。私は現在41歳ですが、マイカーを所有するのは人生で初めてのことです。首都圏に住んでいるので普段の生活では自動車は必須ではなく、どうしても必要なときにシェアカーで借りれば十分、という程度の存在でした。
テスラという存在自体は以前からなんとなく知っていましたが、その存在をよりはっきりと認識するようになったのは、中島聡さんの「週刊 Life is Beautiful」というメールマガジンがきっかけだったと記憶しています。
中島聡さんと言えば、かつてマイクロソフト社でWindows95の開発にも携わっていたという、ソフトウェア開発者界隈では非常に有名な方です。バックナンバーを遡ってみると2013年ごろからテスラについて言及されており、その当時から10年後にはAppleのような存在になっている可能性があると予測されていました。このブログを読んでおられる古くからのテスラオーナーの方もきっと同じような感覚でテスラに注目されていたのではないかと思います。
一方、当時の私としては「なんだかよくわからないけど米国では結構伸びてきている会社らしい」という程度の認識でしかありませんでしたが、テスラに関するニュースを見聞きするにつれて、どんどんとその革新性に魅了されていき、憧れとなってきました。
テスラ自体が素晴らしいのはわかったものの、日常生活ではマイカーは必要ないし、そもそもマンション暮らしなので駐車場や充電設備の問題もあるし・・ということで購入にまでは至りませんでした。まだ憧れのままでした。
そんな中コロナ禍に突入しました。今までは家族でいろんなところへ電車で出かけていましたが、行動が制限され、それもままならなくなりました。その辺りからぼんやりとマイカーが欲しいなという気持ちになってきました。そして、ちょうどその辺りからテスラの勢いがすごいというニュースをよく聞くようになりました。株価もすごい勢いで上昇しています。
テスラAPIの存在を知ったのもちょうどその頃でした。APIとはApplication Programming Interfaceの略で、ソフトウェアの機能を外部のソフトウェアから呼び出したり利用するための仕組みのことです。なんと、テスラにもAPIが非公式ではあるものの、一般の開発者からもアクセス可能になっている、ということをネットニュースで知りました。
ここで、iOSエンジニアとして10年以上働いてきた筆者のアンテナが強く反応しました。APIがあれば、もしかしてテスラを自由に操ったり、データを閲覧するアプリが作りたい放題では・・!?と。
時を遡ること14年前の2008年、日本ではiPhone3Gが発売されました。当時のオタクたちはiPhoneの登場に熱狂していましたが、ソフトウエア開発者にとってはiOS SDK(当時はiPhone SDKと呼ばれていました)がリリースされたことも大ニュースでした。iOS SDKとはiOSアプリを開発するためのAPIと、その開発を支援するためのツールやドキュメントなど一式のことを指します。
それまでのアプリケーション開発と言えば、主にパソコン、ガラケー、Webブラウザ上で動作するものが主でした。特に、高度なグラフィックスやオーディオを扱うアプリケーションを作って多くの人に届けるのは非常に難易度が高いものでした。そのような状況が、iOS SDKの登場によって大きく変化しました。携帯電話という非常に身近なデバイス上でありながら、ガラケーとは比較にならない処理能力を駆使した、高度なアプリケーションが非常に手軽に多くの人に届けることができるようになったのです。
私も当然その魅力に取り憑かれ、すぐにiPhone3Gの購入列に並び、同時にMacBookを入手してAPIを学び、実際にアプリを何本かリリースしていくうちに、気がついたらそれが職業になっていました。
このようにソフトウェア開発者、とくにモバイルアプリ開発者という人種は「APIが公開されている」というニュースに対しては強く反応する性質を持っているようです。テスラAPIを知ってからは「これはなんとしてでも購入せねば」という気持ちで2021年の正月を迎えることになりました。
ここから先はラッキーが続きました。懸念であった駐車場は、マンションの目の前の駐車場でたまたま空きが出ました。充電については、自宅充電は厳しいものの、自宅の近所に川口スーパーチャージャーがちょうど設置されました(しかもv3!)。そして価格も(今では考えられませんが)150万円の値下げが行われ、お財布にも優しくなりました。
たくさんの幸運に恵まれながら2021年3月に無事、テスラモデル3ロングレンジモデルが納車され、今に至ります。
納車されたからには、ドライブはそこそこに、さっそくアプリの開発を開始しました。これまで仕事や趣味でiOSアプリはたくさん作ってきましたが、ちゃんとしたApple Watch向けアプリを開発するのは今回が初めてでした。仕事の合間を縫って、テスラAPI自体とWatch OSアプリ開発について色々調査しながら開発を行った結果、2週間ほどでアプリが完成しました。
私が開発したのは「S3XY Key Fob」というアプリです。Apple Watchからテスラを操作することができます。
アプリが実際に動作する様子はこちらの動画をご覧ください。
https://www.youtube.com/watch?v=PjWa-Is3FZk
腕に装着したApple Watchから、テスラの施錠・解鍵、フランクやトランクの開閉、エアコンのON/OFF、バッテリー残量確認、などができます。
当初はスマホキーを車内に置き忘れてロックされてしまったような緊急時用にと作ったのですが、幸いそのような場面にはまだ遭遇していません。主にフランクをさっと開けたり、出発前にエアコンをONしたり、といった場面でよく使っています。
将来的にテスラが公式にApple Watch用のアプリをリリースすれば不要になるアプリではありますが、それまでは愛用していこうと思います。
ありがたいことに先駆者たちがテスラAPIについて徹底的に調査してくれていたので、APIの使い方はすぐに把握できました。
またiOSアプリからテスラAPIを簡単に叩くためのライブラリまで公開されています。
https://github.com/jonasman/TeslaSwift
ライブラリとは再利用しやすいようにまとめ上げられたプログラムの部品のようなものです。上記のライブラリの場合であれば、テスラAPIに実際にアクセスする部分はライブラリに任せて、自分は残りの部分だけを開発していけば良いので、プログラムの開発が非常に効率よく行うことができます。
これらの情報やライブラリのおかげで、想定していたより簡単にアプリを開発できました。
さて、テスラAPIが提供する機能についてざっくりと紹介しておきましょう。APIには主に(1)リアルタイム車両情報取得、(2)車両操作、の2種類のAPIが使用可能です。
これらのAPIを組み合わせることで、S3XY Key Fobのようなリモコンアプリを開発したり、TeslaFiのようなデータの蓄積・閲覧アプリを開発することができます。API一覧を眺めながら、どんなアプリが実現できそうか、考えるのも楽しいですね。
テスラAPIに関する技術的な詳細については、iOSDCというイベントで発表した資料があるので、興味のある方はそちらもご覧ください。
https://fortee.jp/iosdc-japan-2021/proposal/2c056306-0c68-488b-93ec-3aaee820efa8
ちなみに、当然ながら私以外のアプリ開発者の方々によってもたくさんのテスラ用アプリがリリースされています。そこで気になるのがセキュリティについてです。テスラアプリを使うためには、まずテスラアカウントのIDとパスワードをアプリ上で入力する必要があります。よくわからない第三者が作ったアプリに重要なIDとパスワードを入力するなんて恐ろしい、と感じる方も多いと思います。
テスラAPIは、業界標準の「OAuth2.0」という認可方式を採用しています。詳細な説明は省きますが、ID・パスワードによる認証自体はテスラ社側で行い、認証した結果取得できる「アクセストークン」のみを第三者アプリ側に渡す、というような方式のことです。アプリからは、このアクセストークンを使って対象となる車両と通信を行います。
これにより、ID・パスワードを第三者に渡すことなく、テスラAPIへのアクセス権限のみをアプリに与えることができます。また、仮に取得したトークンが悪意ある第三者に盗まれたとしても、利用者側でトークンを失効させることができるので、悪用を最小限に抑えることができます。
とはいえ、テスラAPI自体、テスラが公式に公開しているものではないので、私のアプリを含め第三者が開発したアプリを使用する際は十分に注意する必要があります。
自作アプリをリリースしてからしばらく経ちますが、肝心のテスラAPIについてはそれほど大きなアップデートはありません。テスラ社としても開発リソースにそんなに余裕があるわけでもないでしょうから、まずは製品開発に全力投球といったところかと思います。
アプリ開発者としては、ぜひテスラAPIだけではなく、iPhoneやiPadのようにテスラ車内のコンソール上で動作するアプリケーションを開発するためのSDKなどを公開してくれることを大いに期待しています。
私のS3XY Key Fobについても、Siri対応など機能拡充を進めていきたいと思います。こんな機能がほしいよ、というアイデアがあればぜひ聞かせてください。
以上、とあるソフトウェア開発者が、元々車自体には全く興味のない状態から、テスラの存在を知り、魅力に取り憑かれ、購入し、アプリを開発するに至るまでの経緯についてご紹介しました。
テスラのある生活 /その他の記事