Rails、gem集 「The Ruby Toolbox」のカテゴリ概要

Ruby on Rails の開発をしていると、後で有用なGem が見つかったりするので、どういうGem が出ているかをまとめてみました。
多いので抜粋です。

#The Ruby Toolbox
Ruby や Ruby on Rails で使える gem や tool 集です。
[The Ruby Toolbox](https://www.ruby-toolbox.com/)

##Active Record Plugin
データベース周り。
データベースとの接続から、得られたデーターのページネーション、タグ付けなどを行える。

##Background Processing
非同期実行やスケジュール実行など、バックグラウンドで処理するためのgem。

##Communication
主にメール関連。同期 or 非同期メール送信のほかにも色々あります。
######E-Mail Processing
メール受信時にデータベースへ保存するなどの受信時処理
######E-Mail Preview
送信結果をブラウザなどで簡単に確認できる開発者向けツール
######CRM Apps, Forum Systems
顧客管理システム、フォーラム管理システムもこのカテゴリーに入ります。
######IRC bots
[IRC](https://ja.wikipedia.org/wiki/Internet_Relay_Chat) というチャットプロトコルを使った、自動応答。IRC で何かメッセージを送ると、その投げかけに応じた処理をしてくれる。
メッセージは正規表現でマッチングできるので、自由度の高いメッセージに対応できる。


##Content Management & Blogging
いわゆるCMS関連です。ブラウザから簡単にウェブページやブログを管理、編集できるようになります。
######Blog Engines
ブログ機能を追加します。[blogit](https://github.com/KatanaCode/blogit)をなどを使えば、サイトマップの作成やRSS、SNSシェアなどの導入が容易になります。[Octopress](https://github.com/imathis/octopress)を使えば、Mrakdown形式のブログ、ウェブページを簡単に下書き、公開、非公開にできます。
######Static Website Generation
データベースとのやり取りのない、静的ページを作ります。[Jekyll](https://github.com/jekyll/jekyll) は、上記のOctopressで、静的ページ作成に使われています。

##Data Persistence
データベースとのやり取りで、データの形式(JSONとかカンマ区切りとかオブジェクトとか) をうまく合うようにしてくれます。

##Developer Tools
開発者向けツール。デバッグとかエラー表示とか。

##Documentation Tools
開発したプログラムに関するドキュメントを作ってくれる。

##Documents & Reports
PDF ファイルの生成、読み込んでデータを抽出してくれる。

##E-Commerce and Payments
オンラインショップのためのツール。オンラインショップ作成&管理ツール、お金まわりのツールなど。

##Fun
######Game libraries
ゲーム構築のライブラリ。
Gosu (2Dゲームライブラリ) 作成例はこちら。マリオのようなもの。
[Gem Collector: Ruby game made with Gosu - YouTube](https://www.youtube.com/watch?v=_VmOiZVc7pM)

######Music & MIDI
何個かありますが、あまり更新されていないようです。

##Graphics
######Graphing
Javascriptグラフが描画できます。
例えば、chartkickを使えば、たった一行、
`<%= line_chart User.group_by_day(:created_at).count %>`
で、モデルクラスから線グラフが出来ます。

######Image Processing
画像処理ライブラリ。サムネイルの作成やリサイズなど、よく使う機能。
[chunky_png](https://github.com/wvanbergen/chunky_png), [RMagick](https://github.com/rmagick/rmagick), [MiniMagick](https://github.com/minimagick/minimagick)あたりが有名どころ。

######QR Codes
QRコードを作成する。

######Visualizing Data
グラフ描画ですが、Graphingのカテゴリーのようなエクセルなどでよく使うようなものではなく、グラフ理論で使うグラフで、物事の関係性を表したりするものです。
ruby-graphvizは、[graphviz](http://www.graphviz.org/)を使って実現します。

##HTML & Markup
パンくずリスト、メニュー、入力フォーム、テーブルなどを生成するツール。また、Haml や Simlのような、HTMLコーディングをシンプルにするテンプレートエンジンもこのカテゴリ。

サンプルコードを記載するときに、その言語に合わせたシンタックスハイライトを追加する[coderay](https://github.com/rubychan/coderay)を使えば、
`CodeRay.scan_file('hello.rb').html`
というような記述で、シンタックスハイライトが追加できる。

##Maintenance & Monitoring 
######App Instrumentation
サーバーの監視機能を追加する。
例えば[newrelic_rpm](https://github.com/newrelic/rpm)を使えば、レスポンスタイムなどの、各種パフォーマンスに関する統計情報をNew Relicのサイトから見られるようになります。監視サーバーの準備も要りません。
AWS上で使いたい場合は、[こちら](http://qiita.com/kou/items/fcb75108e6e882fd12bb)を"AWS登録前に"参考にすると無料で使えます。

######Server Monitoring
サーバーが正常動作しているかを監視。

##Testing
######A/B Testing
二つのViewを作って、その違いを見るためのツール。
2つであったり、場合によっては複数個のデザインがあったとして、どちらがより成果(購入してくれる、公告をクリックしてくれる、など)に繋がるの？という議論を、自分らでやるんじゃなく、実際にサイトユーザーにランダムに見てもらって、結果、どちらが成果でたか？を判断するツール。
これに関したこの記事はとてもおもしろいです。
[A/Bテストよりすごい？バンディットアルゴリズムとは一体何者か](http://qiita.com/yuku_t/items/6844aac6008911401b19)

##Web Apps, Services & Interaction
他のサービスとのやり取りするためのツール。ツイッターなどとのAPI通信、自身のサービスのAPI作成、受信したウェブページの解析、RSSフィードなど多岐にわたる。
サーバー間のやり取りとしては、SOAP や JSON もある。