Laravel5.3でAPIを簡単に作ってみる

今年の8月にLaravel5.3がリリースしましたね。 laravel-news.com 色々な変更がありましたが、個人的にはルーティングのファイルが別れたこともなかなか嬉しかったです。 大規模なプロジェクトになるとエンドポイントがたくさん増えてroute.phpがどんどん大…

LaravelのFacadeを自前で実装してみる

今回は、SQSLoggerの開発の時に学んだことについて、少し内容を深く掘り下げて行きたいと思います。 LaravelのFacade LaravelフレームワークにはFacadeという便利な機能があります。config/app.phpにはAliasとして各種Facadeとその短縮形の文字列が登録され…

いかにLaravelで外部依存しているサービスを作ったか

今回は弊社で開発しているWorkinGoodでいかに外部依存しているシステムを開発したか、簡単なサンプルのコードも交えて話をします。 WorkinGoodは派遣スタッフの方が自分で勤怠を入力したり、給与明細を確認することができるサービスです。 技術的には以下の…

AWSを使ったスケーラブルなログ機能を実装した話

今回は自分が開発・オープンソース化したSQSLoggerについて、その開発の流れを書きたいと思います。 現在私達が開発している、派遣先スタッフ/担当者向けアプリケーションである勤怠入力ツールWorkinGoodでは当初、ログを取る機能はLaravelのStorageファサー…

PHP勉強会でLT発表

昨日、PHP勉強会に出席しました。 今回2回目の出席でしたが、MVCの話やCPUの話が非常に聞きごたえがあった会だと思います。 さて、LT枠を見ると分かる通り、 「Laravel×Vue.jsの切り分けで苦労していること」 というテーマでLTを発表しました。 Laravel×Vue.…

php7 + phpdbgで高速カバレッジ出力

先日は、今私が関わっているプロジェクトのphpのバージョンを挙げた際のTipsについて投稿しました。 http://blog.matchingood.com/entry/2017/03/09/202011blog.matchingood.com 今日は、php7にバージョンアップしたことによって可能になった、phpdbgによる…

AlpineLinux上のLaravelアプリケーションのphp5.6 -> 7.0の環境アップグレードでコケた話

現在私が携わっているプロジェクトでは、DockerコンテナとしてAlpineLinuxを用いて、PHP5.6 + Laravel5.3でアプリケーションの開発・運用をしています。 先日、PHP5.6のアクティブアップデート期間が終了しました。 これに伴って本アプリケーションもPHP7に…

Typescript & Immutable.jsで快適データ構造操作

今回は、業務で使っているTypescriptと、javascriptのデータ構造ライブラリであるImmutable.jsの合わせ技についてご紹介したいと思います。 Typescriptとは MicroSoft社が開発を始め、今やGithubでOSSとして開発が続けられているAltJS(JSにコンパイルできる…

Alpine Linux 上でPHPのiconvがうまく動かない件の解決策

このブログでは何度もDocker関連の記事をあげていますが、今回もDockerの記事です。 弊社では Alpine Linux をベースイメージに使った公式のPHPイメージを使ってコンテナを作っているのですが、iconvという文字コードを変換する関数がうまく動かずに悩んでい…

DockerでPHPのPeclのextensionを入れる方法

今回はDockerの公式PHPイメージでPeclを使ったextension(mailparse)を入れるのに苦労した話をします。 Pecl extensionsの入れ方 公式Dockerイメージを使う場合は、extensionを有効化するためにdocker-php-ext-*という名前のコマンド群が用意されています。 P…

Googleが昔採用していたバグ予測アルゴリズムをやってみた

今回はGoogleが昔採用していたバグ予測アルゴリズムのもとになっているFixCacheについて書きたいと思います。 バグ予測アルゴリズム かなり前の記事ですが、こんなものがありました。 www.publickey1.jp 元の記事はこちらです。 google-engtools.blogspot.jp…

GitHubのメンションをDMで教えてくれるボット

この記事はボット・クローラー Advent Calendar 2016の14日目です。 今回はGitHubのメンションをSlackのDMで教えてくれるボットを紹介します。 弊社でのボット 弊社ではHubotをHeroku上で動かしています。以前にもこのブログで紹介しました。 http://blog.ma…

Laravelでファイルをデータベースで管理するライブラリを公開した

今回はLaravel上で簡単にファイルをデータベースで管理できるようにするライブラリを公開したので紹介したいと思います。 laravel-eloquent-storage github.com このライブラリはEloquentモデルに

PHPのGeneratorは本当にメモリ消費量が減るのか実験

modern phpという書籍の勉強の過程で、PHPのGenerator機能の実験をしました。 https://www.amazon.co.jp/Modern-PHP-Features-Good-Practices/dp/1491905018www.amazon.co.jp Generator機能を使うことで、 大量のデータを繰り返しで処理するときに、 使用メ…

GitHubフローを助けてくれるボットを作った

今回はGitHubフローを助けてくれる簡単なボットを作ったので紹介します。 ボット環境 弊社ではHubotを使ってSlack用のボットを作っています。 github.com HubotはGitHub製のボットライブラリで、coffeescriptで簡単にかけて、そのままHerokuに簡単に上げるこ…

Circle CI + AWS + Dockerでデプロイを自動化する

今回はタイトルの通り、Circle CI + AWS + Dockerの組み合わせで簡単にサービスのデプロイを自動化した話をします。 弊社サービスWorkinGoodではGItHub flowを採用しており、masterへマージした後に自動的にElastic Beanstalkへ新しいバージョンを作るところ…

PHP勉強会でLTしてきた話

10月のPHP勉強会@東京でLTをしてきたのでその話をしようと思います。 PHP勉強会の雰囲気 社内の勉強会には複数の会社に参加したことがあるのですが、社外でいろいろな人が来るような勉強会は初めてでした。 しかし、この勉強会は毎回半数近くが初参加で、…

DockerでLaravelの開発環境を爆速で構築する

弊社では人材紹介会社様と人材派遣会社様向けのシステムの開発をしており、今年初めごろに派遣会社スタッフ様向けの新サービスであるWorkinGoodを始めました。 www.workingood.com 主にPHPを使用して開発していますが、新しいサービスに関してはAWSやDocker…

AWSLambdaの私的Tips

今回はSQSLoggerとその周辺のお話ということで、AWS LambdaについてのTipsを書こうかと思います。 ※SQSLoggerは私が以前作成したLaravelフレームワーク上で動くログデータをSQSへプッシュするライブラリです。詳しくはこちらの記事をご覧ください。 www.want…

エンジニアが職場環境をモダンにした話

以前の職場環境 僕がマッチングッドで働き始めてからちょうど2年経ちました。 入った直後に使われていたツールや開発環境は以下のような感じでした。 Skype Asana GitHub jQuery フレームワークなしPHP オンプレミスサーバー masterへ直push 最初はWebにつ…