無課金でプレイしている人も多いとは思いますが、「ふかそうち」を買った方が強いポケモンをゲットできます。言うのも、孵化させたポケモンはレベルも個体値も高く、最終的には、野生のポケモンを強化するより、強くなるからです。個体値というのは、ポケモンの隠しパラメーターで攻撃力/防御力/体力がそれぞれ最大15まで設定されています。個体値はそのポケモンで固定で変更不可能なので、レベルも一緒、技も一緒のポケモンの場合は、最終的に個体値で強さに差が出てきますので、個体値は重要です。個体値は隠しパラメーターなので普通は確認できないですが、個体値チェッカーなどで確認することができます。孵化させたポケモンの場合、個体値はそれぞれ10以上が保証されており、レベルも高めです。強化するにはとてもバランスの取れたポケモンをゲットできます。野生のポケモンの個体値は完全に0〜15のランダムです。野生のポケモンの中には、孵化させたポケモンよりレベルが高く、その分CPも高い場合がありますが、大抵個体値が低いので、レベルを上げていくと最終的に孵化したポケモンの方が強くなります。(ただし、個体値よりも技の方が重要なので、個体値の高低より、技が強い方のポケモンを選びましょう)なので、強いポケモンをゲットしたければ、なるべく沢山のポケモンを孵化させましょう。誰でも最初から「むげんふかそうち」を持っているので、1つずつでも孵化させることができますのが、ポケモンのたまごは最大で9個持てます。たまごは捨てることができません。孵化させるしかたまごを消費することができないのですが、1つずつ孵化させるより9個一辺に孵化させた方が効率が良いでしょう。そこで、必要になってくるのが「ふかそうち」です。「ふかそうち」とは、ポケストップなどでゲットできるポケモンのたまごを孵化させる装置です。ショップで購入でき、3回使えて、150ポケコインします。たまごを9個孵化させようと思うと、8個の「ふかそうち」総額1200ポケコインが必要ですが、その効果は絶大です。注目したいのが、10kmたまご(10km移動すると孵化するたまご)です。10kmたまごには、ラプラスとカビゴンが含まれています。ラプラスもカビゴンも最終CP3000前後の最強クラスのポケモンです。両者ともに、野生でもゲットできますが、出現率が低いうえに、レベルも個体値もランダムのため、弱い可能性があります。その点、孵化させた場合は、強いことが保証されています。10kmたまごも20個に1個ぐらいの確率でしかゲットできないうえに、10kmたまごで生まれるポケモンもランダムな点が難点です。筆者は今まで478個のたまごを孵化させましたが、ラプラス0匹、カビゴン2匹という状況です。2匹のカビゴンはともに生まれたときからCP1800前後(生まれるポケモンのレベルはプレイヤーのレベルによるので参考程度に)で、ジムバトルでエース級の活躍をしています。一度ゲットしてしまえば最後まで育て甲斐のあるポケモンがゲットできるので、ぜひ孵化させていきましょう。そのためには移動する必要があります。ポケストップ周回コースなどを回って移動距離を稼ぎましょう。ポケモンGOは移動してたまごを孵化させること、そして、プレイヤーレベルを上げることが必勝法と言えます。プレイヤーレベルを上げるためには「しあわせたまご」を使うのが良いでしょう。「しあわせたまご」についても解説します。ポケストップ周回コース御幣島周辺でポケストップを最も効率よく周れるコースを紹介します。自転車でゆっくり周っても10分ぐらいで15箇所のポケストップを周れます。1周回るとスタート地点に戻ってきます。ポケストップは5分程度で再びアイテムをゲットできるようになるので、スタート地点に戻った頃にはまたスタート地点のポケストップからアイテムをゲットできます。数周回れば、かなりの量のアイテムを集めることができるでしょう。モンスターボールやキズぐすりが足りない場合に回ると良いでしょう。筆者は1周回っただけで50個ぐらいアイテムをゲットしました。(ゲットできるアイテム数はプレイヤーのレベルによって違うので参考程度にしてください。)また、たまごを孵化させるために移動したい場合も、何も無いところを移動するより、周り甲斐があります。ポケソースも10箇所ぐらい遭遇しますので、ポケモンを捕まえながら回るのも良いでしょう。このコースの特徴はほとんど信号待ちしなくて良く、車にあまり遭遇しないという点です。自転車(徒歩も含む)で短時間で移動距離を稼ぎたい、ポケストップを回りたい場合に信号待ちは馬鹿にできないロスタイムになってしまいますので、このコースは重宝します。梅田や難波などの都心に行けば、いくらでもポケストップの密集地帯はあるでしょうが、御幣島周辺でポケストップの密集地帯はなかなかありません。このコースをぜひ有効活用しましょう。以下、訪れるポケストップの順序を列挙します。簡単に説明すると特定のポケモンが沢山出現する場所です。大阪なら扇町公園はアーボの巣になっていて、扇町公園に行けば、アーボが沢山出現します。特定のポケモンが沢山出現するのはその場所に複数のポケソースが設定されているからです。ポケソースというのは耳馴染みが薄いかも知れませんが、一定時間間隔で同じポケモンが出現し続ける場所を言います。このポケソースが複数設定されているところがポケモンの巣になるわけです。ポケソースについては下記のリンクが詳しいので詳細は下記のリンクを読んでください。スリープの巣を紹介しましたが、それぞれポケソースが1箇所しか設定されていないので、「巣」と表現するのは大げさかも知れませんが、読者のみなさんに分かりやすく伝えるために、そう呼んでいることをご了承ください。このポケモンの巣、しいてはポケソースですが、上記のリンクの記事にも書いてある通り、ルアーモジュールとは関係なく時間と場所固定で出現します。いうことは、ポケモンの巣でルアーモジュールを使っても、ポケソースに設定されているポケモンは出現しないということです。スリープの巣でルアーモジュールを使ったとしても、ルアーモジュール周辺にスリープが出現することはありません。ポケソースに設定されているポケモンはあくまでその時間にその場所に行ってこそ出現します。ポケモンを出現させるアイテム「おこう」もありますが、これもポケソースとは関係ありません。スリープの巣で「おこう」を使っても、それによってスリープは出現しません。ルアーモジュールについてはルアーモジュールの効果を勘違いしていませんか?を参照ください。「おこう」の効果については別記事で説明したいと思います。スリープの巣(グーグルマップでは御幣島東公園が表示されなかったので代わりに西淀川区民ホールを表示しました。御幣島東公園では定期的にスリープが出現します。歌島公園を調査中に発見したので、正確な時間を測っては調査していないのですが、30分毎に1体出現する頻度のようです。調査中には19:37に1体、20:06に1体出現しました。「ちかくのポケモン」にスリープが表示された場合、ここにくれば出現するでしょう。スリープ目的で近隣を徘徊する場合は、30分毎に1体という低頻度であるため、歌島公園のブーバーなど他のポケモン捕獲も含めて、近隣の公園も一緒に徘徊することをオススメします。5丁目7歌島公園内の南西部でブーバーが定期的に出現します。歌島公園の周りの道を一周10分〜15分ほどかけて、4周ぐらい(約1時間)調査した結果、ブーバーが4体も出ました。トレーニングセンターが並んでいる方面)でいきなり一体出現、続けて18時ちょうどに南東部(信号のある交差点付近)に一体出現!18時31分に同じく南東部で一体出現、47分にも南東部で一体出現しました。南西部で1体、南東部で3体の計4体のブーバーが出現しました。他に東部でイーブイ3体、西部でナゾノクサ1体も出現(他にポッポ1体、コラッタ4体)ブーバーの出現する箇所はほぼ南東部に固定されているようです。歌島公園付近で「近くにいるポケモン」にブーバーが表示されたら歌島公園の南東部に行けば大体出現すると思われます。歌島公園の北部(グラウンドより北側)はほとんどポケモンが出現しないので、基本的には南部(グラウンドより南側)を探す方が良いでしょう。ポケモンの出現頻度が15分〜30分と間隔が長いので、他の公園と合わせて周る方が良いでしょう。(追々、他の公園と合わせた周遊コースを考えてみたいと思います。0angular-fullstackをTypeScriptで書き換えてみようAngularJSをTypeScriptで書くと分かりやすいコードが書ける。それを実証するために、angular-fullstakをTypeScriptで書き換えてみる。参考文献AngularJS+TypeScriptを試してみた。ここで想定している環境は下記の通り。TypeScriptのコンパイラーターゲットをES6にするtsconfig.jsonで、targetをes6に変更する。}}次に、angular-fullstakの元々のコードとTypeScriptに書き換えたコードを列挙していく。元のJavaScriptがすでにES6によるclass化がされているので、変換後のJavaScriptも元のJavaScriptとほとんど変わらない。元のJavaScriptは下記の通り。MainController);})();TypeScriptは下記の通り。ここでconstructorの引数socketの型がanyであることに注目。anyというは「何でもあり」を意味し、型を定義していないのと同義なので、TypeScriptにするメリットが得られない。socketはangular-fullstackが作成しているので型定義ファイルが無い。そこでとりあえずはanyとしておき、後でsocketの型を定義することにする。MainController);変換後のJavaScriptは下記の通り。serviceを書き換える先ほどanyとしたsocketをclass化して型を定義する。client/components/socket/socket.service.js元のJavaScirptは下記の通り。});Socket.syncUpdatesの引数cbにデフォルト引数が付いていることに注目。呼び出し側でcbを省略したときはangular.noopが適用される。実際main.controller.tsではcb未設定で呼び出されている。試しにcbのデフォルト引数を削除するとmain.controller.tsでSocketのエラーになる。元のコードではunsyncUpdates()でsocket.removeAllListeners()を使っているが、socket.removeListener()の間違いと思われる。Socket.constructor()の引数socketFactoryがanyとなっているのは、angular-socket-ioの.d.tsファイルが無いため、型定義できないためである。Socket);変換後のJavaScriptは下記の通り。Socket);先ほどのmain.controller.tsでsocketの型を定義する。directiveを書き換えるclient/components/footer/footer.directive.jsを書き換えてみる。元のJavaScriptは下記の通り。});TypeScriptは下記の通り。Footer());変換後のJavaScriptは下記の通り。angular-resourceを書き換える最後におまけとしてangular-resourceを使っているclient/components/auth/user.service.jsを書き換えてみる。angular-resourceは元のJavaScriptから随分違うコードに書き換える必要があるので注意が必要だ。TypeScript.元のJavaScriptは下記の通り。UserResource);})();TypeScriptは下記の通り。});変換後のJavaScriptは下記の通り。0AtomでTypeScriptの開発環境を構築しよう最近、TypeScriptにハマってます。TypeScriptでAngularJSを書くと大変読みやすいコードが書けます。TypeScriptの開発環境はAtomで構築するのが一番だろう。いうわけで、UbuntuにAtomをインストールして、TypeScriptの開発環境の構築方法を説明する。ここで想定している環境は下記の通り。開発環境構築と周辺ツールの紹介ちなみに、tsdとは型定義ファイルマネージャでTypeScirptの.d.tsファイルを管理するツールである。AtomにTypeScript開発環境を構築する下記URL参照AtomでTypeScriptの環境を構築するなお、筆者は上記のtsconfig.jsonのうち、下記の設定にカスタマイズしている。0YEOMANを使ってMEAN(MongoDB+Express+AngularJS+Node.js)を作成しようYEOMANを使ってMEANを作成する手順と開発チュートリアルを説明する。MEANとはMongoDB+Express+AngularJS+Node.jsを組み合わせたWebアプリケーションである。YEOMANとはフレームワークを簡単に作成できるツールで、node.jsのパッケージとして提供されている。MEANのフレームワークにはangular-fullstakを使う。※Yeomanで用意されているジェネレーターは沢山有るがMEANを作成できるジェネレーターで一番人気がangular-fullstakほとんどの手順は下記URLに従う。Node.js)のWebアプリケーションを作るしかし、上記URLはYEOMANのバージョンが古いためか、チュートリアルの内容が現状のバージョンに沿わないため、下記であらためて説明する。ここで想定している開発環境は下記の通り。事前準備まずはangular-fullstakに必要なアプリをインストールする。Rubyとgemのインストール下記URL参照UbuntuにRubyGemsをインストールする※なお、フレームワークにSassを使わない場合はRubyとgemをインストールする必要はない。node-inspectorのインストールデバッガを使う場合は下記コマンドを実行する。node-inspector以上で事前準備は完了した。次にMEANアプリの開発チュートリアルを説明する。MEANアプリの雛形を作成するyoを使ってMEANアプリを作成する。アプリを作る場所はユーザーディレクトリの配下にする。※ちなみにVMWareなどのバーチャルPCでの共有フォルダにはアプリは作れない。アプリ作成時にシンボリックリンクを貼るが、共有フォルダにはシンボリックリンクが貼れないため。アプリ名はsampleとする。sample※ディレクトリ名がそのままアプリ名になる。angular-fullstackなお、アプリの作成はウィザード方式になっており、各設定をダイアログで設定する。各項目と選択すべき項目を列挙する。serveブラウザが自動的に起動して下図の画面が表示されれば成功である。routerを作成するyoで作られたMEANアプリにメンバー一覧ページを追加するというチュートリアルを説明する。処理の流れとしては、1.yoコマンドでrouterの雛形を作成する2.routerのhtmlを編集する3.routerのcontrolerを編集するという流れになる。Cでgruntを止めて、下記のコマンドを実行する。member下記のダイアログは全てデフォルトにする。memberすると下記のファイルが作成される。client/app/member/member.scss動作確認する。servehttp://localhost:9000/memberにアクセスして、下図が表示されれば成功である。htmlを編集するclient/app/member/member.htmlを下記の通り編集する。ダミーデータを追加するメンバーが正しく表示されるかを確認するためにダミーデータを追加する。(ダミーデータを後からmongoDBのデータに置き換える)client/app/member/member.controller.jsを下記の通り編集する。動作確認するhttp://localhost:9000/memberにアクセスして、下図の通り表示されれば成功である。clientからserverをGETする処理の流れとしては、1.clientからserverの/api/membersをGETで呼び出し2.serverはcontroller.index関数へルーティング3.controller.index関数でMongoDBにアクセス4.MongoDBがデータを返すという流れになる。Cでgruntを止めて、下記のコマンドを実行する。member下記のダイアログは全てデフォルトにする。/api/membersすると下記のファイルが作成される。スキーマを定義するメンバー一覧に表示する名前を定義する。server/api/member/member.model.jsを下記の通り編集する。MongoDBにデータを追加するMongoDBに初期データを追加する。server/api/member/member.controller.jsのMember変数定義以降に下記を追加する。サーバーにGETが定義されていることを確認するserver/api/member/index.jsに下記の通りgetが定義されていることを確認する。controller.index);server/api/member/member.controller.jsに下記の通りindex関数が定義されていることを確認する。.catch(handleError(res));}※上記のコードはangular-fullstackによって自動生成される。APIに接続するclientからserverのapiを参照する。client/app/member/member.controller.jsを下記の通り編集する。動作確認するhttp://localhost:9000/memberにアクセスして、下図の通り表示されれば成功である。clientからserverへPOSTする処理の流れとしては、1.clientからserverの/api/membersをPOSTで呼び出し2.serverはcontroller.create関数へルーティング3.controller.create関数でMongoDBにアクセス4.MongoDBへデータを保存するという流れになる。メンバー登録フォームを追加するメンバーページからメンバーを登録できるようにする。client/app/member/member.htmlを下記の通り編集する。登録ボタンのイベントハンドラーを追加するボタンが動作するように、イベントハンドラーを追加する。client/app/member/member.controller.jsを下記の通り編集する。動作確認するhttp://localhost:9000/memberにアクセスして、任意の名前(例では佐藤)を入力して登録ボタンを押して、下図の通り表示されれば成功である。登録データをPOSTするこのままではサーバーにデータが保存されていないので、データをサーバーへPOSTする。client/app/member/member.controller.jsを下記の通り編集する。サーバーにPOSTが定義されていることを確認するserver/api/member/index.jsに下記の通りpostが定義されていることを確認する。controller.create);server/api/member/member.controller.jsに下記の通りcreate関数が定義されていることを確認する。.catch(handleError(res));}※上記のコードはangular-fullstackによって自動生成される。動作確認するhttp://localhost:9000/memberにアクセスして、任意の名前(例では佐藤)を入力して登録ボタンを押して、さらにページ更新して、下図の通り表示されれば成功である。socket.ioでページを同期させるangular-fullstackではsocket.ioをページの同期に使っているようなので、それについても説明する。処理の流れとしては、1.clientでページ読み込み時(/api/memberをGETする時)にsocket通知によるデータ配列追加/削除処理を登録しておく。(syncUpdates関数)2.serverではMongoDBにデータを追加した際にMongoDBのポストホック機能(Member.schema.post関数)からホックしている全てのclientへsocket通知を送信する。3.clientではsocket通知を受け取ったら、データ配列に追加する。(データは$scope内に定義しているので、angularJSにより自動的にページ更新がかかる。socket.syncUpdates()を呼び出すclient/app/member/member.controller.jsを下記の通り編集する。socket.syncUpdates()の定義を確認する/client/components/socket/socket.service.jsにsyncUpdates関数が定義されていることを確認する。},※上記のコードはangular-fullstackによって自動生成される。MongoDBのポストフック機能を使ってsocket通知が呼び出されていることを確認するserver/api/member/member.socket.jsにMongoDBへのデータ追加時にsocketからmember:saveが通知されることを確認する。};}※上記のコードはangular-fullstackによって自動生成される。socket通知の登録処理が呼び出されていることを確認するserver/config/socketio.jsでregistar関数が呼ばれていること確認する。require('../api/thing/thing.socket').register(socket);}※上記のコードはangular-fullstackによって自動生成される。動作確認するブラウザを2ウィンドウ開き、http://localhost:9000/memberにアクセスして、一方に任意の名前(例では藤原)を入力して登録ボタンを押して、もう一方に登録内容が反映されれば成功である。デバッガ(node-inspector)を起動するデバッガの起動方法を説明しておく。下記のコマンドを実行する。serve:debugするとブラウザが自動起動してnode-inspectorが開く。‘–debug-brk’オプション付きで起動されるので、必ずサーバー側のソースコードの先頭でブレイクする。gruntでブラウザ指定する起動するブラウザを変えたい場合、Gruntfile.jsを下記の通り変更する。functionを駆使するとCallbackを呼び出せる。内部のクラス間のやりとりなら、interfaceを使うよりお手軽。1node.jsをevennodeにデプロイしようevennodeはnode.js専用のPaaSなので、使い方は非常に簡単。ほとんどブラウザから設定できるので迷わないとは思うが、一応使い方を説明しておく。6.5で、gitはインストール済み、node.jsのソースコードも作成済みとする。evennodeのサインアップやログインはHPから行える。ここではサインアップしてログイン後のコントロールパネルからアプリの作成手順を説明する。APP」をクリックする。お試しならFreeで良いだろう。node.jsの設定Domainでサブドメイン名を設定する。これは他のevennodeのアプリとかぶらない名前にする必要がある。States(lowa)かを選べる。Domainは独自ドメインを使う場合に設定する。platformはNode.jsかio.jsかを選べる。普通はNode.jsで良いだろう。varsionはv0.8.6~最新まで指定可能。commandは自動かカスタムかを選べる。以上でアプリが作られる。アプリの管理さらにアプリの詳細設定を行う。APPタブで作ったアプリをクリックする。keysをクリックする。GitにGit用の公開鍵を設定してSaveボタンを押す。varsをクリックする。環境変数の設定Nameに環境変数名、Valueに環境変数の値を入れて、Saveボタンを押す。以上でevennodeでの作業は終了。app.jsの作成ここからローカル環境での作業になる。appevennodeではどうもルートディレクトリのapp.jsを起動するようになっているようだ。{“start”}で別のソースコードを起動するよう記述しても認識されなかった)app.js以外から起動したい場合はapp.js内でrequireで呼ぶ。server/app.jsを起動したい場合は、ルートディレクトリにapp.jsを作成して下記を記述する。Repository」に記述してある。デプロイするgitでプッシュしてデプロイ完了。installでインストールされるべきモジュール群もコミットしておく。設定方法は提供されていない。keyを送れと返事が返ってくるので、送ると設定してくれる。メールは英語でやり取りできる。