AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。

HANDS LAB

HANDS LAB ENGINEERS BLOG

ハンズラボエンジニアブログ

S3をDB利用したポイントシステムについて話しました

Pocket

田部井です。
時間が立ってしまったのですが、2月7日に新大阪で開催されたカンファレンス『JAWS-UG KANSAI 特別編』のハンズラボ枠の中で20分ほど講演してきました。
カンファレンスのテーマが「AWSを使い倒せ。AWSのフルマネージドサービス活用によるネイティブクラウドシステムへの誘い」ということなので、S3を活用して構築したシステムの事例をご紹介しました。
その際の私のパートの資料をUPしました。

S3をDBとして使っていること、ほぼ素のAWSとLinuxの機能だけでイミュータブルインフラストラクチャーに近づけたことが、このシステムのポイントになっています。

S3をDBとするにあたり、これまで東急ハンズのシステム内製構築で培ってきたユニケージ開発手法のノウハウを使っています。
クラウドとは親和性が低いと思っていた『テキストファイルデータ管理』が、新しいCDPに繋がったと自画自賛しています!

ユニケージ開発手法に関しては、こちら
謎テクノロジーの一端を見ることができます

今回私の初めての講演だったので、色々いい勉強になりました。
来る3月22日のJAWS DAYSでも話すかもしれないので、ぜひご来場ください!

Pocket

【PHP】つらい配列操作と距離を置けるLINQライクなライブラリ、Ginqを使ってみた

Pocket

配列のつらさ

PHPで、以下の様な配列の詰め直しのようなコード書いたりしてると、
クラシック過ぎてあー……という気持ちになります。

例えばPythonだと、リスト内包表記というのがあり、こういう処理がもうちょっと格好良く書けます。
上記の例より単純な算数っぽい例で以下に記します。

C#など.NET Framework環境だと、LINQというさらに格好良い構文があります。
LINQが良いのは記法だけじゃないので、ちょっと本質から外れますが。
MacやLinux系 環境でも、Monoをインストールしていれば、csharpコマンドでC#のREPLが起動して、簡単に試せます。

ずるい!!

というわけで、PHPで配列(及びIteratorが実装されているオブジェクト)を格好良く処理できる以下のライブラリを使ってみました。
akanehara/ginq · GitHub

Ginqのインストール

ReadMe にあるとおり、各自のComposerでライブラリが管理されているPHP実行環境にて、
composer.jsonに以下の記述を追加し、

以下でインストールできます。

Ginqを使ったコード例

この記事の冒頭のPHPでの処理は、Ginqを使って以下の等価な処理に書き換えられます。
ついでにSplFileObject を使ってファイル操作をしてみます。

(->がエスケープされて読みづらい……)
制御構文が減った分、だいぶ印象が違います。
LINQと一緒か?と問われると、無名関数をゴリゴリ書いている分記述量が多いですが、
O/Rマッパー位のノリで配列処理が出来ました。
このくらいの処理だと、foreach でもいいじゃん感があるのは否めませんがw

一応、上記のselectとmapの様なことは、array_filter(), array_map() を作用させても得られるのですが、

array_filter() で抽出した配列の返り値をそのままarray_map() に作用させると、好みの問題ですが、なかなか渋い感じです。
さらに、
array_map() : 第1引数が無名関数で第2引数が配列
array_filter() : 第1引数が配列で第2引数が無名関数
と地味にインターフェースが異なっているのが個人的にはうざいです。
これ以上作用させたらだいぶだるい感じがします。

まとめ

他にもjoin,zip,take,takeWhile,memoize などのメソッドがあるので、色々試してみます。
細かなドキュメントはありませんが、挙動は test/GinqTest.php にあるテストを読めば分かりそうです。
データ構造が配列くらいしかない分(SPLをまともに使ってる人いますか?) 、
PHPは配列と仲良くすることから避けられないので、配列操作のつらさを軽減していきたいですね。
便利な構文が言語仕様に入っていってくれるといいですねー。

Pocket

DynamoDBの紹介と東急ハンズでの活用について

Pocket

こんにちは、井上です。

2/7に行われた、JAWS-UG KANSAI特別編 にて『DynamoDBの紹介と東急ハンズでの活用について』という内容で発表してきました。

そのスライドをアップしました。

Amazon DynamoDBの紹介と東急ハンズでの活用について

もっと、DynamoDB と Beanstalk の相性はとても良いとか、こういう部分で困ってる、とか、テクニカルな話もいろいろしたかったのですが、意外と駆け足になってしまいました。

会場で聞いてくださっていた方の中でも、DynamoDBを使っているという方は数名しかいなかったので、とっつきにくい印象があるのかなぁと思いました。

DynamoDBは、AWS内部でも各所で使われており、S3、SQSとともに、AWSを支える最も重要な基盤のひとつになっているようです。
また、東急ハンズにおいても、現在はネットストアだけではなく、MDシステム等の基幹システムにも用途を広げつつあり、ハンズを支える重要な技術になってきています。
これからも、DynamoDBに限らずAWSの仕組みなどをうまく活用しつつ、お客様に価値を届けられるよう、頑張って行きたいと思います。

最後に、JAWS-UG KANSAIのメンバーの方々、会場を提供頂いた エムオーテックス様、ありがとうございました!!

Pocket

ハンズラボが採用しているユニケージという謎テクノロジーについて 第1回

Pocket

自己紹介

はじめまして。ハンズラボの臼井です。

自己紹介を適当な箇条書きで以下に記します。

  • 目の前の業務がどうこうとかのプロジェクトよりも、テクノロジーでつらみを減らしたりワイワイしたい派
  • 強い静的型付け派
  • FBより圧倒的にTw派
  • インドア派
  • 猫派及びアルパカ派

派が多くてゲシュタルト崩壊しそうです。
以後よしなに。

はじめに

東急ハンズ/ハンズラボの開発事例については、当社代表の長谷川が各媒体にて紹介していますが、
その中でしばしば出てくる 「ユニケージ開発手法」 というものが、ハンズラボの技術の中核を占めるもののひとつになってます。
この手法の採用事例については、検索して頂ければ、ビジネス観点からはいくらかヒットするので概観は掴めます。
しかし、技術の観点からについては、USP研究所様による公式サイト、及びOSS版のリポジトリ 以外は殆ど情報が無い、というのが現状です。

ここでは、できるだけフラットな観点から、ユニケージ開発手法について主に技術的な観点から説明します。 続きを読む ハンズラボが採用しているユニケージという謎テクノロジーについて 第1回

Pocket

JAWS-UG京王線で発表してきました

Pocket

初めまして、ハンズラボの今井です。

 1月27日(火)にJAWS-UG京王線に参加しまして、発表してきた内容をブログで共有します。

以下は、発表で使ったスライドです。

質疑応答のときに、「ハンズラボさんって夜中はサーバを停止しているって言ってたけど、一時間しか停止してないんですね。」という素晴らしいツッコミをいただきました。

続きを読む JAWS-UG京王線で発表してきました

Pocket