Algoliaを利用してサイト内検索機能を実装する

こんにちは。
当ブログのサイト内検索をしたことある方はお気づきかもしれませんが、サイト内検索にAlgoliaを利用しています。
(後述の事情により月初に使えなくなることがたまにありますが)動作速度もかなり早く、安定して稼働してます。

運用コストもゼロで、記事書いてPRをマージすれば記事公開日に勝手にコンテンツが検索対象に一手間加えてあります。
Algoliaを1ヶ月実運用してみたので、Algoliaはいいぞという紹介記事を書きたいと思います。

また、CQRS・DDDの勉強のために、フロントはReactとAlminで実装してみました。
Almin、CQRS、Fluxの小さな実装例の1つとしても参考になるかと思います。

Node.jsのProxyでdirty checkとmethod missingを実現してみる

過去にphpのマジックメソッドを使ってRailsのfind_all_by_*メソッドを実装してみる | WEB EGGという記事を書いたのですが、Node.jsでもProxyの登場により、似たようなことができるのでは? と思ったので試してみました。

今回の題材は、同じくRailsのActiveRecordから、ActiveModel::Dirtyモジュールです。

person = Person.new
person.changed? # => false

person.name = 'Bob'
person.changed?       # => true
person.name_changed?  # => true
person.name_was       # => nil
person.name_change    # => [nil, "Bob"]
person.name = 'Bill'
person.name_change    # => [nil, "Bill"]

こんな感じに変更を検知するためのマジックメソッド、ユーティリティが加わるモジュールだそうです。

昔であればBackbone.jsのモデルが似たような仕組みを提供していました。
ですが、あれば独自のセッタを提供しており、それを利用しているから変更が検知できるという仕組みです。 いわば白魔術です

今回は、 独自のセッタ を提供せず、普通にオブジェクト操作しているだけで変更検知ができちゃう機能の実装を目指します。
白魔術に対して言うなれば、黒魔術です。

ちなみに使用しているNode.jsのバージョンはv6.1.0です。

Railsでconfig/database.ymlを使わずURL文字列でDB接続したい

れこです。今回はRailsネタです。
作ったアプリをHerokuにデプロイするときに、各種アドオンで

XXX_URL=pg://xxx:yyy@zzz/hoge

のような文字列を環境変数で指定して使うというパターンが有ると思うのですが、
config/database.ymlに一切触らず に、この文字列でDB接続したい…

と思ったのでRailsのソースやドキュメントを読み漁ってみました。

RubygemsへのデプロイをCircleCIで自動化してみた

ActiveResourceでChatWorkのAPIを叩くgemを作ってみました。
これが初めて作ったgemなのですが、手で運用すると色々忘れそうな感じがした。

ライブラリのメンテはただでさえ手がかかるので、パッケージ管理サービスへのデプロイくらい手を抜きたい。
ということで、GithubのmasterブランチにpushされたらCircleCIを使って自動でgemをデプロイする設定をしてみました。

ActiveResourceでChatWorkのAPIクライアントを作る際にハマったところと解決策

れこです。
久々にRubyの記事です。

仕事でよくChatWorkを使用するので、いい加減オレオレAPIクライアントじゃなくてちゃんとしたのを作ろう
ということで、ActiveResourceを利用したAPIクライアントを作ってみました。

ActiveResourceは基本的にRuby on Railsで作られたアプリケーション用のAPIクライアントなのですが、汎用的に作られているのでChatWorkのAPIにも対応できました。
ということで他のAPIにもActiveResourceを利用するために備忘録を残しておきます

phpのマジックメソッドを使ってRailsのfind_all_by_*メソッドを実装してみる

久々の更新です。
ネタは溜まっているんですがなかなか書くモチベが沸かず。

これから定期的に更新できるよう頑張ります。

今日はPHPのマジックメソッドについて書きます。

PHPのマジックメソッドの中に__callStaticというメソッドがあります。
これは、クラスで定義されていないメソッドに対してstaticなコールをした際に呼び出されるフックです。

この機能を使えば、Rubyでいうところのmethod missingのような挙動が可能になるのでは?
と考え、実験にRuby on Railsで以前まで使われていたfind_all_by_*を実装してみたいと思います。

ライブラリ等に依存しないシンプルなデモと、
実用化するために、FuelPHPのモデルを用いた例も作成します。

  • 1 / 2