2012年の反省と2013年の抱負など

なんだか、日記と銘打ってるブログのくせに、全く更新されてないな^^;


久しぶりなのでまずは、改めて自分のことを話したいと思います。


ぼくは、自分より優れている人以外を相手にしない傾向があります。
10数年システム開発をしていて、エンジニアとして本当に尊敬できる人なんて
数人しか巡り会えていないと本気で思っているし、
それは会社の経営という面についても同様の判断をしてしまう傾向があります。


ぼくを評価できない人はぼくを評価するだけの力量がないと考えるし、
逆にぼくのことを利用するためだけに近寄ってくる人も多いと思ってしまいます。
今まで色々な事にチャレンジして来たけれど、その全てをある程度の期間で
そこそここなして来てしまっていました。


あぁいやなやつ。
いつからこんな性格なんだろうと思い返してみて、まぁだぶん、子どもの頃からそうだったし
社会に出てからさらに悪い方向に進んでいるような気がする。


さておき、なぜ今日このブログを更新しようと思ったか。
それは、最近少し変わってきたから、そのことを自分にも言い聞かせるためです。


変わって来たのは私ではなく、周りの人達。
こんなぼくにもついて来てくれる人が少しながらいること。
協力してくれる人がいること。
相談に乗ってくれる人がいること。
窘めてくれる人がいること。


少し前までは、全てを自分でやっていたし、出来ていたし、助けて欲しいとも思わなかった。


月並みかもしれませんが、多くの人に支えられて自分は成り立っているという事実を知ったことと
そのありがた味を肌で感じたこと、それが2012年のぼくの成果かもしれません。


今のぼくがあるのは、生んでくれた両親から始まって様々な人達との関わりを経て、
今年2012年に会社を作ったことも大きく影響しています。
会社を作って仕事をすると、プロジェクトの実行も行うし、プロジェクトメンバー集めもやる。
一緒に業務を進めていくとこで連帯感も生まれる。
折角関わりを持ってくれた人達に、少しでも恩返しをしたい。
金銭関わらず、講演会講師を引き受けてくれる人や情報を提供してくれる人、
業務に巻き込んでくれる人など世の中にはそういう人達がいる。


2013年には、できたら、できるだけ、少しずつでも
そんな人達に恩返しをしたい。
なにが恩返しになるのか、とにかく一生懸命頑張ること、
なんてそれこそ有りがちな答えに行き着きそうですが。


とにかく、関わった人全てから「はしもとおさむ 蕩れ」と言われるように頑張ります。

新会社 ネビラボを設立しました!

ふと気がつくと2年ぶりのブログ更新になってますね^^;


さておき、今年2012年4月に新しく会社を立ち上げました。
会社名は、株式会社ネビラボです。


株式会社ネビラボ


メンバーとしてはシステム開発を十数年やってきたメンバーが集まっているので、
いわゆるシステム系の開発会社になると思います。
その中でも特に、私自身の得意分野に特化して、
データ分析、データマイニングを専門的に行う会社にしていきます。

株式会社ネビラボ


「ネビラボ」という社名には、二つの意味を込めています。

  • ネビラ => Nebula => 星雲

 地上があって空があって雲があって、宇宙があって。
 その宇宙に浮かぶ雲のように突き抜けて行きたい。
 そんな思いを込めています。

  • ラボ => lab

 開発だけを行うのではなく、研究的な要素や実験的な取り組みも実施し、
 世の中に貢献できるような会社にして行きます。


設立のコアメンバーは、以前から一緒にやっているエンジニア。
さらに9月からは昔の上司も加わって体制も強化しました。


元々設立の際の思いとして、それまで受託開発やSI事業をやってきて、
その悪い所を良く知っています。
それはメンバー全員がかなり酷い職場も経験していますし、
システム業界の悪癖も熟知していると言えると思います。


これまでやってきたことはベースとして活かしながら、
でも同じことはしたくない。
どうせやるならお客さんも幸せにしたいし、自分たちも幸せになりたい。
そのための会社として設立しました。
なので、たぶん今までのような人出しのビジネスはしませんし、
単なる受託開発というのも行わないでしょう。(たぶん^^;)


これからは、お客さんに真にためになるシステム開発と、
さらに直接社会のためになるシステム開発を目指して行きたいと思っています。


皆さんのご指導ご鞭撻のほど、よろしくお願い致します!!
http://nebulab.co.jp/

Android Hackathon in Fukuokaに参加してみた

Android Hackathon in Fukuokaへの参加記録

土曜日の朝10:00〜20:00の10時間。
初めての参加だったが、違和感なく受け入れてもらえ、
おかげでとても楽しい時間を過ごす事ができた。

スタート

10:30〜11:00
始めに自己紹介
トータル15名くらいだったかな

何を作るか

参加者全員から意見を募って、今日で何を作るか決める
ホワイトボードに意見をホワイトボードに書いて行く

グループ分け

自分のやりたい物を選択し、4つのグループに分かれる
グループ毎にテーブルにつく

実践

それぞれのテーブルで検討&実装開始
私の入ったグループは3人
私以外はandroid経験者
まずは、アプリの概要を決める
グラフ表示用のライブラリを作るつもりだったが、
既にあるライブラリが思ったより優秀という事がわかった
方針転換して、ライブラリを活用してTweitter TLを解析して
表示するアプリを作成する事にした
私は初心者と言う事で、一番簡単なトップ画面
後は画面からをデータを格納するContentsProvidorまで、
データを格納してライブラリへ送るまでと分けて実装

おわり

最後に全チームで成果発表
Bluetoothを使ったじゃんけんゲーム作成チーム、
AR APIを使ったアプリ作成チーム
電飾ボードへの組み込みアプリ作成チーム
と我々のチーム
それぞれに面白そうなアプリを作っていた

感想

みんなでわいわい作成しながら作るのは、
例えば、分からない所は隣に聞けば良いし、
どういうコーディングをしているかを知れるし、
時間制限があるので緊張感もあるしと
とても楽しめる会だった

今後も参加して行きたいし、android自体への興味がとてもました

Ubuntu10.04のNetBeans文字化け解消

Ubuntu10.04にNetBeansをインストールしたら、
一部日本語が四角(□)に文字化けしてしてた。
良く知られた問題らしく、Ubuntuのフォーラムにも解決方法が載っている。
フォントの場所なんかが微妙に違うので、メモ的に残しておく。

JVMのフォント ディレクトリにTTフォントを置く

今回はTakeoフォントを使ってみた。
IPAフォントのコミュニティ版。
Takao Fonts in Launchpad


以下のコマンドを実行。

# cd /usr/lib/jvm/java-6-sun/jre/lib/fonts
# sudo mkdir fallback
# cd fallback
# sudo cp /usr/share/fonts/truetype/takao/Takao* .

※最後の「.」注意

これで、文字化けが解消された。

Javaの.classをdecompileしてみる


Javaのサンプルプログラムなどを試していると、
中のプログラムがどうなっているか気になる時がある。
WindowsだとJadなんかを使うんだけどUbuntuだと使えない。(たぶん)
何かないかなぁと探していたら、Java Decompilerなるものに行き着いた。
http://java.decompiler.free.fr/


Eclipseのpluginもあるので、こちらをインストール
http://java.decompiler.free.fr/jd-eclipse/update
メニューの「ヘルプ」→「新規ソフトウェアのインストール」
あとはclassファイルを開くとソースコードにしてくれる。


ソフトウェアライセンスに気をつけさえすれば、
非常に簡単便利なツール

Hadoop開発準備のためのEclipseインストール

前回までで、Hadoopの実行環境の準備ができました。
第一回:Ubuntu10.04でHadoop環境構築(疑似分散編)
第二回:HadoopのHDFS確認とサンプルプログラムの実行
第三回:Pigのインストール


これからいよいよMapReduceを記述して行くのですが、
そのための開発環境を作成していきます。
一番慣れているのでEclipseの設定を行いますが、
もちろんTextEditorでプログラム作成してantでbuildでも問題ありません。

Eclipseのインストール

Synapticでインストール

Eclipseの日本語化

Pleiadeshttp://sourceforge.jp/projects/mergedoc/releases/
上記サイトからD/Lし、適当な場所に解凍しておく
解凍したディレクトリに移動し、以下のコマンド実行

# cp -R features/* /usr/lib/eclipse/features/
# cp -R plugins/* /usr/lib/eclipse/plugins/

/usr/lib/eclipse/eclipse.ini ファイルの修正

 -javaagent:/usr/lib/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

の追記

#-showsplash
#org.eclipse.platform

上記二行をコメントアウト

$ eclipse -clean

これで無事日本語化

Eclipseのpluginsを追加

追加するpluginは以下

subversiveのインストールは過去のエントリを参考

hadoop pluginは以下のディレクトリのものを使用
Cloudera’s Distributionには入ってないので、hadoopプロジェクト配布のパッケージから展開
hadoop-0.20.2/contrib/eclipse-plugin
これをplugins配下にコピーした後、Eclipse再起動

$ eclipse -clean

これでpluginが認識され、MapReduceなどのメニューが追加される
Hadoopインストールディレクトリの指定


以上でMapReduce作成とデバッグ環境が揃いました。
実際にデバッグするにはもう少し設定などが必要になります。
次回は、実際にこの環境を使って実装していきます。


私は、Hadoop本と呼ばれるHadoopやってるエンジニア必携の本を食い入るように読み、勉強しました。
このブログを読んで頂いている方から、どのように「習得したら良いか?」と聞かれた時には
この本をお薦めしています。
Hadoop本


この記事を書いた当時には出ていませんでしたが、非常に分かりやすい入門書も出ています。
Hadoop徹底入門




Ubuntuのアップデート・マネージャでEclipseのアップデートを行うのはさけた方が良いようです。
自動アップデートしたためにEclipseのpluginが読み込まれなくなる現象に見舞われました。
eclipse -clean やConfiglationsを削除しても解決せず、
再作成した方が早いと判断してEclipseの再インストールしました。
解決方法をご存知の方、良かったら情報教えてください。

Pigのインストール

勝手にHadoop環境構築シリーズ、今回はPigのインストールです。
第一回:Ubuntu10.04でHadoop環境構築(疑似分散編)
第二回:HadoopのHDFS確認とサンプルプログラムの実行


PigとはHadoopファミリーの一つで、Map-Reduceを生成するコンパイラ
Pig Latinと呼ばれるテキストベースの言語のセットです。
プログラミングを簡単にする、コードの最適化、
ユーザー独自関数による高い拡張性などの特徴があります。
例えば、以下のような特徴を備えています。
・10LinesのPig Latinは200LinesのJavaコードに相当する
Javaで書くと4時間かかるけど、Pig Latinだと15分で書ける
・join、group、filter、sortの一般的なオペレーションが記述可能
 (JavaMapReduceで記述するのはちょっと面倒)
※Clouderaのチュートリアルサイトより引用

前提条件

前回からの流れでUbuntuを前提にしています。
Pigは自動的にActiveなHadoop構成を使用します。
事前にHadoop環境を構築しておいてください。
参考サイト:第一回:Ubuntu10.04でHadoop環境構築(疑似分散編)
構築するモードは、standaloneでも疑似分散でも完全分散でも良いようです。

Pigのインストール

インストール自体は簡単
以下のコマンドをroot権限で実行

# apt-get -y install hadoop-pig

JAVA_HOMEを設定していない場合は環境変数に設定する

export JAVA_HOME=/usr/lib/jvm/java-6-sun/

Pig起動の確認

$ pig
2010-06-02 22:37:45,842 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/ubuntu/pig_1275485865841.log
2010-06-02 22:37:46,209 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost:8020
2010-06-02 22:37:46,506 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: localhost:8021
grunt> 

起動に意外と時間がかかる時がある
2〜3分程度

grunt shellでHDFSの確認

grunt> ls
hdfs://localhost/user/root/input	<dir>

Pigでサンプルの「grep」と同じ動作を実行

grunt> A = LOAD 'input';
grunt> B = FILTER A BY $0 MATCHES '.*dfs[a-z.]+.*';
grunt> DUMP B;

(結果)
2010-06-02 22:45:22,662 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MultiQueryOptimizer - MR plan size before optimization: 1
2010-06-02 22:45:22,662 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MultiQueryOptimizer - MR plan size after optimization: 1
2010-06-02 22:45:23,488 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - Setting up single store job
(中略)
2010-06-02 22:45:59,941 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Successfully stored result in: "hdfs://localhost/tmp/temp999939448/tmp-1040540214"
2010-06-02 22:45:59,959 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Records written : 4
2010-06-02 22:45:59,959 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Bytes written : 223
2010-06-02 22:45:59,959 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Success!
(    dfsadmin and mradmin commands to refresh the security policy in-effect. )
(    <name>dfs.replication</name>)
(     <name>dfs.permissions</name>)
(     <name>dfs.name.dir</name>)

結果が、「stored result in」に出ているので確認
ブラウザで確認できる

ファイルを見ると、6つ作成されているのが分かる
Mapが6個動いて、まとめのReduceが動いていない(存在しない)
このMapReduceの動作もブラウザで確認できる


次回はHadoopの開発に必要なEclipseの設定の予定です。