技術ブログ - 毎日が成長!

2010年7月 のアーカイブ

ice_cubeでスケジュールの計算

2010年7月24日 土曜日

プログラマのおぐらです。

このところとんでもなく暑い日ばかりですが、みなさんいかがお過ごしでしょうか。こう暑い日が続くと、プログラミングしている間だけでも涼しさを感じられるような工夫が欲しいですね。

というわけで、今回はice_cubeという涼しげな名前のRuby用ライブラリのご紹介です。

ice_cubeは、

  • 毎日
  • 隔週の月曜日と火曜日
  • 毎月1日と最終日
  • 毎月第1と最終の火曜日
  • 2時間おき

といった、「一定のルールに基づいて繰り返し処理を行う」ときにネックとなる日時の計算を一手に引き受けてくれるライブラリです。予定の管理やメールの配信といったスケジューリングの必要な機能を実装する際に利用することで、複雑なルールも容易に扱うことができるようになります。

インストール

ice_cubeはgemパッケージとして公開されていますので、インストールは以下のようにgemコマンドで行います。

$ gem install ice_cube

ice_cubeの内部ではActiveSupportが既存クラスに対して追加するメソッドを呼び出す箇所があるのでactive_supportもインストールしておきましょう(Railsをお使いであれば既にインストールされているはずです)。

$ gem install activesupport

基本的な使い方

ice_cubeの中心となるのはIceCube::Scheduleクラスです。インスタンスを生成する際は、開始日をコンストラクタに渡します。

schedule = IceCube::Schedule.new(Time.local(2010, 7, 1))

スケジュールに特定の日付を指定して使う場合は、以下のようになります。

上記のように特定の日時を指定することもできますし、一定の条件で何度も繰り返すスケジュールを定義することもできます。

ただし、複雑なルールを定義した場合の挙動には若干バギーな部分もありますので、実際に使う前には想定した結果が返ってくることを確認しておいたほうがよさそうです。

Railsで使う

IceCube::Scheduleクラスには、スケジュールを永続化するためにYAMLやHashに変換するメソッドも定義されています。

これらのメソッドをうまく利用することで、ActiveRecordなどのモデルにスケジュールを保持させることができます。

参考資料

ice_cubeの作者であるJohn Crepezziさんのプレゼン資料も公開されていますので、興味のある方はこちらもご覧ください。

RightScaleを試してみました。

2010年7月21日 水曜日

こんちには!サーバーワークス柳瀬です!

弊社ではCloudworksというAmazon EC2を少し便利に使う事が出来る管理サービスを提供しておりますが、同じようなクラウド管理サービスはたくさんあります。先日RightScaleというAmazon EC2をメインとしたクラウド管理サービスを触ってみたので簡単にレポートしたいと思います。 RightScaleは有料版と無料で使用出来るものがあり、今回触ってみたのは無料版です。 ちなみに価格表を見るとFreeEditionで出来ることはやはり限定的となります。

RightScaleを使用するにはサインアップする必要があり、サインアップには以下のものを登録します。

  • 氏名
  • Email
  • 住所
  • 組織名
  • RightScaleにログイン
  • AWS Account Number
  • AWS Access Key ID
  • AWS Secret Access Key

その他いくつかの質問事項がありましたが、サインアップは簡単です。AWSのサインアップのように本人確認の電話などもありません(笑)

実際にログインしてみると無料版でも以下のようにAWSの基本サービスはRightScaleから操作できるようです。

  • EC2(インスタンスの起動や停止など)
  • S3(管理用ブラウザ)
  • ELB(ロードバランサーの起動、削除、インスタンスの追加)
  • EIP(EIPの取得、割り当て、削除)
  • RDS(インスタンスの起動や停止など)
  • インスタンスへの名前付け
  • インスタンスへのタグ付け
  • イベント情報をRSSで取得

また、RightScaleはAmazon EC2以外にもRackspace CloudやEucalyptusなど他のクラウド環境も管理出来る点は素晴らしいと感じました。 Rackspace CloudユーザーはアカウントとAPIのパスワードをRightsScaleに登録するだけで簡単に操作が出来るようになります。 インスタンスへの命名、タグ付けも出来るので、Amazon Management Consoleより管理しやすい印象を受けました。 料金の見積もり機能もあるので、必要以上の料金が発生していないか簡単に確認する事も出来ました。

ただし、管理画面が英語表記である事と機能が豊富な半面、少しだけ管理画面の作りがゴチャゴチャしてて分かりにくいかなと感じました。 個人的にはもう少しシンプルな作りが良いですね(汗)

弊社で提供しているCloudworksは日本語操作も可能ですし、シンプルで分かりやすいインターフェースなので、普段の管理はCloudworksで行い、サポートされていない機能についてはRightScaleで補うという運用が出来そうです。

【Cloudworksの画面イメージ】

【Cloudworksの機能一覧】

Amazon EC2やその他クラウドサービスを管理するようなアプリケーションはたくさんありますが、『これだけ使えばOK!』というものがないのが現状のようです。色々なアプリケーションを組み合わせて便利に使うといいう工夫が必要ですね。

symfony+MongoDBでNoSQLはじめの一歩 〜MongoDBインストール〜

2010年7月15日 木曜日

はじめに

はじめまして。開発部エンジニアのあさくらです。
主にPHPsymfonyを使ったシステム開発を担当させていただいています。
好きな開発環境は、MacGNU Emacs
好きな仮面ライダーは龍騎カブトWです。

技術的なTipsやチュートリアル、開発手法についての情報を中心に投稿させていただこうと思っています。 どうぞ、よろしくお願いいたします。

私は普段、symfony+RDBMSで開発を行っているのですが、RDBMSで吸収することが難しい問題に直面することが多々あります。(私の理解不足という点も否めませんが)
そういった問題を解決するのにNoSQLが有効か否かを調べたいと思い、本エントリを投稿するに至りました。
バリバリNoSQLを使いこなす域には達していないので、少し物足りない内容になってしまうかもしれませんが、皆さんと一緒に勉強させていただければと思っています。

はじめの一歩

それでは、NoSQLの世界へ一歩踏み出してみましょう。
NoSQLのはじめの一歩として、symfony1.0からMongoDBを操作し、パフォーマンスがどの程度得られるか、全5回程度で学んでいきたいと思います。
今回は、「MongoDBをインストールし、データベースの起動ができるようになる」ことを目標に、お話を進めていきたいと思います。

今回のエントリの対象読者

今回のエントリは、下記のような方を対象としています。

  • NoSQLのことを何となく知っている
  • MongoDBの名前を聞いたことがあるが、触ったことはない
  • アプリケーションを自由にインストールできるLinux環境がある

今回のエントリのゴール

今回のエントリを読み終えて、次のことが出来ることをゴールとしています。

  • Linux環境へ、MongoDBがインストールできる
  • mongodコマンドで、MongoDBデータベースが起動できる

MongoDBとは

MongoDBロゴ

Wikipediaでは以下のように紹介されています。

MongoDBはC++言語で記述された オープンソースのドキュメント指向データベースである。
MongoDBは従来の関係データベース管理システムでは簡単に解決できない多量のトランザクション処理が要求されない問題に対し設計されている。一例として、データベースが複数サーバにまたがる必要がある場合が挙げられる。
CouchDBのようなドキュメント指向データベースシステムと同じく、MongoDBは関係データベース管理システムではない。データベースはBSONと呼ばれる、バイナリで格納されたJSONのようなドキュメントの集合を管理している。
  • 「MongoDB」『フリー百科事典 ウィキペディア日本語版』。最終更新 2010年7月1日 (木) 11:58 UTC、URL: http://ja.wikipedia.org/wiki/MongoDB

また、書籍や勉強会での情報では、
「KVS、ドキュメント指向データベース、RDBMSのいいとこ取りなデータベース」
と評されることが多いようです。
なんだかすごそうで、わくわくしてきますね。

作業環境

今回の作業環境は以下の通りです。

  • MacOSX 10.6.3 SnowLeopard

MongoDBのインストール

まずは、MongoDBをダウンロードしましょう。 Downloads – MongoDBから、自分の環境にあったパッケージをダウンロードしてください。

MongoDBDownload画面

今回は、MacOSX SnowLeopard環境で作業をするので、「OS X 64-bit」から、この記事を作成している2010年7月15日時点での最新バージョン1.4.4をダウンロードします。

$ curl http://downloads.mongodb.org/osx/mongodb-osx-x86_64-1.4.4.tgz > mongodb.tgz
$ tar zxvf mongodb.tgz

データの格納先ディレクトリの作成

データの格納先を作成します。
今回は、mongodコマンド実行時にデフォルト格納先として指定されるディレクトリを準備しましょう。
※mongodコマンドの引数に「–dbpath=/hoge/mongodb_data」を追加することで、任意のデータ格納先を指定することも可能です。

$ mkdir -p /data/db

mongodコマンドで、MongoDBを起動

展開したmongodコマンドを実行し、データベースを起動してみましょう。

$ mongodb-osx-x86_64-1.4.4/bin/mongod

mongodコマンド実行後、メッセージに「waiting for connections on port 27017」とメッセージがでれば起動成功です。

また次回

今回のエントリでMongoDBの起動まで出来るようになりました。
次回は、MongoDBを操作するためのmongoコマンドを使い、実際にMongoDBを操作していきたいと思います。
それでは

参考にさせていただいたページ

本エントリを作成する際に、こちらのページを参考にさせていただきました。
ありがとうございました。