Nature で iOS/Android あと Firmware チョットデキル亀田 @Gemmbu です。 これは Nature Engineering Blog祭 の一日目の記事です。
モバイルエンジニアにとっては Google I/O 2022 や WWDC22 も終わり、アプリ対応スケジュールをもやもやと考えているころかと思います。 が、そろそろ日本にも Playdate の発送が始まるころだと思います。みなさんモバイルエンジニアとしてもちろんあの厳しい予約戦争を勝ち取りましたよね?
Playdate
Playdate をご存知だとは思いますが、軽く説明しますと。初代ゲームボーイを横長にして薄くして、ビビットイエローに塗って、何故か釣りコンが悪魔合体した素敵なデバイスです。 この説明だとあれなので公式へのリンクを貼っておきます。
おもしろいのが
ってことは、ネットワークにつながるしこれで Nature Remo を Playdate に移植すれば面白そうということで早速試してみました。
Playdate SDK
インストール
のページ従って、自身の環境にあった SDK をインストールしましょう。 ちなみにこの Playdate を作っているところは mac ユーザのようで、 mac 環境が手厚いみたいです。
Nova
Playdate の公式が開発環境として進めているのがこの Nova とよばれるエディタです
このエディタに拡張を入れると開発環境は完成です。かんたん
Hello Box...?
ということで早速動かしてみましょう。 Playdate を動かすためには Lua か c 言語か選べるのですが、今日は Lua を使いましょうと思ったのですが... ここで Playdate ドキュメント にはネットワーク API が存在しないことに気が付きました。 ネットワークにつながるのにそんな馬鹿なと調べてみると、先人の調査のあとや
フォーラムでの回答がみつかります
釣りコンクランクを回してエアコンの温度調整をする素敵 UI を作りたかったのに残念です。
Emacs
とうとつに Emacs です。エンジニアはちょっと隙ができると Emacs について話したがるものです。僕もそうです。 先程ちょっと話した公式が勧めている Nova というエディタですが、これに拡張を入れることでエディタ上から直接ビルドして実行ができます。 まるで Xcode や Android Studio のようですね。 それはそれはいい環境なのですが、 Emacs 使いはすぐ Emacs からやりたくなるものです。
Re: Hello Box
その前に矩形を表示するプログラムを書いて、それをコマンドラインからコンパイルし Playdate シミュレータで実行してみましょう。
矩形を表示するプログラムは以下のように書けます。
-- HelloBox/main.lua function playdate.update() playdate.graphics.setColor(playdate.graphics.kColorBlack) playdate.graphics.drawRect(40, 40, 80, 80) end
次にターミナルを開き、これをコンパイルして Playdate シミュレータで実行します
# プロジェクトの親ディレクトリに移動 $ cd </path/to/your/project/parent> # HelloBox プロジェクトが見えることを確認 $ ls HelloBox # コンパイル $ pdc HelloBox HelloBox.pdx # Playdate シミュレータで動かす $ open HelloBox.pdx
かわいいですね
もし pdc
が動かない場合は PATH
が通っているか確認してください。
pdc
は通常 $HOME/Developer/PlaydateSDK/bin/pdc
にインストールされていますので $HOME/Developer/PlaydateSDK/bin
を PATH
に追加してください。
Playdate シミュレータは $HOME/Developer/PlaydateSDK/bin/Playdate\ Simulator.app
です。
Emacs から実行
プロジェクトをコマンドラインから実行できることを確認したので、それを Emacs から実行できるようにしましょう。 Emacs から実行するには様々な方法がありますが順番にやっていきましょう
playdate-run-hello-box-project
Emacs を起動したら新しく適当な buffer
を新たに開きましょう。そして M-x emacs-lisp-mode
にしてモードを elisp 編集用にしましょう。
playdate-run-hello-box-project
を実装します。この関数は HelloBox プロジェクトの親フォルダに移動し、先程のターミナルのコマンドを実行するものです。
(defun playdate-run-hello-box-project () "HelloBox プロジェクトをコンパイルして Playdate シミュレータで実行する" (interactive) (let ((project-parent "</path/to/your/project/parent>")) (async-shell-command (format "cd %s && pdc HelloBox HelloBox.pdx && open HelloBox.pdx" project-parent))))
カッコが多く見やすいですね。
emacs-lisp-mode
では C-xC-e
を実行することで buffer
に書かれた式を評価することができます。わかりやすくいうと自分で書いた処理を Emacs で実行します。おっと、 C-xC-e
っていうのがそもそもどういう操作かわからないですね。まず、これは2つのショートカットキーの連続する操作で一つは C-x
、もう一つは C-e
です。で、 C
ってなにかというと Ctrl
のことです。次に -
ですが、これは同時に押すことを意味します。最後の x
や e
はそのまま、キーボードの x
や e
です。つまり C-xC-e
と書かれたときは Ctrl+x
をして Ctrl+e
をすることを意味します。わかってしまえばかんたんですね。
それをやってみた様子がこれです。評価した式がかっこよくハイライトされてわかりやすいですね。
で、これは playdate-run-hello-box-project
という処理を Emacs に追加しています。これを実行するわけですが M-x playdate-run-hello-box-project
ってやるとできます。おっと、今度は M-x
。M
ってなにかというと Emacs の世界では Meta キー
とよばれるもので、たいていの mac 環境では option
に割り当てられています。playdate-run-hello-box-project
はまさしくそのまま、打って最後に return
をすると、おぉ、 Playdate のシミュレータが立ち上がります。その様子がこちら
ショートカットキーを登録して実行
さて、これでどこからでも M-x playdate-run-hello-box-project
を行うことでコンパイルして、実行することができるようになりました。
でも、毎度毎度 M-x playdate-run-hello-box-project
って打つのは大変ですよね?
なのでショートカットキーを登録してみましょう。
(global-set-key "\C-c\C-p" 'playdate-run-hello-box-project)
で、まずはこれを忘れず C-xC-e
で評価して使えるようにします。次に C-cC-p
をすると playdate-run-hello-box-project
が実行されます。すごい。
次は?
さあ、これで Emacs に好きに機能を追加できるようになりました。
しかしながら HelloBox
以外のものを動かすにはどうするか?や、いまは Playdate のプロジェクトで作業してないからショートカットキーは別のに割り当てたい!!
むしろ、 Playdate のプロジェクトで作業しているときにだけ自動でいい感じにいろいろやってほしい!!みたいな気持ちになると思います。
そうなったら是非 Emacs lisp を勉強してカスタマイズして、愛おしい自分だけの Emacs 環境を構築してみてください。 Happy Hacking!!
明日は mash (@maaash) | Twitter さんが Golang Generics について楽しい話を用意しているようですよ。
参考図書: GNU Emacs拡張ガイド―Emacs Lispプログラミング | ボブ グリックステイン, Glickstein,Bob, 嗣智, 榎並 |本 | 通販 | Amazon
エンジニア積極採用中です
Natureでは Emacs が好きでも好きじゃなくても、自分の開発環境を好きにカスタマイズして一緒に開発してくれる仲間を募集しています。
カジュアル面談も歓迎なので、ぜひお申し込みください。
Natureのミッション、サービス、組織や文化、福利厚生についてご興味のある方は、ぜひCulture Deckをご覧ください。