ハトネコエ Web がくしゅうちょう

プログラミングやサーバー関連、チームマネジメントなど得た技術のまとめ

Linux への Go のインストールをささっとやる

もちろん公式のインストールガイドはあるのですが、
シェルコマンドを工夫してもう少しコンパクトに書きたかったので。

以下です!

GO_VERSION=1.12.6 && \
wget -q -O - https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz | sudo tar xzvf - -C /usr/local && \
mkdir $HOME/.go && \
echo 'export GOPATH="$HOME/.go"' >> ~/.bashrc && \
echo 'export PATH="/usr/local/go/bin:$GOPATH/bin:$PATH"' >> ~/.bashrc

wget を先にインストールしておく必要があるので注意です。
また、sudo tar xzvf の sudo は、例えば Dockerfile にこれを書くとかだったら、不要かもしれません。
(そもそも Dockerfile を使うなら PATH や GOPATH は ENV による指定がいいですが)

Ubuntu で、少し古いバージョンの go でも良いなら、単純に apt install -y golang でいいですね。

【Mac】RPGツクールMVの古いプロジェクトのコアスクリプトを最新に

1. 開発期間が長引く場合の罠

RPGツクールMVRPG Maker MV) で作った古いプロジェクトは、
たとえRPGツクールMVのバージョンアップをしていても、
コアスクリプトと呼ばれる、いわばプラグインの根幹となるプラグインが古いままです。

これにより、入手したプラグインがなぜか上手く動作しない……といった現象が発生するようになります。

開発期間が長引いたなどの理由でプロジェクトのコアスクリプトが古いままになっている場合は、
手動で最新版に更新させてあげる必要があります。

2. 準備

前提として、RPGツクールMV本体が最新になっている必要があります。

Steam版の場合は、Steamによって自動的に更新されていると思います。
それ以外の方は、公式サイトの「ダウンロード」ページよりアップデータをダウンロードし更新しましょう。
(「ダウンロード」ページのコンテンツがすごく増えててびっくりした)

それから、必ずバックアップをとっておいてください。

必ずバックアップをとっておいてください。

すでに使っているプラグインとの兼ね合いでゲームが動かなくなる可能性がとてもあります。
バージョンが離れてるほど、コアスクリプトのアップデートは難しくなると思いますので、
その際はアップデートをあきらめざるを得ないかもしれません。

3. コアスクリプトのアップデート方法

コアスクリプトのアップデート方法は、以下のページの最下部に記載されています。

Mac についてコマンドで簡単におこなう方法を記します。

まず、自分のプロジェクトがあるディレクトリに移動してください。
そして以下のコマンドを実行します。
(※私の環境ではRPG Maker MV.app」~/Games/steamapps/common/RPG Maker MV ディレクトリ下にありますが、Steam の設定によっては変わります)

rsync -av ~/Games/steamapps/common/RPG\ Maker\ MV/RPG\ Maker\ MV.app/Contents/MacOS/NewData/js/ ./js/ --exclude "plugins.js" --exclude "plugins/" --dry-run

すると、コピー予定のファイルが表示されます。例えばこんな感じ……↓

building file list ... done
./
main.js
rpg_core.js
rpg_managers.js
rpg_objects.js
rpg_scenes.js
rpg_sprites.js
rpg_windows.js
libs/
libs/fpsmeter.js
libs/lz-string.js
libs/pixi-picture.js
libs/pixi-tilemap.js
libs/pixi.js

sent 2319755 bytes  received 296 bytes  4640102.00 bytes/sec
total size is 2322204  speedup is 1.00

これで問題なさそうだなあ、と思ったら、 --dry-run を抜いた

rsync -av ~/Games/steamapps/common/RPG\ Maker\ MV/RPG\ Maker\ MV.app/Contents/MacOS/NewData/js/ ./js/ --exclude "plugins.js" --exclude "plugins/"

を実行してください。

公式の手順に沿うなら、これで終了です。

4. 個人的におすすめな追加手順

上に加えてやっておくといいことです。

まず、私の場合は index.html が古いために、ゲーム実行時、
makeVideoPlayableInline is not defined」のエラーが起きてしまいました。

f:id:nekonenene:20190609231223p:plain
ReferenceError "makeVideoPlayableInline is not defined"

rsync -av ~/Games/steamapps/common/RPG\ Maker\ MV/RPG\ Maker\ MV.app/Contents/MacOS/NewData/index.html ./

上のコマンドで、 index.html の更新もおこないました。

また、公式の案内では plugins ディレクトリはコピーしないほうがいいと書かれているのですが、
これが古いせいで変な動作が起こると元も子もないので、個人的にはこのディレクトリもコピーするのがおすすめです。

というわけで、 3. で紹介したコマンドは私としては以下のようになりました。

rsync -av ~/Games/steamapps/common/RPG\ Maker\ MV/RPG\ Maker\ MV.app/Contents/MacOS/NewData/js/ ./js/ --exclude "plugins.js"

ちなみに plugins.js は、現在プロジェクトで使っているプラグインの設定が保存されているファイルなので、
こちらは上書きしないように気を付けましょう。

Unity プロジェクトを無料で手元の iPhone (iOS) へビルド

この記事は、年間 11,800 円の Developer 会員(Apple Developer Program membership)じゃないけれど、
自分の Unity プロジェクトが iOS でちゃんと動作するのか確認したい人のための記事です。

1. 前提知識

Apple Developer Program membership じゃないと出来ないこと

  • ipa ファイルの出力が出来ない
  • よって、Deploygate などを使った配布もおこなえない
  • もちろん TestFlight も使えない(そもそも今は Apple Developer Program membership 向けのサービスなので)

会員じゃなくても出来ること

というわけで、この記事では後者の2点に関しておこないます。

2. Xcode 側の設定

アカウント設定をまだの場合はします。

Xcode の設定画面を開き、「Accounts」タブを選び、まだ Apple ID を Xcode に登録していないのなら、
左下の + ボタンを押して、Apple ID を追加してください。

f:id:nekonenene:20190525111111p:plain

Apple ID の追加が終わったら、今度は「Manage Certificates...」ボタンをクリックします。

f:id:nekonenene:20190525111851p:plain

左下の + ボタンを押して、「iOS Development」を選択します。

f:id:nekonenene:20190525112018p:plain

これで開発ビルド用の証明書が作成されました。

3. Team ID の確認

Apple Developer Program に登録している人は https://developer.apple.com/account/#/membership/ に書かれている Team ID を用いるのですが、
今回使うのはそこの Team ID ではありません。

先ほど作った証明書に Team ID は書かれています。

Keychain アプリを開きます。

open -a /Applications/Utilities/Keychain\ Access.app

右上の検索ボックスにiPhoneと入力します。

f:id:nekonenene:20190525113003p:plain

iPhone Developer」と書かれた証明書ファイルが見つかると思いますので、
それをダブルクリックして詳細を開きます。

f:id:nekonenene:20190525113433p:plain

詳細の中に、「Organizational Unit」という項目があります。
ここに記載された値を、 Team ID として後ほど使用します。

4. Unity 側の設定

より詳細に触れている記事もネットにあるので、
私の設定を軽く書く程度で流していきます。

今回はデバッグビルドなので、以下のような設定にしました。

f:id:nekonenene:20190525114126p:plain

この画面の左下、「Player Settings...」ボタンを押してさらに詳細な設定をおこないます。

「Resolution and Presentation」の項は、
横長のゲームなので「Default Orientation」を「Landscape Left」に変更しました。

f:id:nekonenene:20190525114819p:plain

で、大事なのが「Other Settings」の項
ここで 3. でメモした Team ID を用います。

f:id:nekonenene:20190525115604p:plain

「Signing Team ID」の項目に、先ほどメモした Team ID の値を入力します。
ここを入力し、また、「Automatically Sign」にチェックが入っていることで、
Xcode は先ほどの証明書を使って、Unity から渡されるプロジェクトのビルドをおこなうことができるのです。

また、もう1つ気を付けたいのは「Bundler Identifier」の項目です。
ここの値はアンダーバーを許容しません

ですので、Androidのパッケージ名のような感覚で
例えば「com.google.something_game」と名付けるとビルドエラーになってしまいます。
「com.Google.SomethingGame」などと名付けましょう。

これらの設定がおこなえたら、先ほどの Build Settings ウィンドウに戻り、
「Build And Run」ボタンでビルドをスタートします。 Unity 側で Xcode 用のブロジェクトをビルドしたのち、そのまま Xcode 側で iOS のためのビルドが走ってくれます。

5. iPhone 側の許可

Xcode により iOS 向けのビルドが走り、 iPhone へのインストールがスタートするのですが、
おそらく初回はインストールに失敗すると思います。

開発ビルド用の証明書は、iOS 側で疑わしい証明書の扱いを受けてしまうのです。

たぶんその際にエラーメッセージが表示されると思うのですが、
iPhone の設定アプリから、「一般」→「プロファイルとデバイス管理」に進んで、
デベロッパAPP」の中にある自分の Apple ID を選んで、「〇〇を信頼」を押してください。

これで、再びビルドを回すと、iPhone へ正常にインストールがおこなわれるようになっているかと思います。
Xcode でビルドエラーが出ている場合は、エラーメッセージをよく読み解決しましょう……)

6. iOS Simulator での動作

上では実機での動作について書きましたが、
iOS Simulator(エミュレーター)で動かす方法も書いておきます。

4. でいじった「Other Settings」の項を再びいじる必要があり、
「Target SDK」の設定を「Simulator SDK に変更し、
「Auto Graphics API」のチェックボックスのチェックを外し、すぐ下の一覧に
「OpenGLES2」もしくは「OpenGLES3」が含まれているかを確認します。

f:id:nekonenene:20190525131049p:plain
「Simulator SDK」を選択

f:id:nekonenene:20190525131124p:plain
「Auto Graphics API」のチェックを外す

参考: UnityプロジェクトをiOS Simulatorで実行する時の注意点 - Qiita

この設定の状態で「Build And Run」をおこなえば、
iOS Simulator でアプリが起動するかと思います。

長い道のりでしたが、これで Unity アプリを自分の iPhone 向けにデバッグビルドすることが出来ました! あいかわらず iOS へのビルドはややこしいですね……。

はてなブログの Google Analytics で /realtime_preview などを集計対象外にする

Google Analytics のデータを久しぶりに見たときに思いました。

「あれ? この /realtime_preview ってなに・・・?」

f:id:nekonenene:20190525080702p:plain

他のページの数倍の PV 数を作り出しているんですよ(笑)
これはおかしいな、と思って調べました。

そしてたどり着いたのがこちら : Google AnalyticsのPV数に自分のプレビューとリアルタイムプレビューをカウントさせない方法 - Pocket of time

1. /realtime_preview と /preview の正体

どうやら、記事を書いているときに右側に表示されるのが /realtime_preview にあたるようです。
文字を書くごとに自動更新される箇所なので、それは PV 数もどんどん増えていくわけです。

f:id:nekonenene:20190525081148p:plain
この右側のカラムが realtime_preview

なお、私はあんまり使わないんですが、
編集画面の上部にある『プレビュー』を押したときに表示されるのは
/preview にアクセスしに行ってるそうなので、こちらも除外するのが良さそうです。

f:id:nekonenene:20190525081324p:plain
preview はこちら

2. フィルタ機能を使って集計対象から除外する

このままでは、ブログを書いている日だけ PV 数が上昇してしまい、
PV数の遷移グラフが信用ならないものになってしまいます。
フィルタ設定をおこなうことで、集計結果を正常化させましょう。

Google Analytics のホーム画面 にアクセスしたら、
左下にある歯車マークが添えられた「管理」をクリックしてください。

f:id:nekonenene:20190525082058p:plain

いろいろ出てきますが、一番右のカラムから「フィルタ」を選んでください。

f:id:nekonenene:20190525082315p:plain

「+ フィルタを追加」ボタンを押します。

f:id:nekonenene:20190525082407p:plain

例えば以下のように入力します。

f:id:nekonenene:20190525090300p:plain
/realtime_preview, /preview を除外するフィルタ設定例

  1. フィルタ名は自分のわかりやすいようお好みで
  2. 「フィルタの種類」は「カスタム」
  3. 「フィルタ フィールド」は「リクエスURI
  4. 「フィルタ パターン」には正規表現が使えるので「^/(realtime_)?preview$」と入力。
    これで /realtime_preview も /preview もフィルタの対象となります
  5. 最後に下にある「このフィルタを確認する」でどう変化するのか確認しておくと安心です
  6. 問題なければ「保存」ボタンで設定を保存します

以上です。

3. 下書きプレビュー共有URLも除外対象にする

もうひとつ、はてなブログでは、下書き保存したあとに共有URLの取得ができますが、
それについても除外対象にしておきましょう。

個人ブログではあんまり使わない機能ですが、
会社のブログなどでは使うことの多い機能かと思います。

以下のような設定になりました。

f:id:nekonenene:20190525090511p:plain
/draft ページを除外するフィルタ設定例

2. で記載した設定とほぼ同じですが、
「フィルタ パターン」を「^/draft/.+」としているのが重要な違いです。
下書きプレビュー共有URLは /draft/<文字列> のような作りになっているので、それらを除外しているわけですね。

4. おわりに

一度作ったフィルタ設定は、仮に他のブログを作ったときでも、
「+ フィルタを追加」ボタンを押したあとの画面で「既存のフィルタを適用」を選択することにより、かんたんに再利用できます。

f:id:nekonenene:20190525090755p:plain

フィルタ設定は、設定した後のアクセスのみに反映されますから、
ブログを作ったらすぐにフィルタ設定を入れて、正確な Google Analytics データを最初から取得できるようにしておくことがおすすめです!