2013年12月30日月曜日

RealForce 87U を購入

今年もいよいよ数日になりました。

さて、この度キーボードを RealForce 87U にしました。


以前までは、SpaceSaverKeyboard2 だったのですが、CapsLock(Ctrlと入れ替え)の部分で引っかかりがあり、バキバキ言わせながら使っていました。
この部分どうしょうもないのですが、微妙に気にしていた部分です。

今回チャンスがあり、家庭内の稟議が通ったので、このキーボードを購入しました。

東プレ REALFORCE87UB 静電容量無接点方式 英語87配列 USB 昇華印刷 Nキーロールオーバー対応 変荷重(30/45/55g) テンキー機能付き ディップスイッチ搭載 ブラック SE17T0
http://www.amazon.co.jp/%E6%9D%B1%E3%83%97%E3%83%AC-REALFORCE87UB-N%E3%82%AD%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%AB%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E5%AF%BE%E5%BF%9C-%E3%83%87%E3%82%A3%E3%83%83%E3%83%97%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E6%90%AD%E8%BC%89-SE17T0/dp/B00DONW9HC/ref=pd_sim_sbs_computers_1


東プレのページから辿ると、アーキサイトと言うメーカーが取り扱っているようですが、今回購入したのは、それとは違い、多分ダイヤテックが取り扱っているものです。

Amazon で見る所、アーキサイトの物は、静音仕様だったり、別途キートップが付いていたりする為、お値段も少々上がり稟議が通りませんでした、、、
(今回の物も CapsLock と Ctrl のキートップと引き抜き工具は付いていました。)

東プレ RealForce 87UB 静音モデル 英語ASCII 87配列 墨モデル テンキーレス 昇華印刷 変荷重 DIP付 SE170Shttp://www.amazon.co.jp/%E6%9D%B1%E3%83%97%E3%83%AC-RealForce-%E8%8B%B1%E8%AA%9EASCII-%E3%83%86%E3%83%B3%E3%82%AD%E3%83%BC%E3%83%AC%E3%82%B9-SE170S/dp/B00542RTIU/ref=sr_1_3?s=computers&ie=UTF8&qid=1388369517&sr=1-3&keywords=%E6%9D%B1%E3%83%97%E3%83%AC+87

実際の使用感についてですが、たくさんの方がレビューされている通りとはなりますが、静電容量方式の独特のキーの感覚があります。
打鍵音は、弱めに押すとカチャカチャとは言いますが、押し込むとコトコトと言う音となり前キーボードより気持ち静か目になりました。
キーの押し込みの重さが 55g/45g/30g と分かれているようで、小指で抑えるキーが 30g 他の部分が 45g あまり押さない Esc(Vim ならよく使うけど)は、50g となっているようです。
この部分、自分としては普段気にしていないためか、違いがよくわからないです。。。

問題であった CapsLock の引っかかりは当然無く、気持よく押しこみが出来るようになりました。
ついでになりますが、キーについては CapLock と Ctrl の入れ替えをハード単位で行うことが出来るようになっています。
背面の Dip スイッチ を使用することにより変更が可能です。
変更の時には、一旦 USB から外して変更後再度接続することで反映されます。

キー配列としては、Windows 向けのキーボードとなっているために、Mac では不要な Win キーやアプリケーションキーが付いています。
現在 Mac で使用していますが、KeyRemap4MacBook と Mac の環境設定のキーボード設定を使用することにより、ストレスがなく使えるようになります。

次に見た目についてですが、今回の物は黒(灰色)筐体となります。
他に白があり、印象的には白のほうが人気があるような気がしないでもないですが、前キーボードとの事もあり、また手元が暗い色のほうが好みなので、黒を選択しました。
黒とは言っても、灰色っぽい黒となっています。
そしてキートップが、本当の黒での印刷となっています。
経験によりブラインドタッチがある程度はできているので、そこそこ打てますが、アルファベット以外の入力でミスタイプした際の確認にちょっと不便でした。。。
キートップを取り扱っているサイトも有ったと思うので、気になる方は交換するのかもしれません。

あと重さですが、そこそこ重たくなっています(1.2kg)。
以前、バックスプリング方式のキーボードを持っていたのですが、こちらも相当な重さがありました。しかしバックスプリングの場合はキーが激重だったため、それこそ叩く感じで入力をしてしまうため、重さがあっても理にかなっていると思いました。

まあ、一度テーブルに置くとそれほど動かすものではないので問題では無いですかね?

最後になりますが、今のところの感想としては不満点はありません。
キーボードが変わることにより気分が変わった気がします。
人によってはタイピングの正確性の向上や、モチベーションの向上にもつながっているようです。

文章書きの方や、プログラマなどは仕事の大半で付き合うインターフェイスなので、キーボードの持ち込みが許される環境であれば検討をしてみるのも良いかもしれません。

2013年12月21日土曜日

SourceTree の Git で Commit の時に「fatal: unable to auto-detect email address ...」のエラー

Windows 版の SourceTree を使用するが、インストール後の最初の設定をスキップしたためか、Commit 処理の際に以下のエラーが発生する。
$ git commit
*** Please tell me who you are.

Run

git config --global user.email "you@example.com"

git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'Obby@ObbyWorkstation.(none)')
アプリの設定ファイルを見るが、特にこれらの設定する箇所が見当たらなかった。
(よく見てないだけかもしれないが) 

この場合は、SourceTree をインストールする際に Git 単体も同時にインストールしているはずなので、そっちを使って設定を行ってやればよい。

自分の環境の場合は、Git に付属している Git Bash を使って、以下のコマンドで設定を行った。

まず、確認
$ git config --global -l ← 確認(設定されていない)
user.name=myname
user.mail=me.myself@gmail.com

または、
$ git config --local -l
でもよい
次に設定
$ git --global user.email "xxxxx@xxxxx.xxx.xxx"
$ git --glocal user.name "xxxxx xxxxxx"
これで、上手く行った。

2013年12月12日木曜日

Sophos Anti-Virus for Mac がおかしくなった

Mac はウイルスが少ないと聞くが、実際の所よく分からない。
とはいっても何もしてないのもと言う事があり、無料で使用できる「Sophos Anti-Virus for Mac」を導入している。

Antivirus for Mac (無償) のダウンロード
http://www.sophos.com/ja-jp/products/free-tools/sophos-antivirus-for-mac-home-edition/download.aspx

このソフトだが、何かのタイミング(起こるタイミングとしては、wifi から有線ネットワークの環境に変更した時がくさい)でオンアクセススキャナの状態が Off のままになって元に戻せない状態になってしまう。
 公式の Twitter には、対処法が書かれてあるが、上手くいかない。

上記の手順を踏んでもダメなので、一旦アンインストールを行った後、再度インストールを試みるようになる。
この時、アンインストールの方法だが、Windows が長い人なので方法がよく分からなかった。
調べてみたところ、Finder を開き、ライブラリ → Sophos Anti-Virusのフォルダ → Remove Sophos Anti-Virus.pkg の実行で、アンインストール出来るようだ。

画像付きで紹介しているページがあるので、以下に載せておく。

Sophos Anti-Virus for Mac OS X アンインストール手順 (OS X 10.6 編)
http://www.med.kobe-u.ac.jp/center/antivirus/man/macosx/uninst/osxv7_uninst_v1.html


実にわかりやすい。
と、思っているのだがアドレスを見ると公式ではなく神戸大学のページだった。
公式は以下になる

ソフォス スモールビジネス ソリューション:ソフォスのセキュリティソフトをアンインストールする方法
http://www.sophos.com/ja-jp/support/knowledgebase/11019.aspx


正直見づらい。。。
それはさておき、今回は上記の手順で特に何の問題もなくアンインストールが完了した。
アンインストール完了後、再度プログラムを入手しインストールを行った。

これで、無事事なきを得たが、今まで使っていた物とバージョンが違うらしく設定項目が増えていた。
特に気にせず使用していたが、インターネットのもたつきが激しくなった。
あまりにも遅いので、再度調べてみると、「リアルタイムの URL レピュテーションチェック」と言う機能が原因らしく、この設定を OFF にすることによって、このもたつきが取れるとの事。

この機能は、読んで字のごとくにはなるが、その都度安全なページがチェックしながら表示をすると言った物になる。
あるに越した事はないが、あまりのレスポンスの悪さに効率が悪くなりすぎたので、今回は OFF に設定して、ファイルのチェックのみで対応するようにした。
この機能自体は、すでにネットワークルータの方に持たせてあるので問題無いと思っている。

今のところ、たまにおかしくなる部分以外は特にストレス無く使用できているので、このまま使い続けるとは思うが、頻繁に起こるようであれば乗り換えも考えようと思っている。

調べてみると Sophos 以外の無料でのセキュリティソフトは以下の物がある。

iAntivirus(Symantec)
http://www.iantivirus.com/

ClamXav
http://www.clamxav.com/

評判等については調べていないので何とも言えないが、代替え策は有るという事だけでも覚えておこうと思う。

2013年12月10日火曜日

iPhone アプリで AdMob の表示ができない

iPhone アプリで、AdMob を利用したアプリを作ろうと思っているが、まずは AdMob の簡単な使い方を確かめてみようと思いサンプルプログラムを作成したが、全く表示されない。

最終的には、表示できたのでそこまでの手順を残す。

今回、参考にしたサイトは、こちら

Google AdMob Ads iOS(初級)
https://developers.google.com/mobile-ads-sdk/docs/ios/fundamentals?hl=ja

Google 本家のページ。
いきなり Google と出て戸惑ったかもしれないが、AdMob とは Google が提供するサービスだ。

AdMob
http://www.google.co.jp/ads/admob/

さて、参考のサイトではいきなりの実装を行っているが、実際には前準備が必要となる。
それは、AdMob 自体にアカウントを作成して、広告表示の準備を行わないといけないと言う事。
ここから、失敗した内容を紹介しつつ最低限の表示を行うまで説明する。

失敗1:アカウント登録に戸惑う

AdMob を使用するには、アカウントを取得する必要がある。
Google アカウントがあれば、AdMob とは簡単に連携ができるようだ。
すでに、Google のアカウントを持っていたため、そのまま Google アカウントでログインした。
すると、ログイン画面後に、以下の画面が表示され呆然としてしまった。


アカウントを作成しているのに、アカウント登録の画面が表示されるからだ。
まず、この事態を把握するのに結構時間がかかった。
この画面を下にスクロールすると、登録の項目が出るので再度登録が必要かと思い進めていると、国の指定で「日本」がない。
この部分をどうすれば良い物か相当悩んだのであった。


答えは、ここで登録する必要は無いと言う事。
つまり、最初の画像に書かれている英文によると、「下のリストにある国はサポート対象となっているから、リンクで設定画面へ遷移して」ということで、リストにない国で登録する場合には下の項目を入力して処理してね。と言う事だった。
単純ながら、英語アレルギーで無視していたのが良くなかったようだ。
書かれてあったメッセージ通り、リンクをクリックすると設定画面へ移動した。

失敗2: 設定を放棄

早速、リンクから設定画面に移動したが、またここで意味が分からない状態になった。
何を設定すればよいか全く分からないのである。
ここまで来ると、進めていけば分かるだろうと実装に入ったのであった。
この部分は、後に解決するので、次の失敗に。。。

失敗3:Google を甘く見ていた

AdMob の設定をあきらめ、実装に入った訳だが、参考サイトの通り書かれて有る内容で実装してもエラーが出て上手くビルドすら通らない。
サンプルコードも有る物の、ダウンロードしても Xcode のバージョンが違うためか同じくビルドエラーになる。
流石に、嫌になってくるが AdMob は、もはやメジャーな機能なので Google で調べると当然解決策が見つかった。よって手順を残す。

 3-1.SDKのダウンロード
参考リンクの説明では、SDK のダウンロードありきで話が進んでいる。
が、いきなり参考リンクを見た人は、SDK の入手なんかしていない。

以下のリンクから iOS 版の SDK をダウンロードする。

AdMob SDK Download
https://developers.google.com/mobile-ads-sdk/download?hl=ja#downloadios

ダウンロード後、展開する。

3-2.プロジェクトへのコピー
Xcode のプロジェクトに、任意のグループを作成して、そこに展開した内容(Add-ons フォルダとREADME.txt以外全て)をコピーする。

3-3.ライブラリの追加と、コンパイラの設定
プロジェクトの設定で、ライブラリを追加する。
追加するのは以下の物

AudioToolbox
MessageUI
SystemConfiguration
CoreGraphics

他に、以下の物も追加しないとエラーになる(どうなってんだ Google)
AdSupport
StoreKit
AVFoundation

次に、プロジェクトの設定で Build Setting の項目を選択し、Other Linker Flags に -ObjC を追加する。

結構面倒だ。じつは CocoaPods を使用すればここまでは、一瞬で終わってしまう。
手動管理が面倒と思われる方は CocoaPods を利用する事をお勧めする。
(Podfile に 「pod 'Google-Mobile-Ads-SDK'」を追加して pod install)

3-4.実装
実装に関しては、参考リンクの通りで問題はないが、ここで困るのが
// 広告の「ユニット ID」を指定する。これは AdMob パブリッシャー ID です。 
bannerView_.adUnitID = MY_BANNER_UNIT_ID;
の部分。
MY_BANNER_UNIT_ID」については、define で指定しても良いし、直接(@"")指定しても良いが、問題は内容。
書いてある通り、広告の「ユニット ID」を指定すれば良いのだが、これが何の事かさっぱり分からなかった。おまけに「これは AdMob パブリッシャー ID です。」と書かれてあるために、パニックになってしまった。
パブリッシャー ID と言う表示を元に、AdMob の設定画面を見ると、画面上部にパブリッシャーIDがあるので、これを入力してみたが動かなかった(広告が表示されない)。


ネタバレにはなっているが、結果的に広告の設定を行って、そこに表示される「広告ユニットID」をコロン以降全て指定してやる必要があった(画像で行くと「ca-app~20」まで)。

3-5.広告の設定
話が前後するが、広告の設定が必要となるので、その作業を行う。
まず、設定画面で、「収益化」をクリックして、次に「新しいアプリを収益化」のリンクを押す。
表示方法等の設定画面が出るので、任意に設定する。
すると、3-4 の画面に有るとおりに「広告ユニット ID」が表示される。
これをプログラムに記述する。

失敗4:「収益化」と「広告」の理解不足

最初は「収益化」と「宣伝」の意味が分かっていなかった。
ここら辺の理解が鈍いのが欠点だ。

収益化とは、「自分のアプリのスペースを提供して広告を表示して収益を得る事」
宣伝とは、「自分ないし誰かのアプリのスペースを拝借して宣伝して貰う事」

と言う意味だと思う。
なので、宣伝の方では、表示の回数やクリックに対する対価の設定などがある。

これの理解無しに、全てが収入に繋がる物と思い、
「広告を表示するから広告の設定をしないと」→「なんで支払いの設定なんだ?」→「いや、コレで有ってるはず」→「なんで支払いの設定なんだ?」。。。のループが作られ相当な時間を費やしたのは言うまでもない。

最後に

だいぶ端折るが、あとは参考リンクの通りに実装すれば、広告が表示されるようになる。
実際にはこのままでは、エラー処理が行われていないなどの事があり、AppStore の審査には通らないようだ。
参考リンクから、中級→上級と上がっていく必要がある。
今のところ、画面に出るまで苦労して一息ついたので、先には進んでいない。

文面がぐちゃぐちゃで読みにくいかも知れないが、ポイントは押さえたと思っている。
同じ過ちで時間を費やしている人に役立てればいいなと思う。

2013年12月5日木曜日

VIM ステータスラインに時計を表示

Qiita のメールマガジンを購読しているが、先日来たメールマガジンにて、「最近ホットな Vim Plugin 3つ」という記事がトップになっていたので、気になって早速アクセスしてみた。

記事の内容は、素晴らしかったのだが、それより何よりステータスラインの表示の部分が気になってしまった。

調べてみると、「vim-powerline」と言う物のようで、さらに調べると、「vim-airline」となり、「lightline」と言う物まで進んでいるようだ。

見た目は綺麗で、とても良い感じで良さそうなのだが結局採用を見送るようにした。

いままで自分が設定しているステータスラインには、なんちゃって時計を付けているのだが、それを付ける方法を探るのが面倒くさかったと言うのが理由だ。

なんちゃって時計とは、VIM を使用している間、時間データを更新して、あたかも時計のように見せる設定。
VIM に触らず放置すると最終の時間が残ったままとなる。なのでなんちゃって時計という風になる。

どれくらい前だろうか?Emacs と VIM のどちらかに絞ろうと検討している際に、Emacs にはこの時計の機能が簡単に設定でき、さらになんちゃってじゃないという部分が気になっていた。
人に言わせれば、どうでも良い分類なのだが、なぜか惹かれる物があった。

結局、カーソル移動に Ctrl を押すのはナンセンスかつ変態だと思い VIM を使う事とした。
しかし、時計には憧れていた。

それから、しぶとく時計の方法を探るが、方法が見つからず、また無理矢理表示してやろうと試みるも、上手くいかずに諦めていた。
そこで、思いついたのがこの「なんちゃって」の方法だが、当時自分で試した方法が有ったのだが、月日が過ぎ端末の変更や VIM をさらわない時期などがあり、実現方法が分からなくなっていた。(当時使っていた vimrc は既にどこかに行ってしまっていた)

今使っている vimrc にも、このなんちゃって時計を付けているが、どこから見つけたのか覚えていない。

前置きが長かったが、今回のこのステータスラインを見て、設定を残しておかないと、また無くすと思ったので、下に設定を書いておきます。
set statusline=%t\ %m%r%h%w[%Y][%{&fenc}][%{&ff}]%=\%{g:Date()}C:%04c,L:%04l/%04L%4p%%
" インサートモード時の色変更
let g:hi_insert = 'highlight StatusLine guifg=darkblue guibg=darkyellow gui=none ctermfg=blue ctermbg=yellow cterm=none'
if has('syntax')
  augroup InsertHook
    autocmd!
    autocmd InsertEnter * call s:StatusLine('Enter')
    autocmd InsertLeave * call s:StatusLine('Leave')
  augroup END\%{g:Date()}
endif

let s:slhlcmd = ''
function! s:StatusLine(mode)
  if a:mode == 'Enter'
    silent! let s:slhlcmd = 'highlight ' . s:GetHighlight('StatusLine')
    silent exec g:hi_insert
  else
    highlight clear StatusLine
    silent exec s:slhlcmd
  endif
endfunction

function! s:GetHighlight(hi)
  redir => hl
  exec 'highlight '.a:hi
  redir END
  let hl = substitute(hl, '[\r\n]', '', 'g')
  let hl = substitute(hl, 'xxx', '', '')
  return hl
endfunction

" ステータスラインに日時を表示する
function! g:Date()
    return strftime("%x %H:%M ")
endfunction

これで、なんちゃって時計を表示する事ができます。
他にインサートモードになったときに色を変える設定とかも入っていますが、これも便利なので一緒に書いておきました。

結果はこちら

やはり、powerline 系見た目の良さに比べると今風じゃないですかね。。。

2013年12月1日日曜日

Trunk Notes 画像の表示が出来ない

Trunk Notes に画像を貼り付けていたが、今見ると表示されていない。

思い当たる点としては、Markdown のフォルダに画像ファイルが有ったけど、開こうとしてもファイル破損となっていたので、不要ファイルと思い消したのが原因なようだ。

そこで、Markdown のフォルダに画像ファイルを入れて、Dropbox 同期を取ろうとしたが、エラーになってしまう。
少し前までは、Markdown と同じフォルダ階層に画像ファイルを置いて問題なかった気がしたが現バージョンでは上手くいかないようだ。

気を取り直して画像の取り扱いについて、アプリ内のマニュアルを見ると、画像のアップロードを行って利用するようになっていた。
マニュアルの内容からすると、
  1. 画面左上の NEW ボタンを押してメニューを出し、「フォトライブラリからの追加」か「写真を撮影して追加」から画像を選択する。
  2. 表示たいページで image 関数を使って表示を行う。
    {{image File:xxxx.png}} のように指定。
上記の手順を踏むと無事画像が表示されるようになった。
ただ、画像サイズの指定は、関数では出来ないので、サイズを指定したい場合は、必然的に HTML の img タグを指定することとなる。


動きを見てみると、1.の画像追加で、Dropbox に同期を取ると、Trunk Notes の同期フォルダに「files」というフォルダが作成され、その中に2.で指定したファイルが格納されるようになっている。

アプリでのデータ管理方法としては、Markdown の文章と、マルチメディアを格納する場所を分けたということで、考え方的には良いと思う。
文章と画像が入り乱れると何か汚いからね。


注意点としては、手順が面倒だと思って、「files」のフォルダに直接画像データを追加し、image 関数や img タグで指定をしても画像は表示されないという事。
どうやら、「files」の内容をどこかで管理しているようだ。
う~んこの点、もうすこし融通が利けば楽に編集できるようになるのだが。