セキュリティ&プログラミングキャンプ キャラバン東京

に参加してきました。

高専生、高専卒が多かったのが高専卒として印象的でした。

マルチセッションで行われたので全部聞けなかったのが残念でしたが

いい刺激になりました。


id:amachang さんともいろいろと話す時間がありました。
ぜひ高専カンファレンスに来てもらわねば!!



自分は刺激を求めてるんだろうなぁ…

もっともっと積極的に外に出て行こうと思った1日でした。

そして今日の経験と出会いを大切にしていきたい。

さて、クリスマスだ!コード書こう♪←

Railsでアプリを作る その6 振舞を再現する

UserテーブルのRSpecを少し書きました。

その記述した振舞を再現するようにmodelを書きます。

スペックではlengthについて書いていたので

モデルに以下の文章を追加!

  validates_length_of :name, :maximum => 40
  validates_length_of :mail_address, :maximum => 80
  validates_length_of :skype_id, :maximum => 40

そうして動かすと・・・

ruby script/spec -cfs spec/models/user_spec.rb

こんな感じ!

User バリデーション
- save success!
- name length=40 save success
- name length=41 save error
- mail_address length=80 save success
- mail_address length=81 save error
- skype_id length=40 save success
- skype_id length=41 save error

Finished in 0.10329 seconds

7 examples, 0 failures

高専カンファレンスin長野に行ってきました。

2009-12-19 長野高専 5階なのに100番教室

カッコいい雰囲気、カッコいい機材、寒い中各地から集まったカッコいい高専生に囲まれ始まった

kosenconf-011nagano

地方開催ということで現役高専生が中心となって開催された

このカンファレンスは大成功と言っていいと思う

== はじめに ==
今回の高専カンファレンスは多くの人の協力があって成立したと思う

みんなにThank you!感謝!!

発表などのまとめはid:beat_beat さんがまとめてくれてるのでこちらを参照!

http://d.hatena.ne.jp/beat_beat/20091219/1261230270

公式Wiki
高専カンファレンス in 長野 - 高専カンファレンス Wiki

== 所感 ==

+ 校長先生のLT

スライドを作った先生は違う先生と言うが

すごく理解のある先生なんであろう

てっきり少し固めの話をするのかなと思いきや

ノリノリ・・・

素敵だ

長野高専素敵


+ 基調講演

現役高専生によるロボカップジュニアのお話

英語ができる、できないは関係なしに絵やジェスチャーなど

苦労しながらも外国チームと交流をしている

高専カンファレンス高専という枠よりももっと広いところで

話してもいいんじゃないかな?

面白かった!

+ 一般発表

専門的な話題と留年関連の話題

専門分野の人がやっているかどうかは分からないが

あのレベルの話を聞けるのはやはりカンファレンスの魅力

金融っていうのは意識をしないと学ばないものだと思うのですごくいい経験をした

そして本日より参加者にMacフラグが…

+ LT

レベルたけーw

ドラ娘さんかわいー

現役高専生の発表が多かったのがいいね!

もっと現役高専生の発表が聞きたい!聞きたい!

ドラがあんまりならなかったのが残念です。

5分で終わってしまう(=>故にドラが鳴る)

のは

ドラがなる前に終わらせるのではなく

ドラがなったら終わるようにするのがいいと思う!

だって、カンファレンス参加者みんなドラ娘さんのこと好きだもの。

どらぁ〜

さて、自分も発表者のひとりですがそちらの話は別の記事にて!

しゃべりで持っていける人はすごいな

あとはスライドを工夫している人もいたので

いろいろ盗んでいこうと思う!

+ 懇親会

もうすこしまとまりが欲しかった!


== おわりに ==
長野は本当に楽しかった!

みんなありがとう!

この出会いと経験を大事にしていきましょう!

そして次は1月30日 八戸

いこうぜ!!

東京ー八戸はだいたい3時間くらいの往復30k円

以上 TwitterID mitakuがお送りしました。

LTを終えて

2009-12-19 長野

こんばんはtwitter-id mitaku です!

高専寒波れんす・・・

もとい

高専カンファレンス 長野でLTをさせていただきました。

公式
http://kosenconf.jp/011nagano
ustのムービー
http://www.ustream.tv/recorded/3244424


今回は

「Lightning Talksで○○を彩る」

というタイトルで発表!

○○には"左下"という文字が入ります

どういうことかと言うと

プレゼンテーションで同時に別のベクトルを持たせるとどうなるんだろう?

という疑問から

並列世界での発表というのは見たことがないので

スライドの左下を使って

実験をかねてやってみました。

その並列世界、別のベクトルを持たせるというのは

主題を高橋メソッドで行います

(スライド1つに対して大きな文字でシンプルに記述する)

あとはしゃべりや枚数、勢いでなんとかする(←持論)

これの良いところは

大きな文字を使うことで

遠くの席からでもスライドが”見える”点

1枚の情報量が少ないという点

それゆえにスライドを作りやすいので

固い場所でなければすごくよい手法だと思います。

今回はそのメリットの情報量が少ないというのを少し削って

左下で主題と別の話をしようかなと思いました。


具体的に何をするか…


1.スライドの補足
2.スライドの雑学的ななにか
3.ネタ
4.意味のない文字列
5.カンペ
6.伏線を張る

などなど、

工夫しだいでなんでもできそうです。

デメリットとして

左下に力を入れすぎると

主題が頭に入らない、おろそかになるという点です。

今回は実験的に左下をメインで行ったため

主題のほうはあまり印象に残ってないかと思う。

(ネタバレ:そもそも主題は中身のない話)

8割くらい左下でネタに走っていたので

会場では結構ウケていました。

結局のところ今回のLTでやったのは

終始ネタに走っていただけ

主題と合わせたり、休憩に使ったり、いろいろ試して見ましたが

だいたい相手にウケるネタならウケるという状態

高専生ならツボはある程度あるわけで

そのへんを面白おかしく言えばなんとかなるんじゃないかなと

結局今回やった手法・・・

西光メソッドと名前がつきましたが

現状だと

中身のない内容の発表を切り抜ける手法にしかなっていなくて

使いどころや方法をいろいろと考える必要があります。


また、今回はもう一つ狙っていたことがあって

「発表は終わるまで相手を掴んでいなきゃいけない」と思い

最初からあれこれやってみました。

その点でも左下はある意味有効で

短い発表よりは

長い発表でやる方が効果的なのかなとも思います。

ただ、静的なモノなので

やはり高橋メソッドのように多くのスライドと勢いでやるのがいいのかもしれませんね…

うーん、難しい!

終わった後に話を聞いてみると

「面白かった」と言っていただけたので

もう本当に幸せです。

[あとでやる]と言ってくれた人も多かったので

今後の発展が楽しみ!


ただ、人が処理できる情報量もそんなに多くないので

複数のベクトルを持たせるなら

録画などあとで参照できるのを

前提にやると幸せになれるかも!

                                                                            • -

@igaiga555 さんよりコメント:
タカハシで真面目な話して、
でニシミツで話せない裏話をしたりとか、
使い道広そう!

@xenosanx さんよりコメント:
すごく面白かったです!
ただ左下が面白すぎて
本題に目がいかなくなってしまうので
見るのが大変でした^^;

@FromAtom さんよりネタ提供:
メインと左下で、漫才の様に
掛け合いをしてみたらどうでしょう?
それなら、並列進行じゃないので、
どちらも見られますしw

                                                                            • -

なんにせよ見てる側は両方見ようとしちゃうので

やりすぎは良くないですね

可能性は無限大!

そんなわけで個人的にLTは大成功でした。

ドラも鳴らせたし。

ドラ娘さんかわいいし←




みなさん本当にありがとうございました!


さいごに

全国の西光さんごめんなさい!←

Railsでアプリを作る その5 振舞を書く

当初とは結構構想が変わってしまいましたが、こんな感じで作ろうかなと思っています。

今日はRSpecを書いてみる

とりあえずuserモデルに書いてみよう

バリデーションなどを考えつつ・・・

describe User do

  describe "バリデーション" do
    before(:each) do
      @user = User.new
      @user.name = "test"
      @user.mail_address = "test@test.com"
      @user.password = "password"
      @user.skype_id = "test_id"
    end

    it "save success!" do
      @user.save.should be_true
    end

    it "name length=40 save success" do
      @user.name = "123456789012345678901234567890123456789"
      @user.save.should be_true
    end

    it "name length=41 save error" do
      @user.name = "12345678901234567890123456789012345678901"
      @user.save.should be_false
    end

    it "mail_address length=80 save success" do
      @user.mail_address = "12345678901234567890123456789012345678901234567890123456789012345678901234567890"
      @user.save.should be_true
    end

    it "mail_address length=81 save error" do
      @user.mail_address = "123456789012345678901234567890123456789012345678901234567890123456789012345678901"
      @user.save.should be_false
    end

    it "skype_id length=40 save success" do
      @user.skype_id = "1234567890123456789012345678901234567890"
      @user.save.should be_true
    end

    it "skype_id length=41 save error" do
      @user.skype_id = "12345678901234567890123456789012345678901"
      @user.save.should be_false
    end
  end
end

とりあえずこんな感じになった。

ruby script/spec -cfs spec/models/user_spec.rb

実行すると…

User バリデーション
- save success!
- name length=40 save success
- name length=41 save error (FAILED - 1)
- mail_address length=80 save success
- mail_address length=81 save error (FAILED - 2)
- skype_id length=40 save success
- skype_id length=41 save error (FAILED - 3)

1)
'User バリデーション name length=41 save error' FAILED
expected false, got true
./spec/models/user_spec.rb:25:
script/spec:10:

2)
'User バリデーション mail_address length=81 save error' FAILED
expected false, got true
./spec/models/user_spec.rb:35:
script/spec:10:

3)
'User バリデーション skype_id length=41 save error' FAILED
expected false, got true
./spec/models/user_spec.rb:45:
script/spec:10:

Finished in 0.108239 seconds

7 examples, 3 failures

ということで

この場合はこういう結果が返ってくるというのが

振舞

これが全て成功すればOK

そうすると、デグレしてないか分かるもんね!

Railsでアプリを作る その4 DB設計

最低限のDB構成

  • Users
    • id
    • name string(varchar)
    • password string(varchar)
    • mail_address string(varchar)
    • is_admin boolean [false]
    • skype_id string(varchar)
  • Orders
    • date Date [ Date.today ]
    • bigsize boolean [ false ]
    • user_id int

[ ]内はデフォルト値
NULLは許容しない。

この設定で先日作ったmigrateファイルを編集する。

Users

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.column :name, :string, :null => :false
      t.column :password, :string, :null => :false
      t.column :mail_address, :string, :null => :false
      t.column :is_admin, :boolean, :default => false
      t.column :skype_id, :string
      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end

Orders

class CreateOrders < ActiveRecord::Migration
  def self.up
    create_table :orders do |t|
      t.column :date, :Date, :null => false
      t.column :bigsize, :boolean, :null => false, :default => false
      t.column :user_id, :integer, :null => false
      t.timestamps
    end
  end

  def self.down
    drop_table :orders
  end
end

Railsでアプリを作る その2 RSpec導入

BBD

開発手法の一種
BDD(Behaviour Driven Development)
ポリシーとして
「ベヒイビア(振る舞い)を書いて仕様を設計する。」
BDDでは必ず仕様(spec)コードを書いてから実際のコーディングを行う。

これによって仕様に沿って作られているかがわかる。
ただし、このスペックコードが間違っている場合は救いようがない。
これに関してはペアプログラミングなどで注意して行う必要がある。

RSpec

RubyのBBD用ツール
詳しくはhttp://jp.rubyist.net/magazine/?0021-Rspec:こちら
パッケージが用意されているので導入が簡単である。

RSpecの導入

gem install rspec
gem install rspec-rails

プロジェクトへ追加

プロジェクトのルートディレクトリへ移動
(今回はorderという名前)
コマンド

cd order
ruby script/generate rspec

実行結果

ruby script/generate rspec
      exists  lib/tasks
      create  lib/tasks/rspec.rake
      create  script/autospec
      create  script/spec
      create  spec
      create  spec/rcov.opts
      create  spec/spec.opts
      create  spec/spec_helper.rb

導入終わり!

この時点でバージョンはどちらも1.2.9でした。
Windowsだと話はまた変わってくるかもしれませんね。

つづく