LoginSignup
0
0

More than 5 years have passed since last update.

e2d3-server ソースコード解説

Last updated at Posted at 2015-07-21

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            : バッチジョブ起動用エントリポイント
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0