夢に向かって、好奇心を持ち、疑問を持ち続ける。それが努力。

趣味でロボット職人を目指す自称AI研究者のメモです。

Linuxのkernelとdistribution

Linux使ってはいたけど,実はあいまいに理解していた部分がたくさんあった…ってことで整理してみた.

Linuxには,UNIXのOSのことだと思ってたけど実は違った.

Linuxは実際には,OSの土台であるカーネルの部分だけ.ディスクやメモリなどの資源の管理や,割り込み処理,プロセス通信などのOSとしての基本機能のみ提供している.
ここに,ソフトウェアプログラムをインストールすれば,完全なUNIXライクなシステムを構築できるとのこと.

ただ,自分でソースコードからシステムを構築するのは大変なので,カーネルとOSの基本機能以外の機能も持ったソフトウェアがセットになった,distributionというのが提供されており,これを使ってシステムを容易に作ることができる.

図は参考までに書いてみた.

f:id:robomixcom:20140902113210p:plain

以上.
ただ使えるだけじゃなく,【理解して使える】ことが大事だと思いました.

macで音声認識ソフトJuliusを使ってみる

mac音声認識ソフトJuliusを使ってみたのですが、ちょっとひっかかった点があるので紹介。

参考にさせて頂いたサイト:
http://qiita.com/ikesato/items/ffe1eff8440a995065fe


手順は次の通り。

1.Juliusに対してマイク入力を行うのに必要なportaudioをインストール
2.Juliusをインストール
3.Dictation-kitをインストール
4.細かい調整をして実行

順に説明して行きます。

1.portaudio のインストール

http://www.portaudio.com/download.html から 最新のstableバージョンをダウンロードする。(本開発時の最新バージョンはpa_stable_v19_20140130.tgz)

下記の手順でビルド。

% tar -xzf ~/Downloads/pa_stable_v19_20140130.tgz
% cd portaudio
% env CFLAGS='-arch i386' LDFLAGS='-arch i386' ./configure --disable-mac-universal

Makefile の編集。

CFLAGS から -Werror を削除

include/pa_mac_core.h の編集

(削除) #include <AudioUnit/AudioUnit.h>
(削除) #include <AudioToolbox/AudioToolbox.h>
(追加) #include <CoreAudio/CoreAudio.h>

編集が完了したらビルド。

% make
% sudo make install

これでportaudioのインストールは完了。

2.Juliusをインストール

http://julius.sourceforge.jp/index.php?q=newjulius.html
アーカイブのところから最新のjulius-*.*.*.tar.gzをダウンロード。(本開発時の最新バージョンはjulius-4.3.1.tar.gz)

% tar -xzf ulius-4.3.1.tar.gz
% cd julius-4.3.1
% env CFLAGS='-O3 -arch i386' LDFLAGS='-arch i386' ./configure --enable-words-int --with-mictype=portaudio
% make
% sudo make install

これでJuliusのインストールは完了。

3.Dictation-kitをインストール

http://julius.sourceforge.jp/index.php?q=dictation-kit.html
から最新のディクテーションキットをダウンロード。(本開発時の最新バージョンはdictation-kit-v4.3.1-osx.tar.gz)

% tar -xzf dictation-kit-v4.3.1osx.tar.gz

Dictation-kitのインストールは展開するだけ。


===== 以下余談 =====
ここで本当はすぐに実行できるはずだが・・・

/run-gmm.sh を実行しても次のようなエラー発生。

dyld: Library not loaded: /usr/local/lib/libportaudio.2.dylib
Referenced from: dictation-kit-v4.3.1-osx/bin/julius

どうやらjuliusから参照されているlibportaudioのライブラリがないとのこと。

Makefileにもそんな指定する場所はないし、juliusファイル自体は実行ファイルで中身が見れないのでどうしたもんだと思ったところ・・・

2でインストールしたjulius中にも同様のjulius実行ファイルを発見。

これと、dictation-kit-v4.3.1-osx/bin/juliusを入れ替えた(正確にはdictation-kit-v4.3.1-osx/bin/juliusを削除して、julius-4.3.1/julius/juliusをコピーしてきた)ら、正常に動いた。

(なぜかわからないけど、動いたからよかったことにする)

この余談部分を飛ばしても良いように、下記4番に改めて記載しておく。
==== 余談終了 =====

4.細かい調整をして実行

dictation-kit内のjuliusをそのまま使うと、なぜかjuliusが指定しているportaudioのライブラリが見つからない(実際にないので)エラーが発生するので、下記のような調整をする。

rmv dictation-kit-v4.3.1-osx/bin/julius
cp julius-4.3.1/julius/julius dictation-kit-v4.3.1-osx/bin/

すなわち、dictation-kit-v4.3.1-osx/bin/juliusを削除して、julius-4.3.1/julius/juliusをコピーする。

これで、実行できるようになった。最後は Dictationの中にあるHOWTOファイルの通りに実行。

cd dictation-kit-v4.3.1-osx
./run-gmm.sh

少し待って<<< please speak >>> が現れたら、マイクに向かって話しかけると認識結果を返してくれる。


これで一応使えるようになりました。

最初は1-best(認識結果のうちで最も発話されたものに近いとされる最上位)のみしか表示されていないが、n-bestの数値変更等も可能なので、ちょっといじってみたいと思う。


以上、最近話題のロボットで大事な機能である、人の言葉を理解する部分の紹介でした。


googleさん音声認識、ドコモさんの音声認識AppleのSiriさんなど賢い音声認識機がたくさん出てるので、自分で作るのは今更感はありますが、ちょっと自分で遊んでみる分にはこれでも十分だと思う。(Julius自体は前から公開されてたけど、辞書は今もしっかりメンテナンス、アップデートが行われているようなので)


動くものって楽しいなって思う今日この頃の星の妖精さんの日記、そろそろ重い腰を上げてロボット制作にくり出したいと思います。

予定通りにいかないことはつきものなので、どこかで無理する必要がある

今日は、最近また時間の作り方について改めて思った気づきがあるので紹介します。

 

それは、

 

”予定通りにいかないことはつきものなので、どこかで無理する必要がある”

 

ということ。

 

特に、自分のやりたいことのために普段から作り出さないとうまれない時間について考えてみた。


やはり、いくら一週間のスケジュールや今日のスケジュールを立てたとしても、お仕事や人との関わりがあれば、突然の依頼もあるし、突発的な会話があったりするのは当然なことです。
それによって、立てたスケジュール通りに、行かないことも良くある。

 

でもだからと言って、自分のやりたいことの時間がとれなかった、妨害が入ったからできなかったと言ってやらないのは、『やりたい』という意思が足りないということなのだと改めて思った。
(↑今日はまとまった時間がとれなかったからいいや、と思ってやらないことが何日か続くと、せっかく立てた予定からも大きく外れ、次第にモチベーションも低くなってくる。こんな状況を経験した。)

 

しかし、『やっぱりやりたい!やらなければ!』と思った時に、改めて自分の行動を反省してみると、はやりどこかに

 

”甘え”

 

があった。

 

・妨害が入ったからできなかった(ほかのことを理由にする)
・今日は15分しか時間とれないからまた明日にしよう(獲得できる時間の短さを理由にする)

 

などである。


そこで気づいたのが、以下の2点である。

大切なこと1.やりたいことなら、睡眠を削る等自分の時間を多少無理してでも、時間を創りだす

大切なこと2.作業自体を、もっと細分化して、15分でもできる作業に落とし込む

 

大切なこと1については、自分がやりたい度合を心に問い、本当にやりたいと思うのであれば、多少自分を犠牲にしてでも作り出すことができるはずだと思う。
(ただ、自分以外の人とのかかわりがある中での時間の創出は非常に大変だと思うので、その点は、互いに説明と理解をしたうえで時間を作るのが大事なのかと思う。)


大切なこと2については、例えばプログラムを書くにしても、全体を一気に仕上げたい気持ちもあるが、最初にオブジェクト指向を意識して構造を考えておけば、今日の15分では、このメソッドのこの部分だけを作るなどもできると思う。論文を書くにしても、この章の説明の骨組みだけを作る、など具体的に細分化しておくことで、とりたい”まとまった時間”を短くすることができると思う。

 

従って、『少し無理してでも自分の時間を創ること』『作業自体の細分化』は非常に重要なこと認識した。


外的要因等により時間がなくなることに甘えずに、しっかり自分のやりたいことを進めていきたいと思います!!

 

目標の決め方と決める際に大事にしたい指標

目標を決めるのが大事と思っているこの頃ですが、よく考えたらその目標設定って一番難しいのでは?と思ったので、今日は目標の決め方について考えてみました。


良いサイトがあったので紹介。

目標の作り方と成果の評価の仕方
http://www.d1.dion.ne.jp/~masehts/message03/mokuhyou.html

 

確かに、目標には2種類あって、他の人から言われた目標(ノルマ)と、自分で設定した目標(夢)に分類できると思う。

その中で、設定に苦しむのが自分で設定した目標の方。

なぜならやるか・やらないからは自分次第だから。

いくらでも高い目標設定ができるし、簡単にクリアできるような目標設定もできる。


ただ、高すぎると達成意欲が半減されてしまうし、低すぎると長期的な目標にはならなかったりする。


この自分の意欲・モチベーションに合ったバランスの良い高さの目標設定をすることが大事だと思った。

そこで、私が考えたのは、目標設定時に大事にしたい指標である。
指標は3つ。その指標軸と優先度を高くすべき(と私が考えている)個所を図1に記載しておく。

1.自分がどれだけその目標達成をしたい気持ちがあるか
 絶対したい できればしたい チャンスが来たらしたい 夢物語 あげてみただけ

2.目標達成までにかかると想定される時間(期間)

3.難易度(自分の努力だけで実現できるか?他の協力もしくは援助が必要かどうか?
 自分次第で実現できる 目星がついている援助をおねがいすればできる 状況が変わらないと無理 

 

f:id:robomixcom:20140710130023p:plain

図1.目標設定時に大事にしたい指標


これらを合わせて最も重要視すべきなのは、自分がどれだけ目標を達成したいかだと思う。気持ちは時によって変わるものかもしれないが、常に問いかけて、ぶれない夢(目標)を持っていたいと思う。

またいずれの目標も努力が必要であるが、最も難易度の高いものについても”チャンスを自分でつかみに行く”ということで、目標に一歩近づくことができると思う。


例として、素敵な知り合いのエピソードを一つ紹介する。


”自分の所属している環境(専攻・研究室)では、やりたいと思っているAはできない。でもどうしてもやりたくて、それができる研究室に足を運んでみた。先生と話して、ぜひこれがやりたいという熱意を伝えてきた結果、その研究室のゼミに参加させてもらえることになった”

そこからは自分の所属している環境での研究と、本当にやりたかったことの研究と2つを並行して、二足の草鞋を履くことになるが、その方はとても活き活きしていた。


こんな例を考えると。環境によってできないこと(金銭的な面などなかなか困難なとこもあるかもしれないがチャンスを自分で作りに行くことができるようなものにおいては)努力方法を変えて、進めてみるのが大事だと思った。


目標設定のむずかしさ。日々葛藤しながらですが、怠けた時には改めて自分の目標に振り返って行動していきたいと思います。

 

転職活動でしてはいけないNG行動10

こんなサイトがあったので紹介。

 

 転職活動でしてはいけないNG行動10 

 http://womantype.jp/mag/archives/4992

 

でもどれも当然のことで、普通に考えたらしないですね(笑)


そこで、転職ってなんでするんだろう?って自分に問うたときに、どう答えるか考えてみた。

・何か将来的な目標をもっていて、その中で必要なものが(これまでの職場で)得られた
・その得たものを活用して、ステップアップのため、もしくはその実現のために 〇〇社にいきたい


外枠だけ言えばこんな感じだと思う。(目的とかの部分は非常に長くなるのでまた機会があったら共有します)


ここには、始めるためのポイントが書いてある。

 1からわかる転職活動の流れ
 http://doda.jp/guide/manual/1/002.html


その中で特に大事なところと、私が追加したい大事なところは下記だと思う。

1.計画を立てる
2.自己分析 兼 転職する目的をまとめる
3.情報収集
4.自分の合致するポジション・やりたいことの具体化


それぞれ大事な理由を補足しておきます。(自分のメモのためにも)

 

1.計画を立てる

いつまでに どんなところに行きたい・どんな職種につきたい。こういう具体的な計画がないと、だらだら『ここいいなぁ』『でもどうしようかなぁ』で終わってしまい、気づいたら今の会社に長くいちゃう、そんなことも少なくないと思う。
本当にやりたいことがあるなら、いつまでに!というしっかりとした目標を持って、徹底的に先を探すことが大事だと思う。


2.自己分析 兼 転職する目的をまとめる

なぜ自分が転職したいか?それを考えるためには、まず自分が何をやりたいか(何を大事にするか)を明確にする必要があると思う。(もちろんやりたいことだけじゃなくて、環境の面でも、給料の面でも、何を大事にするかは人それぞれであっていいと思う)
その上で、今の会社の分析をして、そこではだめな理由、をしっかり把握する。

(転職を決意して固い意識を持つきっかけにもなる)

 

3.情報収集

2の上で、自分の大事にしたいことが守られる会社かどうか、また自分がだめだと思っている部分が今のところよりも少なくとも良いと言えるところかどうかをしっかり、ヒアリング等でも収集しながら、行きたい会社について信じる意思をもつ。
(このとき、だめな部分があっても、大事にしているところが守られるのであれば・・・という優先順位ベースで決めるのもありだと思う)

 

4.自分の合致するポジション・やりたいことの具体化

2・3と同時かもしれないが、更にその会社でやりたいポジションややりたいことを、情報収集した結果に合わせて具体化して、履歴書の志望理由等に記載する項目が整理される。

 

勝手に思ったことを書いてみましたが・・・

転職する際には、もう一度自分が大事だと思うところを振り返ってじっくり考えてみたいと思う。

最初の計画が失敗したら、 次の計画で勝負したらいい。by ナポレオン・ヒル

今日は、私が研究の壁にぶち当たったときに、支えとなっている名言について紹介します。

 

研究で壁にぶち当たるときには主に2つある。(私のこれまでの経験上は)

1.課題はあるもののその解決策として良いものが見つからない
2.課題そのものについての共感が得られない


1においては、昔から取り組まれているがなかなかその手法が確立されないようなものが該当したり、また新たに課題と思われるものであるが、簡単に手法が思いつかないためにあまり取り組まれないものだったりする。

2においては、組織的なものもあるかもしれないが、とある分野・カテゴリの中では課題の重要性を示すことができても、別のところでは必要とされないものになったりもする。

 

こんな壁にぶち当たった時、私はナポレオン・ヒルの言葉に力をもらう。

 

ナポレオン・ヒルは、アメリカ合衆国の著作家・教育者で、成功哲学の祖とも言われている人物である。世界の鉄鋼王アンドリュー・カーネギーに、新聞記者としてインタビューをしたことをきっかけに、成功哲学を体系化し、『成功哲学』という書籍を執筆している。


成功哲学と言われるものを体系化するに当たり、自己啓発に関するたくさんの名言があり、いずれも我々が壁にぶちあった時に力をもらえるようなものである。

 

彼(ナポレオン・ヒル)の名言の一つに、

『最初の計画が失敗したら、
次の計画で勝負したらいい。』

がある。


我々は、最初に立てた計画に失敗しそうになったとき、いかにしてその失敗から立ち直るかというものを考えたり、その計画の延長線上でなんとかしようとすることが多々ある。

しかしながら、どうしようもない・越えられない壁にぶち当たることも当然ある。
またそのとき我々は、最初に計画を立てる際に、見積もった壁の高さの読み間違えを認めたくないという思考が働くことで、恐らく、できる限り『最初に立てた計画の上もしくは延長線上でなんとかしよう』としてしまったりするのだと思う。


しかしながら、人は推測をし間違えることだってもちろんあるし、やってみてできないことだってもちろんある。


恐らくこの名言では、”どうしよう・・・”と思った時に、そのどうしようもない状況・ぶち当たった壁を乗り越えるべきものかを適格に判断し、諦めることも重要で、諦める場合には、その次の目標で、最初に立てた目標もしくはそれ以上をクリアすれば良いということを言っているのだと思う。

 


この名言を通して、改めて、『研究を行っていく上では、計画通りにいかないことも多々あるので、その失敗を恐れず・また失敗を認めて、新たな目標・計画も立てつつ前に進んでいくことが大事』なのだと改めて思った。

 

乗り越えられる壁かどうか・もしくは乗り越えるべき壁かどうかの判断は非常に難しいが、判断に困ったときには自分一人ではなく、周囲に相談しアドバイスを頂きながら進めていきたいと思う。

Windows SendToの場所

いつも忘れてしまうのでWindows7のsendToの場所をメモ。

C:\Users\<user name>\AppData\Roaming\Microsoft\Windows\SendTo

ちなみに私が入れているアプリは、
Tera Pad

汎用エディタが一つsendToに入っているととっても便利。