Subscribe: Shin x blog
http://www.1x1.jp/blog/feed/atom
Added By: Feedage Forager Feedage Grade B rated
Language: English
Tags:
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Shin x blog

Shin x Blog



PHPをメインにWebシステムを開発してます。Webシステム開発チームの技術サポートも行っています。



Updated: 2018-03-22T21:49:02+09:00

 



懇親会ではなく本編で交流できた PHPerKaigi 2018

2018-03-28T10:18:17+09:00

phperkaigi.jp PHPerKaigi 2018 に参加してきました。 「PHP の現場」公開収録 主催の長谷川さんからお誘いを頂き、 @goodoo さんをゲストにお招きして、「PHP の現場」の公開収録をやってきました。 「初の公開収録」と言いたいところなのですが、1 回目が勉強会で話している模様の録音だったので、それを入れると 2 回目ですね。公開収録と銘打って収録したのが初です。 Twitter で公開収録を呼びかけたところ、立ち見の方が出るほど多くの方に集まっていただきました!ありがとうございましたm(_ _)m せっかく集まって頂いたのですが、私と @goodoo さんと… src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fphperkaigi.jp%2F2018%2F" title="PHPerKaigi 2018" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;">phperkaigi.jp PHPerKaigi 2018 に参加してきました。 「PHP の現場」公開収録 主催の長谷川さんからお誘いを頂き、 @goodoo さんをゲストにお招きして、「PHP の現場」の公開収録をやってきました。 「初の公開収録」と言いたいところなのですが、1 回目が勉強会で話している模様の録音だったので、それを入れると 2 回目ですね。公開収録と銘打って収録したのが初です。 Twitter で公開収録を呼びかけたところ、立ち見の方が出るほど多くの方に集まっていただきました!ありがとうございましたm(_ _)m せっかく集まって頂いたのですが、私と @goodoo さんとで向き合って話すスタイルだったのと賑やかな会場だったこともあり、音声が聞きづらい状況になってしまいました。。。 正直、音源に周りの音がのることは予想していたのですが、収録現場で話している声が聞き取りづらくなるのは考えていませんでした。会場が予想よりもかなり盛り上がっていたということは、イベントとして大成功なので、これは全く問題ありません。 公開収録に望む環境作りの話なので、今回のことは貴重な経験として、次回があれば生かしていきたいです。 当日の収録分はすでに公開していますので、こちらでお楽しみ下さい。 src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fphp-genba.shin1x1.com%2F18" title="18. PHP を選ぶ / サイバーエージェントの現場(goodoo) | PHPの現場" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;">php-genba.shin1x1.com src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftogetter.com%2Fli%2F1207100" title="全PHPerのためのポッドキャスト「PHPの現場」公開収録 in #PHPerKaigi ゲストは @goodoo さん#phpgenba" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;">togetter.com 懇親会の盛り上がりを本編で イベントに目を向けると、Track A は素晴らしいセッションが目白押しでした。そして、Track B の盛り上がりが印象的でした。 上記でも少し触れましたが、Track B には丸テーブルとそれを囲む椅子、ホワイトボードが複数用意されており、テーマを決めて、ディスカッションができるようになっていました。 それ以外にもテーブルや椅子は用意されており、自由に話したり、ハックしたりできるようになっています。また、コーヒーやドーナッツといった軽食も用意されていて、Track A を聞いて一息付きたい時に自然と足を運ぶようになっていたのも良かったです。 トークセッションを聞き続ける[...]



PhpStorm + Docker for Mac(docker-compose)での PHPUnit と Remote Debug の設定

2017-10-27T11:44:10+09:00

PhpStorm から Docker for Mac の Docker コンテナ内で PhpUnit のテスト実行や Remote Debug を行うための設定です。 下記バージョンにて構築を行いました。 PhpStorm 2017.2.4 Docker for Mac 17.09.0-ce-mac35 PHP 7.1( php:7.1-apache ベース ) Xdebug 2.5 サンプルプロジェクトの取得 サンプルプロジェクトを用意したので、このプロジェクトをベースに設定を行います。このプロジェクトには、初期状態の Laravel アプリケーション(5.5)が含まれています。 githu…PhpStorm から Docker for Mac の Docker コンテナ内で PhpUnit のテスト実行や Remote Debug を行うための設定です。 下記バージョンにて構築を行いました。 PhpStorm 2017.2.4 Docker for Mac 17.09.0-ce-mac35 PHP 7.1( php:7.1-apache ベース ) Xdebug 2.5 サンプルプロジェクトの取得 サンプルプロジェクトを用意したので、このプロジェクトをベースに設定を行います。このプロジェクトには、初期状態の Laravel アプリケーション(5.5)が含まれています。 src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fshin1x1%2Fphpstorm-with-docker-for-mac-sample" title="shin1x1/phpstorm-with-docker-for-mac-sample" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;">github.com git で clone して、make を実行すると composer install と docker-compose up が実行されます。ブラウザで、 http://localhost:8000/ にアクセスすると、Laravel の初期画面が表示されます。 $ git clone https://github.com/shin1x1/phpstorm-with-docker-for-mac-sample $ cd phpstorm-with-docker-for-mac-sample $ make もしくは $ docker-compose run composer install $ docker-compose up -d docker-compose.yml は下記のようになっています。 php-cli は PHPUnit を実行する、web は Web アプリケーションを実行するサービスです。現状、web サービスを起動中に PhpStorm から PHPUnit を実行すると、先に起動していた web コンテナが落ちるので、それを回避するためです。 どちらも image や volumes などの設定は同じです。web はポートマッピングを指定しています。 version: '3' services: php-cli: build: ./docker/web volumes: - ./:/var/www/html - ./docker/web/php.ini:/usr/local/etc/php/php.ini working_dir: /var/www/html web: build: ./docker/web volumes: - ./:/var/www/html - ./docker/web/php.ini:/usr/local/etc/php/php.ini working_dir: /var/www/html ports: - "8000:80" composer: image: composer volumes: - ./:/app - ./docker/web/php.ini:/usr/local/etc/php/php.ini working_dir: /app PhpStorm でリポジトリディレクトリをプロジェクトとして開きます。 1. CLI Interpreter まず、PHP CLI Interpreter に docker-compose のサービスを指定します。 [Preferences] - [Languages & Frameworks] - [PHP] を開き、CLI Interpreter 右端にある「...」をクリックします。 CLI Interpreters が開くので、左上にある「+」をクリックして Interpreter を選択します。ここでは、一番上にある「From Docker, Vagrant, VM, Remote...」を選択します。 Configure Remote PHP Interpreter が開くので、右端の「Docker Compose」を選択します。Server の横にある「New...」クリックします。 Docker が開くので、「Docker for Mac」を選択して、OK をクリックします。 Server で作成した「Docker」選択さています。Service で、実行する PHP インタプリタ(php コマンド)が含まれるサービスを選択します。ここでは、php-cli を指定しています。 OK をクリックすると、docker-compose run が実行され、自動でコンテナ内の情報を取[...]



TDD を体験する本「テスト駆動開発」

2017-10-25T00:32:46+09:00

TDD の原典である テスト駆動開発 が、t_wada さんによって再翻訳されるということで興味を持っていたところ、見本誌を送って頂きました。ありがとうございました。早速、拝読させて頂きました。 以前の翻訳版である「テスト駆動開発入門」が出版された頃、XP 本や他の xUnit 本などは読んだのですが、本書は未読でした。テストをコードで書くことや自動化には興味があったので、おそらく手に取ったことはあったと思うのですが、購入には至りませんでした。 当時は、新しい開発プロセスの一つとしてテストの自動化を捉えていましたが、それを日々の開発で当たり前に行っている中で本書に触れてみてどのように感じるかと…TDD の原典である テスト駆動開発 が、t_wada さんによって再翻訳されるということで興味を持っていたところ、見本誌を送って頂きました。ありがとうございました。早速、拝読させて頂きました。 以前の翻訳版である「テスト駆動開発入門」が出版された頃、XP 本や他の xUnit 本などは読んだのですが、本書は未読でした。テストをコードで書くことや自動化には興味があったので、おそらく手に取ったことはあったと思うのですが、購入には至りませんでした。 当時は、新しい開発プロセスの一つとしてテストの自動化を捉えていましたが、それを日々の開発で当たり前に行っている中で本書に触れてみてどのように感じるかという視点で読み進めました。 本書は、三部構成となっています。第 1 部 と 第 2 部 では、TDD を実践しながらコードを書き上げていく過程を解説しています。第 3 部は、テストに関する様々な話題がまとめらており、コラム集のようになっています。三部構成とはいったものの、今回加筆された付録 C も内容を考えると一つのパートとも言えるので、実質は四部構成といって良いかもしれません。 TDD でコードが実装されていく楽しさ 第 1 部では、通貨の演算を TDD で実装していきます。本文とコードが分かりやすいように記されているので、まるでライブコーディングを見ているような気分で読んでいきました。 Dollar の演算を実装し、Franc が追加され、相互に変換が加わりといった具合にコードが進化していく様は、まるで物語を読んでいるようで、先の展開が気になり、どんどんページをめくっていきました。最終的に、え、その形で終わり?と思ったところで、TDD を学ぶための例題だったことを思い出したくらいです。 コーディングを見ていく過程で自然と TDD のプラクティスを知ることができるというのは良くできた構成だと感じました。 xUnit の実装 第 2 部では、シンプルなテスティングフレームワークを TDD で実装していきます。日頃利用しているテスティングフレームワークのコア部分を実装するということで、題材としても想像しやすいですし、どのように実現するのか関心を持ちました。 setUp() と tearDown() を Template Method パターンで実装したり、テストスウィートで複数のテストケースをまとめて実行したりと、おなじみの機能の実装が体験できるのはいいですね。 2017 年のテスト駆動開発 今回の再出版に際して、t_wada さんが加筆されたのが、付録 C です。本書が初回出版された以後の TDD 界隈の流れ、そして現在の状況が解説されています。TDD / BDD などの流れが丁寧に記されていて、現在の状況にど[...]



「型を意識した PHP アプリケーション」を発表しました / PHP カンファレンス 2017

2017-10-11T06:00:22+09:00

PHP カンファレンス 2017 にて「型を意識した PHP アプリケーション」を発表してきました。 発表 github.com 型宣言が付いていないコードに、スカラー型の型宣言、ドメインに特化した型の型宣言と型(クラス)の実装を行うライブコーディングをメインにしました。 ライブコーディングの部分は動画を見た方が分かりやすいです。下記の 13:00 頃からコーディングがはじめるので、こちらも合わせてどうぞ。 きっちりまとめられた資料をベースに発表するのも良いのですが、実際にコードを書いていくのを見た方がイメージも伝わりやすいですし、私自身も人がコードを書く様を見るのが好きなので、この構成にしま…

PHP カンファレンス 2017 にて「型を意識した PHP アプリケーション」を発表してきました。

発表

CodeceptionによるCLIコマンドのアクセプタンステスト

http://codeception.com

実装したコマンドのアクセプタンステストに Codeception を利用しました。 パース対象のデータ(Markdownファイル)を用意して、実行後に生成されたファイルをチェックしているだけなのですが、テストコードは DSL ではなく、ただの PHP スクリプトなので、サクッと書けて良いです。

https://github.com/shin1x1/MarkdownCodeExtractor/blob/master/codeception/acceptance/ExtractMarkdownCodesCommandCept.php

さいごに

PHP はバージョンごとの差異が大きくてマイナーバージョンが上がっただけで動かなくなる」という戯言をたまに見ますが、PHP 7 についてはメジャーバージョンが上がっても、それなりに後方互換性が担保されています。実際、5.6 向けに書いたプロダクションコードを CI 環境の PHP 7 でテストしていますが、全く問題なく動作しています。

なんといっても、PHP 7 に乗せるだけでパフォーマンスが上がるという飴がぶら下がっているので、近年開発されたコードなら多少の手間をかけても移行する価値はありますね。

PHP 7 の時代が来ることは間違いないので、実際に開発して、運用して、知見を貯めていきたいと思います。




2015年発表資料と活動まとめ

2016-01-01T13:11:32+09:00

2015年も残り僅かとなりました。年の瀬に今年の活動をまとめてみます。 技術サポートと開発 本業の 1×1 では、技術サポートと開発を両輪として活動していました。 私が行っている技術サポートは、昨今よく話題に上がる「技術顧問」のようなものですが、主とするのはエンジニアやチームのマネージメントではなく、開発現場で発生する技術的な問題の解決をサポートする役回りです。 例えば、下記のような問題解決をサポートしました。コミット具合は様々でしたが、概ね PHP アプリケーションに関する技術サポートが主でした。 PHP に関する技術的問題の解決 PHP 拡張の調査 PHP アプリケーション運用で発生した問… 2015年も残り僅かとなりました。年の瀬に今年の活動をまとめてみます。 技術サポートと開発 本業の 1×1 では、技術サポートと開発を両輪として活動していました。 私が行っている技術サポートは、昨今よく話題に上がる「技術顧問」のようなものですが、主とするのはエンジニアやチームのマネージメントではなく、開発現場で発生する技術的な問題の解決をサポートする役回りです。 例えば、下記のような問題解決をサポートしました。コミット具合は様々でしたが、概ね PHP アプリケーションに関する技術サポートが主でした。 PHP に関する技術的問題の解決 PHP 拡張の調査 PHP アプリケーション運用で発生した問題の技術調査 PHP アプリケーションのインフラ移行(オンプレミスから AWS) PHP フレームワーク選定や活用の支援 PHP アプリケーションの負荷対策 PHP アプリケーション開発支援(コードレビュー、アーキテクチャ相談、リファクタリングなど) Heroku 上での PHP アプリケーション開発サポート(フレームワークの対応、アドオン活用、スケーラビリティの確保) Vagrant や Ansible の開発チームへの導入運用支援 CI / CD 環境構築、運用支援 サポート方法は、オンラインでのチャット(ChatWorkやSlack)や GitHub の issue や PR などがメインですが、必要な際は対面でのサポートも行いました。 その中には、技術サポートから派生して、開発自体を依頼頂いて参加するというケースもありました。サンプルコードの実装やリファクタリングを行うこともそうですが、開発に参加することで、そのシステムに適した解決方法を見出すことができます。自らも手を動かして参加するというのは、技術サポートを行う上でも有効な手段であることが実感した 1 年でもありました。 もちろん、従来通り受託による開発も行っていました。1×1 の場合、受託開発でも、見積もりして納品して終わりというケースはあまりなく、納品後も継続して追加開発や運用サポートを行うケースが多いので、これも広い意味では技術サポート言えるのかもしれません。 こうした活動は、信頼を頂いてこそ成り立つものです。本年も 1×1 へご依頼頂き、本当にありがとうございました。 技術本の執筆 こちらのエントリでも少し触れましたが、2015 年は 3 冊の技術本を執筆しました(いずれも共著)。 Laravelエキスパート養成読本 [モダンな開発を実現するPHPフレームワーク!]作者: 川瀬裕久,古川文生,松尾大,竹澤有貴,小山哲志,新原雅司出版社/メーカー: 技術評論社発売日: 2015/04/22メディア: Kindle版この商品を含むブログを見る Lara[...]



CI で PHPコードスタイルをチェックする Style CI

2015-12-22T08:00:36+09:00

PHP コードスタイルのチェック、整形を行うサービスである Style CI を紹介します。 このエントリは、Laravelリファレンス Advent Calendar 2015 の22日目です。 Laravel 公式が利用しているサービス Style CI は、Alt Three が運営している GitHub にホストしている PHP コードのコードスタイルをチェックするサービスです。 GitHub へコードを push すると、コードチェックが行われ、適合しないコードがあればエラーになります。メールによるエラー通知も飛んできます。 Style CI のサイトに行くと修正が必要が箇所のコード…PHP コードスタイルのチェック、整形を行うサービスである Style CI を紹介します。 このエントリは、Laravelリファレンス Advent Calendar 2015 の22日目です。 Laravel 公式が利用しているサービス Style CI は、Alt Three が運営している GitHub にホストしている PHP コードのコードスタイルをチェックするサービスです。 GitHub へコードを push すると、コードチェックが行われ、適合しないコードがあればエラーになります。メールによるエラー通知も飛んできます。 Style CI のサイトに行くと修正が必要が箇所のコードが提示されます。 shin1x1/phpkansai-20151216-demo - StyleCI チェックできるフォーマットは、インデントやブレース位置、文字エンコーディングなどの基本的なものから、short array syntax の強制(long array syntax の強制もあり)や short echo tag への置換など数多くのルールがあります。 これらを1つづつ設定していっても良いですし、preset と呼ばれる複数のルールをグループ化したものを指定することもできます。preset には以下のようなものがあります。 PSR-1(psr1) PSR-2(psr2) Symfony(symfony) Laravel(laravel) Recommended(recommended) これらの設定は、 Style CI サイトでの設定もしくはリポジトリのルートディレクトリに .style.yml という設定ファイルを置くことで指定できます。 Configuration · StyleCI Style CI の特徴 Pull Request で修正コードの自動送信 Style CI では、PHP コードのチェックを行うのですが、設定を有効にすれば修正済みコードを自動で PR で投げてくれます。 https://github.com/shin1x1/phpkansai-20151216-demo/pull/11 開発者はコードを見て、問題無ければマージするだけでコードの整形が完了します。 さらに、この PR を自動で取り込む機能もあります。(デフォルトは disable ) CI でコードフォーマットを怒られて手元でちまちま修正するより、ただマージするだけの方が楽なのでこれは嬉しい機能です。 Scrutinizer との比較 同種のサービスとして有名なのが Scrutinizer です。こちらは、コードフォーマットだけでなく、コードの静的解析なども行うので全く同種として扱うことはできないのですが、動作速度としては Style CI の方が遥かに速いです。 シンプルにコードフォーマットのチェックだけ行うなら、Style CI を試す価値が十分あります。 Laravel 公式で利用しているサービス Laravel フレームワークのリポジトリ( https://github.com/laravel/framework )にて、コードフォーマットチェックとして Style CI が利用されています。 https://github.com/laravel/framework/pull/11397 私自身も Laravel のリポジトリを探っている中でこのサービスを知りました。Style CI を運営している Alt Three には、Laravel コミッターである Graham Campbell さんが参加してい[...]