ゲーム市場についての考察

最近のゲーム市場と、今後のゲーム市場についての考察です。

1・日本のゲーム市場について

2016年の日本のゲーム市場は全体が1兆4000億円程度の市場規模。
オンラインプラットフォーム(PC、スマホだが、おそらくほぼスマホ)がここ5年くらいで大きく成長しているが、スマートフォンの普及に伴って
成長率はここ最近は伸びが低調になってきている。
家庭用ソフト、家庭用ハードの合算の合計は10年間で約半分になっていて、ここから増える見込みはあまり考えられない。
一方で、スマートフォンのゲーム市場もある程度天井に近い状態になっている。
スマートフォンゲームの市場規模は大きいが、これもここから増える見込みも今のところ大きく考えられない。
(つまり、競争は激しくなっていく)

現在の日本の市場規模でいうと、家庭用ソフト:スマホアプリ、PCゲーム=2:8。
ユーザ数でいうと家庭用ゲーム:PCゲーム:スマホゲーム=20:10:35 くらいである。

2・世界のゲーム市場について

世界のゲーム市場は10兆円近く。
日本全体と比べると約10倍近い市場規模がある。
日本はゲーム市場として大きいが、中国に抜かれている。(とはいえ、それほど差が大きくない)

ゲームの事情は国によって大きく異なっている。

北米

北米市場は、専用ゲーム機が人気で全体の約半数を占めている。
つまり、PS4やXboxOneや任天堂のゲーム機である。
スマートフォンの市場は全体の15%程度しかない。
ゲーム市場の中でPCゲーム市場が25%程度ある。

中国

中国は全体の7割近くがPCゲーム市場である。
これは政府が海外の専用機のゲームの販売を禁止していたことに起因すうr.
スマートフォンゲームの市場は全体の2割程度である。
家庭用専用機の市場は1割程度しかない。

3・世界のゲーム市場の動向

ゲーム市場を考える上での考え方としての主なポイントは「ゲームをプレイされるハードの種類」「国別・地域別」でどのように市場の大きさが推移していくかということである。

まず、ハードの種類は主に「スマートフォン」「家庭用ゲーム専用機」「PC」という区分に大きく分けることができ、この3つのカテゴリーはそれぞれ推移こそしてもなくなることはほとんど考えられない。
ただ、その割合はある程度変化しつつ推移していくことが予想される。
世界のゲーム市場は今度も成長することが予想されるが、主に成長する市場はスマートフォン市場である。

また、現在主要となっている地域の勢力が今後どのように推移していくかということに注目される。
この15年くらいで起きた変化で一番大きなものは「中国」という国の市場が大きくなり世界最大となったことだろうが、今後どうなるのかということを考えると、まずは多くの人口を抱えているインドだろう。
それ以外にも、人口を多く抱えているアジアがどうなっていくかというところに注目が集まる。
アジアは世界全体の60%の人口が住んでいるが、現在も全体の50%程度の市場規模を持っている。
ただし、これはほとんどが中国、日本、そして韓国で構成されていて(あと少し台湾、インド)それらの構成がどう変化していくか。

2017年のスマホゲームの注目ゲーム

2017年の半分が終わりましたが、下半期にリリースされるスマホゲーム(iOS/Android)で、注目のゲームについてまとめてみました。

テラバトル2(夏)

ミストウォーカーの発売したパルズゲーム「テラバトル」の続編に当たる作品。

予想DL数:150万

テラバトル2 公式トレイラー

ドラゴンクエストライバルズ(未定)

人気ゲーム「ドラゴンクエスト」をモチーフにした本格的なカードゲーム。
ゲームシステムは「ハースストーン」や「シャドウバース」を彷彿とさせる。

公式サイト

予想DL数:1000万

『ドラゴンクエストライバルズ』ティザー映像

どうぶつの森

任天堂とDeNAが共同で開発している人気ゲーム「どうぶつの森」のスマホアプリ。
2017年度後半リリースの予定。

予想DL数:1000万

ファイナルファンタジー エクスプローラーズ フォース

ファイナルファンタジーシリーズのスマートフォンアプリ。
3DSで発売された作品の系列で、ジャンルはハンティングアクション。

予想DL数:200万

公式サイト

アークザラッド

プレイステーションの人気ゲーム「アークザラッド」の続編アプリ。
どういったゲームシステムなのかなど、詳細は現段階では不明。

予想DL数:200万

妖怪ウォッチ

3DSでの人気作品「妖怪ウォッチ」のスマートフォンアプリ。
ゲーム内容は3DSの妖怪ウォッチと近い。

予想DL数:500万

【プレイ映像】『妖怪ウォッチforスマートフォン』

2018年発売の専用ゲームの注目ゲームと販売本数予想

2018年に専用ゲーム機発売予定での個人的に注目のゲームと、販売本数の予想についてまとめました。

モンスターハンターワールド(上半期・PS4)

PS4でのモンスターハンターの最新作。
大幅に進化したリアリティのあるグラフィックが最大の特徴。

予想販売本数: 日本:150万本 海外:150万本

ディシディアファイナルファンタジー NT(上半期・PS4)

ディシディアファイナルファンタジーのPS4での最新作。

予想販売本数: 日本:50万本 海外:100万本

シェンムー3(下半期・PS4)

クラウドファンディングで制作が決定したシェンムーの最新作。

予想販売本数: 日本:20万本 海外:100万本

エースコンバット7(未定:PS4)

PS4で発売予定のエースコンバットの最新作。

予想販売本数: 日本:20万本 海外:100万本

2017年の専用ゲーム機での注目ゲームと売上予想

2017年も残り半年となりましたが、2017年に専用ゲーム機での、個人的に注目の発売ゲームスケジュールについてまとめています。

7月

ファイナルファンタジー12 ゾディアックエイジ(7/13/PS4)

ファイナルファンタジー12のPS4でのリマスター作品。
FF12のHDリマスターでありながら、ジョブシステムなど新要素が追加されている。

売上予想:日本40〜50万本 世界100万本くらい?

スプラトゥーン2(7/21/Switch)

人気を博したスプラトゥーンの続編に当たる作品。
売上予想:日本 100万本 世界:250万本 合計350万本

ドラゴンクエスト11(7/29/PS4・3DS)

国民的RPGドラゴンクエストのナンバリングタイトルに当たる作品。

売上予想:日本 250万本 世界:150万本 合計 350万本

8月

モンスターハンターダブルクロス Switch Ver(8/25/Switch)

ニンテンドースイッチでのモンスターハンターダブルクロス。
高精細な画質でダブルクロスをプレイできる。

売上予想:日本:30万本

NEW みんなのGOLF(8/31/PS4)

PS4で発売するみんなのGOLF。
売上予想:日本:80万本 世界:100万本

9月

アンチャーテッド 古代神の秘宝(9/14/PS4)

PS4で発売されるアンチャーテッドシリーズの作品。
売上予想:日本:10万本 世界:400万本

ファイアーエムブレム無双(9/28/Switch)

Switchで発売されるファイアーエムブレムの無双系の作品。
売上予想:日本:5万本 世界:50万本

英雄伝説 閃の軌跡Ⅲ(9/28/PS4)

英雄伝説、閃の軌跡の続編シリーズ。
売上予想:日本:15万本 海外:15万本

10月

スーパーマリオオデッセイ(10/27/Switch)

スーパーマリオのオープンワールド系のゲーム。
売上予想:日本:100万本 海外:500万本

11月

二ノ国Ⅱ レヴァナントキングダム(11/10・PS4/PC)

レベル5の二ノ国の続編に当たる作品。
スタジオジブリとのコラボではないが、元ジブリの百瀬義行氏とのコラボ作品。
作曲は久石譲氏。

売上予想: 日本:20万本 海外:100万本

ポケットモンスター ウルトラサン・ウルトラムーン(11/17/3DS)

ポケットモンスターの3DSの新作。
売上予想: 日本:300万本 海外:500万本

発売日未定

グランツーリスモ SPORT(秋頃・PS4)

PS4で発売されるグランツーリスモシリーズの新作。
売上予想: 日本:80万本 海外:600万本

ゼノブレイド2(冬/Switch)

Switchでのゼノブレイドの新作。
売上予想: 日本:20万本 海外:80万本

iPhone,iPadでスイッチコントロールが解除できなくなった場合の対処法

iPhone、iPadには「スイッチコントロール」という機能があり、使用することで、特定の入力を繰り返してくれたり、あるいは入力の補助に使えたりしてくれてます。

ただし、何かバグのようなものがあるようで、通常であればホームボタンをトリプルクリックすることで解除できるのですが、解除できなくなる場合があります。

その場合、通常の操作に戻れなくなり、例えば電源を長押しにして一旦再起動をかけようと思っても「電源オフにする場合は横にスライド」のところで詰まってしまい再起動できなくなってしまいます。

その場合の対処法についてなのですが、「ホームボタン+電源ボタンを長押し」で強制再起動をかけることができ、この方法で再起動をかけることで直すことができました。

Yahooショップの在庫なし商品を一括で非表示にする方法

Yahooショップの在庫なし商品を一括で非表示にする方法についてです。

Yahooショップは、ユーザ側在庫がない商品を商品一覧でチェックを入れることで非表示にすることができるのですが、チェックを入れない場合在庫なし商品でもずっと商品一覧に表示されたままになってしまうので、あまり見栄えが良い状態にはなりません。

また、その状態で管理画面から一括で商品を非表示にすることができないので、基本的には一つ一つ商品を非表示にしていくしかない、数が多い場合は対応が大変になります。

そこで、CSVを使うことで一括で非表示にする方法について調べてみました。

1.在庫なし商品一覧をダウンロードする

ストアエディタの「在庫管理」から、左下のほうにある「在庫切れの商品データ」の「ダウンロード」でデータをダウンロードします。
在庫なし商品のcsvファイルがダウンロードできます。
また、もう1つの在庫がある商品も含めての商品データのダウンロード(在庫の商品データのダウンロード)も合わせて行います。

2.商品データをダウンロードする

ストアエディタの「商品管理」から、左下の商品データの「ダウンロード」で商品データをダウンロードします。
このときに、事前に上にある「CSVダウンロード項目の選択」で、必要なもの以外のチェックを外します。
必須項目以外は全てチェックを外して下のほうにある「display/ページ公開」にチェックを入れて保存します。
CSVダウンロードには時間がかかる場合があるので、その場合は一度ダウンロードをして、少し時間が立ってからもう一度実行するとダウンロードできます。

3.CSVファイルを1つのエクセルシートに開く

ダウンロードした3つCSVファイル(全在庫商品データ、在庫切れ商品データ、全商品データ)をエクセルファイルで3つのシートにそれぞれ開きます。
この場合、普通にエクセルファイルを開くと先頭の0が消えたりとおかしくなるので、データインポートを行います。
エクセルの「データ」→「外部データの取り込み」→「テキストファイルのインポート」からインポートします。
データのファイル形式:区切り記号付き、元のファイルで適切なのを選んで「次へ」→区切り文字が「コンマ」のみにチェックで「次へ」→列のデータ形式「文字列」で、データのプレビューで全選択(一番右までスクロールしてシフト+クリック)で「完了」→既存のワークシートで「OK」

なお、エクセルがない場合はGoogleスプレッドシートでもできると思いますが、ここではエクセルで調べていますので、おそらく同様のことはスプレッドシートでもできると思います。

4.CSVファイルの編集

CSVファイルの中で、商品データが入ったシートを編集します。

まずは、「全商品の在庫」が入っているシートを編集します。
ここで、「quantity」の列をフィルタで「0」、「」(空)のセルのみをフィルタして、フィルタされた行を全て削除します。
これで、全商品の在庫のシートでなく、在庫がある商品のみのシートになります。

次に、全商品のシートを編集します。
は、「display」の列の右の列に、次の数式を入れます。

これがどういう式かというと、商品コードを比較して、在庫なしシートに商品コードが存在した商品の場合は0にして、存在しなかった場合は1にしています。
つまり、在庫なし商品に商品があった=0、なかった=1で値が入ります。
この数式を一番下までコピーします。
(一番下までコピーするのは数式セルを選択して、右下の小さい四角をダブルクリック)

次に、さらにその右側の列に次の数式を入れます。

これはどういう式かというと、在庫のある商品の場合は1を表示し、それ以外は0を表示しています。
この数式を一番下までコピーします。

最後に、その右の列に次の数式を入れます。

これがどういう式かというと、もともと0の場合は0(もともと非表示の商品は非表示のまま)で、
そうでない場合(1で表示商品の場合)で、在庫がある場合も1で(在庫がある商品場合は1のまま)
そうでない場合で、在庫がない商品の場合は0にしています。
この数式を一番下までコピーします。

こうすることで、もともと0:非表示、1:表示

なのですが、現在表示になっている商品で、在庫なしの非表示にしたい商品は0になります。
何故こんな複雑な方法をとっているかというと、同じ商品コードでも複数の商品がある場合があり、ある商品コードが在庫が0でも、同じ商品コードで在庫がある場合があり、その場合は表示にする必要があるからです。
これで、もともと表示している商品の中から、本当に在庫がない商品は0になります。

5.CSVファイルの作成

上記のシートが完成したら、まずCSVを編集する専用のソフトで、最初にダウンロードして、もともとの全商品のデータファイルを開きます。
そして、displayの列を、4の手順で最後に作成した列で置き換えます。
その後、CSVを保存します。
このときに項目ごとの引用符などは最初にダウンロードした状態の設定と合わせて保存します。
何故CSVを編集できるソフトで保存するかというと、エクセルがCSVを作成する専用のソフトではなくデータが変更されていると困るからです・・・。

6.CSVファイルのアップロード

最後にCSVファイルのアップロードを行います。
アップロードはYahooストアエディタの「商品管理」から行います。

アップロードする前に「バックアップ」で全データのバックアップを念のためとっておきます。(これも商品数によっては時間がかかります)
また、今回更新するデータは商品データなので「商品データ」→「ダウンロード」でもバックアップをとっておくとよいです。
バックアップをすることで、もしアップロードでデータの更新に失敗した場合でもあとで巻き戻せます。

「商品データ」→「アップロード」から「項目指定」にチェックを入れ、「ファイルを選択」で、5の手順で編集したCSVファイルを選択し、アップロードします。

アップロードが完了したら「反映管理」からサイト全体に反映を行います。
反映には15分ほど時間がかかるので、サイトを確認して正しく更新ができていれば作業完了で、万が一失敗した場合にはバックアップからデータを巻き戻すことも可能です。

WordPressサイトのサイト全体SSL手順(Cloudflare使用)

とあるWordPressで管理しているサイトを、世の中の流れでサイト全体をSSL化して、何箇所か苦労した箇所があるので手順を残しておきます。

1.Cloudlareで対象サイトをSSL化

まず、SSL証明書をCloudflare経由で無料で入手し、適用されるのを待ちます。

手順は簡単で、まずはCloudflareを導入して、対象のサイトを管理します。

対象サイトのDNS設定が完了したら、上メニューの「Crypt」を選択し、SSLのメニューの選択メニューで「Flexible」を選択します。
時間が経つと「Status:Active Certificate」となり、サイトにhttpsでアクセスできるようになります。

なお、この手順で使用できるようになるSSLは通常のSSL証明書とは異なるので、一部のブラウザでは挙動に問題が起こる場合もあるので、企業サイトなどきちんとしたサイトでの使用は推奨できませんが、個人サイトレベルであればほぼ問題無いと思います。
(一般に使用されるようなブラウザでは問題なく表示されます)

2.WordpressサイトをSSL化する

まず、私の場合はWordPressのサイトをSSL化するのに、プラグイン「Really Simple SSL」プラグインを使用しました。
プラグインを導入後、WordPress管理画面にhttpsでアクセスし、プラグインを有効化して設定を適用させることで反映されます。
なお、このプラグインはデータベース設定をhttp→httpsに置換するので、適用前にデータベースのバックアップを取っておいたほうが良いようです。

その後、管理画面からログアウトしてから再度管理画面にアクセスすると、リダイレクトループが発生してしまいました。
この問題は、wp-config.phpに以下の記述を追記することで解決しました。

次に、もともとのサイトがhttpで検索エンジンに認識されていたので、301リダイレクトをhttpからhttpsにかけました。
.htaccessに以下の記述を追記しました。
最初はリダイレクトループしてしまったのですが、WordPressには最初から.htaccessに記述があるのですが、その記述の
上に書いておくと動作しました。

WordPressの管理画面とサイトでそれぞれリダイレクトループが発生したのですが、上記の方法でそれぞれ対処できて問題なくhttpsでの動作確認ができました。

3.Google Analyticsの設定変更

Google AnalyticsのサイトURLもhttp→httpsに変更します。
プロパティ設定、ビュー設定のhttpをhttpsにそれぞれ変更します。

4.ウェブマスターツールの再登録

ウェブマスターツールにhttpのサイトを登録していた場合、httpsのサイトは別サイトとして登録する必要があります。
httpsからはじまるURLで登録をしておきます。
2の手順でhttp→httpsにリダイレクトをかけているので、サイトの評価はそのまま引き継がれます。

phpmyadminのCSVエクスポートで日本語が文字化けする場合の対処法

phpmyadminのCSVエクスポートで日本語が文字化けする場合の対処法についてです

エクスポートの「エクスポート方法」で「詳細」の項目をチェックを入れます。

下に表示される項目に
「出力をファイルに保存する」→「ファイルの文字セット」の項目がああるので、ここを「Shift-JIS」に変更してから出力します。
これで、フォーマットをCSVに設定してファイルを出力すると日本語が正しく出力されます。

キャプチャ画面

楽天の検索での文字化けの対応について

楽天goldに検索窓を設置して検索をしたところ、gold領域のサイトをUTF-8で作成していた場合文字化けを起こします。
原因としては、楽天のサイトがEUC-JPだからです。

以前は以下の方法で対応していたのですが、原因はよくわかりませんが再び文字化けを起こすようになっていました。

以前は、検索フォームの検索ボタンに以下のコードを追記することで動いていました。

それが、理由はよくわかりませんが、先日再び文字化けを起こすようになっていました。
formタグに以下のコードに挿入することで動くようになりました。
frmは、該当formのname属性です。

楽天の仕様が変わったのか、ブラウザのバージョンが上がって対応しなくなったのかはよく分かりません・・・。

ウェブマスターツールのfetch as googleでエラーが発生。解決までの経緯

この記事を書いているのが2017/4/20の夕方なのですが、4/20の朝からgoogleウェブマスターツールの「fetch as google」がエラーになっていました。

具体的な現象としては、ウェブマスターツールのfetch as googleで、ページURLの取得は可能なのですが、インデックスに送信をするとポップアップがでてきて「このURLのみをクロールする」にすると、「エラーが発生しました」と表示されて登録できない情況。

どうやって解決したかというと、結論から言うとGoogleのシステム側の不具合だったようで、朝やってみるとエラーになって、夕方には解決していました。

何故Googleのシステムの不具合だったと思うかというと、Twitterで検索をしてみると同様の現象があると同じ日時で書き込みをしていた人がいたからです。

上記の不具合とは異なるのですが、以前には「fetch as google」で「インデックスに送信」を押すと「取得できませんでした」のエラーが発生したことがあったのですが、このときも結局時間経過で解決しました。

いずれのケースも結論としては、サイトがペナルティを受けているというような話ではなく、単なるGoogleのシステム不具合だったので、もどかしいと思いますが待つとなおると思います。
ちなみに1日以上たっても治らなかったケースはいずれもありませんでした。

hhvmのログローテーションの設定方法

運用しているとあるサイトのサーバが低速化していたので、原因を調べてみるとhhvmのログサイズが肥大化していた。

ちなみに、linuxでどのフォルダが肥大化しているかを調べるには以下のコマンドが便利

容量を使っているディレクトリ上から30個表示
du / | sort -nr | head -30

調べてみたところ、hhvmのエラーログが肥大化していた。

/var/log/hhvmd/error.log

これがサーバ全体を圧迫するほど巨大化して容量を占有していた

該当ディレクトリまで移動し、このコマンドでとりあえず空にする

: > error.log

hhvmのログファイルのローテーションだが、以下のファイルで編集できる

/etc/logrotate.d/hhvmd

編集すると、初期設定では以下のようになっていた

/var/log/hhvmd/*log {
daily
rotate 52
missingok
notifempty
compress
delaycompress
sharedscripts
copytruncate
}

デイリーでログをローテーションし、52世代まで残す設定となっていた。
ファイルの上限がなかったので、ファイルサイズを追記しておいた。

/var/log/hhvmd/*log {
daily
rotate 52
size 5M
missingok
notifempty
compress
delaycompress
sharedscripts
copytruncate
}

上記の設定では5Mを超えるとローテーションされるので、最大でも 5M×52で250M程度しか容量を圧迫することはない。

設定後、Apacheの再起動を行って反映させた。

【FFBE】クラウド狙いガチャ挑戦結果・・・

FFBEでついにクラウドが参戦しましたね。

クラウド自体の性能は優秀なアタッカーではありますが、チートレベルの性能というわけではないようです。
ただ、歴代のFFファンの方では思い入れもあるので是非入手したいという方も多いのではないかと思います。

私もかねてから貯めていたレアガチャチケット(50枚近く)と、ラピス10000を全て消費して、クラウド狙いのガチャに挑戦してみました。

<ガチャ回数>
70回

<ガチャ結果>
ピックアップ対象

ウィリアム×3

コンラッド×11

ピックアップ対象外

ルーネス

その他☆6キャラ
シャイン×2
天風のヴェリアス×3
メリアドール
ナイン
エリア
グレイス

はい、というわけでまあまあ爆死でしたね。
クラウドは出なかったですが、代わりに虹から「ルーネス」が出ました。

まあ、ルーネスは若干強さとか役割がクラウドと被ってはいますけどねw
クラウドの代わりにルーネスを使えということでしょうか・・・

もうラピスとレアチケットをほぼ使い果たしてしまったので、期間中に半額ガチャをほそぼそと回していこうと思います。

apple-touch-iconがiPhoneで反映されないときの対応

「apple-touch-icon」とは、iOS用に、ホーム画面にサイトが追加されたときに表示されるアイコンです。
iPhoneで、サイト閲覧時にメニューから「ホーム画面に追加」をしたときに表示されます。

設置方法としては、アイコン用の画像をアップロードし、ヘッダで

のように記述してからアップします。
画像名は「apple-touch-icon.png」としておくとヘッダに記述しなくても拾ってくれるらしいのでそうしておくのが一般的のようですが、必ずしも指定しないといけないわけではないようです。

このアイコンを設置されたときに、「正しく記述して画像もアップしたのにテストしてみると反映されていない」ということがあったので対応方法について書いておきます。

まずは画像サイズによっては反映されないこともあるようなので、画像サイズは適切かどうかを確認してみてください。
(※サイズは様々なサイズで可能なようですが、私が試してみた場合では144×144で反映されました)

以下の方法を試してみると良いと思います。

1・Safariのキャッシュを消去する

iPhoneのSafariに残っているキャッシュがクリアされていないと反映されなことがあるようです。
キャッシュの消去は「設定」→「Safari」→「履歴とWebサイトデータを消去」から消去できます。

2・画像名を変えて、パスの記述も変えてアップしてみる

この方法でも解決することがあります。
結局、キャッシュの問題なようですが、別名にした画像ファイルをアップしてみて、パスの記述を変更すると試してみると反映されていることがあります。

【FFBE】常闇のヴェリアスの「暗黒の罪科」と「暗黒の刃」はどっちが強いか

FFBEのキャラクター「常闇のヴェリアス」の攻撃パターン「暗黒の罪科」と、「暗黒の刃」はどちらが強いかについての考察です。

まず、常闇のヴェリアスですが、FFBEで強力なユニットの1体です。
「暗黒の罪科」と「暗黒の刃」はどちらも消費MPが45の強力な攻撃ですが、どちらがダメージ効率が良いのかを検証してみました。

まず、基本的な性能は以下の通りです。

暗黒の罪科
消費MP45
実質倍率400%ダメージ
闇耐性-50%

暗黒の刃
消費MP45
実質倍率400%ダメージ
攻撃に闇属性付与

まず基本的なことですが、上記の2つの攻撃は片方だけ使うだけでなく併用すると強いです。

暗黒の罪科は敵の闇耐性を下げるので暗黒の刃のダメージ(闇属性)を底上げしますし、暗黒の刃は攻撃に闇属性を付与するので、暗黒の罪科のダメージをアップします。

調べてみたところでは、

ダメージ倍率が同じというだけあって、単発で使用した場合の総ダメージはどちらも同じ

でした。

また、2つのアビリティはどちらも消費MPは同じですが、ヒット数は暗黒の罪化のほうが多くチェインを稼ぎやすく、暗黒の刃はヒット数は少ないですが、闇属性なので他の闇属性の攻撃とエレメントチェインを稼ぐことができます。

これらのことを踏まえて状況に応じて使い分けると良いでしょう

結論

  • どちらの技もダメージ倍率は同じ
  • 相乗効果があるので、併用が基本
  • 常闇のヴェリアスの武器が闇属性の場合、攻撃に闇属性を与える「暗黒の刃」の追加効果は意味ないので「暗黒の罪科」が基本でOK。
  • 「暗黒の罪科」はヒット数が多くチェインを稼ぎやすい。チェインを稼げる場合「暗黒の罪科」はダメージを稼ぎやすい

【FFBE】ライトニングの絶影とエレキブラストはどっちがダメージが出るか

スマホゲームでやっているFFBEに関する話題ですが、ライトニングの「絶影」と「エレキブラスト」はどちらがダメージが出るかを計算してみました。

まず、絶影は+2までアビリティ覚醒させているという前提での話です

絶影+2
・単体物理350%
・雷耐性3ターン-75%

エレキブラスト
・物理200%雷ダメージ

ということで、何でこの計算をするかっていうのは、要するに

絶影で雷耐性が下がった状態でのエレキブラストと、絶影はどちらがダメージが出るのかよく分からない

からですね。
ダメージを観測しても、絶影はヒット数が多いのでトータルでのダメージ量がよくわからない

そこで検証してみたところ、結論としては
雷耐性低下状態でも絶影のほうがダメージ量が少しだけ上

でした。

雷耐性が下がってない状態でのダメージ量が絶影のほうが上なのはいうまでもないですが、雷耐性が75%下がっている状態でも、絶影のほうが僅かにトータルのダメージ量が上でした。

しかし、それほどダメージ量に差があるわけではないので、絶影が消費MPが45なのに対してエレキブラストは23と絶影のほうが消費MPが多いので、MPが少ないときはエレキブラストでも遜色ないダメージは与えられるかと思います。

また、これに加えて絶影は通常のヒット数でのチェインを稼ぎやすいのに対して、絶影は他のキャラが雷属性の攻撃を使用したときにエレメントチェインになるという違いがあるので、上記をふまえてダメージを与えやすいアクションを選択すると良いと思います。

Laravel勉強メモ

PHPのフレームワークの「Laravel」の勉強メモです。

Laravelとは

PHPのフレームワーク。
日本でも人気が上がってきているが、海外で特に人気がある。
モダンな要素が取り入れられている?

フレームワークを勉強するに渡って有名な「Cake PHP」も良いと思ったのですが、最近人気があるというLaravelについて学習してみることにしました。

Laravelを使用するにあたって

PHPの5.4以上が必要で、「mcrypt」のライブラリをインストール必要がある。

インストールするために「Composer」が必要になる。
ComposerとはPHPのライブラリの依存関係を管理するためのもの。
通常はライブラリはPHP全体に影響するため依存関係の管理が大変だが、コンポーザーの場合プロジェクトごとにライブラリを管理するため依存関係について対処しやすい。

Laravelのインストールと初期設定

インストール時してプロジェクトを作成する。
プロジェクト名のフォルダができ、その中にLaravelの必要なファイル一式がダウンロードされる。

最初にやること

プロジェクトで必要となるデータベースとデータベースユーザを作成する。
データベースが必要ない場合は必要なし。

データベースを作った場合はプロジェクト内のコンフィグファイル内にデータベースへの接続情報を追記する。

「.env 」が環境ファイルなので開いてデータベース情報を追記する。

artisan(アルチザン)のマイグレーションコマンドを使って、テーブルを作成する。
アルチザンというのは、Laravelに予め準備されたシェルスクリプトのようなもので、コマンドラインで様々な処理を実行することができる。

php artisan make:migration マイグレーション名 –create=テーブル名

上記のコマンドを実行することで、/database/migrations/ 内にマイグレーション用のPHPファイルが作成される。

作成されたマイグレーションファイルを開いて、テーブルのカラム名などを追記する。
デフォルトでは主キーと、タイムスタンプのカラムが設定されている。

php artisan migrate

コマンドで、マイグレーションが実行され、上記マイグレーションフォルダ内に入ったマイグレーションPHPファイルが実行される。

一般的な方法であれば、phpmyadminからテーブルを作成したり管理するが、Laravelではマイグレーションコマンドと設定ファイルでテーブル構造を管理できるかんじといったところ。

しかし、見た感じややこしい。
こんなマイグレーションを使ってコマンドラインでどうこうするより、phpmyadminを使って管理するほうが簡単な気がしてならない。
このあたりはLaravel使う恩恵は微妙といったところかな…。
いろいろやってると「php artisan migrate」実行時によく分からないエラーが

Base table or view not found:

なんだこれ

php artisan migrate:refresh

これで全部解決しました。すべてのマイグレーションを再実行するかんじかな。

php artisan migrate:rollback

上記はロールバック用のコマンドで、最後に行ったマイグレーションをロールバックする

php artisan migrate:reset

すべてのマイグレーションをロールバックする
まあいずれにしてもややこしい。phpmyadminがシンプルでいいです・・・。

モデルの作成

php artisan make:model モデル名
これでモデルを作成

これで app ディレクトリ以下に、作成したモデル名のPHPファイルができている。

tinkerコマンドでモデルのオブジェクトを作成して、コマンド形式を使ってテーブルに値を挿入できる。

php artisan tinker

このあたりの命名規則やらなんやらで完全に混乱状態・・・。

ルーティング

このあたりからようやく面白くなってきた。

ルーティングとは、指定したURLに対してどういった動作をするかをphpファイルの中に書き込んでいくこと。

設定方法はLaravelのバージョンによって異なってくる。
自分の環境はlaravelのバージョンが5.3系なので、サイトのルーティングは

/routes/web.php

に行う。
ここに指定したURLに対しての処理を書き込んでいくと、URLにアクセスしたときに指定した処理を行う。
テンプレートを読み込ます場合は、viewファイルを読み込む。

ここで、URLにIDなどの動的なパラメータ(変数)を渡すこともできるのだが、テスト環境(Mac、Appache)では動作しなかった。
確認してみると、 /private/etc/apache2/httpd.conf の AllowOverride All にすべて変更すると
動作するようになった。(.htaccessはLaraberl上にあるので、サーバの設定が許可する設定になっていないといけない)

view

viewというのは要はテンプレートファイルのこと。

/resources/views/

以下に追加していく。

このテンプレートファイルにhtmlやphpのロジック部分を基本は記述していき、ルーティングファイルから読み込むという流れ。

共通部分のviewファイルは別に作成しておき、個別ページごとのテンプレートファイルから読み込んで変数や動的な部分を埋め込んでいくイメージにしていくと効率が良い。

コントローラー

コントローラーは、サイトの処理を担当する部分。
viewでHTMLのテンプレートを担当し、コントローラーでは処理を担当する。

artisan make:controller コントローラー名

でコントローラーを作成することで、 app/Http/Controllers

以下にファイルが生成されるので、編集することで処理を追加できる。

laravel5.3系の場合、web.phpで、ルーティングでURLで指定した処理で呼び出すコントローラを指定する。

viewとコントローラーを切り分けることで、デザイン(デザイナ担当)の部分と処理の部分(プログラマ担当)を切り分けることができる。

Laravelのバージョンを確認する

Laravelのバージョンについては、コマンドラインで以下のコマンドで確認することができます。

php artisan –version

ただ、このコマンドをコマンドラインで使用したところ、以下のエラーが出ました。

Could not open input file: artisan

調べてみたところ、このエラーが出る理由としては、Laravelのプロジェクトフォルダに移動していないと駄目ということのようです。

Laravelで作成したプロジェクトのフォルダへ移動してコマンドを実行してみたところ問題なくバージョンが確認できました。

FF15がもうすぐ発売

  • 2016年11月27日 6:56 AM
  • PS4

かつて国民的RPGであったFF15がもうすぐ発売されます。

昔は、国民的RPGといえばドラクエ、FFの2大巨頭で、スクウェアとエニックスが合併したときにはみんなびっくりしたもんです。

時代は流れ(といったら大げさ?)、今はゲームといえばスマートフォンのゲームで、あまりコアでないゲーマーのライトユーザは
スマートフォンに流れてしまっているかんじがしますね。

今のスマートフォンのゲームを除く国民的RPGといえばモンスターハンターはぱっと思いつきますが、それ以外には何かあるでしょうか。
どちらかというとFFよりはドラクエの方が多くの層のユーザにプレイされているかんじがします。
ただ、海外で人気がありトータルで多く売れているのはドラクエではなくFFのほうです。

事前情報によると、FF13と比較すると予約本数が大幅に落ち込んでいるということで、国内は100万本売れるかどうかといったところのようです。

発売されるハードのPS4やXBOX ONE自体が国内ではあまり売れていないかんじがするので、それが一番大きい原因であるかなとは思います。

また、最近はダウンロード版で購入する人も増えていると思いますので、それが小売店の予約にカウントされていないことも
考慮しても厳しいかもしれません。

体験版をプレイしたところ本作はスタッフの方がかなり頑張って作り込んでいるようなので、
是非ヒットして次回作につながっていって欲しいものです。

海外ではすでにフラゲ勢によりストーリーがネタバレし、酷評を受けているとかいう噂も流れてきました。
最近の海外のゲームはクオリティが高いので、目が肥えている海外勢から見ると残念といった
評価がつくのかもしれません。

ゲームを進めていくにあたってFF15の攻略サイトはこちらをみて進めていく予定です。

FF15攻略データベース

B木とB+木の違い

情報処理技術者試験の勉強をしていたら「B+木インデックス」というのが出てきていて、調べていたところ「B木」との違いがよくわからなかったので、メモ。

そもそもB木とは

自分的な解釈。
基本的に、データの検索性を高めるための多分木の木構造でのデータ格納方法。

B木とB+木の違いとは

B+木にはB木と違い以下のような要素があるようです。

・データ格納先のアドレスを末端の葉(リーフ)のみに格納する
・リーフ(葉)とリーフ(葉)を結ぶポインタを設ける

B+木
↑B+木の図

逆に言うと、通常のB木はノード(節点)にもデータが格納され、葉と葉と結ぶポインタはないということですね。

MNIST For ML Beginnersまとめ

Tensorflowチュートリアルで、いわゆるHello Worldに該当するMNISTがいきなり難しくて詰まってしまった。

が、それとなく分かってきたのでどういうイメージかをまとめてみる。

MNISTの目的

入力した手書き文字の画像に対して、0〜10何の数字かを類推して出力するモデルを構築する。

プログラムの流れ

//画像データをインポートする。画像データには訓練用の画像mnist.train.imageと、何の数字かを表す0〜10のラベルmnist.train.labelsがセットになっている。

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets(“MNIST_data/”, one_hot=True)

import tensorflow as tf

//入力の画像。28×28で784の配列で現れる。複数の画像入力に対応するために[None,784]となっている。
x = tf.placeholder(tf.float32, [None, 784])

//画像の重みとバイアス。この部分はセッションにおいて可変であり、この2つの変数を訓練して調整することがプログラムの目的。
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

//入力画像から推定される数字の値を表している。
y = tf.nn.softmax(tf.matmul(x, W) + b)

//正解の数字ラベルの入力配列。0〜10
y_ = tf.placeholder(tf.float32, [None, 10])

//クロスエントロピー。分かりづらいが、入力画像群をモデルを通して得られた推定の数字群と、正解のラベル群の違いの度合いを表している
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

//最急降下法にて、上のクロスエントロピーを最小化することを目的としている処理。0.5は学習係数。
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

//セッション開始と初期化処理
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)

//1000回のループ。
for i in range(1000):
//55000ある入力画像の中から、100個の画像とラベルをランダムで取り出す
batch_xs, batch_ys = mnist.train.next_batch(100)
//最急降下法にて、クロスエントロピーを最小化するべく重みとバイアスを調整する。この過程をモデルのトレーニングと書かれている。
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

//画像入力に対しての出力のyと、正解のy_を比較し、等しければtrue、違えばfalseの配列を定義する。
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

//castすることでtrue→1、false→0の文字列に変換し、平均値を求めている。全て正解であれば1になるが、このケースだと0.9以上の数値で出力される。
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

//テスト用画像セットを入力として、訓練したモデルを使って正解率を出力する。
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

まとめ

最初見た時は分かりづらかったが、以下のようなポイントだと理解した。

1・手書き数字の画像を784の長さの配列に見立てる。それぞれ正解の数字もセットとなっている。
2・多くの訓練用の画像を準備することで、正解の数字(0〜9)をそれぞれ表す784の長さの配列(この例では「重み」と呼ばれている)を調整する。入力した画像に一番近似している重みの配列の数字が出力されるようになる。(これが y=softmax(Wx+b)
3・複数の入力画像と正解の画像群を準備することで、最急降下法を使うことで、0〜9の数字を表す重みの配列を調整することが可能となる。多くの訓練用の画像に訓練させるほどモデルの正確さが上がっていく。
4・最後にテスト用の画像を使って出来上がったモデルの精度を確認する。

MNIST For ML Beginnersの和訳

Tensorflowのチュートリアルともいえる「MNIST For ML Beginners」の英文について、機械学習初心者ということでまず文章を和訳してみました。

公式サイト(英語)はこちら

このチュートリアルは、機械学習とTensorFlowの初心者向けの内容となっています。
もしあなたがMNISTが何かを知っていて、多次元ロジスティック回帰(ソフトマックス回帰)が何かを知っているのであれば、こちらの上級者向けのチュートリアルのほうがよいでしょう。
どちらのチュートリアルにしても、事前にTensor Flowをインストールしておいてください。

プログラムについて勉強するときには、まず最初に「Hello World」を出力する伝統があります。
機械学習ではMNISTがHello Worldに相当します。

MNISTはシンプルなコンピュータのためのデータセットです。
それは、以下のような手書き文字で構成されています。

手書き文字

また、この文字セットはそれぞれの画像に対して、その文字が何であるかを示すラベルを含んでいます。
例えば、上記の画像に対してのラベルは5,0,4,1です。

このチュートリアルでは、モデルを文字が何であるかを予測できるように訓練します。
目的としては、最先端のパフォーマンスを達成する精巧なモデルを訓練することではなく(あとでコードを提供します)が、TensorFlowを試してみることです。
そのようなものとして、とても単純なモデルで多次元ロジスティック回帰(ソフトマックス回帰)と呼ばれています。

このチュートリアルで使用するコードはとても短く、たった三行で興味深いことがおきます。
しかしながら、背景にあるとても重要なアイデア(TensorFlowがどうやって動作しているかと、機械学習の中核となるコンセプト)を理解することが重要です。
このため、コードに対して注意深く理解していきましょう。

MNISTのデータ

MNISTのデータは、Yann LeCun氏のウェブサイトにホストされています。
簡単にするため、自動的にダウンロードとインストールするいくつかのpythonのコードを踏んでいます。
このコードをダウンロードして以下のようにインポートするか、以下のように単純にコピー&ペーストします。

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets(“MNIST_data/”, one_hot=True)

ダウンロードデータは3つのパートに分かれています。
55,000の訓練用のデータ(mnist.train)、10,000のテストデータ(mnist.test)、そして5000の正規化データ(mnist.validation)です。
この区分はとても重要で、それは機械学習に必要不可欠なものです。

最初にも述べたように、MNISTデータは2つに分かれています。
手書きの文字と対応するラベルです。
この画像を「xs」「ys」と呼び、訓練用のデータセットとテスト用のデータセットの両方に含んでいます。
例として、訓練用の画像を「mnist.train.images」、訓練用のデータのラベルを「mnist.train.labels」とします。

それぞれの画像は28×28ピクセルです。
私たちはこれを大きな数値の配列と解釈します。

MNIST-Matrix

この配列を、線形の28×28=784の数値に戻します。
配列を数値に戻しているのは、画像と一致している限り問題ではありません。
この観点により、MNISTの画像は、とても豊富な構造体(注意:計算的に徹底的な視覚化)付きの、ただの784次元の線形空間です。

データを2Dの画像の構造の情報に戻すことは良くないことでしょうか?
コンピュータがこの構造を利用するとき最適の方法で、チュートリアルの後半でも使用します。
しかしここで使うシンプルな方法がソフトマックス回帰かというと違います。

mnist.train.imagesの結果は、[55000,784]のテンソル(n次元配列)です。
最初の画像の次元のインデックスと、2つ目のそれぞれの画像ピクセルの次元のインデックスです。
それぞれのテンソルのエントリーは、0と1の間であり、特定の画像の特定のピクセルです。

mnist-train-xs

MNISTのラベルは0〜9までで、どの数字がどの画像かを描いています。
このチュートリアルの目的では、ラベルを「one-hotベクトル」とみなしています。
on-hotベクトルは、多くの次元で0ですが、1は1つの次元であります。
このケースで、n番目の数字が、n番目の次元で1であるベクトルであると表します。
例えば、3は[0,0,0,1,0,0,0,0,0,0]です。
結果的に、mnist.train.labelsは[55000, 10] の配列となっています。

mnist-train-ys

これで、現実的なモデルを作る準備ができました。

ソフトマックス回帰

私たちは、MINSTの全ての画像が0〜9までの数字であることを知っています。
私たちは、画像を見てそれぞれの数字に確率を与えることができるようにしたいです。
例えば、私達のモデルは9の画像を見て80%で9だとします、しかし5%の確率で8になり、少ない確率で他のものになります。

これは古典的なケースで、ソフトマックス回帰が自然で、シンンプルなモデルの場合です。
もしあなたが複数の異なるもの確率を計算したいとき、ソフトマックスでできるでしょう。
後で、より宣伝されたモデルを訓練するとき、最終的にソフトマックスの階層になるでしょう。

ソフトマックス回帰は2つのステップです。最初に正しいクラスの入力のエビデンスを加えて、エビデンスを確率に変換します。

特定のクラスの画像から与えられたエビデンスの計算をすることで、いくつかのピクセルの強度の重みつけをします。
ピクセルがそのクラスにおける高い強度を持ったエビデンスを持っている場合、重みは負になり、エビデンスがin favorのとき正になります。

下記のダイアグラムは1つのモデルの重みがそれぞれのクラスを学習していることを表しています。
赤色は負の重みを表していて、青色は正の重みを表しています。

softmax-weights

私たちはバイアスと呼ばれる追加のエビデンスを加えました。
基本的に、いくつかの事象は入力の独立にむしろ近いということができます。
クラスiのエビデンスの結果はxを与えます。

evidencei=∑jWi, jxj+bi

Wiは重みでbiはクラスiとjのバイアスで、入力した画像xのピクセルの総和になっています。
そこでエビデンスの計算を予測された確率に変換します。
yはソフトマックス関数を使用します。

y=softmax(evidence)

ここでのソフトマックスは「起動」か「リンク」関数で、出力された線形関数を必要な形に整形します。
このケースでは、10のケースの確率分布です。
あなたはそれを、エビデンスの計算をそれぞれの入力したクラスの確率に変換することを考えることができます。
それは以下のように定義できます。

softmax(x) = normalize(exp⁡(x))

もしあなたが方程式を展開するのであれば、以下のようになります。

softmax(x)i = exp⁡(xi) / ∑jexp⁡(xj)

しかし、それはしばしばソフトマックスを考えるのにより役立つ第一の方法です。
入力のべき乗と正規化です。
べき乗は、1つ多くのエビデンスのユニットが、いくつかの仮説を倍にする重みを増加することを意味しています。

逆に言えば、1つ少ないエビデンスのユニットは、その前の重みの断片を得る仮説を意味しています。
ゼロまたはマイナスの重みを持つ仮定はありません。
ソフトマックスはこれらの重みを正規化し、そのためそれらは正しい確率分布に加えます。
(よりソフトマックス関数の直感を得ようとするなら、インタラクティブでビジュアルが充実したマイケル・ニールセンの本のをチェックしてみてください。)

あなたはソフトマックス回帰を、Xsが多いですが以下のように書くことができます。
それぞれの出力に対して、xsの重み付けされた合計を計算し、ソフトマックスに適用します。

softmax-regression-scalargraph

もし方程式にするのであれば、以下が得られます。

softmax-regression-scalarequation

この手順をベクトル化して、行列の乗算に変換します。
これはコンピュータの能率に対して効果的です。(それは考え方にも有用です)

softmax-regression-vectorequation

よりコンパクトに、以下のように単純に書くこともできます。

y = softmax(Wx + b)

回帰の実装

Pythonでの効率的な数値計算をするには、一般的にPython外の行列の乗算のような重い処理の演算をするNumPyのようなライブラリーを使い、他の言語に実装された効率のよいコードを使います。
残念ながら、Pythonの全ての演算に切り替えるのに多くのオーバーヘッドがあります。
このオーバーヘッドは、もしGPUで処理を実行するか、分散形式の場合にとりわけ悪く、データ転送に高いコストがかかります。
TensorFlowもまたpythonの外に重くありますが、しかしステップを踏むことでこのオーバーヘッドを避けることができます。
Pythonから独立した単一の重い演算の代わりに、TensorFlowは完全にPythonの外の相互の演算のグラフを描くことを可能にしています。
(このようなアプローチは、少ない機械学習のライブラリーに見られます)

TensorFlowを使うには、それをインポートする必要があります。

import tensorflow as tf

これらの相互演算を、記号変数を処理することで描きます。1つつくってみましょう。

x = tf.placeholder(tf.float32, [None, 784])

xは一定の値ではありません。
それはプレースホルダで、その値は計算を実行するためのTensorFlowへの問い合わせの際に入力します。
私達は、いくつもの入力したMNISTの画像を、それぞれ784次元のベクトルに平坦化したいです。
私達はこれを、[Noneg,784]の型の2Dの浮動小数のテンソルとして表します。
(次元は何の長さにもなりうるという意味ではありません)

私達もまた、モデル重みとバイアスを必要としています。
私達はこれらを追加の入力のように扱うことを想像できますが、TensorFlowはこれらでさえもよりよく扱う方法です:変数Aはインタラクティブな演算のTensorFlowのグラフに存在する変更可能なテンソルです。
それは使用可能で計算によって修正されました。
機械学習のアプリケーションにおいては、一般的に変数によってモデルのパラメーターを持ちます。

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

私達は、変数の初期値のtf.Variableに与えることによってこれらの変数をつくります。
このケースでは、Wとbの両方をゼロで満たしたテンソルのように初期化します。
Wとbについて学ぶと、それらの初期値が何であるかがそれほど問題にならないでしょう。

Wは[784,10]の型ですなぜならそれの784次元画像のベクトルを、異なるクラス10次元のベクトル掛けたいです。
bは[10]の型を持っていて、出力に加えることができます。

ここまできて、モデルを満たすことができます。それは1つのラインを要します。

y = tf.nn.softmax(tf.matmul(x, W) + b)

最初に、xとWの乗算をtf.matmul(x, W)と表現します。
これは方程式においてそれらを掛けることで反転され、そこで複数の入力の2Dテンソルのxのように扱う小さなコツのようなWxを持ちます。
私達はそこでbを加え、そして最終的にtf.nn.softmaxを適用します。

それでおしまいです。
それはただ私達に、セットアップの短い線の組の後にモデルを定義するための1つの線を取ります。
それはTensorFlowがソフトマックス回帰をとりわけ簡単にするためいデザインされているからではありません。それは単に機械学習のモデルから物理シュミレーションからの幾通りの数値計算を描くための柔軟な方法です。
そしていったん定義されれば、モデルは異なるデバイスで動作できます。(コンピューターのCPUやGPU、そして携帯電話すら)

トレーニング

モデルをトレーニングするために、私達は良いモデルとは何を意味しているかの定義を必要とします。
実際には、機械学習において私達は一般的に、コストまたは損失を呼ぶののを悪いモデルと定義し、そしてどう悪いのかの最小化を試みます。しかしその2つは同じことです。

とても共通として、とてもよいコスト関数は「クロスエントロピー」です。
驚いたことに、クロスエントロピーは情報リオンにおける情報圧縮コードについて考えることから生じますが、しかしながらそれは多くのエリアにおける重要なアイデアを機械学習へのギャンブルに引き上げます。
それは定義されます。

Hy′(y)=−∑iyi′log⁡(yi)

yは予測された確率分布であり、y’は真の分布(入力するであろうひとつの熱いベクトル)です。
いくつの大雑把な判断では、クロスエントロピーはどれだけ真を描くための予測に無駄が多いかを計測します。
クロスエントロピーのより多くの詳細は、このチュートリアルの範囲を超えていますが、しかしそれは理解する価値があります。

クロスエントロピーを実装するために最初に新しいプレースホルダーを正しい解に入力する必要があります。

y_ = tf.placeholder(tf.float32, [None, 10])

そこで私達はクロスエントロピー−∑y′log⁡(y)を実装できます。

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

最初に、tf.logはそれぞれの要素の対数を計算します。次に、tf.log(y)の要素の_yの要素を乗算します。
そしてtf.reduce_sumはreduction_indices=[1]のパラメータのため、yの2つ目の次元の中の要素に加えます。
最終的に、tf.reduce_meanはバッチの中のすべての例の中央値を計算します。

今は私達は、モデルが何をするべきかを知り、それは、訓練したTensorFlowを持つのにとても簡単です。
なぜならTensorFlowは計算のグラフ全体を知り、それは自動的にバックプロパゲーションアルゴリスム(誤差逆伝搬法)を、どう変数が最小化のコストに影響するかを効率的に決定するために自動的に使うことができます。
そこで選択した最適化のアルゴリズムを、変数を変更してコストを下げるために適用することができます。

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

このケースでは、私達はTensorFlowに尋ねます 50%の傾斜の勾配降下アルゴリズムを使ってクロスエントロピーを最小化することは単純な手順で、そこでTensorFlowは単純にそれぞれの変数を少しのビットをそのコストを減少する方向に移動します。
しかしTensorFlowもまた多くの最適化アルゴリズムを提供します。(1つはラインを調整するだけのことです。)

TensowFlowが実際ここで何をするかは、場合により、新しい操作をバックプロパゲーション(誤差逆伝播法)と勾配降下を実装するグラフに加えます。
そこでそれは単一の操作を変換し、実行したとき、勾配降下の訓練のステップをし、変数をコストを下げるために微調整します。

これでモデルを訓練する準備ができました。
最後にはじめる前に、作成した変数を初期化する操作を加える必要があります。

init = tf.initialize_all_variables()

これで、セッションでモデルを開始することができ、そして変数を初期化する操作を実行できます。

sess = tf.Session()
sess.run(init)

さあ、訓練しましょう。1000回トレーニングのステップを実行します。

for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

それぞれのループにおけるステップで、訓練のセットから100のランダムなデータのバッチを得ることができます。
プレースホルダーを置き換えるためにバッチデータの訓練のステップを実行します。

小さなランダムのデータのバッチを使うことを、確率論的な訓練と呼ばれています。
–このケースでは、確率論的勾配降下です。
理想的には、すべての訓練のステップですべてのデータを使いたい、なぜなら何をするべきかのよりよいセンスを提供してくれるからで、しかしそれは高価です。
そこで代わりに、異なる部分集合をいつも使います。
これを行うのは安くて同様の利益を持っています。

モデルを評価する

モデルはどうするでしょうか?

いいでしょう、最初に、どこで正しいラベルを予測するかを解いてみましょう。
tf.argmaxは極度に使いやすい関数で、それはいくつかの軸のテンソルの高いエントリーのインデックスを与えます。
例えば、tf.argmax(y,1)はモデルのラベルで、それぞれの入力に最も近く、tf.argmax(y_,1) が正しいラベルです。
私達はtf.equalを、予測が真とマッチする場合にチェックに使うことができます。

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

これはブール数のリストを与えます。
何の部分が正しいかを特定するため、浮動小数をキャストし、中央値を取り出します。
例えば、[True, False, True, True]は[1,0,1,1] になり、0,75となります。

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

最終的に、テストデータに正確さを問い合わせます。

print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

これはおよそ92%になるでしょう。

いかがでしょうか?
いや、そうでもないですよ。
実際に、それはとても悪いです。
これはとても簡単なモデルを使うからです。
小さな変更を伴うとき、97%を得ることがでいます。
最高のモデルであれば99.7%の正確さを超えることができます!(より多くの情報については、結果表を見て下さい。)

このモデルから学ぶことの何が問題でしょう。
まだ、これらの結果について少しがっかりすることがあるのであれば、より良くした次のチュートリアルを調べてみて、どうやってより洗練されたTensorFlowを使ったモデルを構築するかを学んでください。

Tensorflowの使い方(MNISTチュートリアル/Mac)

最近AIがいたるところで話題になっているので、Googleが公開している機械学習のツール「Tensorflow」を使ってみました。

ネットで情報を検索しながらやってみましたが、記事が更新されているのかなかなかうまく行かなかったので、やってみて上手くいったやり方を書いてみます。

Tensorflowは、言語がPythonに対応しているということで、Pythonで試してみました。
使用している環境はMac OSXです。
Pythonは2系です。
公式サイトの解説(英語)はこちら

Pythonのバージョンの確認

最初に念のためPythonのバージョンを確認しておきます。
私の場合は2系でしたので、2系ということで進めています。
※ 3系の場合は手順が異なります。

$ python -V
Python 2.7.10

tensorflowのインストール

VirtualenvはPythonの仮想環境を構築するパッケージソフトウェアです。
こちらを導入します。
※ Virtualenv以外にもDockerはAnacondaを使った導入方法などがあるようですが、本記事では割愛します。

pipを使ってインストールします。

$ sudo easy_install pip //pipのインストール
$ sudo pip install –upgrade virtualenv //virtualenvのインストール

仮想環境のディレクトリを作成します。

$ virtualenv –system-site-packages ~/tensorflow

仮想環境をActivateします。

$ source ~/tensorflow/bin/activate # bashを使う場合
$ source ~/tensorflow/bin/activate.csh # cshを使う場合

上記実行後、以下のようにプロンプトが切り替わります。

(tensorflow)$

仮想環境にtensorflowをインストールします。

(tensorflow)$ sudo pip install –upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0rc0-py2-none-any.whl
※ MacOSX、Python2系の場合です。他のOSの場合パスが異なります。

※ 通常のプロンプトに戻す場合は以下で戻すことができます。
(tensorflow)$ deactivate

以上でtensorflowのインストールは完了になります。

tensorflowの動作テスト

tensorflowのインストールが上手くいっているかどうかをチェックします。

$ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42

コマンドラインで python を実行すると対話形式で実行できますので、上記の通りに記述してみてエラーが起きず、実行結果が上記の通りに返ってくれば問題なく動作しています。

MNISTの動作テスト

MNISTというのは画像認識の機械学習の精度を試すプログラムのようなもので、通常の言語の「Hello World」に相当するレベルのプログラムだそうです。

公式サイトにプログラムの説明は載っていますので詳しい解説はそちらを参考にしてみてください。
記事に断片的なプログラムが掲載されていますが、それらを全て掲載すると以下のプログラムになります。
「mnist.py」など適当なプログラム名をつけて実行します。

実行すると以下のような結果がかえってきたので問題なく動作しています。
※ 一度目の実行はデータをダウンロードしてくるので少し時間がかかります。

$ python mnist.py
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
0.9187

スプレッドシートで範囲内に出現する文字数を数える方法

Googleスプレッドシートで、特定の範囲内に出現する文字数(あるいは文字列数)を数える方法です。

エクセルでは、SUBSTITUTE関数があるのですが、スプレッドシートではSUBSTITUTEは置換関数なので用途として異なります。

スプレッドシートの場合は、COUNTIF関数でワイルドカードを使うことが出来ます。

=COUNTIF(検索範囲,”*検索対象文字列*”)

上記記述で、検索範囲内に出現する検索対象文字列の出現回数をカウントすることができます。

検索対象文字列を、アスタリスク(*)で囲むことがポイントです。
アスタリスクを使わない場合完全一致になるので、*で囲むことで範囲内の出現回数をトータルでカウントできます。

【Hearth Stone】Ranked Match 勝率 2016年4月度

Mech Mage
1-1

相手デッキ
freeze mage 1-0
murloc paladin 0-1

コンボドルイド
1-0

相手デッキ
zoo worloc 1-0

レジェンドウォーリア
2-0

相手デッキ
ウォーリア 1-0
プリースト 1-0

クラロワおすすめカード

クラロワのおすすめカードについて考察を書いてみます。

まず、このクラロワというゲームは勝つつれてカードが増えていき、その組み合わせでデッキの幅が上昇するゲームなので、どのカードが強いかというのは、そのデッキの戦略によって左右されるわけです。

ただ、その中でもよく使われているカードと言うのは存在しています。

メニュー内にクラロワTVというのがあって、そこで強い人のデッキ構成を見ることができるので、そこからよく使われているカードを調べてみました。

カード名 使用割合
矢の雨 7.8
女性ヒーロー 7.3
エリクサーポンプ 6.7
ダークプリンス 5.3
ゴブリン 5.3
プリンス 5
フリーズ 5
ガーゴイルの群れ 4.7
P.E.K.K.A 3.9
ホグライダー 3.9
男ヒーロー 3.6
ベビードラゴン 3.4
槍ゴブリン 3.4
大砲 3.4
スケルトン 3.1
ファイアーボール 3.1
マスケット銃士 2.8
バーバリアン 2.5
ウィザード 2.5
インフェルノタワー 2.5
テスラ 2.2
ゴブリンバレル 2.2
バルキリー 2.2
スケルトン部隊 1.7
ザップ 1.7
巨大スケルトン 1.4
ナイト 1.1
墓石 1.1
巨大クロスボウ 1.1
ボンバー 0.8
ジャイアント 0.8
ロケット 0.8
ミニP.E.K.K.A 0.6
ライトニング 0.6
ゴーレム 0.6
エアバルーン 0.6
クロスボウ 0.3
バーバリアンの小屋 0.3
ネクロマンサー 0.3
ガーゴイル 0.3
ボムタワー 0.3
迫撃砲 0.3
ポイズン 0.3
ゴブリンの小屋 0.3
バーバリアンの小屋 0.3
0.3
アーチャー 0.3

クラロワTVは上位プレイヤーのデッキが多いので、比較的後半で入手できるカードが多いですね。

まだ調査した数がそれほど多くないので、随時追記していきたいと思います。

【hearthstone】ヒーローごとのアリーナ勝率 201603

アリーナでどのヒーローを使うと勝率が高いか、メモをとっていきます。

自分選択
パラディン
2-0

相手
ウォーロック 1-0
ドルイド 1-0

【hearth stone】Ranked Match勝率記録 2016年3月期

hearth stoneの通常のRanked Matchでの勝率について記録していきたいと思います。

Ranked Match

結果

最終的にRank 13でフィニッシュでした。
後半は仕事が忙しくてあまりプレイできませんでした。

自分のデッキのみ

1:meck mage、コンボドルイド 100% (※ 1戦しかしてない)
2:シークレットハンター 75%
3:バーンシャーマン 66%
4:レジェンドウォーリア 60%
5:フリーズメイジ 33%
6:スペルメイジ、レノジャクソンメイジ、レノジャクソンウォーロック 0%

詳細

使用デッキ
・レジェンドウォーリア
6-4

相手デッキ
freeze mage 1-0
コンボウォーリア 1-0
ramp druid 1-1
ブースト10マナドルイド 0-1
レノジャクソンウォーロック 1-0
テンポメイジ 0-1
マーロックパラディン 0-1
メカメイジ 1-0
dethrattle シーフ 1-0

使用デッキ
Mech Mage
1-0

相手デッキ
シークレットパラディン 1-0

使用デッキ
freeze mage 1-2

相手デッキ
ヒーラー priest 1-0
feeze mage 0-1
Paladin 0-1

使用デッキ
レノジャクソンメイジ 2-3

相手デッキ
スペルメイジ 1-1
シークレットパラディン 0-1
コンボウォリアー 1-0
リブアウトドルイド 0-1

使用デッキ
スペルメイジ 0-1

相手デッキ
ハンター 0-1

使用デッキ
シークレットハンター 3-1

相手デッキ
プリースト 1-0
レノジャクソン ウォーロック1-0
レジェンドウォーリア 0-1
トークンドルイド 1-0

使用デッキ
レノジャクソンウォーロック 0-2

相手デッキ
シークレットパラディン 0-1
オイルシーフ 0-1

使用デッキ
コンボドルイド
2-0

相手デッキ
速攻シャーマン 1-0
トークンシャーマン 1-0

使用デッキ
バーンシャーマン 2-1

相手デッキ
コンボドルイド 1-0
プリースト 0-1
フリーズメイジ 1-0

カジュアルマッチ

以下は、カジュアル対戦での戦績
使用デッキ
レノジャクソンドルイド 2-2

相手デッキ
テンポメイジ 1-2
トークンウォーロック 1-0

負けた時
テンポメイジ:序盤のポータルからの猛攻からレジェンドを連打されて負け
・低マナ域で優秀なカードが少なく、場が支配されやすい
・支配された場をひっくり返せるカードが少ない(しいていえばSwipeがあるが)
・レノジャクソンは強いが、それだけでゲームをひっくり返せるわけでもない

使用デッキ
コンボドルイド 3-3

相手デッキ
ウォーロックトークン 0-1
ウォーロック 1-0
fleeze mage 1-0
オイルシーフ 0-1
メカメイジ 0-1
パラディン 1-0

負けた時:
優位を握られそのまま押し返すことができず:
エリッサが無駄気味なので、Sluge bulcherに変える
Ancient of Warはsnapで手札に戻されるいいカモ
1〜3ターン目の動きが弱い。Swipeしか逆転手段がない

勝った時:
やはり野生の咆哮+2/2×3体のコンボは強い

FFBEでFFTイベント後に聖石の欠片(および星6覚醒用アイテム)は入手できるか

FFBEでは現在FFタクティクスとのコラボを開催中ですが、イベント開催期間は3/3の23:59までとなっているため、その期間を過ぎてしまってから聖石の欠片のアイテムそのものや、星6進化素材をはじめとした交換素材を入手可能かどうか、不安に思う人もいると思うので調べてみました。

結論からいうと、星6進化のための素材は、今後も(おそらくイベントなどを通じて)交換または入手できる機会はあるということです。
集めるのはかなり大変な作業ですので、無課金では期間中には、星6進化素材1セットだけでも入手するのが難しい人も多いと思います。

ただし、「聖石の欠片」というアイテム自体が入手できるのかどうかは不明で、今後のイベントでは星6覚醒用のアイテムは、その他の素材との交換になる可能性はあります。

また、星6進化素材以外のアイテムに関しては、期間内でしか交換できないということです。

そのため、残りの期間は僅かですが、星6進化素材より、他の武器や防具、アビリティなどを優先すべきでしょう。

※ 以下、公式サイトの画像のキャプチャです。
FFBEお知らせ

【WordPress】.htaccessでドメインの301リダイレクト

ウェブサイトのドメイン変更時に、.htaccessを使ってドメインごと301リダイレクトする場合の記述についてです。

example.com を
example2.comに移転する場合の記述です。

# BEGIN WordPress

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(example\.com)(:80)?
RewriteRule ^(.*) http://example2.com/$1 [R=301,L]


# END WordPress

以上の記述をリダイレクトする前のサイトのドキュメントルートに設置することで、301リダイレクトできます。

リダイレクトした後に、WordPressのデータベースの投稿内に含まれているドメイン名は置換します。以下のSQLで置換できます。

update wp_posts set post_content = replace(post_content, ‘example.com’, ‘example2.com’);

【星ドラ】おすすめの上級職の考察

  • 2016年2月10日 2:01 PM
  • iPhone

星ドラで、上級職が本日から解放されましたね。

どの上級職にするか迷っている人もいると思うので、おすすめの上級職について考察を書いてみます。

上級職転職の基礎知識

まず、上級職に転職するには、下級職の2つをレベル50以上に上げる必要があることと、「職業神の聖堂」で、それぞれの上級職への転職に必要なさとりを入手する必要があります。

上級職のメリットとして、下級職では得意武器が3つだったのが、上級職では5つから6つの得意武器があるので、装備できる武器の幅も広がります。
また、基本職ボーナスとして、下級職2職の到達レベルに応じたボーナスを受けることができます。

バトルマスター

必要職業:戦士、ぶとうかレベル50

得意武器:剣、オノ、ヤリ、扇、棍、ツメ

アクティブスキル1:怒り LV5時:2ターンの間攻撃力40%、会心率25%アップ、被ダメージが増え、防御できなくなる。 CT33秒
攻撃力が大幅に上昇し、会心率も上がるが、被ダメージが大きくなり、防御できなくなる。

アクティブスキル2:チャージクラッシュ LV5時:261%攻撃、チャージタイム-30% CT28秒
物理攻撃を与えつつ敵CTをカット。会心も確率で発動。

パッシブ:打ち払う
稀に敵の物理攻撃を無効化する。

バトルマスターの考察

物理攻撃にエキスパートの「脳筋」ともいえる職業です。
装備できる武器の種類も6種類と多いのは良い点ですが、ムチやブーメランなどの範囲攻撃できる武器は装備できません。
ステータスとしては、攻撃力は高いですが守備力が低く、スキル「怒り」でさらに捨て身の状態になります。攻撃魔力と回復魔力は低いため、呪文要員には当然不向きです。
強力なコンボとしては、スキルを全てチャージしておき、「怒り」から攻撃スキルを全て解放して連続攻撃を加えるのは非常に強力です。
スキル「チャージクラッシュ」は、強力なチャージブレイクといったかんじで、攻撃力がチャージブレイク、やいばくだきよりも高く、減らせるCTも多くなっています。

パラディン

必要職業:僧侶、武闘家レベル50

得意武器:ヤリ、杖、扇、棍、ツメ

アクティブスキル1:戦友の盾
ダメージを抑えつつ、指定した味方一人のダメージを引き受ける
スキルレベル5で、3ターンの間ダメージ25%カット。 CT23秒

アクティブスキル2:グランドネビュラ
回復魔力値に依存するイオ系の全体ダメージ攻撃 スキルレベル5でCT30秒。

パッシブ;くじけぬ心
致死ダメージを稀にHP1で耐える。

パラディンの考察

HPを守備力が高い、いわゆる「タンク」の職業です。
上級職での回復役として「スーパースター」「賢者」か、パラディンかというところで悩むところです。
攻撃力が激しい敵との戦闘では、回復呪文と「戦友の盾」のスキルでパーティの生存率を高めてくれます。
特に、強力なボス戦を前にして特定の攻撃に対して耐性のある装備の組み合わせと、サポートスキル+戦友の盾のコンボは、パーティの生存率を飛躍的に高めてくれるでしょう。(ただし、対象は味方1体のみなので、他の2人の攻撃はさばききれません)

欠点としては、自身のスキルによる回復系スキルがないので、回復役にするのであれば、回復スキルのスロットのある武器か、杖を装備するなどでサポートが必要となります。

賢者

必要職業:魔法使い、僧侶レベル50

得意武器:ヤリ、短剣、杖、ムチ、棍

アクティブスキル1:ザオラル レベル5でCT:93秒
指定した味方一人を100%蘇生する。蘇生時HPはスキルレベルにより変化。

アクティブスキル2:連続じゅもん レベル5でCT:20秒
じゅもんスキルを2つ選んで発動する。

パッシブスキル:じゅもんのコツ
こうげき、ほじょじゅもんのCTを10%カットする。

賢者の考察

魔法のエキスパートの職業です。
攻撃魔力も回復魔力も高く、連続呪文で呪文を2つ選んで発動可能な他、蘇生効果の「ザオラル」を使える唯一の職業です。(しかもザオラルは100%蘇生なのはありがたいですが、CTは93秒とかなり長めです。)
魔法使いはこれまで使われない職業だったので、賢者の登場によって人気が出ることがあるかどうかは気になる点です。
欠点としては、物理攻撃と身の守りは低いですが、それぞれ全職業中最下位ではありません。
基本的には呪文アタッカー&回復要員のポジションなので、活かすためには強い杖がほしいところです。
最大HPは低いので、防具で補う必要はあるでしょう。

魔法戦士

必要職業:戦士、魔法使いレベル50以上

得意武器:剣、オノ、ヤリ、短剣、杖、ムチ

アクティブスキル1:魔法連斬 レベル5で威力261%+威力と属性を引き継いだ攻撃 CT40秒
指定した攻撃呪文のあと、属性ダメージ付きの物理攻撃で追撃する。

アクティブスキル2:マジックバリア
仲間全体のじゅもん耐性を上げる。レベル5で2ターンの間25%カット。

パッシブスキル:こうげきじゅもんのコツ
こうげきじゅもんのCTを15%カットする。

魔法戦士の考察

魔法と物理攻撃を兼ね備えた職業です。
バトルマスターと並ぶアタッカーといえる職業で、バトルマスターとどちらを選択するかが悩ましいところです。
バトルマスターと比べるとメリットとしては、全体攻撃可能なムチが得意武器なことや、守備力のステータスが高めなことがあります。また、専用スキルの「マジックバリア」は特にボス戦では役に立つスキルです。
バトルマスターが「怒り」のスキルで捨て身で攻撃をしにいけるのに対して、魔法戦士はマジックバリアで守りを固める印象でしょうか。
デメリットとしては、魔法は使えるものの、攻撃魔力はそこまで高くないので、魔法アタッカーとしてはやや中途半端な印象は残ります。
専用スキルの「魔法連斬」は、CTが40秒と溜まるのに時間がかかるのは難点ですが、威力261%+魔法ダメージ上乗せという、かなり強力な攻撃スキルです。

海賊

必要職業:船乗り、踊り子レベル50

得意武器:剣、オノ、ハンマー、短剣、扇、ブーメラン

アクティブスキル1:荒波の舟歌
味方全体の守備力と息耐性を上げる。
レベル5で2ターンの間、守備力20%、息耐性30%アップ。 CT61秒。

アクティブスキル2:ほうげき
無属性の敵ランダム複数回攻撃を行う。
レベル5で、威力85%の5回攻撃。CT58秒。

パッシブスキル:海の絆
味方にかける「ほじょとくぎ」「ほじょじゅもん」の有効ターン数が1ターン延長される。

海賊の考察

船乗りの上級職といった感じの職業で、味方へのサポートと攻撃を得意としています。
専用すきる「荒波の舟歌」「ほうげき」は、CTこそかかりますがいずれも強力なスキルで、ほうげきに関しては、最大レベルの場合、通常攻撃の4回連続攻撃以上の威力があります。
パッシブスキルの効果もあって、味方へのサポートを行いつつ敵への攻撃を行うのに適した職業です。
欠点としては、ステータス上のちからはバトルマスターや魔法戦士より低いです。

まものマスター

必要職業:船乗り、レンジャーレベル50以上

得意武器:剣・オノ・ハンマー・ムチ・ブーメラン、弓

アクティブスキル1:火炎のブレス
敵全体にランダムな炎系のブレスで攻撃する。レベル5でCT38秒。

アクティブスキル2:かみくだき
敵1体を攻撃しつつ攻撃力・守備力をそれぞれ確率で下げる
レベル5で威力222%の攻撃で、37%の確率で攻撃力と守備力をダウンさせる。CT28秒。

パッシブスキル:ほじょとくぎのコツ
ほじょとくぎのCTを15%カットする。

まものマスターの考察

自然を味方にして戦うタイプ?の上級職の職業。
上級職の専用スキル「火炎のブレス」「かみくだき」はそれぞれ便利なスキルです。

スーパースター

必要職業:踊り子、レンジャーレベル50以上

得意武器:短剣、ムチ、扇、ブーメラン、弓

アクティブスキル1:ハッスルダンス
味方全体のHPを中程度回復する。
レベル5でCTは33秒。

アクティブスキル2:オンステージ
味方全体の攻撃力と素早さを上げる。
効果は使用者が攻撃を受けるか行動不能になるまで永続する。
レベル5でCTは38秒。

パッシブスキル:ほじょじゅもんのコツ
ほじょじゅもんのCTを15%カットする。

スーパースターの考察

スーパースターの特徴は、何といっても、味方全体回復を回復できる「ハッスルダンス」を習得できることです。CTも33秒とそこまで長くないので、貴重な全体回復として、ボスバトルでは役に立つことでしょう。
この職業のデメリットとしては、攻撃力が低めなことと、下級職で覚えるスキルがそれぞれ微妙なものが多いので、物理攻撃+ハッスルダンス、いやしの風での回復要員といったかんじになりそうです。
「ベホマラー」が使用できる武器が登場したら価値が低くなる可能性がありそうな職業ですが、それまでの間は回復要員としては重宝しそうです。
パッシブスキルの効果があるので、ほじょじゅもんの運用要員としても向いています。

まとめ、おすすめの職業

特化アタッカー
・バトルマスター
・魔法戦士

補助よりアタッカー
・船乗り
・まものマスター

タンク
・パラディン

回復+補助要員
・賢者
・スーパースター
・パラディン

魔法エキスパート
・賢者

といったところでしょうか。
レベル50まで上げることはなかなか大変な作業なので、基本的にはこれまで自分の育成してきた職業から転職可能な職業や、また自分が持っている強力な武器が得意武器な職業をベースに考えて問題ないと思います。

ホーム

フィード
リンク集

ページの上部に戻る