砂場遊び開発ゼミについて
■ 砂場遊び開発ゼミについて
担当:坂井 弘亮
提示する開発テーマに対して,砂場遊び開発手法でグループ開発をします.
(補足)
「砂場遊び開発手法」(砂場遊び型開発手法)
とは,コースマスターの坂井が提唱するグループ開発の一手法です.
具体的には,開発用のリポジトリが一つあり,そこに各自が自由にcommitする,
というイメージです
砂場で子供たちが自由に砂遊びしている状況を想像してください.
一つの山をみんなで自由に砂を盛って作っているような,そんな感じです.
重要視するのは,個々の「自発性」と「非同期性」です.
- リーダーやリサーチ担当や開発担当などの役割分担をしない
- 工程管理や進捗管理やプロジェクト管理やチーム管理をしない
- 各自が各々の開発の中心となり,緩い結合の下で開発を進める
- 開発テーマ(開発ターゲット)は共通だが,実際の開発は個々で行う
- グループ開発ではあるが,何を作るかを互いにすり合わせることは,しない
(各自で,作りたいものを作りたいように作る)
- 誰がリーダーで誰が開発者ということは,ない
(全員が,自身の開発のリーダーであり,開発者です)
互いに相談や調整をしたり,互いの合意の下で協力したりするのは構いませんが,
意見されてもそれを採り入れるかどうかは,各自の自由であり,各自の判断です.
グループ開発ではあっても,他メンバーに
「ここはこうしてほしい」「これこれを作ってほしい」
と強制されることは,ありません.
(そうしたい人は自分でそうすればいいだけ,
要望があれば人にお願いするのでなく自身で作り込む,という方針です)
開発の方向性が異なってきた場合,途中で分離(いわゆるfork)して,
別々に開発を行うのも自由です.
展示や発表などをグループとして共同で行うのも,別々に行うのも,自由です.
本ゼミは,全員がリーダーであり全員が開発者として,
緩い結合の下でのグループ開発をします.
このため,テーマを統一するために,以下に提示する開発テーマから希望するテーマを
選択して応募していただきますが,採用するかどうかは,そのテーマを希望する応募者
が複数いるかによります.
その開発テーマに対しての応募が1名しかいないと,グループ開発ができませんので,
採用は無しとなる可能性があります.
(ただし,応募時には複数の開発テーマを希望しても構いません)
■ 開発テーマについて
開発テーマは提示してありますが,ざっくりとした
開発テーマだけ決めてあるだけで,具体的に何を作るかということは決めていません.
ただその開発テーマは担当トレーナーの専門分野から選んでいますので,
多分いろいろアドバイスしたりサポートしたりすることはできます.
ただ,開発は基本的に自身で自主的に進めていただきます.
開発テーマについて,まずそのテーマでものづくりをするための知識があるならば,
すぐに作り始めていただくことができます.
が,そうでない場合には,それを作るための知識をつける勉強も含めて進めても
構いませんので,最初からそれを作るための専門知識があることは必須では
ありません.(ただしそれでも,プログラミングなどの基礎知識は必要です)
また担当トレーナーの専門分野からテーマを選んでいますので,勉強は担当トレーナー
がアドバイスしたりサポートしたりすることができます.
ただこうした勉強も,トレーナーは講義などをして手とり足とり教えるわけではなく,
基本的には自身で自主的に進めていただきます.
トレーナーが行うのはあなたの開発や勉強の「サポート」であって,開発や勉強を
するのはあなた自身です.自身でテーマや目標を設定し,自身で自主的に進めて
いただきます.
(開発テーマ一覧)
- 独自Cコンパイラ「NLCC」
http://kozos.jp/nlcc/
- 開発者:坂井トレーナー
- 独自の自作Cコンパイラです.シンプルで極小です.
- 独自の標準Cライブラリのサブセット(スタートアップ・システムコールラッパー・リンカスクリプト含む)も並行して開発しており,それらを組み合わせてのビルドが可能です.(このため極小サイズの実行ファイルを生成可能です)
■ このゼミへの応募について
このゼミに応募する場合,以下を詳細に記述してください.
(回答が必須の設問)
- どの開発テーマを選択するか,やってみたい開発テーマを教えてください.
- SecHack365で自分が作りたいもの・作ってみたいものの詳細を教えてください.
それをどのように作るか,作るために自分にはどのようなスキルがあるか,作る
ためには何が必要で,どのようにして作っていくつもりか,
なぜそれが作りたいのか,といったことを教えてください.
(回答が任意の設問)
以下にあげるような内容を例として,自由記述で自身をアピールしてください.
回答は任意です.
以下はアピールすることの例であり,すべてについて回答しなくても構いません.
加点法で判断し,記述が無いことで減点することはありません.
- 今まで自分が作ったもの,作った理由,それをどのようにして作ったか,作って
どう思ったか,どのような苦労や楽しさがあったか,普段はどのようなものを
作っているか,などを教えてください.
自分の作品を公開しているブログやgithub等があれば,それも教えてください.
- 今までやってきた活動や,普段,行っている活動があれば,それを教えて
ください.
どこかに出展したとか,コンテストに出したとか,情報を発信している
技術ブログや勉強会への参加・発表などあれば,教えてください.
- 自分ができること.どのようなことができるか,何が得意かを教えてください.
- 付加学習として,どのような学習をしてみたいか,どのように進めたいか,
教えてください.
- SecHack365に参加したとき,SecHack365でどんなことをしたいか,
どのようなことをSecHack365に期待するかを教えてください.
- 何らかの技術的な疑問を自身で設定し,その疑問を晴らそうと挑戦してみて,
その過程を教えてください.設定する疑問は何でも構いません.
(疑問の例:実行ファイルはどのような構造になっているのだろう?
lsコマンドは何をしているのだろう?
pingコマンドを実行すると何が行われるんだろう? といったようなことです)
この設問は疑問を解決できたかどうかではなく,いかに疑問を持ち,
それをいかに自身で課題として設定し,それをいかに解決しようとするかの
取り組みかた,未知のものに挑戦する姿勢,いかに自分の手を動かして調べ
自分の目で実際に確認して納得するか,といった点を見ます.
このため自力で解決困難な疑問を設定してもかまいませんし,
解決までの道のりの途中で「ここまではわかった」として終わっていても
構いません.(むしろそういうのが推奨です)
こう思ったのでこれを試したけれど間違いだった,失敗だった,
とりあえずこうしてみたけど何もわからなかった,
ということを書いていただいても構いません.
(むしろそうした試行錯誤の過程を書いてください)
また,どうだったかという結果だけでなく,どう考え,何を試したかという,
過程を説明してください.
(注意:「ネット検索したらこうだった」ということを書くだけでなく,
自身で手を動かして調べ,自身の目で見て確認したことを書いてください.
バイナリエディタで見てみましょう,ソースコードを見てみましょう,
実際に動かして試してみましょう,といったことです)
- 数時間〜1日程度で作れる,数十行〜百行程度の何らかの簡単なプログラムを
書いてみて,それを説明してください.
SecHack365とは関係の無いもので構いません.
自分用のツールや,単に興味があったので作ってみたもの,ちょっとした計算
など,テーマは問いません.プログラミング言語も問いません.
ただしすべての行を自分で書いているもの(フルスクラッチ)に限ります.
ライブラリ等を使うことは構いません.
またすでにそのようなものを持っていれば,それでも構いません.
- その他,アピールしたい点などあれば自由記述で書いてください.
■ 私の教えかた
以下と同様ですので,そちらを参照してください.
私の教えかた
■ 私が教えられること
以下と同様ですので,そちらを参照してください.
私が教えられること
■ 自己紹介
以下と同様ですので,そちらを参照してください.
自己紹介