Parseでクロスドメイン通信

外部のAPIを呼ぶ時等に"XMLHttpRequest cannot load 〜 is not allowed by Access-Control-Allow-Origin" みたいにエラーになるケースがあります。ajaxでクロスドメイン通信をする際にサーバ側でAccess-Control-Allow-Origin をつけないといけないというやつです。 ただ、外部の場合はそうもいかないのでjsonpを使ったり自前のサーバを介したりする必要があります。後者の自前のサーバを介す際にPHPのサンプルなどはajaxでクロスドメイン通信を実現するphpで見つける事ができたのですがPHP用のサーバを用意するのが面倒という事もあってParseでできるかどうか試したので紹介しておきます。

ちなみにParseとは個人のスマホアプリ開発者がParseを使うべき15の理由の引用ですがMBaaS(Mobile Backend as a Service)で最も有名なサービスの一つです。 Parseの設定は以下のクイックスタートを見て設定しました(ログインしないと見れないかも) JavaScript Developers Guide | Parse

ここのcloud/main.jsを

Parse.Cloud.define("hello", function(request, response) {
  Parse.Cloud.httpRequest({
    url: 'http://www.shigotonavi.co.jp/api/search/',
    params: {
        key: "{しごとナビのアプリkey}",
        spc: request.params.spc,
    },
    success: function(httpResponse) {
      response.success(httpResponse.text);
    },
    error: function(httpResponse) {
      console.error('Request failed with response code ' + httpResponse.status);
    }
  });
});

としています。今回はしごとナビのAPIを使いたかったのでそのようなサンプルですがクライアントからhelloとリクエストを投げるとしごとナビのAPIを叩いてその結果をクライアントへ返しています。spcはしごとナビ側の検索条件なので気にしないでください。

ちなみにクライアント側は

Parse.initialize("{parseのappID}", "parseのjavascript Key");
Parse.Cloud.run('hello', {spc: "001"}, {
  success: function(result) {
    console.log(result);
  },
  error: function(error) {
  }
});

ParseJavascriptSDKのinitializeをしてhelloを叩いてるのみです。簡単。

Parse。こういう柔軟な使い方できるので便利だと思います。

求人情報のAPIについて

4月からシリアスゲーム開発ワークショップというのに参加してシリアスゲームを開発してます。 第1回シリアスゲームジャムに参加しました! - topspot's blog でもシリアスゲームを開発したりしてたんですが、また開発したくなったので。後、前回はリリースしきるところまではいけなかったので今回はリリースしたいなと。

ちなみに今回のテーマは「地域振興・地方創生」です。前々から地方に住む人や就職する人が増えたらいいなぁと思っててそれなら求人とかのデータひっぱってこれないかなと思ってデータを色々探しました。結局日本の全エンジニアに捧ぐ!現在公開されているAPI一覧【2013年版】から探したんですけどね。一応2014年版もあるので最新情報はそちらを見た方がいいかも。

ちなみに企画書プロトタイプとして作ったデモ

以下がその時に使用を検討する際のAPIの調査です。

しごとナビ

結局これを使う事にしたので最初に紹介。 認証局APIキーを発行するのも10分くらいですぐ使えるのでオススメです。 使った理由はレスポンスをjsonで返してくれるから。ただ、クロスドメインの問題があったので github.com を使用した。 ただ、これを使うと無駄な情報もついてくるのでjsonを取得する場合に

var json = $.parseJSON($(res.responseText).text().trim()).result;

のように書く必要があった。

フロムエー

こちらも認証局APIキー発行するのがすぐなので使うまではオススメなんですがxmlしかデータ形式がないのと説明がダウンロードのファイルに書かれててちょっと説明を見るのが面倒です。

ハローワーク

ハローワークってそんなに評判よくないんですけど公務員情報や商用とかでも使って大丈夫など権利関係で使いやすいと思って本当はこれを使いたかったんですけどAPIキーを発行するのに役所まで行かないといけないということで今回は断念しました。。 後、ドキュメントがわかりにくいんですよね。どうも公的機関が書くドキュメントって冗長で要点を絞ったものが少ない印象です。

以上、求人情報のAPI使おうかなと思ってる人の参考になればと思います。

Unity の Collider2D の移動が重い

Unity で横スクロールゲームを作ってる時に Collider2D を適用したオブジェクトを大量にだすと重くなってきたので調べてみた。

原因としては Collider2D を適用したオブジェクトを transform.position で動かすと新しいポジションにした時に Collider2D の破棄と再生成をするというもの。 なので基本的な解決策としては Rigidbody2D を割り当てて rigidbody.MovePosition で移動するというものがある。これだと破棄と再生成は行わない。 今回はそれ以外にも親オブジェクトを動かしていたため rigidbody.MovePosition をしたら子オブジェクトが動かない問題というのがでてきたので上記の手法が全てに使えるわけでなはなかった。

なので Awake で生成した時に collider2d.enabled = false; でコライダーを動かさずに、OnVecameVisible() でオブジェクトがカメラ内にはいったらコライダー復活させるようにした。カメラ外で反応しない事に問題はなかったので。 これで大体2倍くらいパフォーマンスに変化があった。

ビフォアー

f:id:topspot:20140813140034p:plain

アフター

f:id:topspot:20140813140050p:plain

GoKit入門 + GoTweenChain等でLoop再生する方法

GoKitを試してみたので軽くメモ。 GoKitをプロジェクトに組み込むには https://github.com/prime31/GoKit からCloneしてきて中の Assets/Plugins/GoKit をそのまま自分のプロジェクトに放り込んだらOK。

それで、色々触っていてTweenをつなげるときにGoTweenChainを使ってたんですけど通常のGoTweenでは setIteration() 等でアニメーション回数を指定できるんですが、GoTweenChainではそのようなメソッドが見当たらない。ということでChainでつなげた最後のTweenのonCompleteで再度GoTweenChainをPlayするようにしました。 コードとしては以下の通り

何か他にうまい方法とかないんですかね。

【追記】 上記の方法だとTweenのインスタンスが破棄されずに残ったままになるようなので、GoTweenChainのインスタンスを保持しておいて、続けて再生する前とGameObjectのOnDestroy()で破棄しなければいけなかった。

第1回シリアスゲームジャムに参加しました!

先週末の23、24とシリアスゲームジャムに参加しました。 Serious Game Jam -公式ページ

シリアスゲームとはゲームの楽しさだけでなく、教育や医療等の分野の解決にも役に立つゲームの事で、わかりやすい例をあげると脳トレや英語漬け等のゲームがそれにあたります。 詳しくは東大の藤本先生のブログにも書いてます。 Another Way: 「第1回シリアスゲームジャム」を開催しました

今回のシリアスゲームジャムのお題は英語学習ということで前もって企画のペラコンが Facebook グループ (https://www.facebook.com/groups/1392487234342662/) 内で行われ、投票の結果5名の企画が選ばれてチームを組んで作成していくというものでした。

僕の入ったチームのタイトルは BigBigDragon というもので、簡単にいうと英語学習たまごっちみたいなものです。ドラゴンがエサを英語で欲しがるのでそのエサを与えていき、与えるエサによってドラゴンが様々な進化を遂げるというものです。

f:id:topspot:20140227233906j:plain

これを皆大好きUnityで作っていきました。ちなみにチームの構成としてはエンジニア3人、デザイナ1人、企画2人というものでした。 前もって企画等をFacebookのグループを使って話し合って、当日は作業のみに集中しようということだったので2日間の内、大体の時間を作業に使えたと思います。 なので当日も企画について少し確認して後はタスクを洗い出してどんどん実装していきました。特にデザイナの方がすでにドラゴンを出す所をUnityで作ってくれていたので(しかも背景に豪華3Dモデルを使って)かなりイメージが湧いて助かりました。

ただ、どんどん実装するといっても僕自身Unityに不慣れな面もあって作業ペースとしては遅かったと思います。おまけに企画側がデータを作ってツールを用いてオシャレに開発したいなぁと思ってエクセルインポータを調べたりしてたりと寄り道もしちゃったなぁと。結果デザインのリソースや企画が考えてくれた機能を全部入れる事ができずエンジニアとしては申し訳ない気持ちでした。 当然ながら皆、満足しなかったのでこれからも開発を継続していきます。目指せリリース!

今回面白いと思った点はエンジニアやデザイナ以外の方の参加が非常に多かった事です。普通ハッカソン等ではどうしてもエンジニアが多くなるのですが今回は企画が一番多いんじゃないかなと思いました。しかも色んなバックグラウンドを持った人達で学生からネイティブスピーカー、ゲーム会社に勤めてるプロ等と本当に面白い方が揃っていたと思います。最後の発表プレゼンでも皆さん非常にうまく企画のプロだなと感心しました。これからも様々なところでハッカソンやゲームジャムがあると思いますがどんどん才能豊かな企画の人がでてきてほしいなと思いました。

後、最近は自分自身プログラムの事ばっかり考えて企画の事は考えなくなってきたなと思ってきていたので、今回の企画者の人達を見習って自分でもどんどん企画を考えていって次回のシリアスゲームジャムでは是非自分の企画で挑戦したいなとも思いました。

ちなみにシリアスゲームってかなり可能性を感じる分野でこれからもどんどん伸びてきそうなので自分でも色々作りながら可能性を模索していきたいなと思いました。脳トレより儲ける教育効果のあるゲーム作りたいです!

大きな手術で迷った場合、セカンドオピニオンをやった方がいいと思いました

はじめに

2014年1月7日に三件茶屋第一病院で椎間板ヘルニアに対して PED 手術を受けました。ここに至るまでの半年の症状について、ファーストオピニオンの診断結果について、それを受けてのセカンドオピニオンについて等をまとめておこうと思って書きました。 ちなみに手術自体はおそらく成功で詳しくは

椎間板ヘルニアに対する PED 手術を受けてきました - topspot's blog

に書きました。

6月〜7月 症状発覚

腰の痛みの症状が出始めたのは6月の上旬頃でこの時はしばらく立っていたら尻から左足にかけて痛みが生じるというものでした。しばらくしても治らなかったので六本木ヒルズクリニックに通って念のため MRI 検査をしたところ L5/S1 のところでヘルニアになっているとのこと。もともと12年前と5年前にヘルニアになっていてその時と症状が似ていたのでなんとなく予想はしていました。 痛み止めを貰って筋トレをするように言われたので2、3週間ほど言われるようにして痛み止めもロキソニンからリリカ、トラムセットと徐々に強いものに変わっていったのですが改善しなかったのでもっと大きな病院で見てもらうことに、この時医者に「近い病院の方がいい?」と聞かれたので「はい」と。仕事もあるので近い病院の方が有り難かったからです。そして東京済生会中央病院を紹介されました。

7月〜9月 済生会病院で初ブロック注射そして検査入院まで

済生会は結構大きな病院で大きな病院お決まりのごとく予約しているにも関わらず1時間以上待たされて結構辛かったです。そこでMRI画像を見てもらったのですが「ヘルニア以外でも上の部分の椎間板の形がおかしいね、これはボルト固定した方がいいかも」と怖い事を言われました。「とりあえず硬膜外ブロックやって様子見てみるか」との事で初ブロック注射。怖い。まぁ思ったよりすんなり終わったのですが帰る時にすぐ痛みが生じていたので全然効いていないなと。 次回の診察時に硬膜外ブロックが効かなかった旨を話すと「じゃあ神経根ブロックやるか、次の土曜で」という感じで決まりました。 初の神経根ブロック注射。怖い。神経根ブロックは特に注射の中でも痛いと言われているのでかなり怖かった覚えがあります。この時くらいからさすがに大事なので家族には連絡しておこうと思って連絡しました。 そして神経根ブロックをやってもらいました。実際やると確かに痛いもののこれで普段の痛さがちょっとでもマシになればと思うと耐えれました。ただ、緊張のためかアレルギーか終わった後に凄い吐き気が襲ってきて汗がダラダラでてきたのを覚えています。その後ベッドで1時間ほど休憩して帰ったのですが帰る時にはすでに痛みがでていました。 次回の診察時に神経根ブロックが効かなかった旨を話すと「もっと別のところに原因があるかもしらんから検査入院しましょう」という事で9月末に検査入院する事に。MRI では寝た状態での椎間板の画像しか見れないのでミエログラフィーというもので造影剤を腰に注入して色んな状態の画像を見て判断しようというものです。造影剤を入れると一日は寝た状態にしないといけないのでそのための入院。

9月〜10月 検査と結果

検査は結構緊張していたのですが神経根ブロックと同じくらいの痛みでした。それより点滴が一日ずっと刺さってる違和感の方が嫌です。(一回目失敗されたし) で次の日に検査結果を病室で。前の晩に先生が「意外な事がわかった」と言ってたのであんまり良い結果ではなかったんじゃないかなと予想していたのですがその通りでした。

f:id:topspot:20140111155554j:plain

上記画像の椎間板のすぐ下の黒い部分がヘルニアでそれが神経を圧迫しているのですがもう一カ所、そのすぐ右側に白い影が出っ張って映っています。これがどうやら骨らしく(骨棘?)これが原因で痛みが出ているんじゃないかと言われました。先生は「普通の医者なら気づかないところだった」「これだとヘルニアを取り除いただけでは症状は改善されない」と言って、その場合の手術方法に関して丁寧に説明してくれました。 この骨を取り除くためには腰の骨の一部を一旦外して削らなければいけない。そのためにボルトで固定して尾てい骨の骨も移植しなければいけない。また出血も多くなるので1リットル程の輸血を準備しなければいけない。入院は3週間ほどだが退院しても2週間は安静に。等等の説明があったのですがこの時はかなりショックを受けて他に方法はないのかと思いました。実際に先生にも聞きましたがどうやらないとの事。その後にどうやら S1 の神経が圧迫されてそうなので次回神経根ブロックをやってみて、また様子を見ようと言う事で退院しました。 そして神経根ブロック。もう慣れたものです。やったときは痛みの場所と神経根ブロックを打ったときの感触が同じだったのでこれは効いたかなと思ったのですが帰る時には既に痛みがでていたので結局は効きませんでした。 それを次回診察時に言ったところ「骨で圧迫されてると神経根ブロックを打っても圧迫が強すぎて効かない」というような事を言われました。「で手術する?」と聞かれて、この時は半分くらい手術するしかないかなと諦めはあったのですが、もう半分、心の中でまだ納得できない部分があったので最後にセカンドオピニオンで意見を聞いてみてもいいかと伝えて診断書を書いてもらいました。

11月〜12月 セカンドオピニオンで三件茶屋第一病院へ

セカンドオピニオンをどこにする迷っていてネットで調べていると、吉原先生のこのホームページを見つけました。

腰痛治療 | 腰博士

そういえば PED 手術で有名な出沢先生の指導を受けた先生とかで有名な方だと。ホームページもわかりやすくブログも書かれていて考え方に共感を持ったのでこの病院でセカンドオピニオンを受けようと思いました。ちなみに以下がブログ。

腰痛にきく腰博士・猫の手ブログ

腰博士の腰痛でどっと混む

初診は予約が必要だったのですが3週間待ちでした。やっぱり人気のある先生は凄いなとこの時は思いました。で、診察ですがまず自覚症状が足のどの部分にあるか、アキレス腱等の反射等を見られたりしました。そういえば済生会では画像診断しかされてなかったなぁと。その後画像を見て「確かに画像を見る限り骨はでてるけど原因はヘルニアの方だと思う」「痛みがでている部分は症状から見て S1 神経、これはヘルニアの黒い影がある部分でこの骨の出ている部分はどちらかというと L5 の部分」「今の痛みを治すだけならヘルニアを取るだけで治るかと思う。8:2くらいの割合でヘルニアの方が多く圧迫しているように見えるので」 この話を聞いた時にはマジで?と思った。固定術をするのとヘルニアを取り除くだけなら全然処置が違うからだ。先生曰く「ただ、この画像だけでは医者の意見は割れると思う。僕はヘルニアを取り除くだけで治ると思う」という事を言われていました。なるほど、そういう風に診断する先生もいるのだなと。 この結果を持ってまた済生会の方の先生に尋ねたところ「それは絶対にない。ちゃんと脊椎専門の先生に診てもらったんですか」と言われました。ここに来てファーストとセカンドの意見が割れた事になります。ただ、僕の中ではほぼ意思は決まっていました。三件茶屋の吉原先生の方を信じようと。それはもちろんヘルニアを取り除くだけの手術で済めば助かるという気持ちもあったのですが何より絶対はないのではないかと僕自身が思っていたのと、吉原先生の方がちゃんと症状を聞いてどの神経が圧迫されているかというのを判断してくれた事です。思えば済生会の方は画像だけで判断して本当は S1 が圧迫されているにも関わらず L5 だと当たりをつけて神経根ブロックを打ったりするなどでだんだんと信頼できなくなっていました。また、固定術がしたいだけなのでは?とも思うようになっていました。実際はどうかなんて誰にもわからない事ですが信頼ができなくなっていくと、そういう風に勘ぐったりもしてしまいます。そして再度三件茶屋第一病院を訪ねて手術して欲しいという旨を伝えました。そして年明けに手術する事に。

1月 手術

手術自体は PED というもので1泊2日で退院できて傷口が小さい事で有名です。手術までの間はやはり不安はありました。ただ、もしこれで治らなかったとしても1泊2日でリスクも大きくない手術なのでその後固定術をすればいい。それで納得していました。 実際手術後に歩いてみて痛みがでなかった時は心の中でガッツポーズをしたものです。この手術を選んでよかったと。

終わりに

今回、セカンドオピニオンを受けた結果その意見の方を選んで手術しました。セカンドオピニオンを受けて本当によかったと思います。もちろん骨棘は残ったままなのでいずれはその部分が原因で別の症状がでるかもしれません。それでも僕はとりあえずよかったと思うようにしています。 僕が一番言いたいことはファーストの先生のように絶対この手術で間違いないと言い切る先生がいて実際にはそれが間違っている事もあり得るという事です。特に今回はボルトを腰に入れるという事で大掛かりで取り返しのつかない手術でした。そういう大きな局面の場合はセカンドオピニオンを一度受けてみるのがいいかなと思います。もちろんセカンドの先生がファーストの先生と同じ意見の可能性も十分にあり得ます。なのでそこらへんは運になってしまうのですが少しでも多くの意見を聞くというのは決して無駄じゃないと思います。自分が納得できない時は納得できるように答えを探し続ける姿勢が大切だと思いました。

椎間板ヘルニアに対する PED 手術を受けてきました

f:id:topspot:20140109102445j:plain

2014年1月7日に腰椎椎間板ヘルニア(L5/S1)のため 三件茶屋第一病院で PED 手術を受けてきました。 PED とは

内視鏡のPEDとMEDの違いを教えてください。 - Yahoo!知恵袋

にも書いてある通り内視鏡を用いて小さい切開でヘルニア摘出できる手術の事です(wikipediaあると思ったけどなかった。。)

結果を言うとおそらく成功で術前では間欠跛行がでて3分くらいしかまともに歩けなかったのですが術後2日目では症状が出ずちゃんと歩く事ができるようになりました。

簡単に入院から退院までどのような感じだったのか記録しておきます。

  • 2014年1月7日 9:30頃 病院で入院の受付をして8Fの病室へ。

  • 2014年1月7日 10:00頃 看護師に手術等の説明を受けて点滴。

朝は軽く食べましたが昼は手術前なのでご飯はなし。お腹は鳴ってましたけど緊張してたので特に食べたいとは思いませんでしたが。

  • 2014年1月7日 13:00頃 看護師付き添いで4Fの手術室へ。

手術室って緊張しますね。壁には僕のMRI等の画像が貼られてたり何故か音楽が流れてたり(島唄とかが流れてた)。リズムにのりながら手術するんですかね?それとも患者へのリラックス効果?

ここでまずは局所麻酔を腰に打たれます。これが痛い!今まで神経根ブロックとかも2回ほど打ってきましたがそれ以上に痛かったです。足がブルブル震えるほど。 手術担当の吉原先生に「緊張してる?」「緊張すんなよ」と声を掛けて頂きましたが、いやいや緊張するでしょと心の中でツッコミました。 その後は看護師が点滴から全身麻酔を入れると説明してくれて、心の中では早く眠りたいと思っていて、だんだんと目の前がボヤけてきて、気づいたら手術が終わって部屋に戻ってきてました。

  • 2014年1月7日 15:30頃 手術が終わって8Fの自分の病室に戻って来る。

こんだけ取れたよと摘出したヘルニアのホルマリン漬けを見せられますが頭がボーっとしててよく覚えていません。ちなみに以下が摘出したヘルニア。

f:id:topspot:20140109124556j:plain

後、腰から管(ドレーン)がでててそれが違和感でした。点滴と合わせると体に2つも管が刺さってるわけです。特に強い痛みがあるわけでなくこの時は果たして治ってるのかというのが不安でした。

  • 2014年1月7日 18:00頃 夕食。

この後何回か病院食を食べるのですがお世辞にも美味しいとは言えませんでした。

  • 2014年1月7日 22:00頃 就寝のため電気消灯。

この時にトイレに行くために歩いたのですが症状が出ず歩けたので成功したのでは?と思うようになりました。 寝る時は点滴と腰からのドレーンが刺さっていたため全然熟睡はできず。横で僕と同じように手術した人はイビキかいて爆睡してたので僕がナイーブなだけかもしれませんが。

  • 2014年1月8日 8:00頃 朝食。
  • 2014年1月8日 8:30頃 点滴終了。やっと一つ目の管が取れた、残りはドレーン。
  • 2014年1月8日 9:00頃 先生が回診。

「調子はどう」「手術あるから14:00頃にまた来るからその時退院できるか確認する」といってすぐ出ていきました。大変ですなぁ。

  • 2014年1月8日 12:00頃 昼食。

この後しばらく歩く練習したのですが症状でなかったので、これは治ったと確信しました。左足の感覚障害は残ったままですがこれはちょっと時間がかかるだろうなと。 後14:00頃来る先生は言ってましたが手術が長引いてるらしく結局来たのは16:30頃でした。

  • 2014年1月8日 16:30頃 先生が回診。

やっとのことでドレーンを抜いてもらえました。「どう、退院する?」できれば退院したかったけどドレーン抜いたばかりだったのでとりあえずもう一泊して次の日の朝帰る事に。この週は全部有休にしたので特に焦る必要はなかった。

  • 2014年1月8日 18:00頃 夕食。
  • 2014年1月8日 22:00頃 消灯。
  • 2014年1月9日 8:00頃 朝食。
  • 2014年1月9日 8:30頃 先生が回診。

特に変わった事なく次の日を迎えて先生が回診して消毒した後に次に外来いつ来るか等を確認した。傷口は抜糸とかも必要なくテープが一枚貼られてるだけ、シャワーも浴びていいらしい。

  • 2014年1月9日 10:30頃 会計準備が整ったので退院。

会計は20万ほどだった。保険で3割負担にもかかわらず20万なので意外と高く感じた。がそれで治るなら安いものかと。実際は高額医療負担とかで後々いくらかは返ってくるだろうし。

というわけで退院したわけですけど医学の進歩というのは凄いなと感心した。12年前にもヘルニアで手術してるのですがその時は LOVE 法で1ヶ月近く入院していたかと思う。また術後もかなりしんどかった。それに比べて PED は手術時間も短く術後すぐ歩けて退院も次の日にできる。まだまだ PED ができる病院というのは限られてますが、もっと広まってヘルニアに苦しんでる人が一人でも多く救われたらと思いました。