サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
blog.flect.co.jp
ども。 Salesforce Hackチャレンジに参加していたQuizarは安定の選外でした。。。 ま、Salesforce1まったく関係なかったから無理もない。(^^; さて、それはさておきQuizarの製作を通してWebSocketを使えば今まで世の中に存在しなかったようなアプリを作れる可能性があるということを実感したわけですが、現実にはほとんどWebSocketアプリは開発されていません。 こうした状況の最大の原因は世の中にWebSocketアプリ開発のためのモデルやフレームワークがほとんど存在しないためだと思っています。 現状では低レベルのAPIだけはあるものの、それしかないからその上のモノは全部自分で作らないといけないわけです。 Quizarの開発過程でやったことだけでも、メッセージのルーティング、リクエスト/レスポンスの対応付けなど通常のWeb開発ではやらないようなプログラミン
割り込みによって書けてなかったHeroku C10Kの続きです。 テスト実施から少し時間が空いてしまったため、改めてまとめようとすると疑問点や追試したいこともあるんですが、当面これ以上時間を割くことができそうにないのでざっくりとまとめてしまいます。 ★前篇のおさらい 前篇の内容から今回ポイントとなる点をピックアップすると以下のようになります。 1Dynoでさばける同時接続数は400前後。 それを越えるとH11の接続エラーが返ってくるようになる。 雑なテストプログラムで25台のDynoに1万クライアント接続を試みたところ少なくとも5600位は繋がったっぽい。 「繋がったっぽい」というあいまいな表現になっているはテストプログラム側で何を持って成功とみなすかという点をはっきりと決めていなかったためです。 エラーが発生しなければ試行数をそのまま成績と判断できますが、途中でエラーが発生した場合そのテ
こんにちは 昨日からGoogle Spreadsheet APIで作成したシートに直リンクするURLを生成したくて色々調べてました。 「API使うならそれくらい簡単にできるんじゃないの?」って思うでしょ?えぇ、僕もそう思いました。 しかし、これが。。。(-- 一応最終的にはできたんですが、その方法が「マジですか?!」とかなり愕然とするものだったのでここにメモとして残しておきます。 ★Google SpreadsheetのURL 実際にシートを作ってみながらブラウザのアドレスバーを確認するとすぐにわかりますが、GoogleSpreadsheetのURLは以下のような形式となっています。 https://docs.google.com/spreadsheet/ccc?key=xxxxxxxx#gid=1 アカウントが組織に属している場合は若干URLのパスが変わりますが、ここで重要なのは URL
前回SalesforceハッカソンにWebSocketのクイズアプリを出してきたよ~という話をしたわけだが今のところ身内以外からはほとんどアクセスされてないっぽい。 まぁほとんど宣伝してないからそれは別に構わないんだけど、審査されている形跡もないのは大丈夫なのか。。。(^^; さて、それはさておきWebSocketアプリを作ったら是非試してみたいと思っていたことのひとつにC10K問題の検証と言うのがあります。 C10Kとはクライアント1万台問題の略で平たく言うと「WebSocketってクライアントとずっとソケット繋ぎっぱにするわけだよね。そんなのクライアントの数がちょっと増えたらあっという間に破綻するんじゃね?」という問題のことです。 ★検証シナリオ 今回作ったアプリにはルーム毎にチャットの機能があるのでそれを利用することにします。 具体的な目標数値としてはとりあえず以下のように設定しまし
2/14にDevSumiでHerokuとWebSocketを使ったデモをやってきました。 今回はそのデモの総括です。 ★概要(本番前) 今回僕が担当したのは吉田パクエ氏のネタセッションでのデモです。 年末に10分の持ち時間でHerokuの良いところをアピールできるデモをなんかやってくれないかというお話をいただきました。 その頃僕はちょうど初めて自分でWebSocketアプリを実装してみたところで、この技術がどの程度実用的なものなのかという点に興味を持っていました。 なので、何かしらWebSocketを使ったデモをやろうと思い作ってみたのがこれです。 http://ws-vote.herokuapp.com/rooms/demo ボタンを押すと数字がカウントアップされるだけの極単純なアプリですが、WebSocketを使っているので誰かがボタンを押すと同じ画面を見ている全員の端末で数字がカウン
本日2本目。 年末から突発的に1人でWebSocketブームです。(^^v 概要レベルの知識はあったんですが、実際に触ってみると思った以上に使える技術で応用範囲も広そうな気がします。 これは楽しい! さて、スケールアウトするWebSocketアプリを作ろうと思ったらどうやらRedisが必修らしいので、Redisにも手を出してみることにしました。 この記事はそのまとめです。 ★Redisとは Memcacheの亜種。というのがこれまでの理解だったんですが、まぁだいたいあってます。基本的にはいわゆるKey-Valueストアです。 ですが実際にはMemcacheよりも遥かに高機能です。 ちゃんとドキュメントを読んだわけではないですが、ざっくりとMemcacheよりも優れている点を上げてみると List, Set, Mapなどの集合を値として扱える キーの一覧が取得できるなど管理系のコマンドがある
前回の続きです。 実際にPlayとRedisでWebSocketアプリケーションを作成したコードサンプルを示します。 ★題材 今回の調査の途中でドンピシャのサンプルを見つけています。 http://www.ryantanner.org/2013/03/using-play-iteratees-and-enumerators.html PlayにバンドルされているサンプルのチャットをRedis対応したサンプルアプリです。 接続情報を環境変数から取ってるふりして実はlocalhost固定だったとか、チャットルームのメンバリストをローカル管理してるから厳密にはスケーラブルになってないとか、手を入れ始めるといろいろ気にはなったんですが(^^;、WebSocket/Redisのコードサンプルとしては非常に有益で必要十分な内容でした。 記してここに感謝します。 今回の作業のゴールはこれを改良して汎用的
WebSocketはいけてる!(^^v というのが、初めて実際にWebSocketアプリを実装してみての感想です。 前回の予告通り今回はHerokuでWebSocketの話です。 ちなみにアプリ自体は前回のモノと同じです。 http://flect-papertrail.herokuapp.com/ OAuthでHerokuにログインして「heroku logs -t」相当のAPIでログを取得しながら、log-runtime-metricsの数字を拾ってリアルタイムにグラフ表示します。 拾う数字は<KEY>=<数字>という形式であればなんでも良いのでPostgreSQLの出力情報や自アプリで出したログもグラフ化することが可能です。 WebSocketのサンプル題材としてはそこそこ面白いと思うんですが。。。 残念なことにHerokuのログは直近1500行しか取れないので、それなりにアクセスの
こんにちは FFmpegというツールをご存知でしょうか? 私は映像関係の技術にはまったく明るくないのですが、動画のフォーマット変換や合成などが行えるライブラリらしいです。 今回このライブラリをHeroku上で動作するようにし、さらにはそれをbuildpack化するという作業をやったので、その過程をご紹介します。 題材としてはffmpegを扱っていますが、自分でbuildしたバイナリをHerokuに組み込む場合は同じ手順でできるはずです。 ちなみに参考にしたURLは以下です。 DevCenter: Buildpack API GitHub: heroku/vulcan Gist: Install FFMpeg on heroku 最初は言わずと知れたDevCenter。次のはBinaryのビルドで使用するBuildServer「Vulcan」のGitHub。最後は過去にffmpegをHero
2日続けてこんにちは 今朝Heroku ヨーロッパリージョンリリースのニュースが飛び込んできました。 めでたい。v(^^)v ヨーロッパができるなら時間の問題でTokyoにも来ると思うので、それに備えて素振りしておきたいと思います。 ★リージョンの指定 単純にheroku createコマンドに「--region eu」をつけるだけのようです。 heroku create my-app --region eu 作成したアプリのリージョンを途中で変更することはおそらくできません。つまり現在USリージョンで動いているアプリをEU(あるいは今後登場が予想されるTokyo)で動かそうと思ったら新しくアプリを作り直す必要があります。 git pushはともかく、環境変数やAddonの追加まで考えると結構な手間ですが、これを簡略化するために「heroku fork」という新しいコマンドが用意されました
こんにちは。小西です。 今回はPlay1とPlay2のテンプレートについて考察してみようと思います。 有志の方が翻訳してくれているのでPlay2についても日本語ドキュメントが徐々に揃いつつあり、最近では情報収集も大文楽になりました。 <とりあえず比較> 私的に両者の違いをまとめると以下のようになります。 Play1 Groovyベース 宣言なしで任意の数のパラメータを渡すことができる その代わりパラメータは一度ローカル変数に代入しなければならない 不正なパラメータ名はNullオブジェクトとして扱われエラーにならない マジックワードは複数を使い分け(変数は「&」、タグは「#」、スクリプトは「%」など) カスタムタグをJavaまたはテンプレートで作成可能 テンプレート内で使用するJavaオブジェクトを拡張できる(Stringにrawメソッドを追加など) Play2 Scalaベース パラメータ
こんにちは。小西です。 2月28日にサンフランシスコで開催されたHerokuのイベント「WAZA」に行ってきました! WAZA自体は1DAY EVENTだったのですが、その前後に主催であるHeroku社の相澤さんのご好意によりSalesforceやPivotal Labsなどのいくつかの企業を訪問することができ、非常に刺激的で有意義なUS出張となりました。 忙しい中出張を許可してくれた会社と企画してくれた相澤さん、そしてUSで出会ったすべての人たちに心から感謝します。 ★WAZAとは Herokuの年次イベントです。もうちょいHeroku発信の情報満載のイベントをイメージしていましたが、案外そうでもなくHerokuに関連する要素技術のテクニカルなセッションが多かった印象です。 ちなみにWAZAというネーミングは日本語の「技」から来ています。会場でもらったTシャツにもでかでかと「技」という漢
MySQLで文字コードを「utf8」とした場合UnicodeのBMPしか扱えないそうです。 http://yanok.net/2010/06/mysqlutf-8.html サロゲートペアを扱う必要がある場合は最初から文字コードを「utf8mb4」として定義しないといけないらしい。。。(-- なんとも残念な仕様です。「Unicode対応」と言いつつサロゲートペア未対応のものはたまにあるので、そこにはそれほど驚きませんが対応するのであれば「utf8mb4」みたいな新しいキーワードを導入するのではなく「utf8」として対応してほしかったと思います。 DB作成の際には文字コードは意識しますが何の迷いもなく「utf8」を選ぶっちゅーの(-- そんな愚痴はさておいて、ここではPlayframework(1.2.5)からMySQLのutf8mb4なデータベースを扱う話をします。 MySQLでutf8m
HerokuのWorker再起動問題を考える こんにちは。 9月にこんな記事を書きました。 JavaでHerokuのWorkerを作成する Heroku上のWebアプリをPlayframeworkで作るなら、WorkerもPlayで作るのが楽だよね!という話だったんですが。。。 実はこれ、ちょっと微妙な罠がありました。(-- ★すべてのDynoは1日に一回再起動する Herokuを運用しているとわりとすぐに気が付くと思いますが、WebDynoはだいたい24時間サイクルで再起動しています。 このあたりの挙動は以下のドキュメントに記載されています。 https://devcenter.heroku.com/articles/dynos#automatic-restarts 1日に一回サイクルすると書いてありますね。 僕はWebDynoについてはこの挙動はアリだと思っています。 WebDynoが
こんにちは なんと、今日から7月です。つまり2013年ももう半分終わってしまいました。。。(-- そして、小西がFLECTに入社してからちょうど1年半たったということでもあります。 はやっ!年々時が経つのが速くなっているようでかないませんな。(-- ちなみにこのブログを書き始めたのは2012年の5月末です。1年1カ月で記事数31件。 さぼっている時期もありますがだいたい月に2回位書いている計算ですね。もうちょっと頑張ります。 ★FLECT OSS Libraryとは これです。 http://oss.flect.co.jp/ この1年半で僕が作ったものがあらかた入っている感じですね。内容はかなり雑多な感じです。なんでこういうものを作ろうと思ったかは以前にも書いたので割愛します。 個人的に汎用性の高いモノ、開発者にとって有益なモノを作りたいという志向性が強いのでこういう形での開発はテンション
こんにちは。 前回Herokuで全文検索事情について書きましたが結局は自前でSolrのサーバを立てることになりそうです。 Herokuには前回とりあげた以外にもElasticSearchのラッパーが現在ベータ版のAddOnとしていくつかあるんですが、多分どれも似たり寄ったりです。(-- 結局のところ日本人スタッフのいない環境で作成された全文検索サービスはもれなく日本では使い物にならん!という結論に達しました。(^^;;; □□□□ そんな訳で最近よくSolrをいじっているわけですが、日本語での全文検索エンジンを構築する場合に早い段階で意思決定しなければならない事柄の一つに単語分割にN-gramと形態素解析のどちらを使用するか?という命題があります。 この両者がどういうアルゴリズムであるか?またそれぞれにどういうメリット・デメリットがあるか?という点については多くのサイトで解説されているので
こんにちは。 Herokuで全文検索(当然日本語)を行う場合にどういう選択肢があるのか調査したのでそのレポートを書いてみます。 ★評価のポイント Herokuには複数の全文検索Addonがあり、またPostgreSQLにも全文検索の機能があるのですが今回評価のポイントとしたのは以下の2点です。 ・日本語に対応しているか? 全文検索は英語などのヨーロッパ圏の言語と、日本語などのアジア圏の言語(CJK)では実装の難易度が大きくが異なります。 英語なんかは単語がスペースや改行などのホワイトスペースで区切られているので、単語の分割で悩む必要がないんですね。一方の日本語の文章は基本的に切れ目なく連続して記述されるのでどうにかして単語を分割しなければなりません。 この単語分割の方法には「形態素解析」と「N-gram」という2つの有力なロジックがあってそれぞれに特徴があるのですが、とりあえずそこはまぁど
@ucsmkyです。 突然ですが、先日永和システムマネジメント(以下ESM)様と合同勉強会を開催しました。 事のきっかけ 突然なんだという話ですが、事のきっかけは昨年12月のRubyKaigiのDrinkupでのことです。 ESMの伊藤さん(@koic)と話してた時、「最近永和さんいろんな会社さんと合同勉強会を開催されてますよねー」という話になってから、勢い余って私が「じゃあ今度一緒にやりましょうよ」と言った所伊藤さんも「よしやりましょう」、と。 因みに1月はDRECOM様との予定があるので、その次に、ということで取り敢えず予定だけ頂きました。 (因みにDRECOM様との開催はこちら) で、テーマについてですが、打ち合わせた結果、以下の内容で決まりました。 ワールドパブ「クラウド×Agile」 ワールドパブとは ワールドパブというのはワールドカフェのアルコールあり形式のスタイルでファシリテ
こんにちは。Heroku Meetup #6に参加してきました。 今回私はCode Consultingのプレゼンターの一人として発表させてもらいましたが(自分にとって)非常に有益な時間だったと感じています。 貴重な機会を与えてくださったHeroku社の方々に感謝します。 さて、そんな私のプレゼンですが後で懇親会で何人かの方から感想を伺ったところによると途中からよくわからなくなったという人多数。(-- あいすいません。m(_ _)m 昔から聴き手を置き去りにするプレゼンには定評があるんですが、今回は自分でも詰め込みすぎだったと思います。 また時間と同時通訳を考慮してカットした話も多いです。 なので、ここで完全版(?)の説明をお届けしたいと思います。当日使った資料は一応ここにありますが別に見なくても良いです。(^^;;; ★単純明快なシステム概要 まずネタにしたアプリですが、HTMLの装飾と
こんにちは。 このブログで何度も取り上げていることからもわかると思いますが、FLECTでHerokuアプリを作成する場合の第一選択は Playframework 1.2.xです。 これは当社にJavaの技術者が多いことが最大の理由ですが、Playの生産性は非常に高くパフォーマンスも良いので Webアプリを作る分には何の問題もありません。 その一方でHerokuのWorkerをJavaで作る場合はどうするのが良いんだろう?ということがずっと自分の中で課題として残っていました。 自前でmainを持つサーバーアプリケーションを作ってしまえば良いんですけど毎回それはさすがに面倒ですもんね。 そんな折ちょっとした示唆があってWorkerもWebアプリと一緒にPlayで作っちゃえば良いじゃん!ということに気がつきました。 以下はその方法です。 ★PlayでJobを作成する Playframeworkを
こんにちは。 今日はPlayframeworkでガラケーサイトを作成した話をしてみたいと思います。 ちなみにガラケー対応をやったのは人生初です。(^^;;; そんなに凝ったページではなかったんですが、ガラケー界のしきたり(?)とPlayの思想がそぐわない部分があってそこで多少面倒があったのでその部分の情報共有です。(読み直したら愚痴みたいになってますけど。。。(--) ★charsetはShift_JIS 知っている人からすれば当たり前の話なんでしょうがガラケー界では今もWebページはShift_JISで作成するのが常識のようです。 実際試してみると手元で試した端末はすべてUTF-8のページも表示できましたが、古い端末は化けると聞けばそこで冒険するのはまだ危険かと思います。 ちなみに世の慣習にならって「Shift_JIS」と言っていますが実際にはガラケーの文字コードはMS932+絵文字です
ども、22日は有給もらって4連休でした。(^^v 久しぶりに休日まったくPCを開かずに遊び倒していたので、気づいてませんでしたが、その間にSalesforce1のAdvent Calendarにこんな記事が!!! プログラミングコンテストで良い結果を出すために重要な(プログラム以外の)3つのこと はい、私このハッカソンでHeroku部門の3位いただきました。 そのエントリー投稿はこちら http://challengepost.com/software/salesforce-vs-heroku で、先の記事にあるプログラミングコンテストで大事な3つのことですが、このアプリなんと全部外してます!!!(-- ていうかこの記事僕のために書かれたような気がするなぁ。。。(-- なんだか申し訳ない。。。 以下、懺悔です。 ★ 1. 主催者側のニーズを読む あいすいません。m(_ _)m ビジネスアプ
Playframeworkを少し大きめのスレッド数(50)で動かしていたら、自分の予想よりも大きくメモリを消費しました。 今回はその調査レポートです。 なお対象としたPlayのバージョンは1.2.5です。 Playのスレッド数のデフォルト値 まずPlayのスレッド数の設定について少し考察しておきます。 Playのスレッド数はapplication.confの「play.pool」というキーで設定されます。 このキーが省略された場合のデフォルト値は以下のようになります。 DEVモード - 1 PRODモード - 環境で利用可能なCPU数 + 1 DEVモードとPRODモードは開発環境と本番環境で設定を変更するためのフラグです。 このように開発時と本番で異なるデフォルト値が適用されますが、個人的にはこれらのデフォルト値はDEVモード、PRODモードどちらの場合においても適切ではないと考えていま
こんにちは。小西です。 Herokuの負荷テストの結果を公開したので興味のある方はご覧ください。 http://excelnote.herokuapp.com/share/note/s91/90bf7b19-d654-40ab-a6c0-640980967ab0/edf9ab2230042e456ca286843763788e 考察は自分用のメモなので文章が荒いのは気にしないように。(Evernoteだし) えぇ、このエントリの主目的はきっぱりはっきりDEVCUPの宣伝です。(^^; ちょっとでも役に立ったという方は是非ExcelNoteに一票投じてください。m(_ _)m ExcelNoteにはシートの一部のみをiframeで表示する機能もあるので、表の部分だけをこちらのブログに貼り付けようかとも思ったんですが、表が少し幅があるためブログにきれいに収まらないことからこういう形をとりました
SQLでは動的に列を指定して表を結合することができますが、SOQLでは動的に結合することはできません(そもそも結合ができない)。 SOQLではオブジェクト間に予めリレーションを設定しておくことにより、リレーションを辿ってのデータ参照が可能となります。 ということで、今日はSOQLでのリレーションの辿り方をご紹介。 子オブジェクトから親オブジェクトへのリレーションの辿り方 子オブジェクトから親オブジェクトへは、リレーション名を使用してリレーションを辿ります。 リレーション名は、参照/主従関係のカスタム項目名 + __r となります(標準項目のリレーション名は予め設定されています)。 SOQLのFrom句には必ず基点となるベースオブジェクトを指定しますが、ベースオブジェクトから最大5段階まで親のリレーションを辿ることができます。 ●親リレーションを辿るサンプル Select c.Name, a
Force.com IDEには、ローカルで開発したコードを組織にアップロードするメニューとして、「Save to Server」と「Deploy to Server」が用意されています。 似たような機能で紛らわしいので、挙動を表にまとめてみました。 「Save to Server」でも「Deploy to Server」でもテストは実施されるんですね。 前回の記事の「組織の種類と開発環境/デプロイ方法」と合わせて、整理して理解しておきたいところです。 Save to ServerDeploy to Server
こんにちは、大橋です。 ひさしぶりの記事投稿になります。 今日はPanda Streamという動画アップロード、エンコード(変換)および再生機能を自分のサイトに組み込めるサービスを使ってみたので記事にしてみます。Panda Streamの公式サイトは以下です、あわせて見てみてください。 http://www.pandastream.com/ <Panda Stream概要&特徴> Panda Streamを使うと、Youtubeみたいに動画ファイルをブラウザからアップロードして、アップロードしたファイルをブラウザ上で再生できる機能を簡単に既存Webサイトに組み込むことができます。特徴は以下です。 すべての機能がREST API形式で提供されていて、Ruby, Python, PHPなどAPIを簡単にコールするライブラリも用意されている ブラウザからのアップロードはpandaのサーバ側に直接
前回の記事に引き続き、Amazon SESについてです。 今回はPythonでbotoを使って実際にAmazon SESを使ってメールを送信したり、メール送信結果の統計情報を取得してみようと思います。 ■ botoを利用する botoはAmazon SESなどAmazon Web Servicesのプロダクト群のAPIを操作できるPython用のライブラリです。 インストール方法については以前、Amazon S3を操作する方法の記事で書いたので、以下を参照してください。 http://blog.flect.co.jp/cto/2011/08/pythonamazon-s3-d36b.html ■ Amazon SESを使えるようにする botoを使う前にAmazon SESのページへ行き、サービス利用を申し込んでおいてください。 申し込んだ直後に利用できる環境はサンドボックス環境と呼ばれる
次のページ
このページを最初にブックマークしてみませんか?
『セールスフォースの豆知識』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く