坂井ゼミについて

■ 坂井ゼミについて

担当:坂井 弘亮

OSカーネル,アセンブラ,エミュレータ,コンパイラ,リンカ,組込みソフトウェア など,主にソフトウェアの低レイヤー分野を扱います.
さらに特別な開発テーマとして「技術書執筆」も行います.

開発テーマは提示する「推奨テーマ」の中から選択するか, もしくは希望の開発テーマを持ち込みしていただきます.

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

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

■ 推奨テーマについて

推奨テーマは開発テーマをいくつか提示してありますが,ざっくりとした 開発テーマだけ決めてあるだけで,具体的に何を作るかということは決めていません.

ただその開発テーマは担当トレーナーの専門分野から選んでいますので, 多分いろいろアドバイスしたりサポートしたりすることはできます.
ただ,開発は基本的に自身で自主的に進めていただきます.

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

また担当トレーナーの専門分野からテーマを選んでいますので,勉強は担当トレーナー がアドバイスしたりサポートしたりすることができます.
ただこうした勉強も,トレーナーは講義などをして手とり足とり教えるわけではなく, 基本的には自身で自主的に進めていただきます.

トレーナーが行うのはあなたの開発や勉強の「サポート」であって,開発や勉強を するのはあなた自身です.自身でテーマや目標を設定し,自身で自主的に進めて いただきます.

(推奨テーマ一覧)

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

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

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

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

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

ただこうした開発や勉強は,トレーナーはアドバイスやサポートはしますが, 講義などをして手とり足とり教えるわけではなく,基本的には自身でテーマや目標を 設定し,自主的に進めていただきます.

推奨テーマと同様に,トレーナーが行うのはあなたの勉強や開発の「サポート」で あって,勉強や開発を進めるのはあなた自身です. それらを進めるのは,自身で自主的にやっていただきます.

持ち込みテーマで応募する場合には,どのようなものを作りたいのか,そのためには どのような勉強をする必要があるのか,自律的に進めることができるかどうかを 詳細に書いてください.

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

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

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

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

(2018年度実績)
「つくりながら学ぶ! Pythonセキュリティプログラミング」
森幹太(著), 坂井弘亮(監修), SecHack365(監修)
マイナビのページ
amazonのページ

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

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

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

■ このゼミへの応募について

このゼミに応募する場合,以下を詳細に記述してください.

(回答が必須の設問)

(回答が任意の設問)

以下にあげるような内容を例として,自由記述で自身をアピールしてください.
回答は任意です. 以下はアピールすることの例であり,すべてについて回答しなくても構いません.
加点法で判断し,記述が無いことで減点することはありません.

■ 私の教えかた

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

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

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

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

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

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

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

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

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

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

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

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

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

■ 私が教えられること

私が教えられることについて,まずは下にある自己紹介を読んでください.

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

まず,私のホームページを見てみてください. 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/ にあります.

■ 自己紹介

坂井 弘亮

得意分野:

主な著書:

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

メッセージ: