CurryBu 開発日誌

今日食べたカレーを共有する CurryBu の開発ブログです。

新規登録ページに reCAPTCHA を導入しました

こんにちは。 Bot によるユーザーのスパム登録が増えているため、reCAPTCHA を導入しました。

www.google.com

導入したのは reCAPTCHA v3 で、クライアントのリクエストが正しいか (人間か) のスコアを reCAPTCHA から取得します。 スコアが一定以上の場合は、新規登録を行います。ほとんどの場合、ユーザーは何もする必要はありません。

しかし、通常のユーザーであっても低いスコアになる可能性があるため、その場合は reCAPTCHA v2 にフォールバックし、チェックボックスによる確認を行います。

f:id:cho_co_by:20200429163812p:plain
面倒なアレです

ほとんどの方には関係ないと思いますが、ご協力をよろしくお願いします。

メールアドレスを確認するまでログインできないようにしました

もう一点、変更を行いました。

新規登録後、メールアドレスにメールを送信し、正しいメールアドレスか確認するために URL のクリックをお願いしています。

これまでは、メールアドレスを確認していなくても、数日はログインできる状態になっていましたが、メールアドレスを確認するまでログインできないように変更しました。

スパム登録と関連しますが、メールアドレスを確認できないままサービスを使えるのは、セキュリティーの面で問題があるためです。

もしメールが届いていない場合は、以下のページから再送信できますので、ご確認ください。

メールアドレスの確認を再送信 - CurryBu[カレー部]

Tumblr からはてなブログに移行しました

こんにちは。

このブログは Tumblr を使っていましたが、中の人がはてなブログを使っていて慣れていることや、Tumblr の先行きが不安なこともあり、はてなブログに移行しました。

移行にあたり、以下の記事を参考にさせていただきました。

blogja.gyazo.com

上記の記事にもありますが、データのエクスポートについては以下のツールを使いました。

http://tumblr2hatenablog.herokuapp.com/

「Tumblr Account」に Tumblr の URL を入力し「Exported Content Format」に「Raw Input (preserving Markdown)」を選択してエクスポートしました。 その他のオプションについては変更していません。

ダウンロードしたファイルを、はてなブログの管理画面で読み込めば簡単にインポートできます。 記事の画像については、はてなブログが Tumblr からの移行に対応しており、記事内の URL も書き換えてくれるため、非常に便利でした。

旧 URL のリダイレクトは設定していません。 申し訳ありませんが、古いリンクは 404 Not Found になってしまいます。

どのお店に行くか迷ったら?CurryBu におまかせしてみよう!

こんにちは!涼しくなってきましたね。

最近は CurryBu の Rails を 5.0 系にアップデートしたいなと思いつつ、 mobylette gem を ActionPack Variants に切り替えるのが大変そうで手が止まっている今日この頃です。

さて、僕は近くに色々なカレー屋があると、どこに行こうか毎回迷ってしまいます。渋谷の場合は迷った結果 C&C に行く事が多いです。 それだともったいないので、CurryBu に任せてみましょう。CurryBu が近くのカレー屋からあなたにおすすめのカレー屋を選びます! (現在スマートフォン版のみで使えます)

おまかせ機能を使うにはメニューから「おまかせ!」をタップします。

近くにお店があればお店のページを表示します。 近くにお店がない場合は、申し訳ないのですが表示できません... 良かったらカレー屋を登録してみてくださいね :)

ぜひ使ってみてください!

最近の開発の様子をお知らせします。

開発環境の一部を Docker で動かすようにした

アプリ以外の DB サーバー (PostgreSQL, Elasticsearch, Redis) や mailcatcher gem を Docker で動かすようにしました。以前は Homebrew で必要なミドルウェアをインストールしていたのですが、docker-compose up を叩くだけなので導入や起動が楽になりました。Docker は Docker for Mac で動かしています。

アプリ自体もコンテナで動かすとスッキリするのかもしれませんが、あまり困っていなかったので今回は見送りました。 依存するライブラリが大幅に増えるなど、開発環境を作るのが大変になってきたら検討するかもしれません。

また、AWS S3 についても FakeS3 などのクローンを使用してローカルでテストできるようにしたいのですが、 CarrierWave や fog との相性が悪いのかアップロードしたオブジェクトが壊れてしまうので難航しています...

Elasticsearch を 2.3 にアップデート

1.7 から 2.3 にアップデートしました。以下の記事が参考になりました。

Rails を 4.2.7.1 にアップデート

Ruby を 2.3.1 にアップデート

ではでは。

気になるカレーやお店を探そう!

こんにちは!

CurryBu に新しい機能を追加しました。

カレーやお店を探す

カレーやお店、部員を検索できるようになりました。
ページ上部の検索フォームから、検索したい語句を入れて Enter キーを押すことで検索できます。

現在はシンプルですが、カレーの種類やトッピングなど、便利に検索できるようにしていきたいと思います。

近くのカレー屋を探す

スマートフォンや PC の位置情報を使用して、近くのカレー屋を探せるようになりました。
ぜひ、あなたの近くのカレー屋を探してみてください。カレー屋への大体の距離も表示されます。

フィードバック

フィードバックのリンクを、PC ではページの下部、スマートフォンではメニュー部分に追加しました。
今回紹介した検索機能についての感想や、ここが使いにくい、こういう機能があったらいいな、など気軽に送っていただけると嬉しいです。

頂いたフィードバックは CurryBu の改善の参考にさせていただきます。

以上です。ぜひご利用ください!

http://currybu.com

以下、開発ブログらしく技術系の話を少々...

Elasticsearch

以前から使いたいと思っていたのですが、今回投入しました。
カレーやお店を探す機能で全文検索を、近くのカレー屋を探す機能で地理情報を扱っています。

プラグインは日本語の形態素解析elasticsearch-analysis-kuromoji を使用しており、 elasticsearch-model gem, elasticsearch-rails gem, elasticsearch-persistence gem を使用して Rails に組み込んでいます。

Rails 4.2.1.rc4

Rails 4.2 でサポートされたいくつかの機能を使ってみました。

  • Foreign Key Support: 外部キー制約をマイグレーションで追加できるようになりました。foreigner gem から移行しました。 移行については create_table ブロック内で t.foreign_key という記述が出来ない以外、add_foreign_keyインターフェイスが同じなので特に変更は必要ありませんでした。
  • Active Job: sidekiq_options のようにオプションを渡せず、リトライの設定ができなかったので、しばらくは見合わせです。

もうすぐバージョン 4.2.1 の正式版がリリースされるかと思います。

Ruby 2.2.1

Symbol GCメモリリークが解消されたとのことです。

Ruby 2.2.1で解決されたSymbol GCメモリリーク問題について - Qiita
http://qiita.com/Peranikov/items/784ab53b772ff7914ffa

jQuery 2

jquery-rails gem のアップデートで jQuery のバージョンを 1 系か 2 系かで選択できるようになったので、jQuery 2 を使用するようにしました。

以下のように jquery2 を指定します。

//= require jquery2
//= require jquery_ujs

その他

Gem のバージョン指定について、固定する必要があるもの以外は固定しないようにしました。
また、Gem のアップデートについてこれまではひとつずつ行なっていましたが、ある程度のテストを書いているので、 CHANGELOG や diff に目を通しつつ、まとめてアップデートするようにしました。

ではでは。

CURRYBU に Yo を送ってカレー情報を受け取ろう!

こんにちは。お盆ですね。

今更ですが Yo を始めまして、API を使ってみました。

CURRYBU に Yo を送ることで、 カレーが投稿された時に Yo を受け取ることができます。
良かったらどうぞ。

最近のアップデートでアプリから URL が付加できるようになった らしいです。
API でも URL を付加できるようになることを期待しています。

2014/08/15 15:00 追記: URL を付加するようにしました!通知を開くことで、投稿されたカレーにアクセスできます。 iOS 版 Yo アプリのバージョン 1.1.0 で確認しています。

お店のページに地図が表示されるようになりました

こんにちは。ジロ・デ・イタリアが始まりましたね。

お店のページに地図が表示されるようになりました。
例えば、カリガリだとこのように表示されます。

渋谷カリガリ (東京都) - CurryBu[カレー部]

もちろん、スマートフォン版でも利用可能です。

どうぞお試しください。

それでは今週も良いカレーを :)