Herokuアプリケーションのテンプレート
by Mitsuhiro Okamoto on 12月 1, 2011 at 11:59 午後
米国Salesforce.comのエヴァンジェリスト James Ward(@jamesward)のBlogで、Heroku上でJavaを使う際にJettyではなくTomcatを使う方法が紹介されています。
またこのエントリには上記エントリのサンプルコードだけでなく、Spring MVC + Hibernateを使った例や、Clojure、Scala、Play!等のサンプルをHeroku上にデプロイした環境を手軽に手に入れられるサービスが紹介されています。
上記ページから欲しいサンプルを選び、メールアドレスを入力するれば、サービスが自動的にHerokuアプリを作成してColaboratorとして登録してくれます。後は自由にそこから編集することも可能です。
手軽にHeroku上で色々な言語やサンプルを試してみたい方はご参照下さい。
HerokuのSlugとその動き
by Mitsuhiro Okamoto on 11月 29, 2011 at 03:21 午後

みなさんHerokuはどの言語でお使いですか?個人的にはNode.jsが一番好きですが、古くからサポートされているRubyが一番多いでしょうか。
Herokuでは現在、Cedarスタック(Beta)上では公式に6つのプラログラム言語をサポートしています。
各言語は、RubyGem(Ruby)やnpm(Node.js)、pip(Python)といったパッケージマネージャーと合わせて利用するようにデザインされています。そしてPlay!の様にフレームワークをプラットフォームレベルでサポートしている点も大きな特徴です。
これらの言語やフレームワークで作られたアプリケーションをGit pushで受け取ると(正確にはpre-receive hook)、Dynos間に素早く展開出来るようにプログラムをSlugと呼ぶ塊にします。いわゆるHerokuの世界でのアプリケーションのパッケージです。
このSlugを作る際に、あらかじめアプリケーションがどの言語を使って作成されたの判断することでマルチ言語を実現しています。各言語の判断には、その言語固有のファイルがあるかどうかと優先順位で判断します。
各言語の判断基準と優先順位は以下の通りです。(こちらBlog記載時の実動作をベースとしており、今後変更される可能性があります)
例えばGemfileとpackage.jsonが両方あった場合には、Gemfileが優先されてRubyアプリケーションだと認識されます。
| 優先度 | 言語 / FW | 判断ファイル |
|---|---|---|
| 1 | Ruby | /Gemfile |
| 2 | Node.js | /package.json |
| 3 | Clojure | /project.clj |
| 4 | Python | /requirements.txt |
| 5 | Java | /pom.xml |
| 6 | Scala | /Bulit.sbt |
| 7 | Play! | /conf/application.conf |
| - | PHP | 上記ファイル無し(未アナウンス) |
アプリケーションを構築する際のご参考になれば幸いです。
多言語プラットフォームに関してはAdamのBlog postもご参照下さい。
http://blog.heroku.com/archives/2011/8/3/polyglot_platform/
http://devcenter.heroku.com/articles/slug-compiler
Cloudforce New York 開催間近!! 2011年11月30日 9:30 〜 (東部時間)
by Mitsuhiro Okamoto on 11月 28, 2011 at 10:40 午後
Cloudforce 2011 Japanは12月14、15日に開催されますが、一足先の11月30日10:00よりCloudforce 2011 New Yorkが開催されます。(日本時間では11月30日24:00からです)Cloudforce 2011 New Yrokも基調講演にはMarc Benioffが登壇し、Salesforce.com Live にてストリーミング配信がされる予定です。
8月末のDreamforceから約3ヶ月、新たに増えたソーシャルエンタープライズの事例や、Herokuを活用した大規模なシステムの紹介など、開発者や先進ユーザにも興味深い内容となっています。ご興味の方は深夜ですが是非御覧ください。
Matz(まつもとゆきひろ氏) Cloudforce 2011 Japanで登壇します
by Mitsuhiro Okamoto on 11月 16, 2011 at 01:34 午後

Rubyの生みの親でもあるMatz(まつもとゆきひろ氏)のCloudforce 2011 Japanでの講演が決定しました!!
C-3セッション 「RubyとHerokuに見るソフトウェア開発のこれから」
このセッションに参加すれば、なぜクラウドではRubyがよく使われているのか、なぜCEOのMarc BenioffがRubyとHerokuに注目し、MatzをHerokuに向かい入れたのかが分かると思います。まだお申し込みがお済みでない方は、お席に限りがありますのでお早めにどうぞ。お申し込みはこちらです。
先日のポストにもあるDo.comは、Heroku上でRuby on Railsを使って構築しているという話にもある通り、今日のクラウドアプリケーション開発において、Rubyはますますその存在感を高めています。
Matzのセッションをお見逃しなく!!
資本提携 〜 株式会社シャノン & デジタルコースト株式会社 〜
by Mitsuhiro Okamoto on 11月 15, 2011 at 02:57 午後
本日2つの米セールスフォース・ドットコムとの資本提携のニュースが発表されました。
株式会社シャノン、セールスフォース・ドットコムと資本提携を締結~クラウドプラットフォームHEROKU(ヘロク)上で「バーチャルイベントプラットフォーム」を開発~
http://www.shanon.co.jp/corporation/news/2011/11/heroku.html
デジタルコースト、セールスフォース・ドットコムと資本提携を締結 ~「Force.com」専業ベンダーとして、国内初の資本提携~
http://www.digitalcoast.co.jp/spirit/2011/1115_000044
両社は資本提携以前より、セールスフォース・ドットコムのAppExchangeパートナーとしてマーケットプレイスにアプリケーションを掲載していました。ここでは簡単に両社とそのアプリケーションをご紹介をさせて頂きます。
株式会社シャノン
今回の資本提携でシャノン社はHeroku上でのバーチャルイベントプラットフォームの構築を発表していますが、以前よりリアルイベントも含めたイベント・セミナー管理サービス「SHANON MARKETING PLATFORM」を提供しています。
MARKETING PLATFORMで集客した見込み客は、AppExchangeアプリケーションによってそのままSalesforce CRM上のリードとしてシームレスに取りこめます。今後は前出のバーチャルイベントプラットフォームと合わせて、より強力なマーケティングエコシステムを構築していく事になります。
SHANON MARKETING PLATFORM
http://appexchangejp.salesforce.com/listingDetail?listingId=a0N300000016bX7EAI
デジタルコースト株式会社
デジタルコースト社は、2010年にセールスフォース・ドットコムのAppExchangeパートナーとして、勤怠管理アプリケーション「アッと@勤務 Free」をリリースしました(現在はVerUpし、Free2となっています)。その後原価管理、勤怠管理、経費精算など、ERPのフロントエンド業務が全てForce.com上で可能な「チームスピリット4e」を2011年3月にリリースしています。
アプリケーションはForce.comネイティブに作成されているため、顧客はこのアプリケーションを利用するのに追加のリソース等は全く必要ありません。トライアルを使ったマーケティングや顧客への新バージョンの配信・通知にはISVForceを利用しており、デジタルコースト社自身もオンプレミスなサーバを全く用いずにこのビジネスをハンドリングしています。今後はさらにチームスピリットの機能を拡充して、Force.comアプリケーション群の中で重要な一角を担うようになります。
チームスピリット4e
http://appexchangejp.salesforce.com/listingDetail?listingId=a0N30000003J6KhEAK
Heroku Schedulerアドオンがリリース
by Mitsuhiro Okamoto on 11月 15, 2011 at 12:03 午後
Heroku Blogにアナウンスがありましたが、Heroku Schedulerがリリースされました。このAdd-onは以前からあったCron Add-onの代替品にあたりますが、より高機能でフレキシブルに使えるものとなっています。そしてなにより無料(one-off Admin Processes としてDynosの稼働時間を計上)です。
Heroku Schedulerではダッシュボード上で、10分ごとから、1時間ごと、毎日の間隔で自由に実行するように設定でき、そしてCron Add-onとは違い(Cronの場合はAdd-onを有効化した時間に依存していた)いつに実行されるかを10分単位で指定できます。
マルチ言語対応(Polyglot)タスク
タスクにはアプリケーション内で動作するものか、Unixシェル上から起動するものが利用できます。
例えばRailsの場合はrakeタスクとして実行します。スケジュールタスクをRailsアプリケーションの中に作成するには、以下のコードをlib/tasks/scheduler.rakeに入れて、カスタマイズすれば良いでしょう。
desc "This task is called by the Heroku scheduler add-on"
task :update_feed => :environment do
puts "Updating feed..."
NewsFeed.update
puts "done."
end
task :send_reminders => :environment do
User.send_reminders
end
もしPythonをFabricの様なデプロイメントツールとともに使っている場合は、fab clean_sessionsの様にタスクを定義することも可能です:
from fabric.api import task
@task def clean_sessions():
url = urlparse(os.environ.get('REDISTOGO_URL'))
db = redis.Redis(host=url.hostname, port=url.port, password=url.password)
db.delete('myapp:sessions')
print 'done.'
その他の言語やフレームワークの場合は、例えば bin/updater.xxxの様に、bin/ フォルダ以下にそのタスクを行う処理を置くようにします。
ジョブのスケジューリング
ジョブのスケジュールを設定したい場合は、アプリケーションのスケジューラダッシュボードを開いて"General Info"から"Scheduler"を右側のAdd-onドロップダウンメニューから選択します。
スケジューラダッシュボード上で、"Add Job..."をクリックし、タスク名および実行頻度、次の実行開始時間を設定します。
注意 : 次の実行時間はUTC(協定世界時)となっています。日本時間に合わせるには、実施したい時間よりも9時間速く設定して下さい。
例えば上記スクリーンショットの様に、rake update_feedをスケジューラへ追加して、"Hourly"と":30"を選択すると、毎時30分の時に実行されます。次にrake send_remindersを、"Daily"と"00:00"で設定すればリマインダが毎晩0:00に送信されるようになります。
Cron Add-onからマイグレーションする場合
既存のCron Add-onユーザは可能なかぎり速くHeroku Schedular Add-onに移行するほうが良いでしょう。より高機能かつ簡単に使える上に無料です。Cronでは単一のreke cronコマンドの実行のみ制限されている上に、日毎や時間毎でのコントロールする術がありません。ShedulerではCron Add-onができた全ての事とそれ以上の事ができます。
もし新しいジョブをできるだけ今までのCronジョブの実行スケジュールに近い様に設定したい場合は、Cron Add-onのダッシュボードから"Scheduled for"情報を見ます。そしてSchedulerダッシュボードに行き、新しいタスクを日毎か時間毎で作成し、Next RunフィールドにCronのジョブに近い値を入力します。タスクにはrake cronを入力します。
Do.com招待制ベータでリリース
by Mitsuhiro Okamoto on 11月 9, 2011 at 11:50 午後
Salesforce.comが昨年買収したManymoonの買収後の成果として、Do.comが招待制のベータリリースを行いました。
Do.comはmanymoonの単なる焼き直しでなく、Heroku+ Ruby on Railsを使って完全に書きなおされた、HTML5ベースのソーシャル対応プロダクティビティ(タスク、プロジェクト、ノート)管理サービスです。
Do.comは小規模なチームがすぐに使い始められるSalesforce CRMをはじめとしてFacebookやGoogle Apps、Dropbox等のサービスとのインテグレーションをはじめ、Gmailガジェットや、iOS用のクライアントアプリなど、フットプリントの軽い新サービスらしいモダンな機能を取り揃えてます。
Invitationコードをお持ちでない方はまだ利用できませんが、Do.comは近い将来に正式リリースされどなたでもお使い頂けるようになりますので、是非ご期待下さい。
Do and it's done.
https://do.com/
今週のForce.com & Herokuファンの方々のTweet
by Mitsuhiro Okamoto on 11月 2, 2011 at 10:34 午後

米国Force.com Blogで連載されている「Tweets of the Week」ですが、ソーシャルメデイア内で、日本語で言及されているTweetも定期的に紹介していこうかと思います。
Twitterをオープンにしている方のみを対象にしていますが、掲載に問題がある場合は@DeveloperForceJまでお知らせください。すぐに対応させて頂きます。
Tatsuo Kudoさん @tkudos - 10月28日のtweet
Seamless Single SignOn with SAML | Dreamforce '11http://developer.force.com/dreamforce/11/session/Seamless-Single-SignOn-with-SAML 16:00 あたり、なんかおもしろいことやってるっぽい。「はい、セッションクッキーどうぞ(会場どっかんどっかん)」とか
PatとChuckが講演しているSAMLのセッションで、実際に自分たちをIdPやSPに見立てて演技しているみたいですね。音声だけなのが悔しい所です。
さんさんさんこ さん @terasan0426 - 10月28日のtweet
自戒も含めて。 研修で同じクラスになった人で、やたらとDBとしてのセールスフォースが変だとか、テクニカルな部分を気にしている人がいる。問題は、そこよりもCRMとしてどうすぐれているとか、業務で想定してる使い方をするのに、ネックになるのはどこかとかそういうとこじゃないだろーか。
素晴らしい考察です!!既知の古いテクノロジとの"違い"ではなく、生産性や要件・業務にどうフィットするかが重要だと私たちも考えています。
きしだ さん @kis - 10月29日のtweet
「Heroku(ヘロク)社の買収について」お!公式にヘロクっぽい 「セールスフォース・ドットコム、Heroku社買収の最終合意に署名」http://www.salesforce.com/jp/company/news-press/press-releases/2010/12/101210-1.jsp
はい。セールスフォース・ドットコム社で使っている公式な日本語名は「ヘロク」です。買収前より古くからHerokuをお使い頂いている方々に色々思いはあるでしょうが、あえて日本語表記する際は「ヘロク」で統一して頂けると幸いです。
他にも多くのTweetがありましたが、今後も定期的にピックアップしてご紹介して行けたらと思います。
Cloudforce 2011 Japan 開催 - 申し込み開始しました
by Mitsuhiro Okamoto on 11月 1, 2011 at 07:11 午後
今年もこの季節がやってまいりました!
2011年12月14-15日、ザ・プリンスパークタワー東京にて、「Cloudforce 2011 Japan」が開催されます。基調講演には米国セールスフォース・ドットコム 会長兼CEOであるマーク・ベニオフが登壇する予定です。
ブレイクアウトセッションでは、Force.comやDatabase.comの開発者向けセッションや、Herokuのエンタープライズ利用に関するセッション、Salesforce.com R&Dが実践するアジャイルメソトロジであるADMについてなど、開発者の方にも有用な内容となっております。
またDeveloper Labと呼ばれるスペースでは、開発者がワークブックを使って実際にコードを確認しながら学べるワークスペース、最新テクノロジをご紹介するデモステーションなどをご用意致します。
Force.com開発者の方、Herokuを実業務で利用したいと考えている方、アジャイル開発の導入を検討するアーキテクトの方などはぜひご参加下さい!!
Cloudforce 2011 Japan
http://cloudforcejapan.com/
HerokuがJavaのサポートを発表!!
by Mitsuhiro Okamoto on 8月 26, 2011 at 11:16 午前
本日Herokuが第4のプログラミング言語としてJavaのサポートを発表しました。
詳しい情報は英語ですが下記を御覧下さい。
Heroku for Java - Heroku Blog
簡単に要約しますと、以下の様な特徴を持っています。
・HerokuでのJavaはCedarスタック上で動作し、WebコンテナであるJettyの組み込み機能を利用します。(Tomcatも7.0以降であれば組み込み機能があるため動作可能です)
・Jarパッケージの依存管理にはMavenのpomを利用します。
・現在は公式にサポートしているわけではありませんが、JRubyやScalaといったJVM上で動作するプログラミング言語も利用可能です。
・HerokuへのJavaアプリケーションのデプロイはwarではなく、Herokuのモダンな手法であるGit pushによって行います。MavenのApplication Assembler Maven Pluginによって作成されたシェルをキックします。
・上記の様な仕組みのため非常に多くのJavaフレームワークが動作可能です。例えばSpring Rooを使ったSpring MVC + Hibernateアプリケーションなども動作します。(Getting Started with Spring MVC Hibernate on Heroku/Cedar)
・今後も旧来のJavaEEの様式にとらわれず、クラウドでのプログラミングに適したモデルを包括的に提供していきます。
実際にすぐに試してみたいという方はHeroku Dev CenterのGetting Started with Java on Heroku/Cedarも合わせて御覧ください。
また合わせてForce.comと同様にチュートリアル形式のworkbookがGitHubに公開されています。こちらもぜひ御覧ください。
Java on Heroku Workbook
8月30日からは世界最大級のクラウドコンピューティングイベントであるDreamforceも開催され、より多くの情報が公開される予定です。
今後もSalesforce.com及びHerokuの発表にご期待下さい!!


