sifue's blog

プログラマな二児の父の日常 ポートフォリオは www.soichiro.org

SIerクエストとSIerクエスト2をiPhone/Androidに移植しました

f:id:sifue:20161011132559j:plain

SIerクエストリリースして1年経つわけなんですが、たまたま開発者登録する機会があったので iPhone版とAndroid版に移植して作ってリリースしました!

 

SIerクエスト iPhone
https://itunes.apple.com/jp/app/sierkuesuto/id1163670015?l=ja&ls=1&mt=8

 

SIerクエスト2 iPhone
https://itunes.apple.com/jp/app/sierkuesuto2/id1163672423?l=ja&ls=1&mt=8

 

SIerクエスト Android
https://play.google.com/store/apps/details?id=org.soichiro.sierquest

 

SIerクエスト2 Android
https://play.google.com/store/apps/details?id=org.soichiro.sierquest2

 

以上になっています。

 

なお開発に関しては、RPGツクールMVのヘルプのとおりにやって、iPhoneはCordova最新バージョン、Android版はcrosswalk、ただし自分はversionCode対応が必要だったためバージョン17系を使いました。あとはスマホ向けプラグインを入れたり、Androidの100MB制限のために不要素材を削除したりするのが意外と時間がかかります。本当にMV Stripperに救われました。

 

環境構築だけ済めばアプリにするのはすごく簡単で、それよりもアプリアイコンを作ったりスクリーンショットを作ったり、説明文書いたりするほうが作業としては時間がかかっています。RPGツクールMVの素材偉大です。あと、Appleの審査とかストア公開までの時間を待つのにモヤモヤしたりしていました。

 

まだやってないよ〜。って方はぜひ、SIerクエスト1と2やってみてくださいね。

 

なおWeb版はこちら。

 

SIerクエストWeb版

http://sifue.github.io/SIerQuest/

 

SIerクエスト2 Web版

http://sifue.github.io/SIerQuest2/

 

では。

 

追伸

 

「不要なファイルを削除できる【未使用ファイル削除】機能を追加」

https://tkool.jp/mv/special/update0110.html

最新のツクールMVでは未使用ファイルを削除する機能がついているらしい!気づかなかった!みんなこっちを使いましょう!

SIerクエストとSIerクエスト2の攻略方法

f:id:sifue:20151215003518p:plain f:id:sifue:20151215003526p:plain

SIerクエストSIerクエスト2 と作者のsifueです。

あまりに難しすぎてクリアできないよ!って話をよくもらうので、ストーリーでネタバレしないように攻略方法を書きました。検索で見つけた方、これを参考にクリアしてください。

SIerクエスト

  1. 最初の敵は通常攻撃の連続で倒す。たまに運が悪いと負けますのでくじけずに挑んで下さい。
  2. 次の敵は、ビンが置いてあるテーブルの手前にとあるアイテムが落ちてるのでそれを使ってから通常攻撃の連続で倒してください。

これらを行えばおそらく2分以内にクリアできるのではないかと思います。

 

SIerクエスト2

第1章
  1. 基本的に特別対応しないと勝てないので特別対応ガンガン使って下さい。
  2. 2戦目は勝てない戦いです。
  3. 3戦目で出てくるキャラは恐ろしく通常攻撃が強いので殴って下さい。
第2章
  1. 主人公は通常攻撃、仲間には特別対応をさせると良いです。
  2. バックアップが取れた後の戦いは、二番目に強い範囲攻撃を2度、その後は通常攻撃を3度使うと勝てます。
  3. その後出てくる敵は、特別対応で一番弱いのを2度使うと倒せます。
第3章
  1. 主人公たちは、通常攻撃で十分強くなっていますので普通に殴って下さい。
  2. ただし、底が知れない敵が現れたら逃げるを選択して下さい。3分の1ぐらいの確率で逃げおおせます。
第4章
  1. 最初の戦いは勝てないので諦めて負けて下さい。
  2. とあるアイテムを手に入れた後は、絶対にドリンクを飲んではいけません。全快にはなりますが全員バーサク状態になって詰みます。
  3. 最後の戦いでは、全員でそのとあるアイテムを使ってください。生き残った誰かが目的を達成してくれます。

以上が攻略方法でした。ゆっくり目にクリアしても20分ぐらいでクリアできる内容となっています。ぜひエンディングまで見てやって下さい。

 

以上、攻略法でした!

結婚式の二次会用にビンゴゲームのJavaScriptを書いた

f:id:sifue:20150924162034p:plain

WindowsでもMacでも結婚式の二次会用でビンゴをやるためのフリーソフトで良い物が見つからなかったので、JavaScriptで書いてみました。

サンプルは、こちら

なおこの度も、MITライセンスで、githubに公開してあります。

sifue/partybingo

なお、動作確認は、ChromeFirefoxSafariのみ。

インターネット環境がなくても動きます。

 

機能としては、

  • Startボタンでスタート
  • Stopボタンでストップ
  • 履歴はローカルストレージなので、再読込してもOK
  • リセットは、resetボタン。
  • ドラムロールが3.5秒間ほど流れる

となっています。

 

HTMLなので、新郎新婦からデザインの変更が求められたら好きな様に、CSSなどを買えればよいかなと思います。自由にご利用下さい。

あと、iPhoneだと、サイズを調整しないと厳しいですが、iPadなら利用することができました。

 

なお、ドラムロールの音にニコニコモンズを利用させてもらいました。

http://commons.nicovideo.jp/material/nc79078

kenapoさん、ありがとうございます。

React.jsでLoL生放送のリアルタイムランキングを作ってみました

f:id:sifue:20150814191454p:plain

お盆で会社も気分転換に休んでちょっとしたWebサービスを作ってみました。

LoL生放送リアルタイムランキング

世界で一番遊ばれているe-sportsな無料のネトゲ、League Of Legends(LoL)を遊んでいる日本語の生放送だけを抽出して、スコア付けしてランキング化しています。

使った技術はいつもどおりのPlay2/Scala、PlayJsonです。WSは使わずHttpclientをそのまま使っています。WSは罠が多すぎるので...。

 

やっていることはTwitchのAPIとニコニコの検索APIを叩いてAkka Actorで1分毎に実行しつつそれをCacheに積んでいるだけです。

クライアントサイドは、今回はじめてReact.jsを使ってみました。React.js、以前勉強会に参加した時にはまだまだ使えるようになるの先かなぁと思っていましたが、JSXで書いてコンパイルするというスタイルがおもったより良い感じです。ただエディタは、IntelliJを無理して使うよりはAtomを使ったほうがいろいろ便利でした。

使ってみた感じコンポーネントの再利用がし易い感じがします。TypeScriptとReact.jsを組み合わせて使うと結構保守性も高そう。ただ別に実行速度が高いとかいうわけでもないので、無理して使わなきゃいけないというわけではなさそうですね。

罠としては

  • classをclassNameに書き換える必要があること
  • {}の中はJ結構JSのコードがかけちゃうので気をつけないと複雑になること

でしょうか。あとComponentというクラスが描画戦略を持っているのですごく頑張って実装すれば最終的に高効率の描画ができそうです。

なおこのサイト、今は前回と今の結果から差分だけをだしていますが、いずれリアルタイムランキングだけではなくLoLのゲーム実況配信者の人気統計みたいなのを取って週間ランキングや月間ランキングを出せればなと思っています。

にしてもこのランキング、今日一日眺めてたけどLoLの女性配信者の多さね...そして、女性ゲーマーでダイアとかゴールドの人がゴロゴロいるってのが本当にすごいなと思います。

JavaFXとRxJavaの勉強のためにSocket通信対応したMac用棒読みちゃんクローンを作ってみた

sifue/bouyomisan · GitHub

あけましておめでとうございます。

丁度冬休みということもあって、Mac用の棒読みちゃんクローンを作ってみました。

インストールバイナリもソースコード自体もgithubで配布中。あと、ソースコードはMITライセンスです。 

f:id:sifue:20150104003203p:plain

f:id:sifue:20150104003205p:plain

見た目はこんな感じ。

使ったライブラリとしては、

  • JavaFX (Java8からデフォルトになったJavaの新UI)
  • RxJava (ReactiveExtensionsのJava版)
  • gradleのmacAppBundle (Mac用の.appファイルを作ってくるバンドル)
  • kuromoji (日本語形態素解析ライブラリ)
  • Netty 4系 (高速なTCP通信が可能なサーバー)

実装した機能としては

  • ニコニコの読み上げ文化などに対応した、単語や正規表現による辞書置換
  • 漢字のかなへの読み上げの変換
  • Socket通信を利用した読み上げ
  • 棒読みちゃんとおなじAquesTalkを利用するためのUIを提供

です。過去読み上げしてくれるMac用のアプリはいくつかあったのですが、棒読みちゃん互換のSocket通信読み上げに対応したものがなかったので自分で作ったというのが軽易です。

 

ここからは開発の感想です。ここ1年以上ずっとScala書いてるので久しぶりのJavaプログラミングはいろいろ懐かしいものがありました。ただラムダやStreamを使おうとしてみるもののイマイチぱっとしなかったりという感じで、そこはScalaの方が圧倒的に便利です。

まずJavaFXについてです。過去Swing、SWTと触ってきましたが何が特に非同期処理の部分のところが専用のTaskやpropertyのbindを使わなきゃいけなくなっていて結構面倒くさい感じになっています。その他の部分はUIのAPIはかなり素直な作りになっており、初心者にはわかりやすい仕組みになっているのではないかと思います。

個人的に何がすごかったかというと、JavaFX Scene Builderです。こいつが使いやすすぎる。これのためにJavaFXを使ってもいいといっても過言ではない感じでした。fxmlをIDEで協調しながら編集した際にも問題なく利用することができました。

f:id:sifue:20150104004024p:plain

あと、RxJava。元々いろいろ情報は知っていたのですが柔軟なイベントハンドリングをするためのライブラリ。オブザーバーパターンでさえ、様々な実装を用意してくれています。非常に便利なことができるライブラリですが、正直イベントが鬼のように飛びまくるようなUIでは便利ですが、ちょっとしたアプリぐらいであれば、間違った使い方をしてしまうのが少しこわいなと思う所あります。

個人的には、Subjectが様々なバリエーションがあって感銘をうけました。


java - How can PublishSubject and BehaviorSubject be unsubscribed from? - Stack Overflow

 

GradleのmacAppBundleは、Oracleが.appファイルの作り方を紹介してくれているやつをそのままプラグイン化してくれたもの。kuromojiやNettyは過去何度か形態素解析TCP/UDPサーバーを作ってみるということをやっていたので、特に問題なく利用することができました。どちらもバージョンが上がってどんどん洗練されている気がします。

 

このMac用の棒読みちゃん、棒読みさんを今後も少しずついじりながら機能拡張していきたい所です。

 

追伸

この冬休みずっとFF14とダークソウル2をやっています。真成2層練習パーティが中々集まらないそんなTitan鯖。

ScalaMatsuri祝いにIRCとSlackの相互リレーをするScala製ツールをMITライセンスで公開しました

今日はScalaMatsuriのー日目、皆様お疲れ様でした。

初めてオダスキー先生を見たり、本当に刺激的な内容が多くてとても勉強になりました。

そんな中自分は、Scalaを書きたい欲求が、ガガガーっと沸き上がってきたので、自分が欲しかったIRCとSlackの相互リレーをしてくれるScala製のツールを作りました。きっとIRCとSlackの両運用で一時的に困ってる方が居るかと思いますので、ぜひご活用いただければと思います。

ソースコードはこちら、

sifue/ircslackrelay · GitHub

MITライセンスなので、好きに改変してお使いください。使っている技術としては、

  • sirc
  • akka-acotor
  • dispatch

となります。

 

なお現在の仕様では、IRCの設定、SlackのIRCアダプタの設定、SlackのAPIのトークンの設定をして、相互リレーをするチャンネルを設定することで

IRC→Slackは

23:55 ircslackrelay: u​sername: message
23:55 ircslackrelay: _ u​sername: notice is sanded by undersocre _

こんな形式になります。Slack上ではアンダースコアで挟んでIRCのnoticeを表現。またニックネームは、最初の文字の後にサイズゼロスペースを入れることでnotificationに引っかからないようになっています。

Slack→IRC

23:55 ircslackrelay: u​sername: message

全てnoticeになり同様にニックネームにサイズゼロスペースを入れてあります。

ぜひご活用下さい。素敵なChatOpsを!

 

追伸

なお、使い方やインストール方法をもっと詳しくQiitaの方に書きました。


SlackとIRCを相互リレーする話 - Qiita

 

WEB+DB PRESS Vol.82 にオブジェクト指向アプローチによる変更に強いテーブル設計という記事を書かせてもらいました

今回でデータベース実践活用の連載2回目ですが、この度は、オブジェクト指向アプローチによる変更に強いテーブル設計、というタイトルで記事を書かせて頂きました。

写真は先ほど届いた査読誌です。

f:id:sifue:20140820224121j:plain

内容は、テーブル設計をやりはじめたばかりの新人エンジニア向けの初歩的なオブジェクト間の関連の定義の仕方から、マーチン・ファウラーのテーブル継承の手法、そして最近流行りの大規模WEBにおける具象テーブル継承のデメリットを打ち消すID設計戦略までを説明しています。

そしてこの度は、漢(オトコ)のコンピューター道で有名な奥野さん、達人に学ぶSQL徹底指南書で有名なミックさんにも査読いただき、とてもよい内容にまとまっていると思います。

おそらくWEBでDBを触っているエンジニアならば読んで損はない記事になっていると思いますので、8月23日発売ですのでぜひお買い求め下さい~。

 

WEB+DB PRESS Vol.82

WEB+DB PRESS Vol.82

  • 作者: 山口徹,Jxck,佐々木大輔,横路隆,加来純一,山本伶,大平武志,米川健一,坂本登史文,若原祥正,和久田龍,平栗遵宜,伊藤直也,佐藤太一,高橋俊幸,海野弘成,五嶋壮晃,佐藤歩,吉村総一郎,橋本翔,舘野祐一,中島聡,渡邊恵太,はまちや2,竹原,河合宜文,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/08/23
  • メディア: 大型本
  • この商品を含むブログを見る
 

追伸

今回は一番最初に出ているこのWebAPIデザインの鉄則がすごくよい記事だなと思いました。というかいつも悩んでるだよなぁ。