e2d3

e2d3-server ソースコード解説

More than 3 years have passed since last update.


e2d3-serverの機能


Excelから叩くAPI群 (a.e2d3.org)


  • チャート一覧: /api/categories

  • チャート共有: /api/shares

  • GitHubレポジトリからファイルを取得するProxy: /files/github


ブラウザから叩かれる共有用のAPI群 (s.e2d3.org)


  • /< チャート情報のSHA256の先頭7文字 >/< TSVのSHA256の先頭32文字 > : 共有ファイルのディレクトリ

  • /data/< TSVのSHA256の先頭32文字 > : データファイル


ディレクトリ構成

.

├── LICENSE
├── e2d3 : e2d3サブモジュール
├── gulpfile.coffee : CoffeeScript等のビルドのためのGulp設定スクリプト
├── package.json : npm パッケージファイル
├── server.js : サーバ起動のエントリポイント
├── src : ソースコード
│   ├── app : ExpressJSで公開されるAPIやWebViewが入ったディレクトリ
│   │   ├── api : Excelと通信を行うAPIのURL https://a.e2d3.org/
│   │   │   ├── adapters : 外部のAPIとの通信を行うためのアダプタ (インターフェースは試行錯誤中)
│   │   │   │   └── github.coffee : GitHubのAPIを叩くためのアダプタ
│   │   │   ├── index.coffee : a.e2d3.orgのExpressJSでの設定
│   │   │   └── routes : a.e2d3.orgのルーティング
│   │   │   ├── api : /api
│   │   │   │   ├── categories.coffee : /api/categories チャート一覧をJSONで返す
│   │   │   │   ├── index.coffee : /api をRouteとしてまとめるためのコード
│   │   │   │   └── shares.coffee : /api/shares FacebookやTwitterでシェアするためのAPI
│   │   │   └── files : /files
│   │   │   ├── github.coffee : /files/github GitHubレポジトリ上のファイルを取得するためのProxy
│   │   │   └── index.coffee : /files をRouteとしてまとめるためのコード
│   │   ├── index.coffee :
│   │   └── share : ブラウザでチャートを単体で表示して共有するためのURL https://s.e2d3.org/
│   │   ├── index.coffee : s.e2d3.orgのExpressJSでの設定
│   │   ├── routes : a.e2d3.orgのルーティング
│   │   │   ├── data.coffee : ユーザが共有したデータ(TSV)を吐き出すURL /data/<TSVのSHA256の先頭32文字>
│   │   │   └── shares.coffee : ユーザが共有したチャートを表示するHTMLを吐き出すURL /<チャート情報のSHA256の先頭7文字>/<TSVのSHA256の先頭32文字
│   │   └── views : ビュー
│   │   └── standalone.jade : shares.coffee から参照される、チャートを単体で表示するためのHTML
│   ├── cache : 各種キャッシュモジュール
│   │   ├── backend : バックエンドキャッシュ。外部APIの結果等をキャッシュする
│   │   │   ├── index.coffee
│   │   │   └── redis_store.js
│   │   └── frontend.coffee : フロントエンドキャッシュ。ExpressJS用のmiddleware
│   ├── config : 設定情報。NODE_ENVの値によって、ドメインやDBの接続先が切り替わるようにしてある
│   │   └── index.coffee
│   ├── db : データベースモジュール。NoSQLを想定し、DBの種類を切り替えられるようにしている
│   │   ├── collection : データアクセスモジュール
│   │   │   ├── chart.coffee : データ可視化テンプレートの情報。idは<path等の情報のSHA256>
│   │   │   └── data.coffee : ユーザが共有したTSVデータ。idは<TSVのSHA256>
│   │   ├── index.coffee
│   │   ├── azurestoragetable.coffee : azure実装
│   │   ├── mockdb.coffee : モック実装
│   │   └── mongodb.coffee : MongoDB実装
│   ├── error : 例外クラス
│   │   └── index.coffee
│   ├── init : データベースの初期化スクリプト
│   │   └── azure.coffee
│   ├── logger : ロガークラス
│   │   └── index.coffee
│   ├── queue : キューモジュール。サムネイル作成等の各種キューイングを行う。
│   │   ├── index.coffee
│   │   ├── kind : キューアクセスモジュール
│   │   │   └── thumbnail.coffee : サムネイル作成キュー
│   │   ├── azurestoragequeue.coffee : azure実装
│   │   └── mockqueue.coffee : モック実装
│   ├── storage : ストレージモジュール。サムネイル等のファイルの保管を行う。ブラウザから直接アクセスすることを想定。
│   │   ├── container : ストレージコンテナモジュール
│   │   │   └── thumbnail.coffee : サムネイル保管コンテナ
│   │   ├── index.coffee
│   │   ├── azurestorageblob.coffee : azure実装
│   │   └── mockstorage.coffee : モック実装
│   ├── util : 各種共通ユーティリティ関数
│   │   └── chartpath.coffee : path表現を実際のURLに変換するモジュール
│   └── worker : APIサーバとは独立して動くバッチジョブ
│   └── thumbnail.coffee : サムネイル作成バッチ
├── test : テスト
│   ├── db
│   │   └── collection
│   │   ├── chart.test.coffee
│   │   └── data.test.coffee
│   ├── init.js
│   ├── queue
│   │   └── kind
│   │   └── thumbnail.test.coffee
│   └── util
│   └── chartpath.test.coffee
└── worker.js : バッチジョブ起動用エントリポイント