AWESOME HANAMI


## はじまる前に

Hanamiについては[入門ガイド](https://qiita.com/park-jh/items/e790736e61d7b39a42b9)をご参照ください。
Hanamiでは既存Rails環境で使うことを前提として作られたGemは使えません。（フレームワークに依存しないGemを除く）
しかし、Webアプリケーションの開発について必要なGemは大体用意されています。
今回はそのGemやHanamiのサンプルを紹介したページを和訳しました。

## AWESOME HANAMI

Hanamiの開発のため、すごいruby gemsやプロジェクトのコレクションをご紹介します。
すごい製品・サービスを作るすべてのHanami開発者に役に立つのが目標です。

## HANAMI GEM LIST

### Assets

* [hanami-bootstrap](https://github.com/davydovanton/hanami-bootstrap) - Hanami用のBootstrapラッパー
* [jquery-hanami](https://rubygems.org/gems/jquery-hanami) - HanamiアプリケーションにjQueryとjQuery-ujsドライバーを提供します。
* [hanami-webpack](https://github.com/samuelsimoes/hanami-webpack) - Hanamiのasset pipelineでWebpackを使えます。

### Authentication and OAuth

* [hanami-rodauth](https://github.com/davydovanton/hanami-rodauth) - Hanami用のRodauth[^1]ラッパー
* [hanami-fumikiri](https://github.com/theCrab/hanami-fumikiri) - HanamiアプリケーションのJWT認証ラッパー
* [tachiban](https://github.com/sebastjan-hribar/tachiban) - Hanamiアプリケーションにbcryptを使う認証を提供します。
* [omniauth-hanami](https://github.com/katafrakt/omniauth-hanami) - HanamiアプリケーションについてOmniAuthを提供します。

[^1]: [Rodauth](https://github.com/jeremyevans/rodauth)は、Deviseのような認証のトータルライブラリです。

### File Uploading

* [hanami-shrine](https://github.com/katafrakt/hanami-shrine) - Shrineライブラリ[^2]を使うHanamiのアップロードソルーションです。

[^2]: [Shrine](https://github.com/janko-m/shrine)は、Rubyアプリケーションのファイル添付のツールキットです。

### Performance Monitoring

* [newrelic-hanami](https://github.com/artemeff/newrelic-hanami) - Hanami用のNewRelic接続Gem

### Testing

* [rspec-hanami](https://github.com/davydovanton/rspec-hanami) - Hanami用のRSpec Matchers
* [shoulda-hanami](https://github.com/mcorp/shoulda-hanami) - Hanami用のshoulda
* [hanami-fabrication](https://github.com/jodosha/hanami-fabrication) - HanamiとFabrication Gem[^3]を簡単に統合するUtility

[^3]: [Fabrication](org)は、FactoryGirlのようなものです。後発ライブラリで、性能はFactoryGirlよりいいみたいです：[Fabrication vs FactoryGirl](https://ksylvest.com/posts/2017-08-12/fabrication-vs-factorygirl)

### Database

* [rom_sql_graph](https://github.com/davydovanton/rom_sql_graph) - HanamiとromプロジェクトのDB（sql）関連グラフ

### Pagination

* [hanami-pagination](https://github.com/davydovanton/hanami-pagination) - HanamiアプリケーションのページネーションGemで、ROM::Paginationプラグインがベース

### CLI

* [hanami-scaffold](https://github.com/davydovanton/hanami-scaffold) - Hanamiのscaffoldsをより早く作ります。
* [hanami-zsh](https://github.com/davydovanton/hanami-zsh) - HanamiプロジェクトのZshプラグイン

### Building APIs

* [jsonapi-hanami](http://jsonapi-rb.org/) - HanamiでJSON API準拠するAPIを効率的かつ便利に構築します。
* [hanami-jbuilder](https://github.com/vladfaust/hanami-jbuilder) - HanamiアプリケーションでJBuilder[^4]テンプレートのレンダリングを提供します。
* [hanami-serializer](https://github.com/davydovanton/hanami-serializer) - Hanamiアプリケーション用のシリアルライザーライブラリです。

[^4]: JBuilderは、DSLビルダースタイルのJSONオブジェクトを生成します。

### API Documentation

* [had](https://github.com/nsheremet/had) - Hanami API 公式文書

### Deploy

* [mina-hanami](https://github.com/mgrachev/mina-hanami) - Hanami用のMina[^5]プラグイン
* [capistrano-hanami](https://github.com/mgrachev/capistrano-hanami) - Capistrano v3のHanamiタスク

[^5]: [Mina](https://github.com/mina-deploy/mina)は、Capistranoより早いアプリケーション配布ツールです：[Mina vs Capistrano](https://infinum.co/the-capsized-eight/faster-web-application-deployments-using-mina-instead-of-capistrano)

### Editors and IDE

* [RubyMineでHanamiはどう実行されるのか](https://medium.com/@tetyanachupryna/how-to-run-hanami-in-rubymine-dff342cb0114)
* [projectile-hanami](https://github.com/avdgaag/projectile-hanami) - Projectile HanamiはHanamiプロジェクトを操作するためのProjectileをベースにしたEmacのマイナモードです。
* [Vim Hanami](https://github.com/sovetnik/vim-hanami) - 意味的には関連するファイルの間でより早い操作をするためのプラグインです。（Action <-> View, Entity <-> Repository or Spec <-> Entityのような）
* [Vim Minispec](https://github.com/sovetnik/vim-hanami) - Gem又はMinitest specを実行するプラグインで、Vimのquickfixでその結果を表示します。

## VANILLA LIBRARIES AND HANAMI

フレームワークに依存しないGemはHanamiでもそのまま使えます。
Hanamiでの使い方については各リンク先をご参照ください。

* [omniauth](https://github.com/omniauth/omniauth) - [HanamiでOAuth](https://www.monterail.com/blog/2016/hanami-with-oauth)
* [Sidekiq](https://sidekiq.org/) - [RailsからHanamiへ Part 3, HanamiでSidekiqを使う](http://rpanachi.com/2016/04/25/from-rails-to-hanami-part3-sidekiq-workers-i18n-timezone-issues-core-ext)
* [I18n](https://github.com/svenfuchs/i18n) - [RailsからHanamiへ Part 3](http://rpanachi.com/2016/04/25/from-rails-to-hanami-part3-sidekiq-workers-i18n-timezone-issues-core-ext)
* [Sequel plugins](http://sequel.jeremyevans.net/plugins.html) - [RailsからHanamiへ Part 3](http://rpanachi.com/2016/04/25/from-rails-to-hanami-part3-sidekiq-workers-i18n-timezone-issues-core-ext)
* [letter_opener](https://github.com/ryanb/letter_opener) - [ブラウザでE-mailをプリビューする](http://blog.davydovanton.com/2016/05/21/preview-hanami-emails-in-browser/)
* [mongoid](https://github.com/mongodb/mongoid) - [github](https://github.com/michalvalasek/hanami-mongoid)
* [Trailblazer](https://github.com/trailblazer/trailblazerlll) - [HanamiでTrailblazer](https://github.com/apotonick/gemgem-hanami)
* [Factory Girl](https://github.com/thoughtbot/factory_bot) - [HanamiでFactory Girl](https://gist.github.com/rafaels88/8437edababcf38ee193b2ba0265e78b9)

Factory Girlですが、名前がFactory botに変更されました。

## HANAMI PROJECT LIST

HANAMIで行われているプロジェクトの紹介です。

### Closed Source

クローズドソースは、オープンソースの反対概念です。
Hanamiを用いて商用Webアプリケーションを開発したということなので、スキップ

* ローン申請プラットフォーム - 保証として自動車または住宅を使用するクレジットローンのブラジルのスタートアップ。

### Open Source

* [OSSBoard](http://www.ossboard.org/) - 開発者とossのメンテナーを結びつける簡単な方法([Sources](https://github.com/ossboard-org/ossboard))
* [contributors.hanamirb.org](http://contributors.hanamirb.org/) - 全てのhanamiのコントリビュータがいる場所([Sources](https://github.com/hanami/contributors))
* [app.dartboard.io](https://github.com/hanami/contributors) - Hanamiで構築されたオンラインダーツスコアアプリ([Sources](https://github.com/stravid/datsu-api))
* [pinfluence](https://github.com/rafaels88/pinfluence) - 地図上の全世界のインフルエンサー
* [scripta.io](http://www.scripta.io/home) - Web上で文書を生成及び共有するプラットフォーム

### Play/Pet projects

HanamiのWebアプリケーションのサンプル集です。
実用的なサンプルですので、参考にしましょう。

* [upment-hanami](https://github.com/AlexanderMint/upment-hanami) - JWT、GraphQL、RSpec及び[REACT client](https://github.com/AlexanderMint/upment-client)を扱っているHanamiのアプリ
* [distruct-me](https://github.com/MorozovaLiuda/distruct-me) - 自己破壊できなメッセージのHanamiアプリ（Snapchatのような）
* [hanami-jwt-example](https://github.com/nickgnd/hanami-jwt-example) - JWT認証、暗号化パスワード及びCORSサポートを備えるHanamiで作られた簡単なJSON API Webアプリケーション
* [repressed_museum](https://github.com/vasspilka/repressed_museum) - 大体簡単な静的Webサイト、基本的な18n機能及びdocker統合
* [bookshelf-delivery-example](https://github.com/bruz/bookshelf-delivery-example) - WebのGUI、API及びinteractorsで共有されて使うCLIで作られたサンプル
* [hanami-chat-example](https://github.com/nickgnd/hanami-chat-example) - Hanamiと[LiteCable](https://github.com/palkan/litecable)（[AnyCable](http://anycable.io/)と互換性がある）で作られた簡単なチャットアプリケーション
* [Deutsch](https://github.com/mjacobus/deutsch) - ドイツ語を学ぶためのプロトタイプツール

## USEFUL LINKS

* [オフィシャルサイトのコミュニティページ](http://hanamirb.org/community/)

### Blog Posts

* [Hanamiでアプリケーションを作ることで学んだこと](https://rossta.net/blog/what-i-learned-about-hanami.html)
* [LiveReloadとHanami](https://defman.me/blog/hanami-love-livereload/)
* [Dockerを用いるNginxとPostgreSQL、そしてPumaでHanamiのWebアプリケーションを配布](http://codrspace.com/sebastjan-hribar/deploying-hanami-web-application-with-puma-nginx-postgresql/)
* [HanamiとGraphQLの入門](https://blog.simplificator.com/2016/12/07/getting-started-with-hanami-and-graphql/)
* [RailsからHanamiへ：Models](https://blog.codeminer42.com/from-rails-to-hanami-models-d1175d2d5b33)
* [IoT Saga - 初のHanamiアプリケーションの設置](http://gabrielmalakias.com.br/hanami/iot/docker/2017/02/14/iot-saga-my-setup-for-a-hanami-application.html)
* [Websockets! HanamiにLiteCableを接続](http://gabrielmalakias.com.br/ruby/hanami/iot/2017/05/26/websockets-connecting-litecable-to-hanami.html)

### User Groups

ポルトガル語みたいなので、スキップ。

* São Paulo, Brasil - Grupo de usuários Hanami-rb de São Paulo.
* Facebook, Brasil - Grupo brasileiro de discussão no Facebook.

### Benchmarks

* [hanami-bench](https://github.com/davydovanton/hanami-bench) - Hanamiのベンチマーク

## 参考

* http://awesome-hanami.org/