2019年1月 (Shiikaパーサ)
近況です。
Ovto
Rubyist Magazine 0059号にOvtoの紹介記事を寄稿しました。
Ovtoは私が作っているRubyでSPAを作るためのフレームワークです(詳細は上の記事を見てください)。OvtoについてはQiitaにも紹介記事を書いていますが、そっちよりも少し丁寧めに説明しています。
るびま記事は昨年0057号のDXOpalの記事以来、1年ぶりですね。
Shiika
Shiikaは私が作っている、Ruby風の構文をもつ静的型付け言語です。
実装はRubyでやっていたのですが、プログラムが複雑になるにつれて静的な型チェックがないことがしんどくなってきたので、乗り換え先を検討しました。RustとGoで迷っていたのですが、今月両方を触ってみた感じでは以下のような感想になりました。
- GoはGCがあるけど、Rustはメモリについて考えなくてはいけないので、Rustの方が学習曲線のカーブが急
- 型システムについては、Rustの方がHaskell/Scala/Swift等に近くて個人的には馴染みやすかった。
主に後者の理由で今回はRustを選ぶことにしました。
RustはGCがないのですが、代わりに「lifetime」や「borrow-checker」という概念があり、不正なメモリアクセスが起こる可能性がないかをコンパイラがチェックしてくれます。この点はC/C++よりも良いところです……が、僕はGCがない言語の実用経験が乏しいので、コンパイラが何を怒っているのか理解するのがかなり大変で、苦労しています。Twitterで詳しい人に教えてもらったりして、徐々に慣れてきてはいますが。
なるほどそのように読むのですね。確かにpub fn lex(&'a mut self)にしたらコンパイル通りました。https://t.co/BKaFmgzcXR
— yhara (Yutaka HARA) (@yhara) February 1, 2019
ということで今のところこんなコードになっています。コンパイルさえ通れば、書き味は悪くないです。
ブロスタ(Browl Stars)
年末から一月ほど、ブロスタというスマホゲームをやっていました。2次元のスプラトゥーンみたいな感じです。 開発はsupercellで、いくつかのヒット作があるだけあって、いろいろとよくできているなと思いました。例えば:
- チュートリアルは必要最低限だが、機能が段階的にアンロックされる(最初は1つのゲームモードしかプレイできない)ので混乱しない
- 課金要素があるが、通常価格に加えて「期間限定セール」「XP5到達記念セール」などが、「これなら課金しても良いか」と思うようなちょうど良いタイミングで提示される
- ガチャを引いている最中に回線が切れても、再起動すると開封画面から再開する
など。
成績は現在のトロフィー数が3318で、すべての無課金キャラがアンロックされる3000を超えたので気持ち的に一段落したところです。
OxygenNotIncluded
1月はもうひとつOxygenNotIncludedというゲームをやっていました。Steamで買えるゲームで、僕はMacBookでプレイしています。まだEarly Access扱いですが、リリースから2年くらいになるので、完成度は高いです(何百時間も遊んでる人もいるくらい)。
ONIは地下コロニーを作るゲームですが、酸素、温度、食料などを適切に管理する必要があり、あれこれいじっているうちにあっという間に時間が飛んでいきます(楽しい!)。
1月は初めてロケットを飛ばすことができました。なんとなくロケットを飛ばしたらゴールみたいな気がしていましたが、ロケット自体にもいろいろ拡張要素があるので、もう少し先がありそうです。
Twitterでスクリーンショットを何枚か上げています。
スノーボード
スノボの季節がやってきました。いま住んでいる島根県松江市はいくつかのスキー場がわりと近場にあり、毎年冬になると会社の人たちとスノボに出かけています。お隣の鳥取県の大山(だいせん)のスキー場に行くことが多いです。大山にはだいせんホワイトリゾート・桝水・奥大山と3つのスキー場があり、それぞれ個性があって楽しいです。
スノボは学生の頃にやり始めたのですが、当時は関西に住んでいたので年に1回くらいしか行く機会はありませんでした。松江に越してからはシーズン中はほぼ毎週行くことができるので、だいぶ上達した気がします。 まあ上達したといっても度胸がないので派手なことはできないのですが(安全第一)、小さいキッカー(滞空時間1秒 以内)なら自信を持って飛べるようになりました。 今シーズンの目標はFS 180を安定させることです。