書籍をいただきました

テーマ:
サイボウズ・ラボの川合さんと竹迫さんに書籍をいただきました。ありがとうございます!
川合さんが最後の章を特別寄稿として執筆されています。編集は竹迫さん。
ジュンク堂で売っているらしいです。
私の感想は、
・川合さんの文章が、あの「30日でできる! OS自作入門」のくだけた文章からは想像もできないようなまじめな(失礼!)感じでびっくり。(でも各所に面影があるかんじ)
・編集は竹迫さんがほんとうにしているみたいで、その謎なスキルにびっくり。
・表紙のバックの画像がマザーボードっぽい(クロック設定のジャンパピンがある)けど、竹迫さんちのマザボかなにかかなあ。(そして裏表紙はそのボードの裏面のようだ)

(内容に対する感想じゃなくてごめんなさい!)

$KOZOSのブログ
AD
気が向いたので,たまには長文を書こう.

毎年この時期になるとセプキャン(今年は「セキュリティ&プログラミングキャンプ」から「セキュリティ・キャンプ」になったので「セキュキャン」)の応募どうしよう的な話とかがいろいろtwitterとかで流れてたりしていて,まあがんばってほしいなあと思うのだが,ここで一個人として,「自分が応募する立場だったらこう考えるなあ」というものを書いてみようかと思う.講師という立場は関係なく,あくまで一個人としての第三者的考えだと断っておく.

っていうかまあセキュキャンに限らずこういう応募モノについて,ていうか応募モノだけにも限らず,面白い技術者人生を送るために大切(なんじゃないかなあとぼくが勝手に思っていて自分はそうしたいと思っている)なものは何か?を書こうかとおもう.

まああくまでぼく個人の考えなので押しつけるようなものでもないし,他人のやっている活動を否定したりそれじゃダメだとかいうようなものでもない.単に「ぼくはこれが重要だと思っていて,自分はそうありたいと思っている」というだけのものだ.あーあとここで書くのは仕事でどうとかいう話ではなく,以下の「個人活動」についての話です.

ぼく自身はいままで個人活動としてフリーソフトウェア作成から始まって,BSDのライブCDとかFPGAいじりとか組込みOSいじりとか雑誌記事とか書籍執筆とか出展とか勉強会とかいろいろやってきたわけだが,このような個人活動を続けるうえで大事だよな~と思うというかやってみていろいろ感じたことがあって,そういうことをつらつらと書いてみたいと思う.

思いついたことをだらだら書いているだけなので,セキュキャン応募の話や単に自分の活動を振り返って的な話がごっちゃになっていたりするし全然まとまってはいないし,やたら,長い(^^;).まあ気にしないでほしい(文章書くの好きなので).


---- (^^) -- (^^) -- (^^) -- (^^) ----

大切なひとつめのことは,「まずは,手を動かすこと」だと思う.

ぼく自身はまずは手を動かすってのはすごく重要なことだと思っていて,世の中のすごい技術者っていうのは才能があるとかそういうのではなく,手を動かしているひとだよな~と思うし自分はそういう人にあこがれる.

ぼくが「すごいなあ」と思うひとっていうのは,年齢に関係なく手を動かしている.年上とか年下とか関係無いし,忙しいとか暇が無いとか学歴がどうとか,これこれの機関に所属しているとか,そういうのも関係ない.自分の腕一本で,っていうやつだ.

1日っていうのは24時間しかないのだけど,それって誰にでも平等に与えられている時間なんだよね.どんなすごいひとだろうがなんだろうが1日が48時間あったりするわけではない.すごいひとでも1日は24時間しかなくて,すごいひとっていうのはその使いかたが違うのだと思う.リーナス・トーバルズ氏もストールマン氏もまつもとゆきひろさんだって,1日は24時間なのだ.誰もタイムマシンは持っていないのだ.(たまに,「このひといつ寝てんだ!?タイムマシン持ってんじゃねーのか!?」ってひとと出会ったりもするけど(^^;))

だから手を動かしているすごいひとっていうのは別に忙しくないわけでも暇なわけでもなく,時間を作って手を動かしている.ていうか逆にそーいうひとのほうがむしろ時間を作ってきちんと遊んでもいたり飲みにも行っていたりする場合も多い.時間は与えられるものではなく,自分で作るものだ.

まあここでいう「手を動かす」っていうのは作り手路線のぼく自身にとっては「自分でモノを作る」ということになるのだが,それに限らず「勉強会を開催してみる」とか「人を集めて何かしてみる」とかそういう「行動」でもいいと思う.

「技術系ブログを書いてみる」とか「セキュリティ系の競技会に参加してみる」とか「ライトニングトークで発表してみる」とか「IT系イベントのスタッフをやってみる」とかそういうのでもいい.

「まずは行動を起こすこと」が大切で,ぼくはそーいうことが言いたいのかもしれない.


---- (^^) -- (^^) -- (^^) -- (^^) ----

2つめは,「アウトプットを出すこと」だ.

すごい人というのは,アウトプットを常に出し続けているひとだと思う.

そして自分もそうありたいと思っているし,だからぼくは(たとえ不完全だったりたいしたものでなかったりしても)やたらとアウトプットを出したがる癖がある(^^).中途半端だからやめとこう,とか恥ずかしい,とかいう考えは,困ったことに,あまり無い.(そもそもこの手の活動において,「恥ずかしい」という感性はぼくにはあまり無い)

手を動かしていれば,おのずとアウトプットは生まれてくる.これは「自分独自のモノを作った」というだけでなく,「他人が作ったモノをいろいろ試してみた」というのでもいいと思う.それは「試してみた」というアウトプットだからだ.

まあでもやっぱり「自分独自のモノを作った」というほうがインパクトは強力ではあるだろう.それは「自分しかやっていないこと」に繋がるからだ.そういうものには求心力があると思う.

そしてそういうのを持っているだけでなく,ホームページとかブログとかできちんと公開すると,それは「他人が見ることができるアウトプット」になる.公開はべつに義務とかでは無いけれど,「作りました.でも公開しません」よりも「作って公開しています」のほうがずっとインパクトがある.見ることができるからだ.なのでアウトプットを効果的なアウトプットにしたかったら,なるべく公開したほうがいいと思う.そういうアウトプットは,自分が何かをしたいとき,自分をアピールするための武器になる.

ここでいうアウトプットは別に「モノ作りをした結果の開発物」というものに限るわけではない.上記のような「試してみた」系のネタとか,他にも「勉強会で発表してみた」とか「勉強会を開催した」とか「人を集めて,何かやってみた」とかそういうものも含まれるだろう.これも「自分独自のアウトプット」だったりするとさらに,インパクトは強力だ.

アウトプットは別に最先端でなければならないとか,革新的なものでないといけないとか車輪の再発明ではいけないとか,そういうこともあまり無い.そもそもLinuxだって最初はレガシー技術の車輪の再発明と言われていたわけだし.

コツは「車輪の再発明をしない」のではなく,「新しいやりかたでやってみる」ということだ.

例えばぼくの作っている独自組込みOS「KOZOS」は技術的に真新しい部分は無いが,「学習向けに特化」というのを考えた.それもOSカーネルに関してだけでなく,総合的に考えた.

これは例えば「ブートローダーからのすべてが完全オリジナルコード」「中高生でも入手可能な安価なボードを使う」「エッセンスだけを抽出したコンパクトなソースコード」「実用性でなく,ホビー要素をふんだんに入れる」「教科書やユーザグループを整備」「展示会などに頻繁に出展して,セミナーを行ったり,開発者に会える機会を作る」といったものだ.それを使う環境も含め,総合的に考えたわけだ.

組込み系で個人ベースでこのようなやりかたをするのは,それなりに無かったかと思う.もちろんまったく無かったわけではないと思うが,やっぱりそれをほしいと思っているひとたちは(自分自身も含め)いたわけで,そこにはやっぱり可能性があったわけだ.

技術的に新しくなくても,やりかたを変えるといろいろと可能性は広がってくる.いわゆるスキマ産業というやつだ.

ちょっと応募の話に戻るけど(そしてこれはキャンプは関係なく,自分も何かに応募するとしたらの,一個人としての考えなのだけど),書類選考とか面接では,選考者は何を見たいのだろうか? これは未踏の応募のときにちょっと考えてみたことなのだけど,別に設問に対する模範的な回答(受験のような)とかを見たいわけではなく,そのひとが「どれくらい頑張れるか?」とか「どれくらいやる気があるか?」とかそーいうのを見たいのじゃないかなあと思ったりもする.(受験とか資格試験の場合は別だけど.あともちろん,最低限の技術力とかは必要だろうけど)

こういうときの基準は減点法ではなく,きっと加点法なものになるんじゃないかなあとおもう(知らんけど).このへんが受験と決定的に違うところなので,受験と同じような考えで「模範回答をしないといけない」という考え方にとらわれる必要は無いし,「回答できないと受からない」とかいうことも無いんじゃあないかなあと思っている(わからんけど).だからぼくは,自分が応募用紙を書くときはそういう考えで書くし,未踏のときもそんな考えで書いた.(まあでも後述するがそんなやりかたでぼくは未踏に何度も落ちているので,あまり説得力はありませんね(^^;))

設問に対していかにもググりましたみたいな模範回答は,調べりゃ誰でも書けるしそんなのはすぐわかってしまうだろう.選考者は応募者より数段上の知識レベルであることがほとんどだろうし,wikipediaなんて真っ先にチェックされているような気もするし.

なのでそうではなく,つたなくてもいいので自分の言葉できちんと説明したほうがいいとぼくは思っていて,それでダメならそれはやっぱりもう純粋に自分の実力不足だということなので,それはそれで納得できる.そういうわけでぼく自身,なにかに応募したり書いたりするようなときはそうしている.

そーすると,やっぱり自分が何らかのアウトプットを持っているというのはとてもアピールになるし,それは自分ができることは何なのかを証明する,一番てっとりばやい手段だ.「これこれの活動をやっています.ホームページはここです」と言えるし,それを見るほうにも「お,自分で手を動かしているひとなんだな」「行動しているひとなんだな」と思ってもらえるとおもうからだ(知らんけどね).そんなわけで未踏の応募のときも,自身のホームページはずいぶん役に立った.(しつこいようだがそれで落ちまくっているので説得力はまったく無いし,落ちてるんだからまったく役に立ってはいないともいえる(^^;))

ぼく自身は「享受する側」ではなく「発信する側」でありたいと常に思っている.

そして良い情報や面白い話は,「発信する人」に集まってくるものだと思う.アンテナを張るのはもちろんとても大切なことだし,享受するだけじゃダメとかいうことではもちろんない.ただその次のステップとして,自分からも発信するようにすると,その張ってるアンテナめがけて情報が返ってくるようになる,と思う.発信するひとは,発信するひとどうしで引かれあうからだ.(「スタンド使いはスタンド使いと引かれあう」のだ)


---- (^^) -- (^^) -- (^^) -- (^^) ----

3つめは,「失敗しても気にしないこと」だ.

成功する人というのはただ成功しているだけではなく,その10倍くらいの失敗をしていたりするものだ.だけどいちいちそれを言わなかったりとか,そもそも本人自身が気にしていなくて(ていうかそもそもそれが失敗だと思っていなくて)失敗のカウントに入っていなくて気づかれていなくて,それでただ成功だけしているように見えたりしているだけだったりすると思う.

ちなみにぼくはIPAの未踏にのべ9度応募していて,自慢じゃないがすべて落ちている(ホントに自慢じゃないですね(^^;)).でも別に気にしてないし隠すつもりもないし,恥ずかしいとも思わないし,受かった人に対して負い目に思っているようなことも無い.っていうかむしろどこかで発表するときに笑いのネタに使えないかくらいに考えていて,そういう意味で「全部落ちたけど話のネタができてそれはそれでラッキー」くらいの考えだ.(少なくとも,今ここで話題にできたわけだし)

1回や2回落ちただけじゃなく,9度も落ちることでむしろ話のネタにしやすくてよかったかなーとも思う(あ,でもそれ以上落ちているひとがいたらごめんなさい.私もまだまだ修行足りずですね…).ほかにもぼく自身その手の失敗みたいなものはたくさんあるし,失敗だらけだ.作ろうと思って手をつけたけど途中で投げてしまってほっぽってあるようなものもたくさんある.

セキュキャンの応募もそうだ.別に落ちたらどうなるものでもない.受かった人も1発で受かっているわけではなく,何度も応募してようやく,という人だっているだろう.これはチュータの応募だってそうだ.何度も応募して数回目に採用されたという人も,たぶんいることだろう.

そもそも1回応募して落ちて諦めるくらいなら,それはその程度の思いだったんだなあと見られてしまってもしかたがないんじゃないかなあという気もしてしまうじゃないですか.ほんとに自分がやりたいことならば,1回落ちたくらいで諦めている場合ではない.そもそも応募して落ちることが「失敗」だともぼくは思わないし,恥ずかしいとも思わない.落ちてもしも恥ずかしいと思ってしまうのだとしたらそう思ってしまうことのほうが恥ずかしいし,ぼく的な感性では,落ちると恥ずかしいのでチャレンジしない,とか,チャレンジしない理由を探しているようなことのほうがよっぽどカッコ悪くて恥ずかしい!

応募条件さえ満たしていれば何度だってチャレンジできるわけだし,そう考えるとむしろ一発勝負の受験とかより受かりやすいんじゃないかなあ,なんても思ったりする.

こういうのはそもそも失敗してなにかまずいことがあるわけでもなし,またやってみればいいだけのことだとおもう.セキュキャンも未踏も,自分がどんな技術者人生を送りたいかを実現するための手段であって,それが目的ではないと思う.ダメだったらまたチャレンジすればいいし,別の手段を探したっていいわけだ.落ちてもフツーに堂々としていればいいと思う.手段に振り回されてもしょーがない.

ぼくは「才能」って言葉があまり好きではなくて,普段は「能力」とか「実力」とかそういう言葉を使っているんです.

誰もが,溢れる才能とかを持って物事に取り組んでいるわけではない.ぼくも含めてほとんどの人は,凡人だ.その凡人が何かひとと違うことをやろうとしたらそれはなにかの失敗をするのはあたりまえのことで,凡人がやって誰でも成功するようなことは,すでに誰かがやっている「普通のこと」になっているはずだからだ.

それに新しいものを作ろうとすると,これってもうどうしようもないんじゃないの的な大問題が経験上,だいたい2つか3つは出てきて立ち塞がる.でも諦めずに一生懸命考えると,なにかしらの回避方法とか対策を思いつけたりもする.思いつかなかった場合には前述のようにほっぽったプロジェクトになってしまったりもするのだが,まあ個人プロジェクトならそれはそれでよし.(^^)

なのである意味,失敗なんていうのは,してあたりまえのものだと思うんです.失敗しないひとではなく,失敗しても諦めないひとが,きっと新しいモノを作ることができる.そういうひとはとても魅力的だと思うしそうなりたい.

「才能」っていうことばは,そういういっぱい失敗をした結果として何かを実現した人に対して,もしもそれを「才能」の一言で済ませるとしたらそれはちょと失礼なモノ言いになるんじゃないかなあって気がぼくはする(昔なにかのマンガでそういうのを読んで,深く心に突き刺さった)ので,ぼく自身はあまり使わないことばだ.(まあでも別に,他人が使うのをどうこういうつもりはないしそれを「失礼だ!」とかは思わない.自分がそう思うので自分が他人に対しては使わないだけで,むしろ「才能がありますね」と自分が言われるのはとっても嬉しい(^^))

プログラミングの鉄則は「失敗したらどうしよう」ではなく,「失敗したら新しいのを書け!」だと思う.

失敗の無いチャレンジなんていうのは,そんなのはチャレンジとは言わないし全然おもしろくない.必ず勝てる試合がつまらないのと同じだ.失敗があるから面白いのだ.

いっぱい失敗するとその人の幅が広がるし,話はきっとおもしろくなる.みんな他人の成功体験より,おもしろい失敗談を聞きたがるからだ.10年後におもしろい話ができるように,いまいっぱい失敗しておくといい.失敗してネタが増えてそれが快感,くらいになるとちょうどいい.

「また失敗しちまったよー.まあでも次の何かのときの話のネタができてラッキー.おもしろい体験ができてラッキー」くらいに考えるといいと思う.

ちなみにぼく自身は,わりと本気でそう思っているんです.


---- (^^) -- (^^) -- (^^) -- (^^) ----

4つめは,「継続すること」だ.

最後にとどめみたいになっちゃうけど,ここまで書いた「アウトプットを出す」とかいったことは,「募集の直前になってから思いついたように始めて,募集期間が終わったら止めてしまう」というものだと,やっぱり説得力が弱いよね.(もちろん何もやらないよりはずっと良いとおもうので,今からじゃ意味がないからやるなとかいうことではないです)

べつにとどめを差したいわけではなく,なのでもしも応募のためにこれから手を動かして何かのアウトプットを作るということを始める(やらないよりはやったほうが絶対にいいとは思うが)ならば,それは今回の募集が終わったら止めちゃうんではなく,もしも落ちてもそのまま来年まで続けて,来年は「1年続けてます」と言えるようにするとか,別の他のなにかの応募とかのときに使えるアピールネタにするとか,そーいうプラスのほうに考えたほうがいいと思う.技術者人生は長いのだから,そういう長い目で見たほうがいいかなあと.

そういうアウトプット作りのひとつの過程として,今回のセキュキャンの応募に使うという考え方だ.「キャンプに応募するためのアウトプット」ではなく,「今後の技術者人生を楽しくやっていくためのアウトプット」と考えると,続けるためのモチベーションも上がっていいかもしれない.それを今回使うだけ,ということなわけだ.

アウトプットというものは何かのためにアウトプットを出すのではなく,普段から出しておけばこういうときに役に立つ.そういうふうに考えたほうがいいと思う.継続して出ているアウトプットというのは,それはそれで重みがあるものだし.

継続するとはいっても,別にずっとみっちりやる必要もない.長く続けることなので,無理せずにときには休んだりして,まずは止めずに続けることが重要だと思う.

継続するためのぼく自身のコツは「無理をしないこと」と「楽しむこと」と,あと「常にいくつかのテーマを持っていること」です.

ぼくは実業団のスポーツ選手とかすごいなあと思っていて,例えば学生のうちは,数年しかないその選手時代を燃え尽きるように密度高く過ごすというやりかたになるし,それはすごくいいことだと思う.

だけど実業団とかになると,10年とかそういうスパンで選手時代を考えることになる.ケガもすることもあるだろうし,やる気を無くすことも,いろんな事情が出てくることもあるんだろうなあと思う.それでも10年とか20年とか30年とか続けるということは,それは学生のときに密度高くやって燃え尽きるようなやりかたとはまた別のやりかたとかモチベーションの持ちかたが必要になってくるんじゃないかなあと思う.「生活のすべて」でなく「生活の一部」にしなければ,長続きさせるのはきっと難しい.(「生活のすべて」にしちゃって長続きしている超人もいるとは思うけど)

技術者人生というのは何十年も続くものなので,そーいう目線で「続ける」ということを考えるとき,「無理をしない」とか「楽しむ」とかいうことはとても重要なことだし,そうできるように自分をコントロールできると,いろいろやりやすいと思う.大人になると誰かがコントロールしてくれるわけではないので,自分をコントロールするのは自分しかいないからだ.なので,自分のやりかたは自分でコントロールすることになる.「こういうやりかたをすると自分はいずれ飽きてやらなくなっちゃうから,自分が楽しめるように,あえてこういう作り方をするようにしよう」とかそういうのだ.自分のそういうところがわかっていて自分でコントロールできると,なにかとやりやすいと思う.

あと常にいくつかのテーマを持っていることってのは案外重要で,常に3本くらいの自分テーマを持っていると,飽きたら別のことをちょっと進めるかとかできる.

すると「飽きたからモノ作りを休む」でなく「飽きたので別のモノを作る」というようにシフトチェンジできる場合も出てくるだろう.もちろん休んでもいいのだが,別のことにシフトチェンジできれば,ある意味休まずにも済むので効率がいいし(ホントに飽きたときは休めばよいが),煮詰まったときはちょっと時間を置くことで,新しいアイディアが出たりもするからだ.なのでこれはおすすめの方法で,ぼく自身もそういうふうにしていて,いくつかのテーマを巡回するようなやりかたでやっている.

こういうのは結局のところ,自分で自分を「マインドコントロール」することが重要になる.結局は自分の性格とかをよく知って,どういうやりかたなら自分は続けられるのか良く知って,そうなるように自分をコントロールできると,きっと長く続けることができるんじゃないかなあ.


---- (^^) -- (^^) -- (^^) -- (^^) ----

まあここまで気が向くままいろいろ書いてしまったが,これはホントにあくまでぼくの一個人としての勝手な考えで,他人に押しつけるようなものでも無いし,だからダメだとか他人を否定するようなものでもない.ぼく自身がそうおもって,自分はそうするようにしている,というくらいのものだと思ってほしいです.あーあと冒頭にも書いたけど,ここに書いたのは仕事でどうとかいう話ではなく,ぼく自身の「個人活動」についての話でした.

もちろん「キャンプの応募はそうしたほうがいい」とかいうものでもなく,自分が応募するとしたらこうするなあ,という単なる一個人としての考えです.応募の話以外の他の話もいろいろ混ざってごっちゃになってしまっているが,まー気にしないでほしい.

AD
例年参加させていただいている「セキュリティ&プログラミングキャンプ」ですが,今年は「セキュリティ・キャンプ」として8月に実施されます.

日程:2012年8月15日(水)~8月19日(日) 4泊5日
場所:幕張セミナーハウス (千葉県習志野市)

内容は簡単にいうと,IT系に興味のある学生を集めてセミナーや実習など行う集合合宿研修です.
交通費,宿泊費,食費などはすべてIPAから提供されるし,内容もたいへんに濃いです.とてもお得な合宿です.

現在,参加者募集中です.詳細は以下にあります.

http://www.ipa.go.jp/jinzai/renkei/camp2012/
http://www.security-camp.org/

クラスは「ソフトウェア・セキュリティ・クラス」「Webセキュリティ・クラス」「ネットワーク・セキュリティ・クラス」「セキュアなOSを作ろうクラス」の4つがあります.

で,私は「セキュアなOSを作ろうクラス」の講師として参加する予定です.


 「セキュアなOSを作ろうクラス」の概要や詳細は上記ページを見るとわかりますが,講義内容のページから要点をいくつかピックアップすると,以下のようなものになっています.

・「何らかのソフトウェアを開発」
・「セキュリティとOSが相互に関連するものづくり」
・「それぞれの希望する開発テーマの提出」
・「開発テーマは、OSと関連した攻撃/防御技術のいずれかもしくは両方の技術に関連したもの」
・「自分で思いつかない人には、講師から各人の技術レベルにあわせて開発テーマを提示」
・「講師によるオンラインでの指導をキャンプ前から当日にかけて実施」
・「キャンプ期間中は、主に、個別の開発テーマによる開発作業をメインとします」
・「組込システムや制御システムでも構いません」(!)


う~ん,おもしろそうだ.私も作りたいぞ!
おすすめの開発テーマ一覧と担当講師も,すでに出ています.私もいくつか担当させていただきます.

http://www.ipa.go.jp/jinzai/renkei/camp2012/lecture/os.html

今年はプログラミングコースが無くなってしまいましたが,「セキュアなOSを作ろうクラス」が上記の通りモノ作りの内容になっており,自分の手でモノ作りがしたい!OSのソースコードをいじってみたい!オレオレセキュリティ機能を作ってみたい!という学生向けになっています.

さらに「組込みシステムでもOK」な説明や組込み系のおすすめ開発テーマもあって,組込み系の学生も参加しやすくなっているのが特徴です.

おもしろそう!とおもうかたはぜひ!応募してみてください.もちろん他のクラスも魅力的!応募〆切は

2012年7月9日(月)17:00必着

です!

AD