他人のブログを読んだり、勉強会等のLTを聴いて感じること

こんにちは。

他人のブログを読んでいたり、勉強会や某ABCに参加してLTとか聴いていて感じたことを書きます。

1. お前のブログはオリジナリティがあるのか?
既知の内容なのに、そういった内容をブログに書いている人をよく見かけます。参考サイトのリンクを張っていればまだ許せますが、そういったものがないブログもあります。また、本に載っていることを書いているブログも見かけます。例えば、最近見かけたのでは、iOSでのUITableViewの使い方とか。これはひどいと思いました。お前が考案したAPIなのか?w

2. お前のブログは、どこかのサイトのページの翻訳ではないか?
Androidに関して、キーワードで日本語サイトをググると、Googleのドキュメントリファレンスのページをほぼ翻訳したページを見かけることがあります。ブログを書いている本人は、日本人のために翻訳してあげているんだとか言いそうですが、ブログ中に出てくるサンプルコードも、元のドキュメントリファレンスのページと同じことが多々あります。真っ先に日本語に訳して、日本で最先端を行っているとでも思っているのでしょうか。技術的にとんがりたいなら、自分で作ったサンプルアプリのコードでも載せて欲しいですね。また、最近見かけたブログでは、英語圏のブログのほぼ翻訳で、コード断片もコピペで、元のコードの、作者独自定義の定数を、定義もせずに(定義を引用もせずに)使用している例がありました。元の英語圏のブログでは、githubにサンプルコードがあったので、定数の定義を見ることができましたが、翻訳サイトでは、githubへのリンクは張られていませんでした。

3. 勉強会や某ABCのLTで笑いを取ることしかしない
勉強会や某ABCに参加してLTを聞いていると、次のようなことがあります。

a. アニメの画像をスライドに入れる。
面白くないですし、あなたは、そのアニメの作者に、画像の使用許諾を取ったのですか?

b. 奇声を上げて笑いをとろうとする
勉強会では見かけないですが、某ABCのLTではよく見かけます。ちっとも面白くないです。ビジネス、技術アピールで注目を浴びるようにして下さい。

c. その他
某ABCのLTで、当時流行っていた某ゲームアプリを、某テストツールで動かすことをやったLTがありました。はっきり言って、技術的に面白くないです。自分のプロダクトをテストツールで動かすのならいいですが、そうでないなら、単に笑いを取るだけの内容ですね。

iPhone 2Dゲームプログラミングを読んだ

STUDIO SHIN著の「本気でゲーム開発力をつけたい人のための! iPhone 2Dゲームプログラミング」を読んだので、書評を書きます。

 この本では、はじめに書いてある通り、iOSアプリの開発経験がない場合は、iOSアプリ開発の入門書を読むように書いてあるが、その通りであろう。また、SPriteKitのAPIについては、あまり説明なく使われているので、この本を読む前に、

SpriteKitではじめる 2Dゲームプログラミング Swift対応

などを読んだ方がいいだろう。Swiftについては、第2.2章で簡単な説明があるが、これについても、Swiftについての入門書を読んだ方がいいだろう。
 この本には次のような特徴がある。

1. 他のiOSアプリ開発本のSpriteKitの章や、SpriteKitアプリ開発本とは違い、1冊の本で、画面遷移のある本格的な1つのアプリの作り方を順を追って説明している。
2. 広告の貼り方やアプリ内課金のやり方にも説明をさいている。
3. アプリ内では、マップ、ステージを導入して、ゲームの進行に従って、遊ぶゲーム面を変える仕組みがあったり、弓という武器を購入することにより攻撃力を増したり、敵キャラ、ボスキャラ、障害物、アイテムの配置を自由に行う配置ツールの作り方も説明されているので、App Storeに出せるようなゲームアプリの開発をするのに役立つであろう。
4. アクションゲームというと、小さい画面のスマホでプレイヤーの操作をどうやるかが課題である。この本では、プレイヤーが矢を発射しないときは、マップを左に自動で移動させ(プレイヤーは通常画面内で固定位置で、マップが画面を左に流れていく)、武器である弓は、コントローラとして画面の一部に操作しやすい大きさに独立させ、弓を指で引くことにより、矢を発射するように工夫している。

 この本は、本のタイトルの通り、本格的なゲーム開発力をつけることができるが、次のようなマイナスな点がある。
1. 本に書かれているコードと、ダウンロードしたサンプルのコードとに食い違いが多い。一方では関数に引数があったのに、他方では引数がないとか。また、ボスキャラを導入したのに、本では、ItemPutViewControllerクラスの更新を説明していないとか、ItemBuyViewControllerクラスで、UITableViewDataSourceの記述がないとか。誤記が多い、本のコードとダウンロードしたコードに食い違いが多い点は、同じ著者の

SpritekIt iPhone 2Dゲームプログラミング

について、Amazonでのレビューで指摘されていたので、レビュー(点検)があまり行われなかったのであろう。
2. 本のコードでは、どこを書き換えていけばいいか分かりにくいところが多い。
3. 関数の中身が長すぎる。ifのネストが深すぎる。ifのブロックが長すぎる。Xcodeでコーディングしているとき、どのifのブロックにコードを書き加えたらいいかわかりにくく、バグが発生しやすい。こういうことを書くと、アプリ開発本は、順を追ってアプリの作り方を説明しているので仕方ない、リファクタリングを行うと、本のページ数が極端に多くなるという反論があるであろうが、例えば、ifのブロックの中身をはじめから関数として記述するなどの方法はあるであろう。
4. 配置ツールなしで、敵キャラ、障害物の位置がコードにじかに書かれていると、敵キャラが障害物に近接しすぎていて、ゲーム開始でゲームが即終了する。著者は、途中途中の開発過程のゲームの動作確認をやっているのだろうか。
5. サンプルコードが完成したものしかなく、章ごとのソースコードがなく、写経ミスがあった場合、原因を探りにくい。
6. 必要なコードが、本で説明されていないか、本を先まで読まないと書かれていないことが多い。例えば、4.2章で、矢を発射する操作は、gameStateが、.gamePlayingでないと、touchesBegan関数にある最初のif文内のreturnが実行され、touchBegan内の残りの処理が実行されない。gameStateのセッターで、shootOKをtrueに、gameStateを.gamePlayingにするなどの処理を書かないといけない。この説明がないので、4.2章で矢を発射できることを確かめることができない。
 以上の通り、マイナスな点が多いのではあるが、本格的なゲームアプリを開発するには、いい本であると思うので、評価4を付ける。