2014年2月24日月曜日

DevNomi in 梅村


DevNomiを六本木の梅村でやりました。
メンバーは、以下。
@s_banban @nekoasuka @ItagakiShintaro @snsk @hinac0

とにかく、楽しかった!
ソフトウェア開発の楽しさ知りたい人、思い出したい人は俺んトコこい!

@snskの「楽しく学ぶJavaScript」


15:00~18:00(30分くらい延長したかな。)は、@snskさんによるJavaScript入門をやりました。

正直、「んー、for, ifから入って、fizzbuzzかぁ。これは、ちょっとDevNomiはきついかなぁ。」と思ってました。
でも、所々、深い話もしてくれるので、まぁいいかくらいの感じで聞いてたんですが、途中、彼はすごいことを言いました。

大丈夫、絶対みんな書けるようになる。

おいおい、カッコよすぎだろう!!!

DevNomi


19:30位~22:15は、DevNomi。
酒を飲み、鍋をつつきながら、くじが当たったペアはコードを書く。
ペアプロも、テスト自動化の大切さも、人のコードの読み取りも、自然に学べちゃいます。
DevNomiでは、こんな会話が繰り広げられます。


「アスカくんのロジック変化球すぎるよー」

とか

「あ、こうしたらいけるよー」

とか

「あれっ、いけると思ったけど、このパターンのときダメじゃん」

とかとか


現場でもあるよね。
DevNomiはそれを楽しく、ギュッと凝縮して体験できるのがすごい!(自画自賛(^^))

あと、本当に、個性がでる!
@snskさんは、丁寧に丁寧に説明するし、自分がナビゲーターじゃないときも様子をみてて、ホントに面倒見がいい。
@nekoasukaくんは、盛り上げ役。
女性陣(@s_banban @hinac0)は、とっても真面目。
自分は、いいかげん。。。

結果


2週して、なんと、全員がGreen化を体験!
これは、またやらないとだめでしょう。
テスト編もあるので、また頼みますよ、@snskさん!

2014年2月17日月曜日

Sublime TextでJavaScriptを書くための環境設定

Sublime TextでJavaScriptを書くための環境設定メモです。
以下はwindowsを想定していますが、Macなどでも基本は同じです。

1.Sublime Textをインストール

以下からダウンロードしてインストールします。

http://www.sublimetext.com/

2.Package Controlをインストール

以下のURLを開いて、SUBLIME TEXT 2枠内のPythonコードをコピーします。

https://sublime.wbond.net/installation#st2

sublimeエディターのメニューからViewShow Consoleを選択し、入力欄に上記をペーストし、Enterします
sublimeエディターを再起動します。

3.Node.jsのインストール(JSHintを動かすため)

以下のURLの「INSTALL」ボタンをクリックし、インストーラをダウンロード、実行します。


4.JSHint(規約チェックツール)のインストール

コマンドプロンプトで以下のコマンドを実行します。

npm install jshint -g

5.JSHintの動作確認

JavaScriptファイル「sample.js」を次のとおり作成します。

name = 'test';
console.log(name)
window.open()
 
コマンドプロンプトで、以下のコマンドを実行します。

jshint sample.js

出力結果:
sample.js: line 2, col 18, Missing semicolon.
sample.js: line 3, col 14, Missing semicolon.

6.SublimeへのJSHint Packageのインストール

  1. PreferencesPackage Controlを選択し、メニューからInstall Packageを選択します。
  2. 入力欄にjs gutter と入力し、JSHint Gutterを選択します。
    ※エディタの一番下をみておくと、インストール中であることがわかります。
  3. Tools JSHintSet node pathを選択します。
  4. ファイルが開くので、次のように編集して保存します(node.exeのパスは環境に合わせてください。)。

    "node_path": "C:/Program Files/nodejs/node.exe"
  5. Sublimeを再起動します。
  6. sample.jsファイルを開いて、ToolsJSHintLint Codeを実行します。
  7. 構文エラーが表示されることを確認します。


7.JS Prettify(整形ツール)のインストール

6と同様に、Package Control で HTML-CSS-JS Prettify をインストールします。エディター画面上で右クリックして、HTML/CSS/JS Prettify → Prettify Codeをクリックすると自動で整形されます。


8.Sublimeのカスタマイズ

基本的なものだけ記載します。
後は、自分で色々いじってみてください。


カラーテーマの変更

Preferences→Color Schemeで色のテーマを変えられます。
ちなみに、私は、Solarized(Light)が目にやさしくてお気に入りです。
(黒バックの方がプロっぽいけど、どうもあわない。)


サイドバー

View→Side Barでサイドバーを表示します。
sublimeエディターにフォルダーごとドラッグ&ドロップします。
そうすると、サイドバーにエクスプローラー的なものが表示されます。
たくさんのファイルをいじるときは便利です。


ジャンプと検索

Ctr-p + : + n でn行目にジャンプできます。
Ctr-p + @ でメソッド名などで検索できます。
もちろん、Ctr-fで普通の検索もできます。


画面分割

View→Layoutで画面分割できます
ファイル比較などするときに便利です。


Vim化

私には完全に不要なのですが、お好きな方もいらっしゃるようなので。。。
Preferences→Settings - Userを開きます。
以下を追加します。
(Defaultでは"ignored_packages": ["Vintage"]でVim化を無視するようになっています。)


"ignored_packages":  []


その他

    Preferences→Settings - Defaultを開きます。
    気になる部分をコピーします。
    Preferences→Settings - Userを開き、ペーストします。
    なんとなく、いじってみます。
    で、どうなるか試してみます。
    こんな感じで設定を変えます。


    2014年2月12日水曜日

    「TDD LOVE!」(DevLOVE#157)に参加してきました。

     「Growing Learning Feedback Loop, Guided by TDD & Patterns」家永英治氏

    TDDの範囲はいろいろあるけど、今日の話は、Acceptance TestingとUnit Testingの2重ループがメイン。
    TDDでは、素早く、小さく失敗し、学習しながら前に進むメカニズムが重要。
    オートメーションは、学習フィードバックループの回転を加速させる。

    TDDのエントリーポイント

    • 1-2人で、対象を絞って実施
    • PO-開発者の受け入れテストから始める
    • チームでScrumに取り組み、デモを始める

    学習ループのコアとなる3つの問い

    • Why:ユーザーがほしい?
    • What:期待する振る舞いは何?
    • How:どうすると読みやすい?
    この問いに答えるのは人。

    初手で行われているコツ

    • テスティングフレームワークの準備
    • まねて学ぶ
    • Red-Green-Refactorのリズム
    • 素振り(写経)
    • ちょと実装-テスト
    • TDDBCに参加する
    • 1人でひっそり
    • 気の合う同僚
    • 界王拳(自発的残業)
    • 個人のタスクボード
    • タイムボックストライアル
    • 適切な時期
    TDDBC、素振り(写経)で準備は王道!
    「リーダブルコード」も読んでみよう。
    TDDを学びあう同僚を見つけよう。

    書籍「リーン開発の現場」からのヒント

    • 新機能は普通にTDD。
    • 重要なものからリストアップ。
    • End to Endよりにテストを補強。

    その他のヒント


    • 書籍「FEARLESS CHANGE」から
    • 書籍「xUnit Test Pattern」から

    「テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜」福井修氏




    るびま に詳しく書いています。
    今日はポイントだけ。

    DSL(ドメイン特化言語)

    • Chef
    • Fluentd
    • RSpec
    • Gherkin
    • Capybara
    今日は、GherkinとCapybara中心に。

    結論を先に

    • Rubyの進んだテストツールを使うと自動テストもおいしくええとこどりできる
    • エンドツーエンド(e2e)は、Gherkin+Capybara+Turnipが有利
    • 外部テスト管理もExcelからWebDBに

    視点

    • 書籍「継続的デリバリー」のテスト自動化ピラミッド
    • テストのWモデル
    • IPA「高信頼化ソフトウェアのための開発手法ガイドブック」
    • テストの種類(単体、結合、システム、受け入れ、回帰)
    • 内部テストと外部テスト(e2e)
    • DevOpsでDevはカジュアルにテスト、Optの前にフォーマルにテスト

    Unitテスト自動化→e2eテスト自動化

    • Gherkinでベタからメタに
    • CucumberとTurnip

    gherkin書式

    • TDD/BDD:プログラマー視点
    • e2e:ユーザー視点
    どちらも必要。この境界を書けるのがgherkin書式。
    gherkin書式の導入でプログラマ以外がテストを書ける。
    1. 機能feature
    2. シナリオ
    3. ステップ
    .featureファイルとxx_step.rbファイルがあれば自動化できる。
    step.rbファイルを記述するには、Capybara, Rspecの理解が必要。

    テストコンテンツの管理

    ExcelからWebDBへ。
    Rtestdeck:Webから操作できるGUIツール化。

    質問&相談

    • TDDを依頼するとすごい見積もりに。。。どうすれば?
      ->1週間とか試してすり合わせてから全体を見積もるとよい。
      ->お試しで小さくやってみるところからはじめるとよい。
    • Turnipを使って、DBを使うプログラムのテストはどうするのがよい?
      ->DBの設定は内部テスト。Turnipは外部テストなので、レイヤーが違う。
    • POがgherkin書式で書いてくれない。エンジニアがやるならメリットないのでは?
      ->作った人じゃない第3者が書くことが重要。
      ->ボトムアップかトップダウンかが違う。
      ->エンジニアが書いて、レビューしてもらうパターンもある。
      ->ビジネスサイドとエンジニアがペアでやるのもよい。
    • リファクタリングをどこまでやったらいいか基準は持ってる?
      ->同僚に求められる暗黙の基準、期待はクリアする
      ->完璧なリファクタリングは無理。納期などの制約に応じてやるしかない。
      ->理想へのシナリオを用意して、空いた時間にやったこともあった。
    • 同僚がクリーンって言ってくれるまでやってたら、お客様がそこまで要らないと言ったら?
      ->ホントはダメだけど、仕方ないよねというのはある。
      ->後々、お客様にも痛みがあるので、考えながらやるしかない。
      ->制約の中でやるので、あきらめることも必要。
    • 年度が変わったときなど、データをうまく扱うにはどうしたら?
      ->前提データをどれだけ簡潔にメンテできるようにするかが重要。
      ->時間をコントロールする道具も必要。
      ->テストを維持するにはコストが必要。コードを変えるならテストもメンテが必要。
    • テストの文化を広めるときに具体的にどうすれば?
      ->困っていることを話すことから。
      ->TDDBCに2,3人でいってみるのがおすすめ。
    • TDDを社内全体に広めるときにはどうすれば?
      ->そこまで狙わなくても。。。TDDBCに参加しましたとか少しずつ。
      ->「FEARLESS CHANGE」にいろいろあるけど、まずは自分のまわりから。

    2014年2月2日日曜日

    DevNomi(テスト編) in BOOKSHELF CAFE



    アジャイル開発のプロジェクトでスプリント0が終わった!
    ということで、打ち上げ+本格的な開発に向けての決起大会を兼ねて、DevNomi(テスト編)をやりました。


    DevNomi(テスト編)について




    メンバー構成 

    • 開発者:4名
    • デザイナー:2名
    • DevNomiディレクター(笑):1名


    結果

    1時間くらいやって、テストケースを2つしかできませんでした。。。
    「酔っ払って、計算出来ないよー」とのこと。
    ということで、次回に引き続きですね。


    賞品はあげられないので、参加賞として、全員にHolsteeのマニフェストを印刷したカードをプレゼントしました。
    (アジャイルエバンジェリスト平鍋さんのマネです。)


    会場(Bookshelf Cafe)について



    iPadが使いたい放題で、プロジェクターも使えるとてもすてきな場所でした。
    飲み物もこだわり系で、たくさん飲み食いするより、おいしいものを少しっていうタイプの私には最適!
    今後、IT系の勉強会を開く予定だそうなので、要チェックです。