読者です 読者をやめる 読者になる 読者になる

セロリ食べたい

とりあえず作りました

2017/03

今月の進捗

自作ゲーム

iOS で片手で遊べそうなゲームを作ろうとしている。

なんかマップエディタ周りを自作しようと1〜2ヶ月位色々やってたけど望んだ進捗がでるわけでもなくダメそうだったのでやめた。 Unityとか他のゲームエンジンに乗り換えたくなる誘惑に襲われたけど、当初の計画通り SpriteKit と一緒に最後までやりつづけることを再度決意した。 そのため、マップも Xcode 上で SKTileMapNode ベースで作ることにした。

SKTileMapNode を含む sks ファイルをのぞいてみたら、binary plist であることがわかり、base64 でタイルの配列がばーっと入っていることは確認できたので、その気になったら外からデータを作って流し込めそうだけど、Xcode 上のタイルエディタでがんばれるうちはがんばる。

現状の状況を整理してコードに反映させるために、必要なくなった実装を消したり整理するので今月は終わった、ゲームばっかりやっていたから本当に進捗が少ない。

英語

try! Swift に行ったり仕事で英語のコミュニケーションできたらよい場面がいくつもあったので今年からは本当に英語頑張りたい気持ちができたのでがんばる。

Audible の無料お試しにつられて英語の勉強方法の本とかリスニングの教材を聴いていたら意識が高まってきたので最近はずっと通勤中に英語で喋ってるやつを流すようにしている。 勉強方法の本が言っていてすごい頭に残ったのは、

  • 圧倒的に英語聞いた時間が短い、足りないこと
  • 当然だが、何か読んだり見たりしたことで英語がすぐ使えるようになるわけではないこと
  • 英語で考えて聞いたり喋ったりする英語脳をつくる必要があること
  • 大人になったからもう無理ということはないこと

なので、自分のやり方で少しずつでもいいから英語に触れていこうと思った。 すぐに身につくものでもないから数年後にいくらかできるようになるといいなーと長い気持ちで頑張ることにした。なんにもやらないとなんにもならないから気をつけないといけないけれど。

今月遊んだもの

NieR: Automata

とてもおもしろかった。自力で全部トロフィーを取るところまでやったので、最後にアレした。おつかれさまでした。 集められるものはあらかた集めて満足した。ここまで一つのゲームをやりこんだのはかなり久しぶりだと思う。ストーリーもよかったし、なにより音楽が最高だった。プレイしたひとと色々語りたい。

FF14

ログインしてない

今月買ったもの

Bose Companion 2 Series III multimedia speaker system

少し前にかったディスプレイ付属のスピーカーで頑張っていたけれど色々辛くなってきたのでスピーカーを買うことにした。一番つらかったのが MBP から miniDP 経由でディスプレイに繋いだときに音量調整ができないこと。

そんなにお金かけたくなかったけど、どうせ買うならいい音が出るやつがいいみたいな感じだったのでこのスピーカーを買った。 Bose の音響機器は実は初めて買うんだけど、他の Bose 製品より値段が抑えめの割に自分としては満足の音が出ていた。

低音がちょっと強いかなーと夜につかってるとドキドキすることがあるけど買ってよかったと思います。

ソフトバンクから IIJMNP

この記事を書く少し前にSIMを差し替えた。 年割が切れて月々の料金が高くなったのがずっと気になってて、えいやとMNPした。使い心地とかはこれからかな。iPhone7 を買ったタイミングでSIMフリーの端末にできたので、ようやく乗り換えられた感じ。ソフトバンクの方ちゃんと解約できてるのか不安。なんか書類とか来るのかしら。

NieR: Automata サントラ

ゲームがよかったのと今作も音楽がよかったのでサントラ買った。ずっと最近仕事中とかヘビーローテーションしてる。テンション上がる。

今月のお気持ち

NieR: Automata 終わった上にもうあのフィールドを走り回れないのでちょっとその喪失感があるけれどガーッと遊んで楽しかったのでよかった。 次はゼルダに行きたいところだけどちょっとゲームばっかりやっててゲーム制作がやばいのでしばらくものづくりがんばる。

2017/02

月に1回くらいの記事のはずが2回目からもう遅れがちでびっくりしている。

今月の進捗

自作ゲーム

iOS で片手で遊べそうなゲームを作ろうとしている。

今月の進捗…何かあったかな… とりあえず動画に残せるようなものはない。

先月も書いたけど、手続き型のダンジョン生成アルゴリズム を自分で実装してみるぞ、というところでドロネー三角形分割を Swift で書いてみたってくらい。 調子に乗って余計なことをした結果変にハマってしまい、正しい結果を得られるまで時間がかかってしまった。こういうのは素直にやらないとダメだ。

あとは一緒にゲームを作る妻とブレストをして、ゲームの内容はこうだよねっていうのを再確認した。kibela にまとめないと。

ReactNative に入門する

仕事でちょっと使いそうな機運が高まりつつあったので ReactNative を少し触ってみた。 https://github.com/slightair/MarketApp-ReactNative

ホットリロード便利ですね。

今月遊んだもの

NieR: Replicant

NieR: Automata が発売するからその前にやらなくちゃーということでやっていた。結局発売日までには終わらなかったけど、Automata に取り掛かる前にやっておいてよかった。

もともと音楽が良いのは知っていて、プレイはしていなかったけどサントラをよく聴いていた。そのためプレイ中に新しい曲が…!みたいな体験はできなかった。でもプレイしてよかった。切ない。

PS4 Pro から PlayStation Now でレンタルしてプレイした。クラウドで動くなんてすごい!プレイ前は動くとは言っても遅延とかでちゃってアクションゲームは厳しいんじゃないの〜と思っていたけど結構ちゃんと動いて感動した。というかプレイしている間は全然気にならずに遊びきれた。

NieR: Automata

PS4 Pro を買ったのもあるけど周りで話題になってて気になっていた。体験版をやったらおもしろかったのですぐに購入してしまいました。そのあと急いで Replicant をやった感じ。 まだ遊びきれてないけどとりあえず1周は終わった。最近このゲームが休日や平日家に帰ってからの楽しみです。 ゲームが楽しいのはいいけどコード書く時間が減って進捗がヤバイ、というかない。

Automata やりきったら今度はゼルダをやりたい。

FF14

一度もログインしてない気がする…

今月買ったもの

Sony MDR-XB70BT

電車通勤中にポッドキャストとか聞きたい欲が定期的に高まってくるんだけど、手持ちの有線のイヤホンで聴いてもなんかめんどくさくなってそのうち聴かなくなってしまう。ワイヤレスのやつ買えば、ちょっとは違うんじゃないかと思い立ってワイヤレスイヤホンを買ってみることにした。 その結果選んだのがこのイヤホン。電化製品店にそのまま入っていって選んだ。

まあまあ満足しているけれど、なんかサーというホワイトノイズ?がずっと流れているのが気になって最初は困った。こんなものなのかなあ。 あとiPhoneと繋いだときの最小の音量が僕の耳にとってはまだまだ大きい。

同じSonyのワイヤレスヘッドホン(MDR-10RBT)も持っているけどこれと違ってBT接続時や電池が少なくなってきたときに音声で知らせてくれるのは便利。前に書いたように、音が大きくてびっくりするけど。調整とかもないし。

目的だったポッドキャストなどを通勤中に聴くぞっていうのが今のところ続いているので良い買い物だったのかな、と思う。


記事を書き始めるまではあーどうすっかなーという感じでなかなかエディタに向かわないけれど、書き始めると結構書ける感じだ。

次は来月というか今月の分だけどがんばるぞ。

2017/01

しばらく放置していたブログに今年からは何か書いていこうと思い立った。 月に一回くらい、普段何をやっているか書いていこうと思う。

1月のことは1月のうちに書きたかったけど気がついたら2月になってた。初回からこんなんで大丈夫なのだろうか。

今月の進捗

自作ゲーム

iOS で片手で遊べそうなゲームを作ろうとしている。

SpriteKit と GameplayKit を使って Swift で書いている。開発中は macOS でも動くようにしてる。Appleフレームワークを使ってるからこのあたりは融通が効く感じ。

GameplayKit の使い方は DemoBots がすごく参考になる。

今月はアイテムをマップに配置してそれが取得できるようにした。 あと、テスト用のマップがつまんない感じなので 手続き型のダンジョン生成アルゴリズム を自分で実装してみて、マップを自動生成しそれに少し手を加えられるようなマップエディタを作っているところ。

Reddit クライアント

RxSwift と MVVM などのアーキテクチャの実験をしつつ Reddit クライアントを作ってみようとしている。 2ch まとめ系のサイトをダラダラ読むよりは Reddit を眺めるようにしたらちょっとでも英語の勉強になったりしないかとはじめた。 わからない単語の意味をすぐに引けるアプリを作ったらいいかなと思ってるけど、そこまで行くかは気分次第。

https://github.com/slightair/akane

今月はプロジェクトを作って OAuth の認証をし、とりあえず Hot と新着の記事一覧を取得して表示するところまで書いた。 MVVM で書きつつ、VM のテストを RxTest を使って書いてみた。慣れないとすごい時間かかるけど画面に関係するロジックのテストも書けて良さそうな感じ。 ちょっと訓練してみよう。

実験していた内容を社内のRx勉強会で話したりもした。

https://speakerdeck.com/slightair/rxswift-plus-api-request-plus-mvvm

今月遊んだもの

FF15

先月からやっていた FF15 をようやくクリアした。 映画を見てアニメを見てゲーム本編も一通りやったけど、後半に行くにつれてあれれーという気持ちがどうしても出てきてしまった。 おもしろかったんだけど、もう少しストーリのあちこちに説明が欲しかったな、なんかもったいないなという感想を持った。 クリア後もいろいろサブクエスト回ったりできるんだろうけど、クリアしたらもういっかーとなってしまい、起動してない。

FF14

熱心に毎日ログインして遊ぶということはできていない。 少しだけ復帰という感じで、気ままにのんびり遊ぶというスタイルに落ち着きそう。 4.0 は楽しみにしてる。

パッチ 3.5 が来たのでメインクエを一通りやりつつ、FCのみなさんに行けてなかったIDとか蛮神戦に連れて行ってもらった。ありがたい。 AWは硬霊性岩集めのところで、ンーという状況。

オンラインゲームはやっぱり毎日ログインするような習慣が抜けちゃうと、ダメだね。

今月見たもの

アニメ PSYCHO-PASS

NetflixPSYCHO-PASS シーズン1を見た。 見たほうがいいよーと言われていたのでやっと見たらとても面白かった。 見たら絶対ハマるだろうなーという作品はいっぱいあるのに、なかなか手がつけられない性格をどうにかしたい。手をつけると一気に見ちゃったりするんだけど。

今月買ったもの

Philips 43型ワイド液晶ディスプレイ BDM4350UC/11

Mac や ゲーム用の Windows PC、 PS4 などなど画面に出したい物が増えてきて、机の上をスッキリさせたかったので大きいディスプレイを思い切って買ってしまった。 周りの人からの評判がよかったのでこの製品を選択した。満足している。


だいたいこんな感じで毎月やっていきたい

ひっこします

github と octopress でしあわせになりたいとおもいます。
しあわせになれるといいな

http://slightair.github.com

scala で Inverse FizzBuzz 書いてみた

逆FizzBuzz問題 (Inverse FizzBuzz) - 猫とC#について書くmatarilloの雑記 で紹介されていた問題を自分でも解いてみた。
言語は最近勉強をはじめたscalaです。

こんな感じになりました。scala のひと、見てアドバイスなどもらえたらうれしいです。

僕の scala の練習リポジトリはこちら https://github.com/slightair/scala-practice
今回はテストも書いてみた。

golf の問題にもなったようです。http://golf.shinh.org/p.rb?Invert+FizzBuzz

NLTHTTPStubServer を使って iOS アプリの通信周りのテストを書こう

テスト実行時にモックとなる Web サーバを起動して、思い通りのレスポンスを返す環境が作れる NLTHTTPStubServer というツールがある。これを使えば、web API の実行の成功・不成功などのテストが楽に書ける。テスト実行時に叩く API の URL をちょこっと書き換えるだけなので、テストのためにコードを修正する部分は少ないだろうし、実際のアプリケーションの動作とほぼ同じ状態でテストができるはずだ。

NLTHTTPStubServer の導入

NLTHTTPStubServer は以下のライブラリに依存しているので、これらをプロジェクトに追加する。

NLTHTTPStubServer のソースコードは github で公開されているので、これを取得する。
https://github.com/yaakaito/NLTHTTPStubServer

NLTHTTPStubServer のソースコードをプロジェクトに追加しよう。NLTHTTPStubServer は ARC を使っていないので、ソースコードを追加したら NLTHTTPStubServer のファイル群のコンパイラフラグに -fno-objc-arc をつける。

f:id:Slightair:20120427231108p:plain

最後に以下の標準フレームワークをプロジェクトに追加すれば導入完了だ。

  • CFNetwork.framework
  • Security.framework

f:id:Slightair:20120427231123p:plain

テストを書く

NLTHTTPStubServer を使って何か簡単な API クライアントを作ってそのテストを書いてみよう。今回は coderwall (http://coderwall.com) というサイトのユーザプロフィールを取得する API クライアントを作ってみる。APIについての説明はここに書いてある。 http://coderwall.com/api

テストは GHUnit を使って書いた。
また、ネットワークライブラリは AFNetworking を使った。

以下のような感じで使えるクライアントになるといいのかな。

block でAPIの実行が成功した時と失敗した時の処理を渡してあげる感じ。

GHUnit のテストクラス CoderwallAPIClientTest を作成する。非同期のテストがしたいので GHAsyncTestCase のサブクラスとする。

テストのためにAPIの実行結果をファイルに保存した。

curl http://coderwall.com/slightair.json -o slightair.json

さらに存在しないユーザ名を指定するとステータスコード404 で 空文字列を返すようなので、API実行失敗時のテストのために空のファイル hogehogehoge.json を用意した。

テストを書くとざーっとこんな感じになった。

setUpClass メソッドではStubサーバのポート番号を指定したり、サーバのインスタンスを作って起動したりしている。今回は 12345 で Stubサーバが起動するようにしている。サーバは tearDownClass メソッドで停止する。

setUp メソッドでひとつのテストが走るたびに Stub サーバをきれいにしている。Stub サーバにはサーバに返してほしいレスポンスをテストの最初でひとつひとつ登録する仕組みになっている。ここで登録したレスポンスが全て返されるようにテストを書かないといけない。もし登録したレスポンスを返さずに残っていたらテスト失敗とみなす。tearDown メソッドでこれを監視している。

testProfileAPISuccess メソッドと testProfileAPIFailure メソッドを定義し、Profile API が成功した時と失敗した時のテストを書いた。

さっき保存した JSON ファイルから NSData クラスのインスタンスを作り、Stub サーバに Stub を追加する。これで設定したパスにリクエストがあったとき、ファイルの内容をクライアントに返すようになる。andJSONResponse メソッドで JSON のデータを指定すると Content-Type に application/json を含めてくれる。またステータスコードも指定することができる。

実装した CoderwallAPIClient は AFHTTPClient クラスのサブクラスなので、clientWithBaseURL: メソッドで Stub サーバにアクセスするように指定してあげれば、実際のアプリケーションと同じクライアントを使ってテストができる。あとは API を実行した後にすべき処理を書いていたところで、クライアントが正しく機能しているかどうかのテストを書いていけばよい。

作った coderwall の API クライアントは https://github.com/slightair/coderwallAPIClient に置いてあります。

Clojure で1次元セルオートマトンを書いてみた

coderwall (http://coderwall.com/) で お魚のバッジが欲しかったので Clojure でなんか書いてみようと思った。Clojure は本を買ったものの、結局全然やっていなかった。

1次元セルオートマトンとか書いたら楽しいかなあと思ってやってみた。関数型言語は慣れてないのでなかなか思うように書けなかった。Scala とかにも手を出そうと思ってるのでそのうちちゃんとやりたい。

こんな感じになった。Clojure 練習用のリポジトリを作ったけど記事にコードを載せたかったので gist にも置いてみた。

※4/18 追記 関数名を直したりpartitionとか新しく調べた関数をつかってすっきりさせました

実行するとこんな感じになる。すてき。
f:id:Slightair:20120416023329p:image

バッジもらえるかなぁ。