未来のトラックにおけるクリスタル駆動ダッシュボード

Nikola Motor Companyは、グローバル規模で輸送業界を変革し、破壊することを使命としており、Crystalはそのソフトウェアを支えています。同社は、バッテリー電気自動車(BEV)と水素燃料電池車(FCEV)、車両部品、エネルギー貯蔵システム、電気自動車用ドライブトレインを設計・製造しています。これらは未来のトラックです。
Nikolaは、すべて非常に革新的で高性能な、いくつかの異なる車両を開発しています。クラス8の電気セミトラック3モデル(Nikola One、Nikola Two、Nikola TRE)、オフロードの全電気自動車2台(Nikola NZTと軍用グレードのOHVであるReckless)、そして電気水上艇のNikola WAVです。エネルギーの生産から消費まで、同社は完全なゼロエミッションを目指しており、2020年のNikola TREのテストと検証から始まり、今後数年間で生産に移行しようとしています。
同社の重要な焦点の一つは顧客体験です。速度、快適性、安全性が、あらゆる活動に意図的に統合されています。その一環として、車両には最先端のデジタルコックピットが装備されています。車両のほとんどの機能と運転制御は、Crystalで開発された中央の17インチタッチスクリーンインフォテインメントと12.8インチのインストルメントクラスターを介して操作されます。
このことを知った私たちは、Nikola Motor Companyの最高情報責任者兼ソフトウェアアーキテクトであるIsaac Sloan氏に連絡を取り、詳細を学ぶことをためらうことができませんでした。
Crystalとのストーリーはどのように始まりましたか?
以前勤めていた会社では、約4年間主にJavaを使用していましたが、2005年にRubyについて知ったとき、「こっそりと」多くのコードをRubyに移行し始めました。会社が気付いたときには、書き直そうとしましたが、それがどれだけ多くのことを実現できるかを見たとき、Rubyを使い続けることを許されました。
2015年3月頃、Mountain West Ruby ConfでCrystalについて知り、趣味のプロジェクトをすべてCrystalで書き始めました。数ヶ月後、メモリを大量に消費するアプリケーションでいくつかの課題があり、Crystalでいくつかのボトルネックを書き直し、残りをRuby/Railsに残し、NginXでプロキシしました。これが問題の解決に繋がることが証明されました。それ以降は、自然な移行でした。
現在、Crystalを何に使用していますか?
インフォテインメント、インストルメントクラスター、テレマティクスシステム(車両とクラウド間の通信)はすべてAmber Frameworkを使用してCrystalで記述されており、すべての車両に組み込まれています。主に、異なる権限を与えるために個別に実行するのが理にかなうため、3つの異なるCrystalアプリケーションがありますが、それらはすべて統合されています。ルートとして実行され、権限を処理する1つ、ユーザーインターフェースとして動作する1つ、クラウドと通信する1つです。Crystalはすべてを統合する接着剤です。プラットフォームのすべてのコンポーネントを接続するアプリケーションはCrystalで記述されており、x86アーキテクチャをターゲットにしていますが、Raspberry Piでもコンパイルできました。
このプロジェクトで他の選択肢ではなくCrystalを選んだ理由は何ですか? Crystalで開発したソフトウェアは、他の言語で記述したソフトウェアよりもパフォーマンスが良いと思いますか?
いくつかの異なる代替案について話し合いました。Rustは作業に適しておらず、私たちのニーズには少々オーバースペックでした。Electronはバックエンドにnode.js、フロントエンドにChromiumを使用しますが、私たちの用途ではメモリを消費しすぎました。本質的にはElectronのパラダイムに従っていますが、node.jsの代わりにCrystalを使用してすべてのAPIとHTMLを生成しています。
例えば、Goの2倍の速度で、はるかに高速です。当初はGoを使用しようとしましたが、それは1.0であり、非常に人気がありましたが、私たちの経験ではCrystalはGoよりもパフォーマンスが優れており、より楽しく記述できます。投資家と利害関係者の両方が、インフォテインメントシステムとその実行速度を気に入っています。
私たちがやろうとしていることには、CまたはC++が標準です。また、html、javascript、chromiumなどのWebユーティリティやWeb言語を使用しようとしています。非常に小さなプロセッサとモバイルデバイスでインターフェースとして機能することを証明したWebOSプロジェクトの多くの人々と話をしました。
CrystalでCバインディングを記述することも比較的簡単です。PythonやRubyでは、Cライブラリにバインディングやラッパーがない場合は、はるかに時間がかかります。私は長年、サーバーとクライアントでCrystalを使用してきましたが、一度もクラッシュしたことはありません。「破壊的な変更がない」という意味では安定しているとは限りませんが、コンパイルされるとクラッシュしないという意味では非常に安定しています。いずれにせよ、Javaよりも安定しています。
NikolaでCrystalの使用を開始したのはいつですか?以前のプロジェクトで使用しましたか?
2年以上コードベースに含まれています。このアプリケーションの複数のイテレーションを経て、現在、生産目標を達成しようとしています。自動車業界では、すべての検証に多くの時間がかかり、その過程で利害関係者から変更が要求される場合があるため、常に進化しています。
今後のプロジェクトでCrystalの使用を拡大する予定はありますか?
現在、安全性とセキュリティの観点からすべてを検証しています。今後数ヶ月で、リモートコントロール用の携帯電話とのインターフェースに取り組みますが、これらはすべてCrystalアプリと統合されます。

Isaac Sloan、最高情報責任者兼ソフトウェアアーキテクト、Nikola Motor Company
Crystalでの作業が大好きです。当初のRubyのような幸福感があり、コミュニティは本当に素晴らしいことをしています。