ウェブサービスを作っています。

ふるさと納税の返礼品検索サイト「ふるふる」を作りました

ふるさと納税の返礼品を検索できる「ふるふる」というサービスを作りました。

ふるふる

ふるさと納税のポータルサイトはいくつかありますが、

  • できるだけ多くの返礼品を検索できる
  • ごちゃごちゃしていない
  • 簡単に検索できる

サイトがほしいと思い、開発に至りました。

といいつつ、まだ網羅できていない返礼品があったり、スマホ版がなかったりと問題がありますが、様子を見て改善していこうと思います。

技術的には、

  • HTML5/CSS3
  • Elasticsearch
  • Let's Encrypt
  • Ubuntu 16.04

といったことをやってみました。

HTML5/CSS3 の勉強には、以下の 2 冊が役に立ちました。ありがとうございます。

最強のCSS設計 チーム開発を成功に導くケーススタディ

最強のCSS設計 チーム開発を成功に導くケーススタディ

Let's Encrypt 関係は、9m さんの記事が大変役に立ちました。ありがとうございます。

どうぞご利用ください。

Kaminari で、最大ページ数を指定する

Kaminari v0.17.0 で確認しました。

ページングされすぎて、サーバに負担がかかる場合などに便利です。


config/initializers/kaminari.rb

Kaminari.configure do |config|
  config.max_pages = 100
end

これで、ページネーション用のリンクなどが 100 ページまでしか表示されなくなります。


page パラメータを手動で設定された場合の対策もしておきます。

app/controllers/application.rb

class ApplicationController < ActionController::Base
  before_action :normalize_page

  private
  def normalize_page
    page = params[:page].to_i
    params[:page] = (page <= 1 || page > Kaminari.config.max_pages) ? nil : page
  end
end

新生銀行に自動ログインする Google Chrome の拡張機能を作りました

以前、新生銀行に自動ログインするユーザースクリプトというものを書いたのですが、Chrome のセキュリティレベルが上がり、動かなくなってしまいました。

そこで今回、拡張機能としてきちんと作りなおしてみました。

Shinsei Power Direct AutoFill - Chrome Web Store

拡張機能の「オプション」でログイン情報を設定することで、自動ログインが可能となります。

ログイン情報は暗号化し、ローカル環境に保存する仕組みです。

ソースコードは GitHub で公開しています。

Chrome 拡張機能の作成には、ドットインストールが大変参考になりました。ありがとうございます。

どうぞご利用ください。

「Elasticsearch: The Definitive Guide」が良い

検索まわりに強くなりたくて、最近は Elasticsearch の勉強をしています。

ただ、ブログの記事や日本語の書籍 (↓) は、情報が古かったり断片的な情報で、いまいち全体像をつかむことができませんでした。

高速スケーラブル検索エンジン ElasticSearch Server

高速スケーラブル検索エンジン ElasticSearch Server

  • 作者: Rafal Kuc・Marek Rogozin’ski,株式会社リクルートテクノロジーズ,大岩達也、大谷純、兼山元太、水戸祐介、守谷純之介
  • 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
  • 発売日: 2014/03/21
  • メディア: 大型本
  • この商品を含むブログ (4件) を見る

そこで、公式サイトにある Elasticsearch: The Definitive Guide を読んでみたところ、わかりやすくてよかったです。

英語なのでちょっとつらいですが、Getting Started まで読むだけでも役立ちそうです。

情報が新しく、Elasticsearch 2.0 に対応しているのも良い点です。


elasticsearch-rails の入門方法

elasticsearch-rails に関しては、サンプルアプリのソースが参考になりました。

WEB+DB PRESS Vol.87 の Elasticsearch 記事も参考になります。

WEB+DB PRESS Vol.87

WEB+DB PRESS Vol.87

  • 作者: 佐藤鉄平,小林明大,石村真吾,坂上卓史,上原誠,鳥居英,佐藤歩,泉水翔吾,うさみけんた,伊藤直也,高橋侑久,佐藤太一,hayajo,橋本翔,西尾泰和,中島聡,はまちや2,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/06/24
  • メディア: 大型本
  • この商品を含むブログ (2件) を見る

elasticsearch:import タスクで eager loading を行う

elasticsearch-rails には、DB のデータを Elasticsearch にインポートするelasticsearch:import という便利な rake タスクがあります。

ただ、has_many などで関連しているデータもインデックスしたい場合に

rake environment elasticsearch:import:all FORCE=y

だけだと、eager loading が行われず、インデックス速度が遅くなってしまいます。

そこで、モデルに

scope :search_import, -> { includes(:categories, :sub_categories) }

のような scope を作ってあげて、

rake environment elasticsearch:import:all SCOPE="search_import" FORCE=y

とすると、eager loading が行われ、インデックス速度を上げることができます。


また、Gemfile に

gem 'ansi'

を追加すると、タスクの実行中にプログレスバーが表示されて便利です。

iTerm2 上の Emacs で、テーマの色を適切に表示する

iTerm2 で Emacs を起動し (emacs -nw)、 テーマを選択すると、適切な色が表示されないことがあります。

調べたところ、iTerm2 の開発版と、パッチを当てた Emacs を使用することで直すことができました。

以下、Homebrew を使用していて、環境変数 TERM が xterm-256color になっている前提です。

使用中の iTerm2、Emacs を削除

brew cask uninstall iterm2
brew uninstall emacs
brew uninstall tmux  # tmux を使っている場合

iTerm2 開発版のインストール

brew tap caskroom/versions
brew cask install iterm2-nightly --appdir=/Applications

パッチを当てた Emacs のインストール

brew install choppsv1/term24/emacs
brew install choppsv1/term24/tmux  # tmux を使っている場合

iTerm2 の再起動

あとは、iTerm2 を起動しなおして、

ITERM_24BIT=1 emacs

とすれば、適切な色が表示されるはずです。

いちいち ITERM_24BIT=1 と打つのは面倒なので、.zshrc などに書いておくと良いと思います。

.zshrc

export ITERM_24BIT=1

参考