2018年度について

2018年度のSecHack365では,私(坂井)は「開発駆動コース」というコースで トレーナーをやらせていただきます.

今年度の開発駆動コースは, 「おすすめテーマ」で応募する方法と, 「持ち込みテーマ」で応募する方法があります.

「おすすめテーマ」は,トレーナーが 「こんなテーマでものづくりをしたら面白いのではないか」 というテーマを提案するので,それに沿って作ってみる,というものです.

「持ち込みテーマ」は,あなた自身が「これが作りたい」と思ったものを提案して 作るというものです.

これらのどちらかを選んで応募していただくことになります.

それぞれの応募について以下にいろいろ書きましたので,参考にしてください.

ただしここで書くことは 「開発駆動コースで,私がトレーナーとして担当する参加者については, 私はこういう方針でやります」というものです.
他のトレーナーが担当する参加者については,そのトレーナーの方針になります.

■ 目次

■ おすすめテーマについて

以下の自己紹介のところに,私のおすすめテーマをいくつか上げています.
これらの中にやってみたいものがあった場合に,これをやってみたいと書いて応募して もらうという方法です.

おすすめテーマは,具体的に何を作るかということは決めていません.
例えば「組込みOSに対するセキュリティ機能の開発」のようにして, ざっくりした開発テーマだけ決めてあります.
ただその開発テーマは私の専門分野から選んでいますので, 多分いろいろ教えられますしリードできます.

おすすめテーマでは,まずそのテーマでものづくりをするための基礎知識がある ならば,すぐに作り始めていただくことができます.
が,そうでない場合には,それを作るための知識をつけるための勉強も含めて 進めますので,最初からそれを作るための専門知識がある必要は必ずしもありません.
また私の専門分野からテーマを選んでいますので,勉強は私がリードできます.
ただしそれでも,プログラミングなどの基礎知識は必要です.

例えば「組込みOSに対するセキュリティ機能の開発」というテーマならば, まず最初に組込みOSについて,いろいろ学んでいただきます.

そして勉強することで,テーマについての知識がある程度ついてきたら, そこでアイディア出しをして,どんなものを作りたいか考えてもらいます.
もちろんこれも,アイディア出しの方法などを指導します.
そこで作りたいものができてきたら,それを作っていってもらいます.

自分にそのようなアイディアが湧くかどうか,不安に思うかたもいるかもしれません.
でも,このあたりにきてきちんと知識がついていれば,この段階に来るまでに, 作りたいものがたいていはいくつかできていたりするものなので,あまり心配しなくて いいです.
勉強して知識をつけることで,アイディアはより出るようになるものです.

■ 持ち込みテーマについて

自分で「これを作りたい」というものがあり,さらにそれに対して私が何か教えられる (私に担当してほしい)というものがあれば,その作りたいものを「持ち込みテーマ」 として,応募していただくという方法です.

まず以下の私の自己紹介をよく読んで,その作りたいものを作るのに,私の知識が 役に立つのかどうかをよく確認してください.

それを作るための知識や技術がすでにあるならば,すぐに作り始めてもらうことに なります.私は自分の知識を使って,それをサポートします.

それを作るための知識や技術がまだ無い場合には,そのための勉強から始まります. この場合,上記「おすすめテーマ」で勉強から始める場合と同様になります.

持ち込みテーマで応募する場合には,どのようなものを作りたいのか,そのためには どのような勉強をする必要があるのかを詳細に書いてください.
それを見て,SecHack365の期間中に開発成果を出すところまでいけるかの実現性を 判断します.

■ 自宅での勉強と開発について

おすすめテーマにしろ持ち込みテーマにしろ,まず作るための知識の修得が必要な 場合には,勉強していただくことから始まります.

そうでなければいきなり開発から始めても構いませんし,「作りながら学びたい」 というかたは,やはりいきなり開発から始めて,並行して勉強もする,というやりかた でもかまいません.

ただしこの「勉強」や「開発」は,注意として,私自身が講義などをして 手とり足とり教えるわけではありません.

SecHack365では,自宅での作業がメインになります.
主なコミュニケーションはネットワーク越しに,リモートで行います.

直接お会いできるのは2ヵ月に1回くらいの集合イベントのときだけですので, それほど頻繁にお会いできるわけではありません.
さらにそのときは私の講義などではなく,発表などのイベントが行われます.

なので,基本的には自分で自宅で頑張って勉強や開発をしていただきます.

ただし単に「勉強してください」「開発してください」というだけではなく, もちろんオンラインで,学習やものづくりの誘導やサポートはします.
また勉強は単なる座学とか「この本を読んでおいてください」といったような ものではなく,
「こういうことを試してみてください」
「試しにこれこれを作ってみてください」
というような,実験やサンプル作成といった演習ベースで学習をリードします.

実際には「勉強」と「開発」の工程が明確に分かれているのではなく, 実験や簡単なサンプル作成などを繰り返しているうちに, それが徐々にものづくりになっていくというような連続した感じになると思います.

勉強することで,作りたいもののアイディアなどは,自然と出てくるものです.
なので実際には,実験やサンプル作成などを勉強として繰り返していたら, だんだん作りたいものができてきたので,じゃあ実験で作ったサンプルを拡張して 本格的に作ってみるか,みたいな流れになるかと思います.

■ 応募について

おすすめテーマにしろ持ち込みテーマにしろ,応募の際には以下をたくさん書いて,
「自分は実際に作ることができる」
「テーマに関する知識は今は無いが,ものづくりの経験はあるので, 勉強すれば実際に作れる自信がある」
「とにかく作ってみたい」
ということをアピールしてください.

■ グループについて

勉強や開発を進めていく上で,もしかしたら他の参加者と組んで, グループを作って開発したい,ということになるかもしれません.

これは十分考えられることです.

グループに関しては,以下のように考えています.

私自身は,お互いに組みたいという要望や組むメリットがある上で自発的に 組むならば,基本的にOKで考えています.

また勉強や開発を進めていく途中で個々の状況を見て,

など,私の方から提案や誘導をする可能性もあります.

このような提案は,基本的には私が担当する参加者どうしの組合せで行います.
しかし場合によっては他のトレーナーが担当する参加者との組合せも考えるかも しれません.(ただし場合によります)

また,作っているものに対して面白いアイディアをひらめいて, それをぜひやってみたいのだが,自分だけでは技術的に不足している, という部分が出てくるかもしれません.
たとえば現在は解析エンジンを開発しているけど, WebのUIがあるともっと面白くなるよね,的なものです.

そうしたときに,他の参加者と組むことで,お互いに補いあうことができる ならば,そういうマッチングを提案したりするかもしれません. (もちろんその組む相手にも,そうした「他の人と組むことで,自分が作っている ものを発展させたい」という要望があり,お互いに組むメリットがあるという 場合です.片方にしかメリットが無いのに無理矢理組ませるようなことはありません)
もちろんそうしたマッチングできる参加者を自分で探してきて 「この人と組んでみたい」というのもアリです.

まあそこまで直接的に提案しないにしても,単に「お互いそれぞれ,自分のやっている ことを他の人に説明し合ってみてください」のようにして,他の人がやっていることを 知る機会を作ったりするかもしれません.

ただもちろんそうした提案や誘導をしたとしても,必ずしも共同でやったりグループを 組んだりしなければいけないということはありません.
あくまで「試しに組んでみてもらう」「お互いにお互いのことを知り合ってもらう」 という誘導です.

また組むとしても,組んだら絶対それで続けてもらうというものでもなく, 試しにそうしてみて,まああまりしっくりこなければまた元に戻って個別にやっても かまわないです.(「組んでください」と強制することは,ありません)
そういう前提で,実験的に組んでみるのもありですし,そういう誘導をするかも しれません.

グループとして共同開発することにした場合,共同開発として開発テーマを持って 共同で開発するが,それとは別に個人で開発していたものも,それはそれで継続して 開発するというように,両方やっても構いません.

グループは,同一テーマ内でグループを作っても構いませんが, 例えばおすすめテーマの「組込みOS」と「ユーザランドOS」という2つのテーマで 開発を進めていた2人が,お互いの知識や開発物を組み合わせることで, 新たな面白い開発テーマができるかもしれません.

そしたらテーマを合体させたり混ぜたりして,グループとして開発しても構いません.

■ 「技術書の執筆」というおすすめテーマについて

おすすめテーマの中に「技術書の執筆」という異色のものがあります.

これは,1冊の技術書を書いてもらうというものです. 技術書として出版まで持っていくことを目標とします.

自分の書いた本が書店に並ぶのを夢見て頑張ってもらう,というテーマです.
達成できたあかつきには,ぜひ,自分の本を抱いて寝てください.笑

私自身,技術書を10冊以上書いており1000ページ越えの本も単著で書いていますが, その中で培った様々なノウハウをお教えします.
書くためのノウハウだけでなく,モチベーション維持の方法や執筆時間をいかに 作るか,執筆のアイディアをいかに出すか,出版社とのやりとりといったことも お教えします.

注意として本を書くということには,向き不向きがあるように思います.
向かない人がこのテーマを選んだ場合,かなり辛い思いをすることになります.
また当り前ですが,書くのは自分でやっていただきます.私がいっしょに書くという ことではありません.書けない部分を私がかわりに書く,とかいうこともありません.

ただし参加者どうしがお互いに組んで書きたいという話になって, うまくマッチングできるならば,参加者どうしでグループになって書いて共著, というのはアリです.基本として,そういう良いグループ活動は推奨します.

また別の参加者が開発しているものが面白すぎるのでその人と組んで, 自分はそれを世に紹介するために,それに関する本を書きたい,というような 革新的な(笑)グループの組みかたもOKです.

このテーマは自分で絶対に書き上げる(書き上げられる)という覚悟と自信のあるかた のみ,応募してください.
このため「はじめに」あたりを試しに書いてみて,自分は大丈夫と思えた場合のみ, 応募してください.
目安として,半年で1冊を書き上げる感じです.1日2ページずつ毎日書くとか, 毎週末に15ページずつ書くとか,1ヵ月で集中して300ページ書くとか, やりかたはどれでもいいですが,そんな感じのペースが必要です.

■ 私の教えかた

私の教えかたなのですが,私は基本として,モチベーション至上主義です.

なので本人が「これを作りたい」と言ったものを,止めることはありません.
また,作り始めて途中で作りたいものが変わってきたら,そっちに変更しても 構いません.
作りたいものが当初のテーマから段々ずれてきてしまったりしても,構いません.
作りたいものが2つあったら,とりあえず両方とも作り始めて,飽きたら別のほうを やるみたいにして交互に作っても構いません. (こういうのは,私自身がモチベーション維持のためによくやる方法です)
作りたいものが3つあったら,欲張って全部をやってみたり,全部やってみて 面白いものだけ選んだりしても構いません.
新規性や有用性が無くても,構いません.車輪の再発明でも構いません. 凡庸なアイディアでも構いません.

開発テーマも流動的で,構いません.
極端な話,最初は組込みOSをテーマにして開発していたが, 途中からユーザランドOSに興味が湧いて気がついたら徐々に そっちに開発テーマが移っていて,最終的にはそっちのテーマでOS開発している 別の参加者とグループになって,共同で開発することにしました,でも自分でもともと 作っていたものも並行して開発を続けます,なんていうのでも構いません.

いろいろ作ってたら,作っている最中に興味の方向が変わることというのは, 当り前のことです.

そのときに自分が作りたいと思うものを作っていただきます.

ただそのかわり,「これを作った」という成果にはこだわっていただきます.
最後にはなんらかの成果をちゃんと出すことを求めます.
逆に言えば,成果さえ出すならば,そこに至るまでの道のりは何であっても 構いません.

また,「これを作りたい」と言ったものを止めることはありませんが, それを作っていく途中や最後のほうの段階で,例えば
「新規性を出すにはどうすればいいか?」
「有用性を出すにはどうすればいいか?」
「さらに面白いものにするにはどうすればいいか?」
のような指導はするかもしれません.

そしてその「有用なものにするには...」「さらに面白いものにするには...」 という議論の先で,
「この人と組んでみることを,考えてみたらどうか?」
「グループでやってみてはどうか?」
といった提案をするかもしれません.

ただしこれは,新規性や有用性や面白いアイディアが無いと作らせない, というようなことではありません.
自分が作りたいものを作る上で,さらにどうやったら新規性や有用性や アイディアとして面白い点があると言えるようになるか考えてもらう, という誘導です.

そして,もしかしたらグループになって補い合うことで,自分だけでは 思い付かなかったような発展があるかもしれない,という誘導です.

自分が作りたいものを作っていく上で,将来的に, 新規性とか有用性とかアイディアとして面白い点といったことが, 求められるかもしれません.
そうしたときに,どういうふうにしたらそれらがあると言えて, 作り続けることができるだろうかを考えてもらう,という誘導です.

つまり,新規性や有用性やアイディアやグループありきでないと作らないという ことではなく,まずは「作りたい」というモチベーションありきで作りたいものを 作り,その先で,いかにそうしたものを追加していくか,という話です.

このように自分が作りたいものを作り続けることができるように,うまく機転や融通を 効かせる,ということの指導をする可能性はあります.ていうかたぶん,します.
技術者が技術者として,作りたいものを作り続けるためには,そうした素養が 必要だと思うからです.

■ 要するに,どういう順番で年間通してやるかというと

なんだかいろいろ長く書いてしまいましたが,要するに,以下のようにやります.

  1. 作りたいものを作っていく知識がすでにあるならば,以下の2〜4の工程は スキップする

  2. 作るための勉強を,必要に応じてしてもらう

  3. 勉強は単なる座学でなく,実験やサンプル作成などの演習をベースにする.

  4. そうしていろいろ手を動かしているうちに,「こんなものが作りたい」 というアイディアが漠然と出てくる.
    そしたら勉強から,それを作ることに移行していく.
    そして作るためには,そこまで演習で作ってきたサンプルを活かすことができる ので,勉強からものづくりに,自然な形で徐々に移行していくことができるはず.

  5. 作りたいものを,ひたすら作り続ける.

  6. 作りたいものがある程度できてきたら,どうしたら有用になるかとか, どうしたらもっと面白いものになるかとか,他の参加者の誰かと組んだり, その参加者の技術や作っているものと組み合わせたらもっと面白いものになるかと かいったアイディアを出す作業をしてみる.
    ただしアイディアが出なかったとしても構わない.その場合には開発をそのまま継続.

  7. もしも新しいアイディアが何か出て,それをやってみたいと思ったならば, 開発テーマをそっちに移行して,それを実現することを考えてみる.

  8. その上で誰かと組みたいと思うならば,じゃあ誰と組んでみようとか, 誰とグループになってみようかといったことを考えてみる.
    ただしもちろんグループになるのは,組むことでお互いにメリットがあるという マッチングがあることが前提となる.そして無理に組まなくても構わないし, 組んでみて違うと思ったならば解散しても構わない

  9. 作り続ける中で,上の6〜8の工程は何回か繰り返して行う

■ 私が教えられること

私が教えられることについて,まずは下にある自己紹介を読んでください. これはSecHack365の応募ページに書いてあるものです.

で,以下はその補足の説明です.

まず,私のホームページを見てみてください. http://kozos.jp/ です.

ここには組込みOSの自作,SECCONへの問題提供などのアウトプットがあります. SECCONへの問題提供では,主にGDBやQEMUといったエミュレータを利用し, 多種アーキテクチャに関する問題を作成しています. これらに関することは教えられます.

また執筆書籍を図書館などで手にとって,読んでみてください. ここで説明しているようなことも教えられます. とくに自己紹介に書いてある4冊 (12ステップ組込みOS自作,リンカ・ローダ,大熱血アセンブラ, ハローハローワールド) で書いてあるようなことは得意とする専門分野なので,いろいろ教えられると 思います.

あと自己紹介には明確に書いていないのですが,以下のようなことも教えられます.

セキュリティ・キャンプの講師を2010年よりやっています. またセキュリティ・ミニキャンプやワークショップの講師などもやっています. さらにオープンソースカンファレンスなどでセミナーも多数やっています. これらで実施した講義やセミナーの内容に関することも,教えられます. これらの履歴はhttp://kozos.jp/results/にあります.

現在CQ出版のInterface誌でネットワークの低レイヤー系の連載をしています. これに関することも教えられますので,興味あるかたはInterface誌のバックナンバーを 確認してみてください.これらのソースコードは http://kozos.jp/books/interface/ethernet2/ にあります.

■ 自己紹介とおすすめテーマ (SecHack365応募ページより)

坂井 弘亮

得意分野:

主な著書:

ホームページ:http://kozos.jp/

メッセージ:

おすすめテーマ: