未踏社団の「未踏研究会キックオフ」で講演しました

8月4日18時から、秋葉原ダイビル5F交流施設で「未踏研究会キックオフ」が開催されました。定員いっぱいに人が集まり、とても濃密な時間を過ごすことができました。

「未踏研究会」とはどういう仕組みなのかについて、まず理事の荒川さんから解説がありました。未踏研究会は、社団メンバーの興味関心を切り口に、色々なワーキンググループを作ることによって、未踏社団内外の創造的人材をつなぐハブとして機能しようという試みです。未踏社団に閉じるのではなく、社団の外にいる創造的人材にもオープン、という方針が明示的に語られたのはとても重要なポイントだと思います。開発合宿なども計画されているそうで今後が楽しみです。

次に2010年本体の小池さん(Plusadd株式会社)による「起業」をテーマとしたワーキンググループの紹介がありました。全員起業するべきというわけではないが、知識がないせいで過剰に恐れるのは良くないので、起業も取りうる手段の一つとして考えられるように、という方向性には共感します。中山さんが指摘していた「ベンチャーに誘われたけど転職するべきか否か」って視点も興味深いです。

次に、2011年の鵜飼さん、2012年の安川さん、2013年の鈴木さんによる「プログラミング教育」のいろいろな活動の紹介がありました。僕もIPAのセキュリティ&プログラミングキャンプなどに関わってきたのですが、やはり未踏クリエイターの中にはそういうプログラミング教育に関するプロジェクトに関わる人も多いのですね。横のつながりを作ってそれぞれのプロジェクトで得られた知見を交換することは、日本のプログラミング教育をよりよくしていくうえでとても重要だと思いました。

私は「生産性向上」に関するワーキンググループについて講演しました。いろいろある生産性向上の手段のうち、今回は「知識による生産性向上」にフォーカスして話したので、プログラミング教育WGの「教育の場をどう作るか」という議論と関係ありそうな話になりましたね。予期していなかったのですがお互いに良い影響を与えることができたようでよかったです。

僕の発表資料はこちら: http://www.slideshare.net/nishio/ss-51288295

最後に竹内先生の最近やっていることの紹介と、夏のプログラミングシンポジウム 2015の案内がされました。今年のプロシンは開発合宿スタイルとのこと。

会場をはけた後、20人ぐらいが二次会になだれ込み、活発に濃密なコミュニケーションを行いました。僕が観測できた範囲内でもいくつか、未来につながる面白い「芽」が生まれたように思います。ここで生まれた芽が大きく育って実をつけるのが楽しみです。全力で応援していきたいと思います!

ホワイトボードがいっぱい日記

先週僕の勤めているサイボウズのオフィスが日本橋に移転しまして、これをきっかけに生産性を高める職場環境を考えてみようと試行錯誤した結果、割と記録に残すべき内容が多くなってきたのでエントリーを起こしました。

ホワイトボードになるパーティションを机背後に設置

【ASKUL】コマイ ホワイトボードパネル

ホワイトボードになっていて書きこめる机が設置してあった!

これがどこで買えるのか気になった人がいたので軽く調べてみたんですけど、わかりませんでした。そして調べているうちに色々な自作ホワイトボード机の話を見て…

自分の机をホワイトボード化

セーラー万年筆のどこでもシートという静電気で貼りつくポリプロピレンフィルムを設置。

静電気が意外と強くて普通のメモ用紙も貼りつくぞ

(注:モレスキンと言ってるけどロディアの間違いです)

キングジムの 電子吸着ボード ラッケージ RK10も似たような機能ですが、あっちが2500円とかするのに対して、こっちはA1サイズで1枚100円、25枚入り。ちなみにこの時に貼った紙は1日休みを取って翌々日来た時も貼りついていました。

と言うことは糊のついていない紙でもいいんじゃないか?

以前、持っている書籍のISBN一覧から、Amazonで表示画像を取ってきて、並べてプリンタで印刷したものがあったので、それを貼りつけてみました。

A1で85枚くらい貼るとこんな感じ。

ちなみに単なるプリンタ用紙であるこれは、200枚のうち5枚くらいくっつきにくいものがでてきました。それだけは割と落ちやすい、なぜだろう?薄いから曲がってしまっていてそれが邪魔をしているのか、何度も落ちて何度も触るせいで僕の体から出る水蒸気で湿ってしまったのか。

さらにホワイトボードを追加

マグエックス ホワイトボードMX A2サイズ MXWH-A2。1061円という安さでありながら、磁石がくっつくホワイトボード。

ただし今まで普通のホワイトボードで使われてたイレイサーを使うと、僕の机の上が黒い粉だらけになる。自分用のイレイサーを買ったけど、ティッシュで拭くのでもいいかも。

ちなみに今日、これにも「どこでもシート」を貼ってみたのですけど、A4で印刷した紙でもくっつきました。磁石いらないじゃん。というかホワイトボードである必要もなくて、滑らかな表面があればそこにどこでもシートを貼りまくって「どこでもホワイトボード&静電気貼りつき」になるんじゃないのか?

静電吸着の目的には表面すらいらなかった!

多少オーバーラップしても問題なくくっつくので、A4で8ページの論文ならめくることなく一望できるようになりました。

ペンの乾燥

ポリプロピレンのホワイトボードシートに普通のアルコール系インクのホワイトボードマーカーで書いたものは、弊社の環境で一昼夜放置すると乾ききってイレーザーでこすっても手でこすっても消えなくなります。

水をかけてもウェットティッシュで吹いても消えなかったので捨てるしかないかなぁと思っていたのだけど、よく見たらその時使ったウェットティッシュはアルコールを含まないやつだったので、アルコールを含んでいるウェットティッシュで拭いてみたらあっさりきれいになりました。

その時使った「アルコールを含んだウェットティッシュ」は会社にあったこれ: エリエール 除菌できるアルコールタオル 本体 100枚入

ホワイトボードに「こすっても消えない線」を入れられて、かつ消したくなったらアルコールティッシュで消せる、って考えるとうまく使えば便利かも?

34歳になりました

34歳になりました。30歳の誕生日に結婚したので、今日から5年目ですね。

10の倍数である30歳、2進法で11111の31歳、16進法で0x20の32歳、ゾロ目の33歳、に引き続き、とうとう特筆することが何もない34歳です。男性の平均寿命が68歳だからちょうど折り返し地点!とか思ったんですけどそれは世界平均であって日本人男性の平均寿命は80歳なんですって。折り返し地点まで後6年もある。日本人恵まれてるなー。

思えばここ数年は、自分の視野が狭いことに気付き、「自分に欠けている分野を速やかに習得せねば」という焦りに突き動かされていたように思います。過去の誕生日記事を見ても「変わらないことへの恐怖」と「今までと異なることへの挑戦」にあふれていました。

知識は恐怖の解毒薬。ある問題を解決するために取れる手段は、5年前と比べてだいぶ増えたかと思います。手段を増やす試みは有効だったのでしょう。そしてそのフェーズは終わったように感じています。

手段は目的のためにあります。目的へフォーカスすること。そして、目的達成のために手持ちの手段の中で最適な物を選択することが必要です。寿命は限られたリソース。日本人であることで折り返しまで6年の余裕があるとはいえ、世界平均ではもう後半戦。新しい手段の獲得ばかりに時間を費やしていては本末転倒です。

自分が理想と考えるシステムを実現するために、コードを書くことが最適なのか、自然言語を書くことが最適なのか、人と会って話すことが最適なのか。必要な部品は、ソフトウェアなのか、知識なのか、人間関係の構造なのか。そういうことを考えて選択していくべきフェーズなのだろうと思っています。

まだ公開できてないこともいろいろありますが、ぜひ温かい目で見守っていただければと思います。今後ともよろしくお願いいたします。

未踏研究会キックオフで講演します

8月4日18時から、秋葉原ダイビル5F交流施設で行われる「未踏研究会キックオフ」で講演します。

一般社団法人未踏は「研究会」の「ワーキンググループ」という形で、未踏内外の創造的人材が集まり交流する場を作ろうとしています。「集まるのが最初の一歩、一緒に居続けるのが進歩、一緒に働くのが成功」というヘンリー・フォードの言葉がありますが、ワーキンググループは、創造的人材が自分たちの興味関心に基づいて集まり、そして一緒に居続け一緒に働くための場なのです。

予定では、2010年本体SCの小池さんによる起業ワーキンググループの話、2011年SCの鵜飼さんによるプログラミング教育ワーキンググループの話、それから竹内先生による「鵜飼さんの話を受けて、みんながわっはははというような種」の話があります。僕は生産性向上ワーキンググループという形で、社団未踏での活動がどうすればみなさんの生産性の向上という「実利」に結びつくか、という話をさせていただきます!

竹内先生の「種」という表現はとてもいいですね。ここから成長していくぞ、という感じがします。未踏研究会キックオフはこういった活動に興味のある人たちが集まる「最初の一歩」の場です。ぜひご参加ください!

Chainer「NameError: global name 'drv' is not defined」

Chainerを使って実装をしていて「NameError: global name 'drv' is not defined」というエラーが出た場合、周囲のソースを読んでみたりしてもよくわからず、CUDA周りの何かなのだろうかとかしばらく悩んだけども、このエラーを再現させるコードは

Variable(1) + 1

で十分。Variableの引数がnumpy.ndarrayやpycuda.gpuarray.GPUArrayではない場合に起きる。うっかり1-of-Kにすべきところでそのままの値を入れたのが自分の場合の失敗原因だった。

「Variableの引数が〜でない時に起こる」はわかった。「Variableの引数が〜でないときに、なぜ起こるか」はざっとコードを眺めただけではわからない。だけど「Variableの引数が〜でない時にこのエラーが起こらないようにする」という上では、そもそもVariableは仕様上〜しか受け取らないってことになっているんだから、__init__の時点で違うものが来ていたらアサーションエラーにすればいいだけだ。というわけで「なぜ」に関して深追いするのはやめた。

Pyspa日記

Python言語モデルを作り始めた。
サンプル数2038件、サンプルごとの平均トークン数10491、最大トークン数290226。
結構長いトークン列があるから固定のN-gramだともったいない感じがあるなぁ。

トークン種数は135、全21380862トークン。

トークン別の出現数(一部)

NAME 1086490
factor 918992
atom 911487
power 911487
term 897816
arith_expr 885288
shift_expr 884911
and_expr 884475
xor_expr 884412

隠れ層256個でLogLossが10000件終了後に82.29、テストで82.33。その後もゆるゆる走っていて82.35ぐらい。

ミニバッチを1000件
train mean loss=71.2530914678
test mean loss=71.2531124351

やけにでかいと思ったら2つのトークンで確率がほぼ1になっている。何がいけないのか。