タグ

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

  • veeweeを使ってVagrant用のboxを自分で作る方法

    Vagrant用のbox(OSのテンプレート)はhttp://www.vagrantbox.es/などで多数配布されています。 とりあえず試してみる分にはこちらにあるものを使ってみるのも良いですが、実際に開発で使おうとするといくつか問題があります。 そのOSに怪しいプログラムがインストールされているかもしれない初期の設定が自分たちの環境と大きく乖離している。例えばyumのレポジトリが多数追加されたりしているVirtualBoxのGuestAdditionsなどのバージョンが古くてそもそも正しく動かないかもしれないこういったことを避けるためには、自分たちでセキュアなboxを作るのが良いと思います。ここではveeweeを使って、自分用のboxを作る方法を紹介します。 veeweeのインストールveeweeはrubyで書かれたツールで、vagrantをはじめとする多くの仮想化ツール用にOSの雛形

    veeweeを使ってVagrant用のboxを自分で作る方法
  • Vagrantの必須プラグインSaharaをVagrant 1.1に対応させました

    Saharaはコマンドラインから仮想マシンの状態をsandboxモード(変更をいつでも巻き戻せる)に変更できるプラグインです。これを使うことで、例えばchefのレシピ作成やミドルウェアのインストールの評価やリリース手順の確認や大規模な環境変更の評価などがやりやすくなります。Vagrantを使っている人であれば必携のプラグインと言えます。 そんなSaharaですが、開発が停止しているような感じもあり、先日出たVagrant 1.1になかなか対応しそうにないように見えたので、自分でVagrant 1.1に対応させてみました。 なお、かなり大量にソースを書き換えている(作り直しに結構近い気がする)のと、Rubyはあんまり知らない人なので、ご利用は自己責任でお願いしますー。レポジトリはこちらです→ https://github.com/ryuzee/sahara インストール gemにはしていない

    Vagrantの必須プラグインSaharaをVagrant 1.1に対応させました
  • VagrantのboxのVBoxGuestAdditionsを超簡単に最新版に更新する方法

    小ネタです。 Vagrantを使って色々やっているときにちょっと困ることとして以下のようなことがあります。 VirtualBox体が頻繁にバージョンアップするので、boxのGuestAdditionのバージョンとVirtualBoxが要求するバージョンがすぐにずれるvagrantboxesをはじめとする外部で公開されているboxをダウンロードして使おうとすると、GuestAdditionのバージョンが古い解決する方法はもちろんboxにインストールされているGuestAdditionを最新版に入れ替えることなのですが、これを手作業でやると結構面倒です。すなわちインスタンスを起動して、GuestAdditionのisoイメージをマウントしてインストーラーをどっかにコピーし、自分でビルドしてインストールしなければならないわけです。そもそも、GuestAdditionのisoイメージどこだっけ?

    VagrantのboxのVBoxGuestAdditionsを超簡単に最新版に更新する方法
  • opscodeのphpのcookbookを解説してみる

    みなさんお料理頑張ってますか?僕は毎日cookbookのrecipeみながらkitchenでknife使ってChef気分です(意味不明)。 今日はopscodeが提供しているphpのcookbookをみて中身を解説したいと思います。 コードはここです。https://github.com/opscode-cookbooks/php(なお、build-essentialとxmlとmysqlのcookbookに依存性がありますので、それぞれ入手してください) この記事の目的は、標準的なcookbookの構成の把握とopscodeでのcookbookの作り方の紹介とそれを利用したカスタマイズ方法を紹介することです。 ディレクトリ構成まずソースコードのディレクトリ構成をみてみます。当たり前ですが通常のcookbookのディレクトリ構成と同じです。├── CHANGELOG.md ├── CONTR

    opscodeのphpのcookbookを解説してみる
  • Vagrantで簡単仮想マシン構築

    VagrantはOracle VirtualBoxを利用した仮想マシンをコマンドラインから作成してくれるソフトウェアだ。 設定ファイルをRubyで書くことができ、Chef等とも連携できるので、開発環境をコマンドライン一発で作成することができる。更にはCapistranoと組み合わせてアプリケーションのデプロイも一括で行うことで完全自動でいつでもテスト環境をつくれたりもする。 仮想マシンを捨ててしまってもいつでも再構築できること、誰のところにでもすぐ同じ状態に展開できることは開発を進める上で非常にメリットがある。 以下ではまずはVagrantを利用した簡単な仮想マシン構築の手順を説明する(当に説明したい内容はもっと違う話なのだが追って別のエントリで書いていくことにする) Oracle VirtualBoxのインストールhttps://www.virtualbox.org/にアクセスし左ナビ

    Vagrantで簡単仮想マシン構築
  • CakePHP2アプリケーションをCapistranoでデプロイする

    アプリケーションのデプロイを自動化すべきなのは言うまでもないことです。 一応手動でデプロイを行う場合の問題点について整理しておくと以下になります。 プロジェクトの期間中そして運用に入ってからも何度も手でデプロイするということはとてつもなく多くの時間を手作業に費やすことになるデプロイ先の環境の数が多くなればなるほど作業の時間も増える手作業で作業すると間違えやすい。特に手順が複雑だったり環境が多かったりすると確率は飛躍的にあがるもしデプロイしたアプリケーションに問題があってすぐに戻さなければならない場合に多くの時間がかかる。場合によってはビジネス上の機会損失に繋がる来は価値を生むフィーチャーを実装することに時間をかけたいはずが、こういうことをやっているとどんどん時間がなくなっていきます。また手作業のリスクや消費される時間を恐れてデプロイの回数を減らしてしまうのは、ビジネス側からみると納得いか

    CakePHP2アプリケーションをCapistranoでデプロイする
  • CakePHP2系でマイグレーションを利用する方法

    マイグレーションを使わないで、データベースのスキーマ構成を変更したりすると、特に複数人で開発しているような場合にこんなことが起こったりします。 自分の開発マシンとテストサーバ等でスキーマ構成が違っているさらには他人の開発マシンともスキーマ構成が異なっているしかもどっちがあっているか分からない例えば、みんなが色々変更しているせいで、カラムの順番が入れ子になってたりする番サーバに反映しようとした時に、どの順番にスキーマ変更を行ったらよいか分からない。ソースコードのリリースバージョンと紐付くデータベースの状態がよく分からない。こういう質的でないことに時間を使っては勿体無いので、データベースの構成管理にはマイグレーション機能を使うのが定石です。Railsなんかだと当たり前なのですが、今回はCakePHP2系でマイグレーションを利用する方法を紹介します。 CakeDC Migrationの導入C

    CakePHP2系でマイグレーションを利用する方法
  • CakePHPのアプリのコーディング規約チェックを自動で行う方法

    みなさんこんにちは。@ryuzeeです。 PHPで書かれたソースコードがコーディング規約に準拠しているかどうか確認するには、PHP_CodeSnifferというツールを使うのはよくご存知だと思いますが、今回はCakePHPを使って書いたソースコードの規約をチェックする方法を紹介します。 なお、このような規約チェックはローカル環境で気が向いた時にやるだけではなく、継続的インテグレーションにも組み込んで実施することが望まれます。 PHP_CodeSnifferのインストール特にチャンネルの追加は必要ありません。 インストールが完了すると、phpcsコマンドがインストールされます。 また標準では、Squiz, PEAR, Zend, MySource, PSR1, PSR2 , PHPCS の7個の規約がインストールされます。このうちMySourceは自分でのカスタマイズ用です。 CakePHP

    CakePHPのアプリのコーディング規約チェックを自動で行う方法
  • ReVIEW + Jenkinsでドキュメントを常時ビルドする

    ReVIEWはマークアップ言語でソースを記述することで、html形式やPDF形式の綺麗な体裁の文書を作れるオープンソースのツールです。入手はhttp://github.com/kmuto/review から可能です。例えば = 章 == 節 === 項 * 箇条書き * 箇条書き のような書き方をするとhtmlであれば、それぞれh1〜h3に変換されたり、ulに変換されたりします。PDFの場合は予め規定された体裁に変換されます。 今回は、Windows Azure上の仮想マシン(Ubuntu12LTS)上で、このドキュメントを常時ビルドする方法を紹介します。 ReVIEWのインストールReVIEWは動作にrubyが必要です。また最新版はgithubにて提供されていますので、gitを導入しておきます。 sudo su apt-get install ruby apt-get install g

    ReVIEW + Jenkinsでドキュメントを常時ビルドする
  • Robot Framework + Selenium2Libraryで簡単受け入れテスト | Ryuzee.com

    Robot Frameworkは受け入れテストや受け入れテスト駆動開発(ATDD)に使えるテスティングフレームワーク。 http://code.google.com/p/robotframework/で開発が進められている。 プレインテキストやHTML形式でテストケースを記述できること、pythonまたはjavaによってテストライブラリを作って拡張できることが特徴だ。 ここではRobot FrameworkとSelenium2(WebDriver)を組み合わせて、受け入れテストを自動化する方法について説明する。 WebDriverを単独で使ってWebアプリケーションのエンドツーエンドテストを作る場合、どうしても画面ができてからしかテストケースが作れないというのが大きな問題だ。そのため例えばPHPであればBeHatと組み合わせしたりするのだが、今回の方法は更に簡単だ。 例えば、アジャイルな開

    Robot Framework + Selenium2Libraryで簡単受け入れテスト | Ryuzee.com
  • Selenium + PHPUnitで簡単エンドツーエンドテストを実現する

    ここではSeleniumとPHPUnitを使って簡単にスモークテストを実現する方法を解説します。 基礎的な内容ですが、復習ということで。 下準備FirefoxにSelenium IDEをインストールするSelenium Serverを導入する(※ダウンロードへの直リンクはこちら)どちらもhttp://seleniumhq.org/download/からダウンロード可能です。Selenium IDEを使ったテストケースの作成もうこれはあちこちのサイトで説明されているので特に説明の必要はないでしょう(笑) 簡単に言えば、Firefoxを起動し、さらにSelenium IDEをたちあげて、操作を記録していけば良いだけです。 参考サイト SeleniumでWebアプリケーションテストを自動化 (ちょっと古いですが内容は役にたちます)Selenium IDE日語ドキュメントテストケースを自動で実行

    Selenium + PHPUnitで簡単エンドツーエンドテストを実現する
  • PHPの外部ライブラリの管理にComposerを使う | Ryuzee.com

    みなさんこんにちは。@ryuzeeです。 ComposerはRubyでいうところのBundlerのようなもので、アプリケーションが必要とする外部ライブラリを、そのアプリケーション固有の状態で一元的に管理してくれるツールです。 PHPではPearのようなコマンドを使ってライブラリをインストールすることが一般的ですが、アプリケーションによって必要とするバージョンが違う、といったケースでは問題が起こりやすくなります。 例えば手動でインストールをしていた場合、将来的にライブラリの配布が終わってしまったり、特定のバージョンが配布されなくなると困ってしまいます(したがって、インストールしたバージョンは構成管理の対象とするべきで、常に環境を再現可能にしなければいけません)。 Composerを使うことで、そのような問題からは簡単に解放されます。 なお、ComposerはPHP5.3.2以降で利用可能です

    PHPの外部ライブラリの管理にComposerを使う | Ryuzee.com
    shin1x1
    shin1x1 2012/06/04
  • 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で継続的インテグレーションを行う方法
  • 大きなリリースの際にチェックすべき34のこと

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

    大きなリリースの際にチェックすべき34のこと
  • 【資料公開】ワンクリックデプロイ勉強会

    2011年12月20日に品川の日マイクロソフト社をお借りして、ワンクリックデプロイ勉強会を開催しました。 当初内輪でやろうと思っていたのですが多くの方にご参加いただきありがとうございました。 また、もろもろセッティング頂いた@katzchangと日マイクロソフトの長沢さんありがとうございました。 以下にセッション資料を公開します。 例によって短文での感想を。 セッション開始前にちゃんとRed Bullを飲んでおいたので元気だった最初の会場へのヒアリングで既にワンクリックデプロイをしている人がいるか調査したところいなかった。まぁWebサービス系でやっているところは増えては来ているもののまだ定着フェーズではなさそうな感じユニットテストやJenkinsはかなりの現場で使われている個人的な今日の名言は、「障害発生時に1日でリリースできるなら、普段のリリースも1日にできるはずだ」というやつ。物

    【資料公開】ワンクリックデプロイ勉強会
  • Jenkinsでビルド・パイプラインを作る

    Jenkinsのプラグインでビルド・パイプラインを作ることができるので紹介。 #12月20日のワンクリックデプロイ勉強会の発表のネタバレっぽいのですが。 ビルド・パイプラインとはビルド・パイプラインとは、継続インテグレーションのプラクティスの1つで、テスト等を複数の単位に分割し、順番に流していくものである。一般的には継続的インテグレーションを利用していれば、SCMにソースコードをコミットした段階ですぐにユニットテストを走らせ、以降に、静的解析や結合テスト、受け入れテスト、ステージング環境へのデプロイ、番環境へのデプロイという形で進んでいくことになり、その単位でパイプライン要素を分ける。 当然パイプラインの途中で試験に不合格であれば、その後のプロセスには進めない。 これによって、例えばコミット時には即座にユニットテストレベルの結果を返して開発者のペースを阻害しないようにすることができる。(

    Jenkinsでビルド・パイプラインを作る
  • 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のアンチパターンとベストプラクティス
  • より良いテスト駆動開発を行うためのチートシートの紹介

    みなさんこんにちは。@ryuzeeです。 planetgeek.chというサイトでUrs Enzler氏がTDDのチートシートを公開していたのでご紹介します。 Clean Code and Clean TDD Cheat Sheets (PDFファイルでダウンロード可能です) 以下で、チートシート内の一部を意訳にてご紹介しましょう。 Unit Test Smellsテストが何もテストしていない一見するとテストが有効に機能しているように見えるが、実はテスト対象をテストしていない テストに過度なテスト準備が必要とされるテストが環境をセットアップするのに長いコードを必要としている。こういうノイズがテストが当にテストしたいのが何なのか?ということを分かりにくくする。 大きすぎるテスト有用だが大きすぎるテスト。たぶんテストが1つではなく複数の機能をチェックしているか、テストが1つ以上のことをやろう

    より良いテスト駆動開発を行うためのチートシートの紹介
  • BehatとSeleniumを組み合わせ受け入れテストを自動化する

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

    BehatとSeleniumを組み合わせ受け入れテストを自動化する
  • PHPでBDD(Behavior Driven Development)する方法

    みなさんこんにちは。@ryuzeeです。 RubyであればRSpecやCucumberとか使って、むしろBDDしているケースの方が多いようですが、PHPでやっている事例はあまり聞きません。 とりあえずPHPでもBDDできることは確認できたので、その方法をご紹介します。 ※実戦投入にはもうちょっと検証は必要かもしれません。 BDDとは?BDDとはビヘイビア駆動開発(Behavior Driven Development)でテスト駆動開発から派生したものです。 テスト駆動開発とドメイン駆動設計を統合したようなイメージになります。 対象における「振る舞い」や「制約条件」の検証のために、自然言語的な記述でテストコードを記述します。 スペックファーストで仕様を作ってから実装するという流れになります(コードを書く前に振る舞いを決める)。 ということで、以下ではPHPでBDDを行う方法について解説してい

    PHPでBDD(Behavior Driven Development)する方法
    shin1x1
    shin1x1 2011/02/10
    Behat