タグ

ブックマーク / www.ryuzee.com (48)

  • 資料公開 Chefの下準備 (#DevLove Chef de DevOps)

    2012年7月21日に大崎のフューチャーアーキテクトさんで行われたChef de DevOpsで話してきましたのでその際の資料を公開しておきます。 なお、内容については2011年12月くらいに行ったワンクリックデプロイ勉強会の資料とほとんど同じですので、以前にご覧になっている方にとっては目新しいものは何もありません。 新作作りたかったのですがごめんなさい。 言いたかったことは色々あったりしますが、道具としてのツールを使いこなすのはプロとしてとても重要であるのは前提とした上で、それでも単にツール単体の話をする前に、もうちょっと大きな全体像をとらえる必要があるということです(仕事じゃないなら好きにすれば良いですがね) 目先の効率化ももちろん重要ですが、それがプロダクト全体に対してどう作用するのかというのを理解せずに進めてしまうと、周りの理解も得られませんし、長期的に物事をよりよくするという流れ

    資料公開 Chefの下準備 (#DevLove Chef de DevOps)
    okinaka
    okinaka 2012/07/23
  • CakePHP2.0+Jenkinsで継続的インテグレーションを行う方法

    みなさんこんにちは。@ryuzeeです。 CakePHP2.0になってテスティングフレームワークがSimpleTestからPHPUnitに変わったことで、以前に比べると大分簡単にはなっていますが、まとまった情報が少ないので整理しておきます。 事前準備JenkinsのインストールおよびCIサーバへのPHPのインストールは済ませておいてください。 CakePHP2.0でCIを行う場合は、以前のようにStagehand_TestRunnerを使ったりPhingを使う必要はありません(Phingは以前も使わない手もあった)が、PHPUnit、Xdebugのインストールは行なっておきます。 また今後利用するであろう、PMDやCPD等も導入しておくと良いでしょう。 なお、今回の作業はCentOS5.7上でPHP5.3.8を利用して行いました。 PHP関連のパッケージ導入 pecl install xd

    CakePHP2.0+Jenkinsで継続的インテグレーションを行う方法
  • 自己組織化やTimeboxを理解する簡単なワークショップ

    An Agile Game - Management by Walking Aroundより。以下に紹介するワークショップは認定スクラムマスター研修などでもよく行われるもので、自分の会社でも簡単にできるので是非やってみていただきたい。 コーチやトレーナーやスクラムマスターがチームを教育するための簡単なゲームを紹介しよう。このゲームは時間もかからず簡単な体を使うもので、単純なルールやタイムボックスによって自己組織化された環境がつくられる様を示している。自己組織化された環境はリスクを軽減し、エンゲージメントやスピードや柔軟性を向上させる。 概要と事前準備所要時間:感想や報告を含めて10分〜15分対象人数:10人〜50人準備:テーブルや椅子等の物が置かれている十分に広い部屋、部屋の中にゲームの参加者が十分動けるだけのエリアの境界線を引くためのマスキングテープ。そしてタイマーラウンド1のやり方参加

    自己組織化やTimeboxを理解する簡単なワークショップ
    okinaka
    okinaka 2012/05/08
  • ベロシティに対する誤解 | Ryuzee.com

    みなさんこんにちは。@ryuzeeです。 スクラムをはじめとしたアジャイル開発の見積りでよく使われるのがストーリーポイントです。 ストーリーポイントは研修でもよく聞かれるテーマであるとともに、誤解も多いものなので、今回基からまとめて解説したいと思います。 なお、文脈の前提として、スクラムでの活用を想定しています。 ストーリーポイントとは?まずは、ストーリーポイントとは何なのかを見ていきましょう。 書籍『アジャイルな見積りと計画づくり ー価値あるソフトウェアを育てる概念と技法』(Mike Cohn 著、安井力、角谷信太郎 訳、マイナビ出版、2009/1/29)の61ページから62ページにかけて、ストーリーポイントは以下のように定義されています。 ストーリーポイントとは、ユーザーストーリーやフィーチャ、その他の作業の大きさをあらわす単位である。 ストーリーポイントを使った見積りではそのような

    ベロシティに対する誤解 | Ryuzee.com
    okinaka
    okinaka 2012/04/02
  • Vagrantがとうとう正式版に

    自動化の強い味方であるVagrantが先日とうとうバージョン1.0.0の正式版になりました。 VagrantはOracle VirtualBoxを利用した仮想マシンをコマンドラインから作成してくれるソフトウェアです。 設定ファイルをRubyで書くことができ、Chef等とも連携できるので、開発環境をコマンドライン一発で作成することができます。仮想マシンを捨ててしまってもいつでも再構築できること、誰のところにでもすぐ同じ状態に展開できることは開発を進める上で非常にメリットがあります。 例えばVagrantはNokiaやYammer等での開発にも使われています。 僕の場合だと、VagrantとChef Soloを使ってVagrantのインスタンス作成時に必要なミドルウェアのインストールやインスタンスの設定を自動で行い、後はCapistranoを使ってアプリケーションをデプロイするという使い方をし

    Vagrantがとうとう正式版に
    okinaka
    okinaka 2012/03/12
    Vagrant のプラグインは避け、なるべく素の状態で利用したほうがよいと思う。
  • 大きなリリースの際にチェックすべき34のこと

    以前に作っておいた大きめなリリースをする際にチェックしておくべきことのリストが役に立ちそうなので公開しておきます。 僕の場合は普段はワンクリックデプロイが多いんだけど、かなり大掛かりな変更をするケースが年に数回あったりするので、その際にこういうリストを使ってリリース計画をチェックしています。(もちろん大掛かりなリリースでもワンクリックでできるのに越したことはないし、そもそもビッグバンリリースにならないようにできるだけ小さい単位で頻繁にリリースできるに越したこともない) 体制当日の体制は決まっているか夜間立会いの場合、日中の営業時間の対応体制は決まっているか翌営業日以降の体制は決まっているか連絡担当と作業担当は分離されているか作業担当はペア作業になっているか。作業者と確認者を定めているか顧客の連絡先を抑えているか顧客の連絡順番を抑えているか、お客様の当日の所在を抑えているか顧客への連絡タイミ

    大きなリリースの際にチェックすべき34のこと
    okinaka
    okinaka 2012/02/03
  • CakePHPでファイル出力機能のテストをする

    みなさんこんにちは。@ryuzeeです。 CakePHPでファイル出力系の機能のテストを行う場合のTipsをご紹介します。 例えばコントローラーの中でこんなファイル出力系の機能があったとします。 function output() { $this->lauout = null; $filename = "test.txt"; header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-T

    CakePHPでファイル出力機能のテストをする
  • 5分で分かるデプロイ自動化への道

    12月20日に第1回ワンクリックデプロイ勉強会で、デプロイの自動化について好き勝手に喋ったりデモしたりする予定なのですが、当日話す内容の概略について以下に載せておきます。 以下にあげることをやっておけばデプロイ自動化、ワンクリックデプロイはそんなに遠くないところにあると思います。 ソースコードのバージョン管理いわずもがな。全ての起点はここにあるコードの共同所有の原則への理解このソースコードは番環境または開発環境などで同じように動作しなければならないテストを書く習慣、コミット前に他のテストも含めて通してからコミットする習慣設定ファイルのバージョン管理環境によって異なる設定値(接続先データベース情報など)が書かれた設定ファイルもバージョン管理する開発環境用、ステージング環境用、番環境用などに分けて定義し、容易に切り替え可能にする番環境に配置する際に、アプリケーションの各所を書き換えなけれ

    5分で分かるデプロイ自動化への道
    okinaka
    okinaka 2011/11/30
    1つずつクリアして行こう
  • WebistranoでGUIからの1Clickデプロイを実現する

    WebistranoはCapistranoのWebフロントエンドであり、Web画面上からCapistranoを実行することができる。 これを利用することで、複数のプロジェクトを一括で管理したり、レシピを共用したりすることができ、デプロイの履歴を管理することも可能になる。かなりオススメ。なお動作させるにはRailsとなんらかのDBMSが動作する環境が必要だ。 Webistranoの入手Githubにホスティングされている。 適当なディレクトリにてgit clone https://github.com/peritor/webistrano.git すればOKだ。 インストール動作確認は僕のMacBook Pro (OS X Lion)で行った。なお既にMAMPによってMySQLが導入されていたのでそれを使っている。MAMP上でのrubymysql接続用ライブラリの導入sudo gem in

    WebistranoでGUIからの1Clickデプロイを実現する
    okinaka
    okinaka 2011/11/24
  • VagrantとAmazon EC2でVagrantファイルを共用する

    みなさんこんにちは。@ryuzeeです。 誰も興味なさそうなVagrantシリーズの第四弾。 さて昨日まではVagrantとChef Soloを組み合わせるパターンについて説明を行ったわけだが、せっかくローカルの環境構築を自動化できたので、これらの設定ファイルを利用してAmazon EC2上にも同じように環境を構築できるようにしよう。結構手順は長いが既にAmazon EC2を使っている人は色々飛ばせる手順がある。 なお今回の話は母艦がMacOS XもしくはLinux系OSで、かつ作成するインスタンスがUbuntuの場合のみ適用可能だ。インスタンスが他のLinux系OSの場合はbootstrapを書き換える必要がある。 EC2 API Toolsの設定EC2 APIのダウンロードEC2 API ToolsはAmazon EC2をコマンドラインから操作できる便利ツールだ。 2011/11/9時

    VagrantとAmazon EC2でVagrantファイルを共用する
    okinaka
    okinaka 2011/11/10
    「誰も興味なさそうなVagrantシリーズ」 Windows では、Provisioning がうまく動かないからかなぁ。
  • VagrantとChef Soloを組み合わせて環境構築を自動化する

    みなさんこんにちは。@ryuzeeです。 前回まではVagrantを使ってVirtualBoxの仮想インスタンスを簡単の構築するところまで説明した。 ただそれだけだったら予め作成しておいたイメージをコピーするのとたいして変わりがないので、あまり有難味を感じないかもしれないが、ここからが番だ。 Vagrantの特徴として、PuppetやChefやChef Soloと組み合わせてインフラ部分の設定を仮想インスタンスの生成時に行うことができる。 流れとしては以下のようになる。 この原理上、仮想インスタンス側にVirtualBoxのバージョンと適合したVirtualBox Additionsがインストールされている必要がある。(ネット上から落としたboxの場合にはこれが古い可能性がある) 実際にためしてみよう今回はCentOS5を利用してDNSを設定するところを自動化する。 事前準備Vagran

    VagrantとChef Soloを組み合わせて環境構築を自動化する
  • VagrantをPluginで拡張する

    みなさんこんにちは。@ryuzeeです。 前回の話(Vagrantで簡単仮想マシン構築)の続きです。 Vagrantはプラグインを利用することによってvagrantコマンドを拡張することができます。 ここでは入れておくと便利な2つのプラグインを紹介します。 VagrantboxesVagrantboxesは http://www.vagrantbox.es/ に掲載されているVagrant用のboxに関する情報を取得したり、ダイレクトにboxを追加できるプラグイン。いちいちboxの追加の際に元となるOSのイメージを捜し回らなくても良くなる。 インストールまず僕の環境(MacOS X Lion)だとrakeのバージョンが低かったのであげておく

    VagrantをPluginで拡張する
  • Doctrine1でDBのマイグレーションを行う

    みなさんこんにちは。@ryuzeeです。 アジャイルな開発を行って頻繁にデータベースのスキーマを変更したり頻繁にプロダクション環境にリリースしたりCIサーバで継続的にテストをしようとすると、データベース回りの変更をきちんと管理していくというのが非常に重要になります。 アマチュア的なアプローチだと毎回差分のsql文を書いて手でデータベースにわせていくのですが、以下のような問題があります。 複数のsqlを書いたファイルがあったとして、データベースの状態は実行順序に依存する可能性があるSQLRDBMSの仕様に依存する複数人で開発していると変更点を開発メンバーが認識して追随しているか判別しにくいCREATEやALTERコマンドは書いていても、もとに戻すことは想定していないことが多いので、前バージョンに戻しにくい似た話で、あるリリースの時点でデータベースがどういうスキーマだったのかを再現するのが

    Doctrine1でDBのマイグレーションを行う
    okinaka
    okinaka 2011/10/19
  • 継続的デリバリーの8つの原則

    継続的デリバリーの8つの原則1. ソフトウェアのリリースやデプロイのプロセスは繰り返し可能であり信頼性が高い必要がある。このことは2つめの原則にたどり着く。 2. 全てを自動化する!手動のデプロイは決して繰り返し可能で信頼性が高いことには成り得ない。 あなたは繰り返し行う全てのタスクを自動化することについて気で投資する必要がある。そしてこうすることによって信頼性に繋がっていくのだ。 3. なにか難しかったり苦痛なことがあったら、それを何度もやってみる表面的には、ばかげた話のように聞こえるかもしれない。しかし基的にこれが意味していることは、苦痛であることを頻繁に行うことは、あなたがそれを改善し、多分自動化する方向に導いてくれるはずだ。そして最終的には苦痛がなくなり容易に行うことができるようになるだろう。 データベースのスキーマをデプロイすることを例にとってみてみよう。もしこれがトリッキー

    継続的デリバリーの8つの原則
    okinaka
    okinaka 2011/08/12
  • PHPUnitのアンチパターンとベストプラクティス

    みなさんこんにちは。@ryuzeeです。 SlideShareを徘徊していたらPHPUnitのアンチパターン・ベストプラクティスに関する素晴らしいスライドを見つけたので内容を抜粋で紹介します。 1. テストの中で何もテストしていない class FooTest extends PHPUnit_Framework_TestCase { public function testSomething() { $foo = new Foo; $foo->doSomething(new Bar); } } こういうテスト。どこにもアサーションがなくて何もチェックしていません。 $foo->doSomethingの戻り値を検証しないならなんの意味もありません。 純粋にTDDをしていれば、テストコード作成→テスト実行でRed→プロダクションコード作成→テスト実行でGreenなのでこういうテストは登場しませ

    PHPUnitのアンチパターンとベストプラクティス
    okinaka
    okinaka 2011/05/05
  • [Agile]Scrumで開発する際に最初にやるべきこと | Ryuzee.com

    スクラムを利用してプロジェクトを進める際に、最初にやっておくべきことをまとめておく。 もちろん全プロジェクトでこれを全部やらなきゃいけないわけではない。そのあたりはコンテキスト依存ということで。 プロダクトゴールや価値の明確化 これから作るもののビジネス価値や製品ビジョンを明確にする プロダクトバックログの作成 もちろん全部が揃っている必要はないが、優先度が高いストーリーは明確に存在するはず。 バックログ項目の優先順位付け バックログ項目の見積もり バックログ項目の詳細化 個々のスプリントの開始前には優先順位の付け直しや見積もりの変更が行われるので、全てを詳細まで行ってはいけない。あくまで初期の1〜2スプリントが実施できる程度にとどめること。アップフロントでの計画を増やしすぎない。要求は必ず変化する。 おおよそのリリースプランニング ロールの明確化 プロダクトオーナーは誰?、スクラムマスタ

    [Agile]Scrumで開発する際に最初にやるべきこと | Ryuzee.com
    okinaka
    okinaka 2011/04/04
  • BehatとSeleniumを組み合わせ受け入れテストを自動化する

    みなさんこんにちは。@ryuzeeです。 Behatは良さそうなので引き続き検証しています。 今回は、BehatとSeleniumを組み合わせて、受け入れテスト型のテストを自動化してみたので、その方法について説明しましょう。 なお、前回の記事を読まれていない場合はまずそちらを参照してください。 PHPでBDD(Behavior Driven Development)する方法 Seleniumの課題僕が関わっている案件では受入テストを自動化しているケースももちろんあって、その際はPHPUnitとSeleniumを組み合わせています。 このテストには以下のような課題があります。 画面の操作をするphpコードが大量にあって、ソースを見ただけでは何をしているのか分かりにくいSeleniumは操作に画面の要素名利用するため、例えばサイトのデザインを大幅に変えたりすると、テストの中身も大幅に書き換えな

    BehatとSeleniumを組み合わせ受け入れテストを自動化する
  • CakePHP1.3でテストのカバレージを取得する方法

    以前CakePHP1.2についての手順を書いたが、基的な流れは変わらない。 今回の環境はCentOS5.5。 必要なものをインストール xdebugのインストール 最新は2.1.0で、以前はバージョン指定してモジュール取ってきて自前コンパイルしないと動作しなかったが、現在のバージョンは問題ない。 pecl install xdebug SimpleTestの拡張機能のインストール 僕の環境だけかもしれないが、SimpleTestまるごとをチェックアウトして、CakePHPに突っ込んだところエラーが出て動作しなかったので、拡張機能のみ別途インストールする。 svn co https://simpletest.svn.sourceforge.net/svnroot/simpletest/simpletest/trunk/extensions/coverage 取得したらcoverageフォル

    CakePHP1.3でテストのカバレージを取得する方法
  • Hudson+phpmdでPHPコードの問題を自動検出する方法

    Hudson+PHPシリーズです(Javaとか他の言語でもいけるはずです)。 phpmdって何?phpmdはPHP Mess Ditectorの略で、PHPコードの潜在的なバグになりそうな箇所や実装上の問題を検出してくれるツールです。 例えば未使用の変数の指摘、多数のpublicメソッドのある巨大クラスの検出、一文字変数等もこのツールで検出可能です。 詳細はhttp://phpmd.org/about.htmlを参照してください。 phpmdのインストールこれは簡単で、いつものようにpearコマンドでさくっと入ります pear channel-discover pear.pdepend.org pear install --alldeps pdepend/PHP_Depend-beta pear channel-discover pear.phpmd.org pear channel-di

    Hudson+phpmdでPHPコードの問題を自動検出する方法
  • CakePHPアプリをHudsonで継続的インテグレーションする方法

    この記事はCakePHP1.2系またら1.3系を対象としており、CakePHP2.0系では別のアプローチになります。 不思議なことにCakePHPアプリの開発でHudson使って継続的インテグレーションしている事例をほとんど見たことがないんだけど、個人的にはPHPアプリだって全部HudsonでCIすべきと思っているのでやってみた。 (ちなみに最近までphpUnderControlでCIしていた) 概略 CakePHPアプリでCIやろうとして問題になるのは、 CakePHPでのテストライブラリがSimpleTestでありJUnit互換のテスト結果を出力できないこと さらにSimpleTestでは一応XMLでの結果出力ができるのに、CakePHPreporterにcake_xml_reporterとかが無くて、html出力かテキスト出力しかできない という2点にあるので、この2点をクリアする

    CakePHPアプリをHudsonで継続的インテグレーションする方法