読者です 読者をやめる 読者になる 読者になる

C# + Nancy (OWIN, SelfHost, SSVE) + Dapper + Heroku + Highchartsで食べたリンゴの割合をグラフ化してみた

C# Nancy Dapper FluentMigrator Twitter

以前、Ruby + Heroku + Highchartsで食べたリンゴの割合をグラフ化してみました。
Ruby + Heroku + Highchartsで食べたリンゴの割合をグラフ化してみた - メモ的な思考的な

 
現在でも十分使えるのですが、手元の開発環境が

  • WindowsVirtualBoxUbuntu VMが壊れ始めた
  • 手動でVMを作ったので、当時の作成手順がわからない
  • 今まで使っていたChef soloが終わったので、環境を構築する場合、新しい構成管理ツールに入門する必要あり

などの問題を抱えており、継続運用やアップデートするのは厳しい状態でした。

 
そんな中、去年の9月頃にHerokuのMonoでC#のNancyが動くということが分かりました。そこで、Ruby + Padrinoを C# + Nancyに移植してみました。

 

開発環境

 

Heroku環境

グラフを表示するNancy(RingoTabetter)と、グラフのデータソースを返すAPIのNancy(RingoTabetterApi)の2つのアプリになります。

 

共通
  • Heroku buildpacks
    • heroku/heroku-buildpack-multi
    • friism/heroku-buildpack-mono
    • heroku/heroku-buildpack-ruby
  • NuGet

 

RingoTabetter

食べたリンゴをグラフ化するアプリです。

  • Heroku buildpacks
    • friism/heroku-buildpack-mono
  • Highcharts 4.0.4
  • jQuery 2.1.3

 

RingoTabetterApi

こちらは、

  • HighchartsのデータソースとしてのAPI
  • Twitterより[リンゴ]で始まるツイートを収集

の2つのプロジェクトで構成するアプリです。

 

Herokuのアドオンやbuildpack
  • Heroku Postgres
  • Heroku Scheduler
  • Heroku buildpacks
    • heroku/heroku-buildpack-multi
    • friism/heroku-buildpack-mono
    • heroku/heroku-buildpack-ruby

 

NuGetパッケージ
名前 バージョン 内容
Npgsql 2.2.3 Heroku Postgres用のアダプタ
CoreTweet 0.4.0 ツイートの収集
Dapper 1.38 Micro-ORM
Dapper.FluentMap 1.3.3 Dapperでsnake_caseなDBをCamelCaseなクラスにマッピング
FluentMigrator 1.3.1.0 DBのマイグレーション
FluentMigrator.Tools 1.3.1.0 FluentMigratorをコマンドライン実行
YamlDotNet 3.5.0 リンゴ品種ファイルや、設定ファイルの読み込み(ローカルのみ)

 
ツイートの収集には当初LinqToTwitterを考えていましたが、Herokuではうまく動作しなかったため、CoreTweetを使いました。日本語ドキュメントも結構充実していて、なかなか扱いやすいので、今後も利用していこうと考えています。

 

Ruby Gem
名前 バージョン 内容
Albacore 2.3.15 HerokuでFluentMigratorを実行

 
また、NuGetやGemのの使い方については、去年いろいろとさわったりBlogエントリを書いたので、今回は省略します。

 

アプリイメージ

Rubyで作ったものと変更はありません。

 

現時点の様子

りんごたべたー

 

f:id:thinkAmi:20150114063812p:plain

食べる期間が長いせいか、今回もシナノゴールドが目立っています。

なお、現時点では、旧アプリよりデータベースを移行していないため、直近2,000ツイートを解析した結果となっています。

 

ソースコード

GitHubに上げてあります。

 
自分が使っていく中で不便なことがあったり、データ移行がまだであったり、そもそもテストがなかったりしますので、順次改良していこうかと考えています。