JKaiUI改良版 配布中

JKaiUI改良版をファイル置き場にて配布中です。

最新版はここから落とせます。追加機能の使い方の説明は落としたファイルのReadMeファイルを参照してください。

オリジナルのJKaiUIの使い方、Mac上でのXLink kaiの情報はMac de Kaiを参照してください。

JKaiUI改良版はまだ開発版です。オリジナルからそう多く変更していないので大丈夫だともいますが、ご利用は自己責任でお願いします。

2013年3月30日土曜日

おすすめMacソフトウェア

知り合いがMac買ったというので、個人的なおすすめアプリをまとめたのを書きました。
そのときのものを元に公開用に書いてみました。

ブラウザ

  • Firefox
  • Google Chrome 速さを求めるなら。
ユーティリティ
  • KeyRemap4MacBook
    • キー入力をいろいろカスタマイズできる。キー入力だけでなくマウスのカスタマイズも可能。中央ボタンにエクスポゼ(misson control)などは個人的にはおすすめ。他にWindows用キーボードを利用するときなどは便利。
  • XtraFinder
    • Finderを機能強化する。タブを利用できるようにしたりWindowsのように動作するようにできる。たまに不安定。
  • AppCleaner
    • Windowsで言うアンインストーラのような物。ファイル名やフォルダ名から判断して削除候補をあげてくれる。
  • Carbon Copy Cloner
    • HDDイメージを作成可能。シェアウェア。バックアップなどに利用可能。
  • Remote Desktop Connection Windowsにリモートアクセスする場合に。
  • StuffIt Expander 圧縮ファイル解凍ソフト。Macのものより多くの形式に対応。
  • TimeMachineEditor
    • タイムマシンがバックアップする間隔を指定可能。バックアップばかりしてると感じたら利用を考えてみるべき。
  • Trim Enabler 純正SSD以外を利用するなら。
エディタ、IDE
  • iText Express
  • TextWrangle
  • CotEdito
  • mi
  • Emacs
  • MacVim
  • MacVim-KaoriYa
  • IntelliJ IDEA 12 CE
  • Eclipse
  • NetBeans
クラウド
  • dropbox 一番便利なクラウド
  • googledrive googleサービスと連携するときに便利
  • skydrive
  • evernote
    • 便利なメモアプリ。ただし無料だと1つの端末でしかログインできない(最近は変わってるかも)
OS X搭載ソフトウェア
  • 辞書 国語、英和、和英が入ってるので便利
  • アクティビティモニタ dockに入れてCPU仕様履歴を表示すると便利
  • Automator
    • 簡易なプログラムを作るときに便利。コマンドをアプリケーションでくるむことができる。いろいろなスクリプトを利用可能
Windows仮想化
  • VMware Fusion
    • 仮想化ソフト。安定性とVMware Playerとの連携を求めるなら
  • Parallels 仮想化ソフト。速い動作を求めるなら。
  • VirtualBox 仮想化ソフト。無料。不安定?。
  • CrossOver
    • Windowsエミュレータ。MS Officeを動かすならこっちの方が軽い。対応ソフトは少ない。Windowsいらず。
  • Xen
    • CrossOveerのサポートなし版(もともとこっちが源流)。無料。ただし導入は面倒かも。
その他
  • MacPorts コマンドをよく使うなら。
  • Homebrew コマンドをよく使うなら。
  • Skitch ペイントソフト。簡単な図を編集する場合は便利。
  • Thunderbird
    • メーラー。Mac標準のメーラーに不満な場合に。mozilla系は基本クロスプラットフォーム(Windows, Linux, Macなど)で利用できる。プロファイル(設定)の移行なども簡単にできる。
  • VLC
    • 動画再生ソフト。Quicktimeより多くの形式を再生可能。Quicktimeがあわない場合はこっち。
  • Xbench ベンチマークソフト。
  • Handbrake Macでよく利用される動画エンコード用ソフト。

2013年3月23日土曜日

トラックボール+KeyRemap4Macbook

KeyRemap4MacbookというOS X用のキーボードカスタマイズツールがあります。
キーボードカスタマイズツールですが、実はマウスボタンの機能もカスタマイズできます。
これを利用するとトラックボールやマウスが非常に便利になります。

今回は私が使用しているトラックボールLogicool M570(おそらく他のものやマウスでも応用可能)で利用している方法を紹介しようと思います。

説明用環境



使用ソフトウェア


カスタマイズ概要

各ボタンに割り当てる機能をまとめておきます。
  • 右クリック:変更無し
  • 中央クリック:Mission Control
  • 左クリック:変更無し
  • 右クリック+左クリック(同時押し): Launchpad
  • 進むボタン:(Mission Controlの)左の操作スペースに移動
  • 戻るボタン:(Mission Controlの)右の操作スペースに移動
  • 右クリックを押しながらカーソルの移動:チルトホイール(上下左右に移動)

手順

1,インストール

まず、KeyRemap4Macbook(KR4M)とLogicool Control Center(LCC)をダウンロードとインストールしてください。 


KR4M

KR4Mインストール後、再起動を要求されるので再起動します。
インストールするとメニューバーに正方形のアイコンが表示されていればインストールできています。
 
KR4Mアイコン

LCC

LCCはシステム環境設定にアイコンが追加されます(一番下の行にあります)。

システム環境設定内のLCC

 

2,LCCの設定


LCCでもボタンのカスタマイズは可能です。
しかしながら、 KR4Mで一括してカスタマイズした方が手軽です。
また、KR4Mでは設定のプロファイルのような物をいくつか作成しておき、瞬時に切り替えることなどが可能なために便利です。
そこでKR4Mでカスタマイズしやすいように以下のようにボタンに機能割り当てをします。

LCCボタン割り当て機能

  • 左ボタン:クリック クリック
  • 右ボタン:クリック 右クリック
  • ホイールボタン:クリック 中央ボタン
  • 親指戻るボタン:高度なクリック ボタン番号4
  • 親指進むボタン:高度なクリック ボタン番号5

手順


システム環境設定から設定画面を開きます。
デバイスを選択して、設定ボタンを押します。
デバイス選択画面
各デバイスの設定画面が開きます。
左上のボタンタブを選択します。
開いた画面の割り当てられたアクションを各ボタンごとに選択し、右下の詳細欄でボタンに割り当てる機能を指定します。
下に親指戻るボタンの設定例を示しておきます。


親指戻るボタンの設定例

3,KR4M設定


KR4Mではメニューバーのアイコンから「Open KeyRemap4Macbook Preferences」で設定画面を開きます。

設定画面を開く

開いた設定画面でKR4Mの設定を行っていきます。
KR4Mでは、はじめから用意されている設定(組み込み設定)が豊富に用意されています。
また、自分でカスタマイズした設定を追加もできます。
今回の例では両方必要なのでそれぞれ順に説明します。
例では「右クリックを押しながらカーソルの移動:チルトホイール(上下左右に移動)」が組み込み設定であり、他の4つはカスタマイズ設定です。

組み込み設定


組み込み設定はとても簡単です。
Change Keyで好きな設定のチェックボックスをチェックするだけです。
「右クリックを押しながらカーソルの移動:チルトホイール(上下左右に移動)」の場合は
Pointing DeviceカテゴリのCursorMove to ScrollWheelカテゴリのRightClick+CursorMove to ScrollWhellをonにします。
組み込み設定

カスタマイズ設定


自分でカスタマイズした設定はXMLファイルを編集することで追加できます。
XMLファイルはMisc&UninstallタブのOpen private.xmlを押すことでファイルをFinderで表示してくれます。
それを開いて編集してください(Safariなどで開くときは右クリックからOS X標準のテキストエディットで開いてください)。

private.xmlを開く

開いたら編集していきます。
どのように書けばいいか公式のマニュアルがあります(英語のみ)。
今回の例でのXMLを載せておきます。


XMLファイルについて簡単な説明を載せておきます。
  • (1)のnameタグはカテゴリ名です。
  • (2)のnameタグは設定名です。
  • (3)のidentifierタグは識別子のようなものです。他の機能とかぶらないようにすればいいようです。通常はprivate.「機能を表す文」のようにすればいいようです。
  • (4)のautogenタグは設定の中身です。
    • --PointingButtonToKey--はボタンにキーを割り当てるための機能です。
    • --SimultaneousKeyPresses--はボタンやキーを同時押しした場合の動作を割り当てるための機能です。
    • 構文:機能、変更前ボタン、変更後ボタン(各ボタン、キーは複数の場合あり)
割り当てるキーをただ変えるだけならマニュアルのList of KeyCode, ConsumerKeyCode, PointingButtonを参照すれば簡単に可能です。

編集後、ファイルを保存します。
KR4Mの設定画面を開き、右上のReloadXMLボタンを押します。
編集内容が反映されるの必要な設定をonにします。
これで設定は完了です。

カスタマイズ設定

4,動作確認


最後に動作確認をします。
設定によってはあまり出番はありませんが、どのボタンが押されたかやボタンが押された位置、どのキーが押されたかを表示してくれるEventViewerがKR4Mに付属しています。
それを用いて、想定したように動作しているか確認してください。
起動はKR4Mの設定パネルのMisc&Uninstallのタブからできます。
EventViewer起動ボタン
EventViewer

2013年3月16日土曜日

トラックボールLogicool M570 スクロールホイール静音化?

ホームポジション型親指型トラックボールを作成するという記事を見つけました。
普段、トラックボールを利用している身として気になったので、触発されて実際に試してみました。
しかしながら、これ結構な手間がかかるということがわかりました。
なので、残念ながら今回は断念。

ただ、その過程にてTM-250を分解しているときにスクロールホイールの「かりかり」っとなっている理由がわかりました。
「かりかり」は個人的に気になっていたので現在利用しているM570でも同じだと推測し、原因を除去してみました。

※分解するとメーカー保証(3年間)がなくなります。

M570はここを参考に分解しました。
スクロールホイールはTM-250と違って、筐体の上の方に取り付けられています。
「かりかり」を取り除くにはホイールの溝に金属部品がひかかっているのでこれをとる必要があります。

分解手順
  1. 電池カバーのふたと電池、ボールを外す。
  2. 一部ゴムに隠されている底面のねじ(T6)をはずす。
  3. 電池格納部のねじをはずす。
  4. 筐体上部と下部を分離する。
  5. クリックする部分を外す。筐体上部の中央にある爪を2つ外す。
  6. マイナスドライバなどでホイールの溝にかかっている金属をはずします。
  7. ホイールをはずします。
    1. ホイールを斜めにして、どちらかに隙間を作ります。
    2. ホイールを逆方向に斜めにするようにすると比較的うまくいきます。
  8. 最後に金属部品を外して、ホイールを元に戻します。
参考までに分解したときの写真を載せておきます。
ねじの場所

スクロールホイール(上から):赤丸は金属部品
スクロールホイール(下から):赤丸はひっかかっている部分

スクロールホイール:ひっかかりを外した状態
分解後
 ホイールを外すときは筐体を破損しないように力加減に注意してください。
戻すのは逆順に行えば問題ありません。戻すときはホイールに傷をつける可能性があるので注意が必要です。

以上でハードウェア的な行程は終了です。
あとは好みでLogicool Control CenterやSetPoint等でスクロールホイールの速度、加速度を調整してください。
ホイールの感覚がかなり変わるのでだいたいの人は調整は必要だと思われます。
私の場合は速度と加速度両方とも少しあげました。
慣れない最初のうちは少し気持ち悪く感じます。
自分にあわないと感じたら素直に戻すのをおすすめします。

2013年3月9日土曜日

Clonerベンチマーク

JavaにてdeepCopyを実装しようとしていてClonerライブラリがあるというので、ベンチマークしてみました。

比較対象

  1. 通常のcloneメソッド(シャローコピー)
  2. 自分で実装したdeepCopy
  3. Serializableを利用したユーティリティ(DeeCopy)
  4. ClonerライブラリのDeepCopy 
計測に当たりSerializableを用いたdeepCopyメソッドを実装しました。
また、 独自実装したdeepCopyを実装するためにdeepClonableインターフェース(deepCloneメソッドのみ)を作成しました。
さらに、それを実装した拡張ArrayList、拡張Stringクラスを実装しています。

結果



グラフの横軸が拡張ArrayListの要素数です。
縦軸がコピーにかかった時間[秒]です。
中身は拡張Stringクラスです(正確にはList<List<String>>)。
結果はjvmに2GByteメモリを割り当てて計測しています。
グラフ上では見えず難いですが、cloneの結果は横軸と重なっています。

簡単な考察

  • clone > 独自実装 > Serializable > Clonerライブラリの順で速い
    • 通常はcloneメソッドでなんとかする
    • deepCopyがどうしても欲しいなら、使用頻度やパフォーマンスと相談して3つのどれか選択すればいい
  • cloneはグラフではわからないが要素数に比例している。ただし、他よりかなり高速
  • 独自実装をうまくやると高速
  • Serializableを用いた方法ではSerializableを実装していないと利用できない制約がある。
  • Clonerには制約はない。
  • Clonerが遅いのは内部でリフレクションを用いているためである。ただし、コピーするクラスによってはリフレクションの使用を抑え速くなるように工夫されている。
  • コピーしたオブジェクトによってはこれと異なる結果になる可能性もある。

ここからは計測に利用したプログラムの説明を載せていきます。

    計測プログラム


     計測プログラムで用いている各クラスなどを以下に示します。
    • com.rits.cloning.Clonerクラス:Clonerライブラリ
    • yuu.akron.ucollection.another.ArrayListクラス:拡張ArrayList
    • yuu.akron.ucollection.interfaces.another.Listインターフェース:拡張Listインターフェース
    • yuu.akron.ulang.DeepCloneUtilsクラス:Serializableを利用したdeepCopyユーティリティクラス
    • yuu.akron.ulang.S.Sメソッド:java.lang.Stringクラスを拡張Stringクラスに変更する静的メソッド
    • yuu.akron.ulang.Stringクラス:拡張Stringクラス
    プログラムでは要素数を変えながら4種のコピーの時間を計測してその時間をcsvファイルに保存しています。
    コピーするのはList<List<List<String>>>型(ArrayList, Stringはそれぞれ拡張した物なので注意)です。



    java.util.ArrayListのclone実装(java SE 6)

    Serializableを利用したdeepCopy実装

    拡張ArrayListのdeepCopy実装:各要素に対してdeepCopyメソッドを実行

    拡張StringのdeepCopy実装:イミュータブルなので自分を返す

    2013年3月2日土曜日

    仮想マシンベンチマーク

    Windows 8を手に入れたので、個人的に期待していたHyper-Vのベンチマークを取ってみました。

    比較対象

    • Windows 7搭載のVirtual-PC
    • VMWare Player
    • 実機

     

    計測環境

    • CPU:core i5 2500 
    • マザボ:Asrock H67DE3 
    • メモリ:8G 
    • ベンチマークソフト:CrystalMark2003R3です。
    • ゲストOS:XP,7(表記がなければx64)
    • ホストOS:7,8(表記がなければx64)
    • 実機:7,8(表記がなければx64)
    • 計測回数:各1回

     

    計測結果



     

    簡単な考察

    • VMwareとHyper-Vの結果はほとんど変わらないようだ。
    • Virtual-PCは1コアしか利用できないためベンチマークの結果は低くなっている(設定で変えられるかは不明)。
    •  仮想マシンと実機では実機の方が結果はいい。

     

    個人的な結論

    • 性能的には変わらないので機能で選択
    • クライアントとして使うならVMWareを利用する方がいい
    • サーバーとして使うならHyper-Vの方がいいかもしれない(ウィンドウを出す必要がない)。