クラウドサービスベンダーのカレンダーサービスをつかって、イベント等の管理はもはや普通になってきていますが、 会社のポリシーとして利用禁止ということもあるでしょう。困った事情として、たとえば Google カレンダー に慣れてしまって、社内のは使いにくい!というクレームもあるかもしれません。
今回紹介するのは、DHTMLX という WEBアプリケーションフレームワーク上の Scheduler サンプルです。百日行の趣旨から少し外れますが、サンプルの割には、Googleカレンダーのように使え、 実用的という意味であえて紹介したいと思いました。
基本情報
- プロジェクト情報
http://dhtmlx.com/
- ソースコード
https://github.com/DHTMLX/node-scheduler-demo (オリジナル)
https://github.com/dtoczala/ULLCloudCalendar (Cloud Foundry で動くようにしたもの)
デプロイ
1. ソースコードの取得オリジナルのソースコードを Cloud Foundry の IBM版である Bluemix で動作するように変更したものがあるので、 そちらを利用します。オリジナルの Cloud Foundry で動かす場合には多少ソースの変更が必要だと 思いますが、さほど難しくはないと思われます。
$ git clone https://github.com/dtoczala/ULLCloudCalendar.git
$ cd ULLCloudCalendar
オリジナルからの修正は、
- Mongo DB を Cloud Foundry のサービスとしてバインドさせるようにした
- port 変数を 3000 から process.env.VCAP_APP_PORT を読み取るようにした
- Single Sign On (SSO) を実装した
です。SSO の部分は、恐らく 無視できるでしょう。 Mongo DB の利用は変更する必要があります。変更する場合は、
var mongo_creds = services['mongolab'][0]['credentials'];
var mongo_uri = mongo_creds['uri'];
のあたりを見れば問題ないかと思います。
なお、今回のソフトウェアは GPL v2 で、 サンプルは GPL v3 です。修正した場合などの扱いにはライセンス条項にしたがってください。
2. Cloud Foundry にデプロイ
Cloud Foundry にデプロイしてみましょう。mongodb を利用しているので、それを用意します。 Bluemix 用の変更は Mongolab を使うようになっています。
$ cf create-service mongolab sandbox mongodb_amntcalendar
残念ながら、改変版のソースでも manifest.yml ファイルの問題でうまく動作しないので、 すべての設定をマニュアルで実施します。
$ mv manifest.yml manifest.yml.original
$ cf push amntcalendar -m 256M -c "node app.js" -n amntcalendar -d mybluemix.net --no-start
$ cf bind-service amntcalendar mongodb_amntcalendar
$ cf start amntcalendar
1 of 1 instances running
App started
requested state: started
instances: ?/1
usage: 256M x 1 instances
urls: amntcalendar.mybluemix.net
last uploaded: Fri Oct 9 07:01:26 UTC 2015
stack: cflinuxfs2
state since cpu memory disk details
#0 running 2015-10-09 04:10:03 PM 0.0% 59.4M of 256M 55.2M of 1G
正常にアプリケーションが稼働しました。
動作確認
それでは動作を簡単に確認してみましょう。起動したURLをたたくと見たことの あるようなカレンダーが表示されます。ひとつ追加してみます。
全日のイベントも入れられるようです。
おまけ
社内のソフトウェア開発では、開発の状況をダッシュボードで確認できるようになっています。 チームミーティングで、「共有できるカレンダーとかあるといいよね?」という話が出てきました。 ダッシュボードだと、プラグインかなにかで対応できるのですが、ダッシュボード以外からも アクセスした場合もあるかも?ということで、このカレンダーをウィジェットとして 組み込んでみるという試みをしたのがこのソフトウェアを使うようになったきっかけです。もちろん外部には公開したくないので、社内の小さな Cloud Foundry 環境で動作 させています。このあたりのよもやま話が、関連情報にあるブログに書いてあります。 GPL なので改変したソースも公開している理由もその一つです。
開発でちょっとしたカレンダーを共有するには、ちょうどよいレベルだと思いますので、 皆様も如何でしょうか?
今回使用した環境
- Cloud Foundry (Bluemix v210)
- ソースコード
https://github.com/dtoczala/ULLCloudCalendar/tree/d95840a7522c29d3be44956da70ce0ba979ae6f4