タグ

ブックマーク / www.1x1.jp (40)

  • 「レイヤードアーキテクチャを意識したPHPアプリケーションの構築 ver2」を発表しました。 #DevKan

    2015/09/14に行われたDevLove関西にて「レイヤードアーキテクチャを意識したPHPアプリケーションの構築 ver2」を発表してきました。 このセッションは、PHPカンファレンス福岡で発表したものですが、DevLove関西主催の @yohhatu さんからお声がけ頂いて、再演を行いました。ただ、同じ内容では面白くないので、Laravelアプリケーション構築時に意識した点を掘り下げて資料を改変しました。 発表資料 発表資料は以下です。 アプリケーションコードをレイヤ分けする際に、ただのグループとして分離するのではなく、レイヤの責務を明確にする、そしてレイヤ間の依存関係(処理の流れ)を一方向にするのがポイントです。 さいごに 今回は、3 人のスピーカーだったのですが、発表内容を事前に打ち合わせしたわけでもないのに、私、@s_kozake さん、@OkaHiromasa さんの順に抽象

  • 「レイヤードアーキテクチャを意識したPHPアプリケーションの構築」を発表しました

    2015/06/27 に開催された PHPカンファレンス福岡2015 にて、「レイヤードアーキテクチャを意識したPHPアプリケーションの構築」という発表をしてきました。 MVC フレームワーク(CakePHP / Laravel)で構築したアプリケーションをレイヤードを意識して改善したという内容です。参加いただいた皆さんの顔ぶれを見ると歴戦の勇者みたいな方ばかりでしたが、和やかな雰囲気でセッションを進めることができました。ご参加ありがとうございました。 発表資料 発表資料は以下です。 MVC にサービスレイヤを追加して、それぞれの役割を意識して作る。レイヤ間の依存を明確にする。サービス(ドメイン)を中心に考える。よく言われていることなのですが、実際に実践する中で、ハマりがちなことや実際に実践してきた中で感じたことを紹介しました。もちろん、これで ok ということはないので、今後取り組んでい

  • AWS で請求金額にビックリしないようにやっておくべきこと - Shin x blog

    AWS は、従量課金なので、他者からの不正利用(来無いことですが)や想定外の利用で、翌月の請求が来て、ビックリということがあります。 私自身も関わっているプロジェクトで、ある月に平時の数倍の請求が来て、原因調査を行ったという経験がありました。 転ばぬ先の杖ということで、先にやっておくべきことについてまとめておきます。 1. AWSアカウントの不正利用を防ぐ まず、考えられるのが、アカウントを乗っ取られての不正利用です。もちろん、不正利用は、請求だけでなく、システムやリソースを守るという点でも防ぐべきことです。 そこで、AWS アカウントは、2要素認証(2段階認証 / 2 Factor authentication / 2FA)を設定しておきます。 手順は、下記のエントリがまとまっています。 AWSアカウント作ったらこれだけはやっとけ!IAMユーザーとAuthyを使ったMFA2段階認証

    clavier
    clavier 2015/03/13
    AWS で請求金額にビックリしないようにやっておくべきこと - Shin x blog
  • 「Azure Websites で作るスケーラブルな PHP アプリケーション」を GoAzure 2015 で発表してきました

    Home > Azure | Laravel | PHP > 「Azure Websites で作るスケーラブルな PHP アプリケーション」を GoAzure 2015 で発表してきました Azure コミュニティの一大イベント GoAzure 2015 にて、「Azure Websites で作るスケーラブルな PHP アプリケーション」という発表を行ってきました。 セッションでもお話したのですが、テーマは、もう一つあり、それは「LAMP(LAPP) ユーザが使う Azure Websites」でした。 Azure は、マイクロソフトのサービスなので、どうしても Windows に最適化されているイメージがあったのですが、普段 Mac で開発して、Linux にデプロイして、運用している人間でも、興味深いサービスであることを伝えようと考えました。 発表資料 発表資料は、こちらです。 発

    clavier
    clavier 2015/01/19
    「Azure Websites で作るスケーラブルな PHP アプリケーション」を GoAzure 2015 で発表してきました - Shin x blog
  • 「Jenkinsサーバで使う Docker」を発表してきました - Shin x blog

    すっかり年の瀬ですが、今年最後の発表を DevLove 関西にて行いました。 Docker 実践編ということで、CI の一環でビルドサーバに使っている Docker についてお話してきました。 発表資料 Jenkins サーバに Docker を入れており、ビルドの環境として利用しています。構成や使い方は、わりとベーシックな内容です。 プロビジョンには Ansible を使っており、ローカルコネクションで ansible-playbook を実行しています。 使い捨てできる環境なら実用的 勉強会の最後に、発表者への QA の時間があったのですが、多数の質問があり、Docker に対する関心が高いのをあらためて実感しました。 今回、参加された方は、これから Docker を使ってみようという方が多いようで、導入に関することや、安定性などに対する質問が多かったです。(安定性に関しては、私のセッ

  • Laravel 4 データベースを使ったテストで Migration と Seeder を使う

    Laravel 4 でデータベースを使ったテストを書く際の Tips です。 自動テストでデータベースにアクセステストを書く際に大切なのが、データベーステーブルのデータをテストで想定された状態にしておくということです。テーブルの内容がテストを実行される度に異なると、ある時はテストが通って、ある時は通らないという状態になります。 この「想定された状態」をセットアップするために、フレームワークで用意されている Migration と Seeder を利用しています。 テストケースでマイグレーション実行 開発を進めていると、データベーススキーマを変更する場合があります。マイグレーションファイルを作成して、php artisan migrate コマンドで適用するのことになります。テスト用データベースについても適用する必要がありますが、php artisan migrate --env=testi

  • Ansible で EC2 インスタンスを起動して、Route53 に Public DNS を登録する

    Home > Ansible | AWS > Ansible で EC2 インスタンスを起動して、Route53 に Public DNS を登録する Ansible は、構成管理ツールとして認知されていますが、AWS 関連のモジュールが多数実装されており、各コンポーネントの起動や設定ができます。 このエントリでは、Ansible で、検証環境用の EC2 インスタンスを起動して、その Public DNS をRoute 53 に登録してみます。 以前書いたこのエントリの内容 を Ansible で自動化するイメージですね。 準備 今回は、AWS を操作するので、PythonAWS SDK である boto をインストールしておきます。boto は、pip なり、yum なりでインストールできます。 OSX $ pip install boto RHEL / CentOS $ rpm

  • [書評] CakePHPで学ぶ継続的インテグレーション

    著者の @kaz_29 さんから「CakePHPで学ぶ継続的インテグレーション」を献して頂きました。日頃から関心のある分野なので、早速読ませて頂きました。 PHP で学ぶ継続的インテグレーション 書のタイトルは「CakePHPで学ぶ継続的インテグレーション」です。実際、書の中では、CakePHPアプリケーションを題材に継続的インテグレーションを行う手法が解説されています。 ただ、ここで紹介されている継続的インテグレーションの手法は、CakePHP 固有のものではなく、他のフレームワークでも転用可能なものです。 勝手なお世話ですが、書籍のタイトルとしては、「PHPで学ぶ継続的インテグレーション」の方が、良かったかもしれませんね:D 分散された情報がこの一冊に 継続的インテグレーション(CI)を行うには、あるツールさえ入れておけばできるというものではなく、多くのツールを組み合わせる必要が

  • Vagrant のプロビジョン時間を削減する vagrant-cachier プラグインが良い

    インストール vagrant-cachier プラグインをインストールするには、vagrant plugin install コマンドを実行するだけです。 $ vagrant plugin install vagrant-cachier Vagrantfile への記述 vagrant-cachier プラグインを有効にするには、Vagrantfile に下記の設定を行います。config.cache.scope では、キャッシュスコープを設定します。 下記では、:boxを指定しており、これは、プロビジョンでインストールしたパッケージを Box 単位でキャシュします。同一 Box を使う Vagrantfile であれば、別の VM でもキャッシュを共有することができます。 私の用途であれば、この設定が使いやすそうです。 あとは、通常どおり、vagrant up を行うとプラグインが有効と

  • Ansible で、複数サーバの RPM を一括で更新する

    Bash 脆弱性が出ましたね。対策がまだの方はお早めに。 修正 RPM が提供されているとはいえ、複数サーバにログインして、yum update していくのは、骨が折れる作業です。元から構成管理ツールを導入していて、一括更新出来る場合は良いのですが、なかなか導入できていないところも多いでしょう。 このエントリでは、Ansible を使って、複数サーバに対して、一括で RPM 更新を行う方法を見ていきます。 Ansible インストール Ansible の操作を行う PC or サーバにインストールします。これは ansible コマンドを実行する環境にのみインストールします。例えば、サーバ管理者の PC などです。チームで行う場合は、操作用のサーバにインストールして、SSH で操作サーバにログインして、実行すると良いでしょう。 OSX なら、Homebrew で入れるのが簡単です。 $ b

  • PhpStorm から Vagrant VM の PHP アプリケーションをリモートデバッグする(Web & CLI)

    Home > Laravel | PHP | PhpStorm | Vagrant > PhpStorm から Vagrant VM の PHP アプリケーションをリモートデバッグする(Web & CLI) PhpStorm から Vagrant で構築した VM の PHP アプリケーションをリモートデバッグする方法です。Web アプリケーションだけでなく、CLI アプリケーションでもリモートデバッグできるように設定していきます。 VM スペック 192.168.33.41 を private network で設定 PHP + Xdebug がインストール済み ホストと VM は、synced folder でディレクトリを共有(/path/to/src -> /share) 0. Xdebug によるリモートデバッグの仕組み リモートデバッグを設定する前に PhpStorm と Xd

  • 「PHPコードではなくPHPコードの「書き方」を知る」を発表してきました

    PHPカンファレンス関西2014で「PHPコードではなくPHPコードの「書き方」を知る」を発表してきました。 写真提供:久岡写真事務所 別トラックに人気セッションがひしめく中、多くの方に聴いて頂き、ありがとうございましたm(_ _)m 発表内容 PHP 中級者(中級がどこかというのはありますが)を目指す初心者の方を対象に、FizzBuzz のコードを、関数にまとめて、クラス化するというのをライブコーディングで行いました。 また、関数にまとめた段階で、自動テストを書いて、実行結果を目で確認するのではなく、テストを実行して確認するというスタイルを取りました。 発表資料は以下です。 コードを書きながら進めていく形なので、資料だけでは少し伝わらない部分があるかもしれません。 デモで書いた PHP コードは、GitHub で公開しています。Sample1, Sample2 とディレクトリが分かれてい

    clavier
    clavier 2014/06/30
  • PHP 定義されている情報(クラス、関数、変数等)を取得する関数まとめ

    PHP には、定義されているクラスや関数、変数などの一覧を取得する関数があります。 ここでは定義情報を取得できる関数群をまとめてみました。ここでは実行例として、Laravel アプリケーションのビューテンプレート(hoge.blade.php)で実行した内容を記載しています。 定義された情報を取得する関数群 get_defined_constants() 定義されている定数を連想配列として取得します。キーが定数名で、要素がその値となっています。 http://www.php.net/manual/ja/function.get-defined-constants.php 出力してみると、1771 個の定数がありました。内容を見ると、フレームワークやアプリケーションで定義されたものの他に、PHP体や extension で多数の定数が定義されていることがわかります。 array (size

    clavier
    clavier 2014/06/04
  • Heroku で Composer を使う時に気を付けたいこと

    HerokuPHP をサポートしたので、テストがてら Laravel アプリケーションをデプロイしてみました。 デプロイしたのは、Doctrine を利用するアプリケーションだったのですが、ローカルでは composer でインストールできるのですが、Heroku にデプロイするとインストールされないという現象が起こりました。 Laravel での Doctrine 使用 今回のアプリケーションでは、DBのテーブルスキーマ情報を読み込んで、動的に画面を作るという処理があり、そこで Doctrine の SchemaManager を使っていました。 Laravel で、Doctrine の SchemaManager のインスタンスを取得するのは簡単で、下記のメソッドを実行するだけです。 $manager = DB::connection()->getDoctrineSchemaMa

  • 「VagrantユーザのためのDocker入門」を発表してきました

    第3回 コンテナ型仮想化の情報交換会@大阪 で行った発表です。 コンテナ超人みたいな人ばかりで、この内容で発表して良いものやらと思ったのですが、アプリケーションを書く側からの視点で話してきました。 Vagrant ユーザのための Docker 入門 Docker を知った時は、速くなった Vagrant のようなものだと思っていたのですが、色々と見る内にそもそも別のもので、ユースケースとして重なるところはあれど、別のツールだと認識した方が良いです。 Docker の入り口としては、デモを見てもらうのが、手っ取り早いので、そのあたりが伝わったなら良かったです。 Introduction to Docker 発表で引用した「Introduction to Docker」は下記です。公式の資料なので、色々ググる前に、まずはこれを読むのがおすすめです:D CentOS で Docker を動かす

  • Vagrant 1.5 で追加された Rsync Synced Folder が良い

    Vagrant 1.5 がリリースされました。1.1 以来の big change ということで、目新しい機能が追加されています。 目玉はやはり Vagrant Share だと思うのですが、その他にも Web システムの開発に Vagrant を使っている人には嬉しい機能が追加されています。 その一つが Rsync Synced Folder です。 Vagrant には、ホストマシンとゲストマシンとでファイルを共有、同期する機能があります。 これにより、開発はホストマシンで行い、実行は LA(MP)P 環境であるゲストマシンで行うという、いいとこ取りができました。 この機能を実現する方法として、shared folder(VirtualBox の機能)や NFS を利用することができたのですが、これに rsync による同期が追加されました。 ホストマシンからゲストマシンへ rsync

  • composer install をどこで実行するか

    最近の PHPer が集まれば、一度は話題に上がるのが、この composer install をどこで実行するのか問題。 これまで聞いた話をまとめると、大きく分けて、以下の2パターンになります。どちらの方法を取っているか教えて下さい 😀 0. 前提 前提ですが、以下のような方法で、Composer 関連のファイルは管理しているとします。おそらく多くはこのような形になっていると思います。 PHP コードは、Git などの VCS で管理する。 composer.json, composer.lock は、VCS で管理する。 composer.phar, vendor/ は、VCS で管理しない。 また、今回対象としているのはアプリケーションで、Packagist に登録して、配布するようなフレームワークやライブラリは対象外です。 1. 番サーバで実行 PHPサーバ上で compo

  • Laravel IoC コンテナの使い方

    最近は Laravel + AngularJS で Web アプリケーションを開発する毎日です。 少し時間が取れたので Laravel フレームワークのソースを読んでいます。その中から Laravel の肝でもある IoC コンテナの使い方をまとめてみました。 Laravel の IoC コンテナ Laravel で使われている IoC コンテナは、Illiminate\Foundation\Applicationクラスです。これはIlliminate\Container\Containerクラスを継承したもので、コンテナとしての基機能はIlliminate\Container\Containerクラスが担っています。 Laravel アプリケーションで、この IoC コンテナを利用する際は、AppクラスというIlliminate\Foundation\Applicationのファサード

  • Mac で Vagrant を GUI で操作できる「VagrantX」をリリースしました

    Shin x blog Advent Calendar 2013 の最終日です。 12/1 から毎日書いてきた Shin x blog Advent Calendar 2013 ですが、いよいよ今日が最終日です。 今日は、クリスマスということで、ささやかながらちょっとしたプレゼントを用意してみました:D VagrantX GUI で Vagrant が利用できる VagrantX というツールをリリースしました。 http://shin1x1.github.io/vagrantx/ Vagrant は、とても良いツールなのですが、いかんせんターミナル(黒い画面)で操作するものなので、それに慣れていない人にとっては、少し敬遠されている面があります。Vagrantfile を自分で書くような人はターミナルでどんどん使うべきなのですが、用意された Vagrantfile をただ使うだけであれば、

  • vagrant-serverspec で TDD ライクにサーバ構築を行う

    Shin x blog Advent Calendar 2013 の 24 日目です。 先日リリースされた vagrant-serverspec を使って、テストドリブンなサーバ構築を行ってみました。 vagrant-serverspec は、サーバ、インフラの状態をテストするツール serverspec を Vagrant のプロビジョナとして実行できるプラグインです。これを使うことで、vagrant コマンドから、serverspec のテストを実行することができます。 詳しくは、@ryuzee さんの下記エントリを参照して下さい。 vagrant-serverspecを使ってプロビジョニング結果をテストする | Ryuzee.com 仕様 今回構築するサーバの仕様は下記です。PHP 5.5.x をインストールして、ビルトインサーバを起動するというものです。(※ちなみにビルトインサーバ