Designworksを通じ、2016年からPlaydateに取り組んでいます。Engineeringの紹介だったそうです。「彼はPlaydateを構築するための複雑なプロセスのナビゲーターとして推薦されました。これまでコンサルタントとして様々な会社で何度も経験を積んできた人物です。私たちにとって非常に貴重な存在です。彼はマレーシアのS&Oという製造会社を見つけてくれました。過去に多くのプロジェクトを一緒に行ってきた実績があり、Playdateのための部品の調達方法やカスタムパーツの設計方法も教えてくれました。彼はPlaydateの工学エンジニアリングの多くを担当しています。彼の存在無くしてPlaydateは存在しなかったと言っても過言ではありません。「私はハードウエア製品を作るために必要なすべての異なる分野で、総合的な調整役です。メカニカルデザインにおいても貢献しました。妻のJessicaは品質管理の面で貢献しています。私は電子技師、ファームウエアデザイナー、製造会社、Panicの幹部と協力し、仕様を改良しています。Frankと区別するため、親しみを込めてファーストネームで呼んでいきます。Engineeringと幅広く協力してきました。工業デザインと初期の機械工学の概念が完成したらMetricにパスし、フィニッシュに到達できるようアドバイスしました。私たちはそれに集中でき、実際にPanicと共に体験し、ガイドできたと思います。」それは複雑なプロセスでした。Playdateのハードウエアとソフトウエアは連携して開発され、それぞれが他方の開発に依存しています。「このプロジェクトの最も困難な部分は、物理的な部分のみならず、内部もカスタムであったことでした。「つまり、ソフトウエア、オペレーティングシステム、ファームウエアといった、物理的な製品をゲーム機たらしめるすべてのものです。ハードウエアのカスタマイズにソフトウエアがその都度追いつく必要があったため、望むほど速く開発を進めることができませんでした。ソフトウエアを入手してロードし、課題を見つけたら物理的、電気的に検証していく必要がありました。並行して作業を進めていましたが、ある時点で一緒にテストをすると変更しなければならない箇所が出てきました。ひとつのことが他方に影響を与え、プロセスが長くなりました。私たちはそれを受け入れるしか無かったのです。第5章、ソフトウエア開発もハードPlaydateはハードウエアのプロジェクトとして注目されていますが、ソフトウエアやファームウエアコンポーネントも沢山あり、デバイスだけで無く、互いに連携しなければなりません。トップレベルにあるのは、開発者がPlaydate上で動作するように製作されたゲームです。ゲームの実行と、デバイス全体を管理するオペレーティングシステムがあり、その下に様々なハードウエアコンポーネントと直接連携するファームウエアがあります。デバイス上のソフトウエアとファームウエアに隣接して、ゲーム開発者がコードを書くために使用するソフトウエア開発キット(SDK)と、ゲーム開発者がコードを実行、テスト、デバッグするためのMacおよびPC/Linux用のエミュレータがあります。Playdateの組み立てラインでは、生産用のソフトウエアがあり、生産の各段階での診断テスト用デバイスがあります。Mooreは組み立てラインで動作するソフトウエア構築を担当するエンジニアです。MooreはすべてのPlaydateが規定通りに動作しているかを確認するためのQAに取り組み、素晴らしい仕事をしてくれました。」とGregは言います。「これまでハードウエアのQAを行ったことがなかったので、これは大きな学習でした。PanicではソフトウエアのQAを担当しており良く知っていますが、それをハードウエア上で行うのは全く違う命題です。Playdateの様々な側面をテストするため、様々なステーションを設置しています。Jamesはそのソフトウエアをゼロから構築するという素晴らしい仕事をしてくれました。「工業機械のソフトウエアはかなり変わっています。いうのも多くのテスト機器と接続する必要があり、それらはすべてシリアルポートを介しテキストベースのプロトコルが使われています。90年代に学んだ知識を蘇らせて工業用ロボットと会話したり、テキストベースのメッセージを処理したりすることはとても楽しかったです。JSONを使ったサーバ・クライアント通信など、今日とは全く違うものです。これらのテスト機器はそれぞれが独自の方法で何を見ているのか、どんな値が知りたいのかを教えてくれます。Pi上で動作しているため、処理能力に制約があります。私たちのテストの中には高い処理能力を必要とするものがありますが、このようなデバイスを組み立てるラインでの作業は、今まで見たこともないマーフィーの法則の実践が必要とされます。うまくいかないことは絶対にうまくいきません。マレーシアに行った時、バグを潰しては次のバグを潰す、ということを何日も続けて行ったことがありました。オフィスではうまく行っていても、実際の現場では様々な問題が発生します。組み立てラインは生き物で、オフィスでは再現できません。Wardも電気工学と組み立てライン用のソフトウエア開発を行ったひとりです。「私が学んだのは、1台1台本当に小さなバラつきがある、ということです。それを考慮しないでソフトウエアを開発すると失敗します。ポートランドのオフィスでソフトウエアを書くのと、マレーシアで300台のユニットに適用するのとでは全く別の話で、大抵どこかで必ずエラーとなり、それに対応しなければなりませんでした。それが理解できたのは実際に現地に行き、プロセスや作業員の行動を見たことが大きかったです。」と、Dakotaは言います。「たとえ同じテスト用の治具があったとしても、10人が同時に別々の場所で作業することはできません。「私がテストコードのバグを修正しようとしている時、時を同じくしてDaveはファームウエアに変更を加えているかも知れません。それは私に見えている問題のための対処かも知れませんが、私も作業してしまっています。その結果意図しない結果が生じ、組み立てラインの他の場所で新たな障害が発生する可能性があります。」Daveはそれを淡々と受け止めます。「そう、まさにMarcの今の課題です。JessomeはPlaydateのファームウエア開発のためチームに加わりました。「Marcはシニアファームウェアエンジニアのひとりで、Pebbleという腕時計と、Fitbitの開発に関わった後、私たちのチームに加わりました。彼はハードウエア製品を実際に出荷したことがあります。私たちはそうではありません。彼はすぐに私たちのやるべきことを理解し、WiFiの高速化や消費電力の削減、ダウンロード処理の高速化などに取り組んでくれました。製品に必要な信頼性や速度の向上に関わる、本当に必要な部分で、彼の働きは非常に大きな助けになっています。」とGregは語ります。「私たちは小さなチームであり、その事実を楽しんでいます。ファームウエアのすべての部分で作業できるということを意味します。修正が必要な箇所があれば、それは単に自身で調べて対処すればいいのです。私がチームに加わってすぐ、オースティンに招待され1週間かけてDaveと親交を深めました。現地で作業を行いました。この1週間で物事がどのように機能するかを深く理解できましたし、計画ややりたいことを話し合いました。貴重な時間でしたし、Daveと一緒に過ごせて良かったです。」そうでしょう!Daveは美味しいバーベキューの店を知り尽くしています。「そう、彼は私を素晴らしい場所に連れて行ってくれました。お店の名前は思い出せませんが、ハイウェイの脇にある小さなトレーラーのようなところで、最高のテキサスバーベキューでした。」バーベキューが気になりますが、話をファームウエアに戻します。「ファームウェアの開発はソフトウエアとハードウエアの融合です。」Marcが説明してくれます。「私が担当しているのはデバイス上でゲームを動作させるためのオペレーティングシステムであり、ゲームがハードウエア自体と相互作用するためのものです。Playdateにはユーザが操作できるボタンがあり、それが押されたことをゲームは知る必要があります。ハードウエアとのインタラクションを、デバイス上で動作するソフトウエアが利用できるようにするのです。「私たちはすべてゼロから自身で開発しているので、どのように機能しているかを正確に知っています。最近のデスクトップOSは物事が機能し無くても、その原因ははっきり分かりません。運を天に任せているようなものです。」とDaveは言います。「最終的に何が問題なのかを解明できる、ということを私たちが分かっているのは良いことでもあり悪いことでもあると思います。最下層のレベルではスタックの最下層でコードを書けるんです。それは本当に楽しく、物事の根幹に深く入り込めます。」Marcが続けます。「信頼性の高いファームウエアのアップデートは、このデバイスにとってかなり大きな課題でした。そのためにはすべてのものが調和し、動作する必要があります。WiFi、アップデートを提供するウェブサービス、デバイス上のストレージなどです。アップデートを成功させデバイスを故障させないために、すべてのコンポーネントが適切に配置されている必要があります。私たちは何百、何千のデバイスを壊してしまうような悪いファームウェアを共有したくありません。人々が楽しい時間を過ごせるようにすると同時に、せっかくの素晴らしいデバイスが文鎮化してしまうようなことが無いようにしたいのです。これはストレス的な面でも、技術的な面でも、楽しさの面でもチャレンジです。「かなり、スリリングです。「奇妙な夢を見ていたと思ったら、地球の反対側にある工場でそれが実現しているんですからね。第6章、何度も何度も繰り返す「これは反復的なプロセスです。「最初のプロトタイプができました。OK、コンセプトが証明でき、これならできそうだ、と。続けて再び大まかに形作り、みんなで触って、座って、今の状態が気に入ったか批判する箇所があるかを評価して、それから次のステップに進むんです。Playdateプロジェクトでは、全員が満足できるものに仕上げるため、何度も何度も繰り返し評価してきました。時にはもどかしいプロセスでもありました。評価を繰り返すたび、新たな解決すべき問題が噴き出してくるようでした。Gregは2018年10月に工場を訪れた際、少しやる気を失ったことを覚えています。「現地に着いて、テストモデルの様な形で製造されたユニットを目にした時、そもそも見た目がどちらも悪くてボタンも効かず、最悪でした。それまでとても良かったはずなのに、どうしてこんなことになってしまっているんだろう?と、9ヶ月ほど後退したように感じました。いえ問題に取り組み、何が問題なのかを考え始め、すべての問題を炙り出し解決しました。その絶望の淵に立たされた時、私はあることに気付いたんです。問題はプロセスの一部でありそれを受け入れ、それに従って対処していけば良いと。ハードウエアは厄介なものですから。」バグや問題が発生する悪夢のようなシナリオを避けるため、抽出した数台でテストするのでは無く、ゆっくりと着実に反復しながら生産する方法を選びました。「一気に何千台と生産し、すべてを修正しなければならない様なことは避けたいです。「ですから非常に慎重に規律正しく、10台生産したらその10台をチェックします。問題があればその問題を、10台完璧に生産できるようになるまで修正し続けます。これを繰り返しています。「で、10台目にまた別の問題が発生するんです。Nersesianが言います。「程無くして、その数を25に増やし、それを数週間続けました。「それぞれの段階で現場にいることは、とても貴重でした。その場で確認し、承認し、助言できました。今度は50台にしてみようとなり、規模が大きくなるにつれプロセスも改善され続けました。正しいことをしているという自信が生まれました。「リモートでできることではありません。」Jessicaは言います。「何かの写真が送られてきて、これでOKですか?と言われても、写真を見ただけでは分かりません。私が現場にいて、実際に検査する必要があります。することで、私たちが求めるレベルの品質に校正して、工場側に伝えることができます。」Jessicaは品質管理を中心とした幅広い仕事を担当しています。「ベンダーから送られてくるものを取り次ぎ、各オペレーターがPanicの期待する基準に合わせて校正できるようサポートし、QAプロセスを開発して工場の品質管理担当者をトレーニングしています。必要に応じてラインの設定も手伝っています。サステナビリティに焦点を当て、プロジェクトが使用済みとなった後についても研究しています。実は私、元々はキッチンの担当で千人分の食事を作る巨大なラインのセッティングをしていました。工場のラインの立ち上げととてもよく似ています。どちらの場合も部品を受け取り、全員が同じレベルの理解と集中力を持っていなければならないのです。「Playdateを構成するすべてのパーツがカスタムメイドなんです。「ですから、ネジのような簡単な部品でもウェブサイトから『このネジを頂戴』とはならないのです。すべてゼロから作られているのです。「ネジは、ネジの頭の部分を市販品よりも薄くしたり、ディスプレイに干渉しないよう、長さも短くしたりしました。本当にすべてのコンポーネントがカスタムベースで作られているのです。」Jessicaが続けます。「部品を受け取ると、私たちはその品質をチェックします。パスした部品のみが、ラインに流れます。これはとても難しいパズルで、しかも15人の仲間で組み立てています。各人が小さな部品を作り、次の人にパスします。自分の求められている品質が完全に理解できていない人がいると、悪い部品がパスされてしまいます。なるとラインの最後の最後で品質管理をパスできず、ユニットを破棄しなければならなくなり、これは避けたいです。そのため、ファームウエアと目視の両方で複数回のチェックを行なっています。品質管理では単に動くかどうかだけで無く、耐久性もチェックされます。本体のギャップをエッジに沿って、ミリ単位で測定します。ドット欠けや傷の有無をチェックします。製造を繰り返していくと、クランクの弛みや以前は無かったディスプレイの隙間など新たな問題が出てきます。その度にグループで協力し、新たな問題を解決する方法を模索しています。「15のステーションがあり、テンプレートや治具が用意され、適切かどうか位置合わせができるようになっています。「まず最初にディスプレイの液晶が点灯するかを確認します。次はそのディスプレイをフロントハウジングに接着します。何が問題で何が問題で無いのかを理解する、これが各ステーションの担当者の別の仕事になります。その日によって複数の人が各ステーションを担当します。人々をトレーニングし、私たちが求めるものを感じ取ってもらうのです。すれば可能な限りミスを無くせるのか?」その答えは少しずつ、見つけられ始めています。第7章、開発者キットを開発するマレーシアのS&O社で生産ラインの調整や品質管理テストが行われている間、Panicはポートランドの本社でオペレーティング・システム(通称OS)と、ソフトウエア開発キット(通称SDK)の開発に励んでいました。ゲーム開発者が実際にPlaydateのためのゲーム制作するために必要なインフラとなります。Messingによるものでした。MessingはOSとPlaydateのメインランチャーを含む、あらゆる種類のユーザ向けアプリで素晴らしい仕事をしてくれました。」とGregが語ります。「確かに、様々なことに取り組みました。」と、Danは言います。「ホーム画面の様なものから設定アプリ、SDKの側面まですべてです。経路探索やコリジョン検出、1ビット画像におけるブラー処理などはコラボレーションの良い例です。最初にブラーとディザを実装した際、Daveがやって来てハードウェア上で高速化するための一連の最適化を行なってくれました。それらの多くは誰もが何らかの形で利用する、触れられるものでした。Daveが画面に画像を表示する方法を考え出した最初の実装から、時間の経過とともに確実に進化してきました。シーズン1のゲームタイトルと連動して成長したと思います。本当にそれらは良いフィードバックの循環でした。OSの開発中、並行してシーズン1のゲームが開発されていました。デベロッパープレビュー』に参加してくれている人たちからのフィードバックにより、SDKの開発に集中することができました。開発者から『こんなことができないか?』と聞かれ、『個々のゲームが独自に実装するのでは無く、SDKとして提供したらいいのでは無いか?』と考えたのです。経路探索アルゴリズムがあります。あるゲームでそれを必要としていて、彼らはLuaで独自の解決策を実装しようとしていました。そこで私は『ならば、C言語で実装してしまおう。経路探索はゲーム開発者が必要とする一般的なものだからです。SDKとして組み込んで、開発者にとってはより速く利用しやくなりました。このような状況はたくさんあったと思います。SDKを開発する際には、そのためのAPI設計を多く行わなければなりません。」APIとは、アプリケーション・プログラミング・インタフェースの略です。Danが言っていた経路探索アルゴリズムの様に、Playdateに何をするべきか伝えるための標準的なコードを提供します。Kitなど、MacやiOSのSDKに精通していたことも幸いし、PlaydateのAPIは綺麗に設計されていると思います。何が上手く機能し、何が上手く機能しないのか、その背景を知ることができたのは良かったです。私はその反対側にいましたから。」Daveもまた、最近の出来事ですが、Playdateが使用しているBluetoothチップのSDK開発で、自分たちでSDKを設計する際に何をしてはいけないのかを示す例になったと言います。「Bluetoothは多頭龍ヒドラの様なものです。」とDaveは言います。「様々なレイヤーやプロトコルがBluetoothにはあります。その上、Playdateで使用したチップは、これまで使用してきた中でも指折りの難しいコードでした。」もちろん、Daveはそこでも実装の面白さを見出していました。「面白かったかって?ゼロです。冗談で無く、今までやってきたことの中で最も魂を消耗する仕事でした。SDKの仕事というのは、もう、死ぬほど大変なんですよ..。愚痴をたくさん言いたいところですが、愚痴るのが好きでは無いので。