下腹オプティマイザ

主にIT関係の雑記帳です。全然関係ないことも書くかもしれないです。

Unity uGUIのInputFieldがAndroidで上手く動かないから代わりのcomponentを作った

uGUIのInputFieldが自分のAndroid端末(Xperia  Z3)だと上手く動かなかった。

うまく動かないというのも、キーボードが出てきて入力してもtextに入らなくて上手く入力されたテキストが扱えなかった。時々入ったりして不安定。エディタのplayerなら普通に動くので多分不具合なんじゃねーかなと思いつつも待ってるのもアレなので代わりのcomponentを作った。

 

github.com

 

使い方

InputFieldオブジェクトをエディタから追加してInputFieldコンポーネントを外して代わりにButtonとInputFieldRetainオブジェクトを付ける。

ButtonのOnClickリスナにInputFieldRetain.openKeyboardを追加しないとモバイルキーボードが開かないので注意。

InputField同様TextとPlaceholderを指定する必要があります。

Nameに文字列を入れるとそれをキーにしてPlayerPrefsに保存します。

空白だと保存しません。

 

 

f:id:kurogomapurin11:20150508105641p:plain

 

一応動作確認*したSampleSceneも付けました。

Unityエディタ上で確認する場合はTextに直接入力するなど一工夫必要です。

 

*Android XperiaZ3のみ

 

根本的に標準のInputFieldがバグってるんじゃないかとも思うのでもっと単純な解決方法あったら教えて下さい。

0から始めるEmacs 業務カイゼン計画 第3回 ~package.el編~

Emacsをカスタマイズするにはinit.elにelispを記述する他にも様々な方法があります。

今回はそのうちの1つで代表的なものpackage.elをご紹介します。

 

package.el

package.elはemacs 24から標準で採用されているパッケージシステムです。

emacsのパッケージ管理は他にもあるのですが、標準で搭載されているという敷居の低さから今回はpackage.elを選んでいます。

 

リポジトリについて

初期設定ではpackage.elにGNU ELPAというリポジトリが追加されています。

ELPAは数は少ないですが、信頼性が高いパッケージが登録されています。

 

ELPA以外ではMELPAというパッケージが有名で、ELPAよりもたくさんのパッケージが登録されており、2400以上(2015-04-26現在)のパッケージが存在します。

MELPAは初期設定では登録されていないのでinit.elから登録する方法があります。

 

 上のコードをinit.el、もしくは.emacsに追記します。

M-x load-file

で読み込んで

M-x package-show-package-list RET

でインストールできるパッケージの一覧が表示されます。Archiveの欄がmelpaとなっているパッケージが表示されれば、リポジトリの登録は完了です。

melpaのパッケージがなければM-x package-refresh-contents で再読み込みしたり、init.elの記述、読み込みを再確認しましょう。

 

パッケージのインストール

パッケージのインストールは

M-x package-install 

で行えます。

インストールするパッケージ名を求められるのでインストールするパッケージを入力します。試しにauto-save-buffers-enhancedというパッケージを入れてみます。

auto-saveまで入れればtabキーで補完されます。

パッケージ名を入力してRETするとインストールが開始されてcompile logが表示された後にDoneのメッセージでインストール完了です。

パッケージを有効にするにはそれぞれ設定が必要になります。

MELPAのパッケージであればhttp://melpa.org/#/からパッケージ名を検索するとパッケージの詳細ページへ行くことができます。

f:id:kurogomapurin11:20150427134241p:plain

auto-save-buffer-enhanced

http://melpa.org/#/auto-save-buffers-enhanced

このパッケージはbuffer、開いているファイルをC-x C-sを押さなくても自動で保存してくれるパッケージです。

init.el

 

上の設定をinit.elにコピペしてM-x load-fileでパッケージが有効になります。

また、上記の設定ではC-x a sで機能のON OFFを切り替えることができます。

 

0から始めるEmacs 業務カイゼン計画 第2回 ~設定ファイル編~

Emacs Lispは書けなくても大丈夫?

Emacsは殆どの設定や拡張が Emacs Lisp(以降 elisp)というスクリプト言語で行われています。

となると、作業目的のプログラミング言語に加えて、テキストエディタを設定するだけのプログラミング言語を覚えなきゃならないのか、と考えてしまいますよね。

 

書ければ書けるほどがEmacsのパワーを引き出すことができる訳ですが、プログラミング能力を「書ける」「書けない」という0,1ではっきり表現することはできません。

強いて言うなら「全く書いたことがない」くらいははっきり表現できますが、それ以降は実に曖昧です。

 

なにが言いたいかと言うと、方法はどうあれEmacsが思ったどおりにカスタマイズされ、動作しさえすればelispが「書ける」か「書けない」かなんてことは正直言ってどうでもいいわけです。

 

感謝とリスペクトを

とは言え全くelispを書いたことがない状態でいきなり設定ファイルを見つめてもどうしていいかわかりませんね。

であれば、ご親切に設定を公開してくださっている方々のelispを参考にさせていただきましょう。

要するに「コピペ」させて頂くのです。

昨今ではコピペが様々な物議を醸し出すことがしばしばありますが、Emacsの設定ファイルに関しては私的利用ですから無断でコピペさせて頂いたとしても法的リスクは殆どありません。

もちろん利用させていただく訳ですから、その際には感謝の心とリスペクトをもって、ありがたく参考にさせていただきましょう。

 

日頃私がお世話になっている方のブログはこちら

るびきち「日刊Emacs」

日本人のEmacsの伝道師的な方です。

Emacsの著書も出されています。

 

Emacsテクニックバイブル ?作業効率をカイゼンする200の技?

Emacsテクニックバイブル ?作業効率をカイゼンする200の技?

 

 

 

Emacs Lispテクニックバイブル

Emacs Lispテクニックバイブル

 

 

QiitaなどでもEmacsの設定方法についての記事はたくさんあります。

qiita.com

 

 Emacsの設定ファイル

Emacsでは基本となる設定ファイルが存在します。

~/.emacs もしくは ~/.emacs.d/init.el です。

どちらも同じ役割なのですが、~/.emacs.d/init.elを使用したほうが.emacs.dのディレクトリで全ての設定ファイルを管理できるのでお勧めです。

~/.emacs.d/init.elを使用する場合は~/.emacsを削除しておきましょう。~/.emacsのほうが優先順位が高いので~/.emacs.d/init.elの変更が反映されない場合があります。

 

~/.emacs から~/.emacs.d/init.elに移動する一番簡単な方法は

C-x C-fで~/.emacsを開き、C-x C-wで~/.emacs.d/init.elを指定して保存します。

C-x C-wは保存先を指定して書き込むことができます。元の開いたファイルは保存前の状態で残っていますので削除しておきましょう。

 

Finderで削除しても構いませんがEmacs内で削除することも可能です。

C-x d でdired(EmacsのFinder的なもの)が呼び出されます。

 " Dired (directory):  "と下部に表示されたらディレクトリを指定します。

今回は~/.emacsを削除するので " Dired (directory): ~/ "としましょう。

RETを押すと~/以下のファイル、ディレクトリが一覧で表示されます。

カーソル上下、もしくはC-n C-pで移動できるので.emacsにカーソルを合わせて

dキーを押すと行の左端にDというマークが付きます。

この状態でxキーを押すと削除の確認が出ますのでyesと入力してRETで削除が完了します。

init.el 

まずは~/.emacs.d/init.elを作成してみましょう。既に存在する場合はそれを開いてみましょう。

また、~/.emacs もしくは~/.emacs.elが存在する場合は~/.emacs.d/init.elにコピーすることをお勧めします。

 

既に第0回などでGUIから設定を行っている場合にはそれらがelispとして記述されているはずです。GUIから設定を行った場合でも設定自体はこのinit.elもしくは.emacsに記載されます。

 

試しに既に書かれているカスタムテーマをinit.elから変更してみましょう。

 

上の場合だと6行目がカスタムテーマの設定されている行なのでtango-darkからwombatに変更してみましょう。変更してC-x C-sで保存したら変更を反映します。

M-x load-file RETで"Load file :"と表示され、読み込むファイルを尋ねられますので~/.emacs.d/init.elと入力してRETを押せば変更が反映されます。

 

他の場合にもinit.elを変更した際には同様にM-x load-fileで変更を反映することができます。

 

 

完全変形ダンボーが凄くいい

秋葉原に遊びに行ってきたのですが
Kotobukiyaでこれを発見


さっそくワンショット

f:id:kurogomapurin11:20150425145408j:image

映えるなぁ。。。。
ダンボー商品は初めて買ったのですがとても気に入りました。
しかも、この商品、完全変形の名の通り変形するんですよ

f:id:kurogomapurin11:20150425151734j:image

こんな感じに頭だけになっちゃいます。
変形過程を撮り忘れてしまったんですが慣れれば大体10秒くらいで変形できるお手軽変形です。
この写真だと伝わりにくいですが関節も見た目よりよく動きます。変形の都合で他のダンボーよりもよく動くみたいです。

f:id:kurogomapurin11:20150425151924j:image
顔の内側にレバーがあって目を黄色くすることも出来ます。(光るわけではありません)

塗装の質感も凄くいいですし、変形するとコンパクトでパーツがもげる心配も無いのでカバンに忍ばせておいていつでも被写体にできますね。

俺のブログ記事がSmartNewsに取り上げられる方法を考えた

ココに書いてある3つのことを実践すればアクセス殺到!?

あり得ないって?

考えるくらいタダなんだから考えさせてよ。

まずは方法を考えるまでに至った情報、理屈を綴った。

SmartNewsの情報 

まず参照したのがSmartNews公式:媒体運営者の皆様へ

Publishers | スマートニュース株式会

http://about.smartnews.com/ja/2015/04/21/20150421/

独自のSmartFormat 

独自フォーマットが必要なのか?

SmartFormat ファイルのフォーマットは、RSS 2.0 の仕様 (http://cyber.law.harvard.edu/rss/rss.html) 、もしくはAtomの仕様(http://tools.ietf.org/html/rfc4287)に準拠します。また、XML の namespace を用いて一部仕様を拡張しております。

 

http://docs.smartnews.com/smartformat/ja/より

 

うん、要するにRSSAtomってことらしい。一部が拡張されているだけであってわざわざ拡張する必要ななさそう。

 

求められる「良質」なコンテンツ

SmartNews側のポリシーとしてはSmartNewsというアプリ自体の質を損なわないように

表示するコンテンツは「良質」なものが求められるようだ。

SmartNewsは、主に媒体運営者とそのユーザーとのエンゲージを弊社独自のアルゴリズムで観測し、“いま・もっとも注目されているコンテンツ”を割り出し、その評価をもとにSmartNewsユーザーの皆様へ良質なコンテンツを表示する仕組みをとっています。その際、コンテンツ(各記事)を中心とする評価を基準に表示を行います。SmartNewsでは、検索エンジンと同様にこのような仕組みをロボットで自動的に行っています。これが、人手を使って良質なコンテンツを選定する他のサービスとの違いです。 

 http://docs.smartnews.com/smartformat/ja/より 

 

それも"いま・もっとも注目されている"とまで言っているわけだからよほどバズらなければいけないようだ。

 

これらの選定については社内独自のアルゴリズムで行っているようだが、現状非公開。

少しでもこのアルゴリズムについてより多く知ることができれば選出される可能性を効果的に上げることができるはず。

 

確率は1万分の1以下?! 

この選出方法の核となるアルゴリズムについて既にSmartNewsに取材している記事があった。

 

web-tan.forum.impressrd.jp

 

まず目に入ったのがフローチャート

インターネット

抽出

言語識別

カテゴリ分け

類似排除

注目度順

 

というのが基本的な流れのようだ。注目すべきはそこに添えられている数字だ。

インターネットから抽出されるのが約1000万件以上

かなりの数が抽出されるように思えるが、この後に言語識別が入ることから分かるように

世界で1000万件というわけだ。

 

そして最終的に1000件~程度に絞られる。

単純計算でも1万分の1、最初の段階でも入らない可能性があるわけだからもっと低いことは容易に想像できる。

 

情報は鮮度が命!

何はともあれこの1000万件入れなければ終わりなわけだが、これは恐らく次の二つ

  • SmartFormatに準拠しているか
  • 記事が作成されて一定時間が経過していないか

であろう。一つ目は言うまでも無いが、二つ目の根拠はSmartNewsが「いま」というキーワードを多用していることだ。時間というのはとても計算しやすくSmartNewsにとって重要なファクターであれば最初の段階で切り分けられるのが自然だ。

 

流行りの乗るだけではだめ?!

SmartNewsは「いま」の次に「もっとも注目されている」と題しているが

もっとも注目されている記事を書くために一番手っ取り早いのは「流行り」に乗ることが一般的。しかし、単純に注目されている記事だけを集めただけでは流行りモノでアプリが満たされてしまう。

はっきり言って「妖怪◯ォッチ」で満たされたニュースアプリなど誰も見たくないわけだ。

そのためにSmartNewsはカテゴリ分けを行い類似度の高い記事を排他するのだ。

 

SmartNewsに載るためにする3つのこと

「うーん、結局どうすればいいの」って?

俺的には次の3つ

  • フォーマットを合わせる(大前提)
  • 自分の得意な分野の最先端を追う
  • 日々コンスタントにコンテンツを配信する 

 

1つ目は当然ねここから確認できるのでvalidになるか確認する

http://validator.engine.smartnews.be/url

試しにこのブログをやったらwarningだった。

f:id:kurogomapurin11:20150424083407p:plain

一応大丈夫そう。完全にだめだとinvalid。OKならvalidっぽい。

 

2つ目は結局のところ生存競争と同じで得意分野で戦って勝たないとだめってこと。

いくら流行り物が求められていてもその分野の専門家のほうが速く良質なのでは。

付け焼き刃な記事ではなくて普段から鍛えた知識を素早く振るうことが一番の近道

 

3つ目はどうもSmartNewsはサイトのコンテンツの量にも着目しているようで

私のような超不定期で量のないサイトはアウトオブ眼中というか、量が無ければ質が伴わないとも考えられるね。

つまり日頃の努力も評価してくれるわけだ。

 

まとめ

要約すると「SmartNews、めっちゃスマートじゃん」

俺みたいにちょっとずる賢く記事載せてアフィリエイト稼いじゃおーみたいな輩を見事に排他する仕組みを構築することに成功しているよう。客観的に考えて良質で鮮度の高い情報を機械的にする方法的確に実現することに成功しているように見える。

実際私も非常によくこのアプリを使っているが飽きない。

だが、現状、全てが全て機械的にやっているわけではなく人間も部分的に介入しているようだ。むしろ付け入る隙は人間の方がありそうだが、そうなると。。。。

 

 

 

 

 

 

 

0から始めるEmacs 業務カイゼン計画 第1回 ~基本操作編~

テキストエディタとしてのEmacs

基本的な操作に関してはひと通りチュートリアルで説明されているはずなので、こちらをどうぞ

 

kurogomapurin.hatenablog.com

 と言っても「面倒くさくて最後までやってられっか」という方もいるでしょうし

少しまとめてみます。

ファイルの作成と保存

まずはテキストエディタですからファイルを開きましょう。

C-x C-f :ファイルを指定して開く

左下に"Find file: ~/ "と出ますので試しにsample.txtを開きます。

ちなみに~/はホームディレクトリを意味しMac OS Xなら home/(ユーザ名)/ を表します。

f:id:kurogomapurin11:20150424030320p:plain

試しにテキストを入力してみましょう。

入力できたら今度は保存しましょう。

C-x C-s :ファイルを保存

左下にwroteなんたらとでれば成功です。

 

カーソル移動

Emacsは標準設定なら一般的なエディタのようにカーソルキーで移動できます。

しかし、カーソルキーは右手がキーボードのホームポジションから遠く離れてしまうため非効率的です。Emacsにはホームポジションを維持したままカーソルが移動できるようにキーバインドが設定されています。

C-p :↑

C-b :←

C-f :→

C-n :↓

で移動できます。

「なんだよ、Ctrlおしっぱなしじゃねぇか」と思うかもしれませんがホームポジションから手首を移動するよりも小指でCtrlキーを押した方が断然早く、疲れにくいです。

Ctrlの位置によっては疲れやすい訳ですが押しやすい位置に予め変更しておくことで最適化できます。

 

便利なカーソル移動

もちろんいくらホームポジションを保てると言っても上下左右に1つづつでは効率的とは言えません。便利でよく使うカーソル移動のショートカットをご紹介します。

 

C-a :行の左端に移動

C-e :行の右端に移動

上の二つは特に便利というか無くなると困るくらいに感じるようになります。

あとは

M-< :ファイルの先頭に移動

M-> :ファイルの末尾に移動

など

 

検索は移動の一種

Emacsには検索のプラグインも充実しているので検索はある意味カーソル移動に等しいです。

C-s :検索

C-sを入力後に検索ワードを入力する対応箇所に移動しRETすると検索を終了します。RETをせずに再度C-sするとインクリメンタルサーチと言って上から一つづつ進んでいきます。

もちろんデフォルトのままでは他のエディタとさほど変わりませんがAce-isearchなど強力な検索機能をC-sに置き換えることができます。これらの方法についても後々紹介したいと思っています。

 

戸惑ったら一旦落ち着いて、C-g C-g 

Emacsには様々なショートカットがあります。

ふとキーボードに手をおいたら謎の表示が、なんてことは最初のうちは多いかと思います。そんなときは落ち着いてCtrlを押したままgを2回

C-g C-g :Quit

大抵のコマンドはこれで終了します。

(終了しなければ表示されているメッセージをよく読んだり検索しましょう)

 

Command + z は俺の嫁

Commandキーをこのブログの記事を読むがままにmetaキーに設定してくださった貴方様、ご安心くださいませEmacsにもundoはございます。

C-_ : undo

慣れていないとちょっと使いにくいかもしれませんが慣れれば対して影響ありませんし、undoに慣れる必要があるようならまずそのタイピング能力を修正しましょう。

どうしてもダメでしたら設定しなおしましょう。

 

最後に

このくらい覚えれば普通のテキストエディタと同等程度には使えるのではないでしょうか。特にC-aとC-eは非常に便利なので最初に覚えてもいいかもしれません。

検索に関しても後々便利な検索プラグインをご紹介したいと思っていますのがお待ちいただけないのであればご自身でggって導入してみてください。

紹介したカーソル操作はごく一部です。もしかしたら、もっとお気に召すショートカットがあるかもしれませんので是非 第0回~インストール編~ で紹介した公式チュートリアルを最後までやってみてください。見た目ほど長くはありません。

 

 

0から始めるEmacs 業務カイゼン計画 第0回 ~初期設定編~

 

これだけはやっておいた方が多分良い

 

的な設定を今回はご紹介します。

 ↓前回に引き続き第0回ですが

kurogomapurin.hatenablog.com

 

何故かと言うと「まだテキストエディタ的なことをしないから」です。

 

フィッティングしましょう

よくEmacsは敷居が高いと言われるようですが、

 

スーツで例えてみてください。仕事柄によっては毎日着るわけですが、既成品をそのまま着ると不格好ですし、着心地も悪いでしょう。ちゃんと自分の形に仕立ててもらったほうが栄えますよね。

確かにそのまま着れるスーツもありますが、それは自分にピッタリ合ってないまま着ているということです。

 

エディタも同じです、自分に合った形にフィッティングすることで見栄えも着心地も良くなるのです。毎日使うものだからこそ、あなたに合った一着、一エディタが必要な訳です。

 

テーマカラーを変更する

 背景や文字の色を設定します。

基本的にGUI版のみ使用される設定ですのでGUIから設定します。

 

f:id:kurogomapurin11:20150424010014p:plain

 

 Option -> Customize Emacs ->Custom Themes をクリック

テーマの一覧が表示されるので好きなテーマを選択してSave Theme Settingsをクリック

個人的に普段使っているのはwombatです。

 

余談ですが個人的にwombat好きです

 

 

Commandキーをmetaキーにする

 Commandキーをmetaキーとして動作させます。

f:id:kurogomapurin11:20150424015413p:plain

Emacs -> Preferences からEnvironmentをクリック

f:id:kurogomapurin11:20150424015713p:plain

Ns (Mac OS X)を選択

(下から急に色が変わりますが気にしないでください)f:id:kurogomapurin11:20150424020346p:plain

それぞれ左端の三角で展開されるのでValue Menuボタンを押してmetaを選択します。

f:id:kurogomapurin11:20150424020544p:plain

上の画像のようになったら上にスクロールしてApply and Save をクリック。

確認ポップアップをyesで変更完了です。

 

この設定は個人差が大きいと思いますので色々試してみて変更することをお勧めします。Controlなどの設定も同様にできます。

また,CommandをmetaにするデメリットとしてCommand-vなどのシステムのショートカットの一部がEmacs上で使えなくなります。

コピーやペーストなどはEmacsでは別のショートカットに割り当てられているためEmacsの操作になれれば全く問題はありませんが、始めたばかりの方にはCommand-vなどが使えたほうが安心感があるかもしれません。

筆者のように慣れてくれば逆にM-xなどのキーの使用頻度が高くなり右側のCommandキーがmetaになっていたほうが快適に感じてきます。これは勿論キーボードや指の感覚にもよりますのでご自身でやりやすい方法を常に考えて見てください。

Emacsはあなたの変更をいつでもどんな形でも歓迎してくれます。

 

小指が痛いって?

CapsキーをCtrlキーにしておくこともお勧めします。

EmacsにおいてのCtrlキーは非常に使用頻度が高いです。(一番使うと言っても過言ではありません)

そのためこれが押しにくいことにはEmacsが使いにくいということです。

 

個人的にはCapsキーは殆ど使っていないのでOSの方でCtrlキーに設定しています。

MacのJISキーボードはCtrlが左端の中段にきているのでEmacsには使いやすいですがUSキーボードはCapsなのでUSキーボードの方には特にお勧めです。(筆者はJISです)

 

勿論あくまで筆者のお勧めというだけであり、万人に必ず合っているということはありません。極端な話小指が無い場合だってあるわけですから、自分に合ったCtrlを見つけてください。

 

 

最後に

今回はGUIからEmacsの設定をしてみました。

Emacsを知っている方なら今回の記事はむしろ邪道に感じるかもしれません。

しかし、いきなり.emacsやini.elを使用した設定方法では「Emacsは敷居が高い」と感じられても仕方がないと思い、このような形にしました。

後々、Emacsが手に馴染んでくるであろうタイミングでinit.elなどを用いた設定方法を紹介していきたいと思います。