Windows8.1なPCに施した諸々の設定

キー配置の変更

普段使っているMac(USキーボード配列)に少しでも合わせるため、Change Keyというフリーソフトを使って配置換え。

f:id:hchuno:20150504184015j:plain

  • 無変換→Ctrl
  • 変換→半角全角
  • カタカナひらがな→Home
  • 右alt→End
  • 右クリックボタン→Page Up
  • 右Ctrl→Page Down
  • Caps Lock→無効
  • Num Lock→無効

テキストエディタ

Sublime Text2の導入

Viっぽい挙動(VintageMode)にできるので。

VintageModeを有効にする
  • 「Settings - Default」の最終行が「Vintageを無視する」という記述になっているので、以下のように変更して保存する。
#↓変更前
"ignored_packages": ["Vintage"]

#↓変更後
"ignored_packages": []
  • 「Settings - User」に以下を追記する
"vintage_start_in_command_mode": true,
"vintage_ctrl_keys": true

Synaptics TouchPad Driverのインストール

元々Windows7だったのを諸事情により8.1にアップグレードしたのだが、その時点で
「Synaptics TouchPad」が使えなくなっていた(ドライバーが消えていた)。
そこで、
HPのサポートサイトでPCの機種名検索から対応ドライバーを割り出した。
「Driver - Keyboard, Mouse and Input Devices」という項目に「Synaptics TouchPad Driver」が含まれていたので、これをダウンロード&インストール。

Virtualization Technology (VTx)を有効にする

背景

Android Studioのインストール時に必要となった。

対象

HP ProBook650

手順

  1. PC起動直後の真っ黒い画面で「Press ESC Key…」と表示されている時にescキーを押す
  2. F10キーを押してBIOS設定画面を表示する
  3. 左右キーを押してAdvancedという項目を表示する
  4. Virtualization Technology (VTx)という項目にチェックを入れる
  5. Saveを押す
  6. escキーを押してSaveを選択する

Unity5あれこれ

Sceneに配置したTextの中身をスクリプトで変更する(uGUI対応)

1. 空のGameObjectを追加
2. 以下のような内容のスクリプトを作成し、UnityのEditor上で1のGameObjectにアタッチする

    public Text hogeText;
    void Start() {
        debugText.text = "hage";
    }

3. UnityのEditorのHierarchy上で右クリックからUI→Textと選択
f:id:hchuno:20150407165124j:plain
4. 1のGameObjectを選択して、3のTextをhogeTextにドラッグアンドドロップして関連付ける
f:id:hchuno:20150407165309j:plain
5. UnityのEditorでプレイボタンを押すとTextの表記がhageに変わる

WebViewプラグインを用いて表示したHTMLから送られてきた値を取得する

    WebViewObject wvo;
    string htmlFilePath;

    void Start() {
        htmlFilePath = Path.Combine(Application.persistentDataPath, "sample.html");
        WriteHTML();

        wvo = (new GameObject("WebViewObject")).AddComponent<WebViewObject>();
        wvo.Init((msg) => {
            hogeText.text = msg;
            if (msg == “hoge”) {
		// Nextという名前のSceneに遷移
                Application.LoadLevel("Push");
            }

        });
        wvo.LoadURL("file://" + htmlFilePath);
        wvo.SetMargins(15, 150, 15, 20);
        wvo.SetVisibility(true);
    }
	

    void WriteHTML() {
        using (var writer = new StreamWriter(htmlFilePath, false)) {
            writer.Write(
                @"<html>
<body>
<ul>
  <li><a href='unity:hage'>callback 'hage'</a></li>
  <li><a href='unity:hoge’>callback ‘hoge’</a></li>
</ul>
</body>
</html>
");
            writer.Close();
        }
    }
}

AndroidManifest.xml

  • Androidのネイティブプラグイン作成等で必要。
  • プラットフォームをAndroidにセットした後、ビルドすると以下の場所に生成される
{プロジェクトルート}/Temp/StagingArea/

Unity5が来た!

AssetBundle関連

“The AssetBundle ‘◯◯◯’could not be loaded because it is not compatible with this newer version of the Unity runtime.
Rebuild the AssetBundle to fix this error.”

やっぱりか…(;´Д`)

Unity5のほうでAssetBundleビルドを行った後、再度AssetBundleのロードを試みるも、再び上記のエラー発生。

WWW.LoadFromCacheOrDownLoad()に渡すversionの引数をインクリメントすると、無事に新しいものがロードされるようになった!
(ローカルにUnity4時代のAssetBundleが残っていて、そちらをロードしようとしていたのが原因)

Unityあれこれ

ローカルのUnityプロジェクトが最新にならない

チーム開発等でUnityのプロジェクトを最新にしても、ローカルのAssetが古くて挙動がおかしいことがあった。
以下の手順で解決。

  1. Unityを終了
  2. プロジェクト直下のLibraryディレクトリを丸ごと削除
  3. Unityを起動

Canvas以下に置いたTestTextというコンポーネントを探して、テキストを変える

int number = 0;
var canvas = GameObject.Find ("/Canvas");
foreach (Transform child in canvas.transform) {
    if (child.name == "TestText") {
        Text target = child.gameObject.GetComponent<Text> ();
        target.text = "hoge" + number.ToString ();
    }
    number++;
}

GameObjectの表示/非表示切り替え

  • SetActive() を使う
  • 非アクティブ化されたGameObjectを取得できるFindDeep() を使う
    • 第二引数にtrueを渡すと非アクティブなGameObjectも検索対象になる
bool isActive = false;

gameObject.FindDeep ("MyChunoText", isActive).SetActive (isActive);

Modelとテーブルを追加する

追加したいテーブル

CREATE TABLE `hchuno_items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `code` int(11) DEFAULT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `version` int(11) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

手順

Active Recordを使ってModelを生成

$ rails generate model hchuno_items code:integer name:string version:integer

invoke active_record
create db/migrate/20150205000000_create_hchuno_items.rb
create app/models/assetbundle_master.rb
invoke rspec
create spec/models/hchuno_items_spec.rb
invoke factory_girl
create spec/factories/hchuno_items.rb

マイグレーションを実行してテーブルを追加

$ rake db:migrate

(in /Users/hchuno/projects)
== 20150205000010 CreateHchunoItems: migrating =========================

    • create_table(:hchuno_items)

-> 0.0399s
== 20150205000012 CreateHchunoItems: migrated (0.0400s) ================

コルーチン関連

処理内容

  1. ボタンを表示
  2. ボタンを押すと指定したSceneに遷移
  3. 裏で、指定したURLに接続

ソースコード

using UnityEngine;
using System.Collections;

public class Title : MonoBehaviour {
	void OnGUI () {
		if (GUI.Button(new Rect(Screen.width/2 -100 , 100, 200, 50), "GAME START"))
		{
			Application.LoadLevel("particles");
			StartCoroutine("LoadData");

		}
	}

	private IEnumerator LoadData() {
		string url = "http://localhost:3000";
		WWW hoge = new WWW(url);
		while (!hoge.isDone) {
			yield return null;
		}
	}
}

少しハマったところ

↑上記ソースコードの、

WWW hoge = new WWW(url);

の部分で当初、変数hogeの前の型宣言を書かずにビルドしたら、

hoge does not exist in the current context

と怒られた。

日本語配列キーボードなMacBook Proに行った設定

概要

職場で日本語配列キーボードのMacBook Pro(以下、MBP)が支給された。
US配列キーボードのものが欲しかったのだが、あまり贅沢は言えず。
とは言え、普段慣れ親しんでいるのはUS配列のキーボードなので、極力そちらに近づけたほうが良いということで、色々と試してみた。

各種設定

ThinkPadのUS配列USBキーボードを使用

MBPに接続して認識させた後、システム環境設定の「キーボード」にて少々キーバインドを変更する。
f:id:hchuno:20150109210105j:plain

メリット
  • ほぼUS配列キーボードのMBPと同じ挙動
  • トラックポインタが使える
デメリット
  • MBPの占有スペースが無駄
  • MBPのトラックパッドが使えない
  • 持ち運びにくい

キーバインディング変更ソフトを使用

  • Karabiner - OS X用のソフトウェア
    • 以前は「KeyRemap4MacBook」という名で知られていたソフト。OS X10.9から名前が変わった模様。
    • 言語に応じた細かい設定も可能になっており、「For Japanese」→「Change Keyboard Layout」とたどると以下の様な項目があった。「USE Japanese Kyeboard as US Keyboard」という項目もあったのだが、いまいち期待した挙動にならなかったため止めておいた。

f:id:hchuno:20150109210251j:plain

メリット
  • 場所を取らない
  • トラックパットが使える
  • 持ち運びしやすい
デメリット
  • ThinkPadキーボードと比べるとキー配列に違和感が残る
  • 表記と異なる挙動をするキーが存在する(普段の慣れに頼るしかない)
最終的な設定
  • かなりUS配列の挙動に近づいた!
    • 各キーの表記に釣られてしまうので、無刻印キーボードのつもりで慣れるしかない…

f:id:hchuno:20150112193925j:plain


結論

「腰を据えて使うときはThinkPadキーボード、持ち運ぶときはMBP単独」という使い分けができるようになっただけでもデカい。