iPhone/iPadのホーム画面コンテスト開催中!賞品は iTunes カード!

Category ArchiveWebサービス



Webサービス 2010/08/22 14:30

[PCでは絵文字は表示されません]

とあるサイトをPCで見た際、画面に並んだ [PCでは絵文字は表示されません]たち。

このサイトは携帯用サイトなので、携帯で見ると問題ありません。

PCで見ると絵文字が文字化けするので、それを避けるために [PCでは絵文字は表示されません]と表記しているという意図は分かります。

ただ、どうも中途半端感が否めません。

a. PCでの閲覧を想定している

PCでの閲覧を想定しているとして、たしかにこの表記なら文字化けしません。

しかし [PCでは絵文字は表示されません] があちこちに記載されているため、逆に見づらくなっています。

キチンとやるなら絵文字代替の文字なり画像を出すのが良いでしょうし、簡易的にやるにしても、表記をもっと簡素にするか、いっそのこと表記しないというのが良いかなあ、と思います。

b. PCでの閲覧を想定していない

PCでの閲覧を想定していないのなら、たしかに [PCでは絵文字は表示されません]があちこちに登場してきて見えづらくなっても問題ありません。

ただ、それならそもそもこの表記を出す必要が無い気がします。

実は色々なサイトで

この表記はこのサイトだけかな、と思ってGoogleで確認してみると意外に26,900件もの結果がありました。

これだけ多くのサイトで使われているということは、絵文字表記用の何かのライブラリがあるのか、Webサイトや書籍等で紹介されている手法なのでしょうか。


=> “[PCでは絵文字は表示されません]” – Google 検索

携帯サイトなので携帯でちゃんと閲覧できれば問題無いのですが、この表記が誰のためのものなのかが気になりました。

ちなみに冒頭に紹介したサイトでは、ちゃんとしたPC用のサイトもあるのであしからず。

CakePHP & Webサービス 2010/07/14 10:33

書籍名に年齢が入っている本を探す

「35歳からの○○」「40歳までに身につける××」といった書籍名に年齢が含まれる本が数多くあります。

こういった書籍にはどういうものがあるだろう、ということで調べてみました。

日頃、電車の広告や日経の広告などに掲載されているビジネス書などで年齢が書籍名に含まれる本を良く見ます。

年齢は万人に必ずあるものですし、自分に合致する年齢であれば興味を引くので良く利用されているのかもしれません。

実際にどのような本が出版されているのかを楽天ブックス書籍検索APIを使って調べてみました。

調査対象

楽天ブックス書籍検索APIで取得できる書籍から書籍名に年齢が含まれている本を抽出しています。

「0歳児・1歳児・2歳児のための乳児保育」といった複数の年齢が書籍名に含まれる場合はそれぞれの年齢として加算しています。

「 1歳から100歳の夢」といった年齢を範囲で含めている書籍に関しては加算していません。

年齢別書籍数グラフ

集計結果のグラフは以下。

=> 年齢別書籍数グラフ

最も多く含まれている年齢は3歳

最も書籍名に多く含まれている年齢は3歳でした。続いて5歳、2歳、4歳、0歳、1歳と乳幼児向けが並ぶ結果となりました。

ビジネス書系が並ぶのかと思いきやこれは意外な結果ですね。

「3歳のお気に入りえほん集」「ディズニーの読み聞かせえほん(どきどき3歳)」「 3歳までこそ大切な子育て10則」など子育て本、知育系の本が並んでいました。このあたりは1年齢の本も多いですが、「3・4・5才のおりがみ」のようにいくつかの年齢をまたいでいるのも特徴ですね。

たしかに実体験としても幼児向け本は何冊も買っているので、言われてみれば納得です。

=> 3歳の本を見る

やはり多いのは10区切り

次に多いのが10区切りで、100、50、60歳と続きます。

他にも40、10、20、15、35歳が上位に来るのでキリの良い年齢は、その付記の年齢の人も含めて対象となりやすいようです。

ここでも意外なのが、100、50、60歳というやや諸先輩向けの本が多いということです。日頃、目にする30/40歳代の本よりも多いというのは本に親しみを持つ年齢が故なのでしょうか。

面白いことに、100歳が含まれる本には「100歳まで」という表現が多いのに対し、50、60歳が含まれる本では「50歳から」「60歳から」という本が多いです。50、60歳はまだまだこれからですね。

=> 100歳の本を見る
=> 50歳の本を見る
=> 60歳の本を見る

意外にビジネス書は少ない?

広告の印象ではビジネス書や自己啓発系の本が溢れているのかと思っていたのですが、上位の年齢層を見てみると必ずしもそうではありませんでした。

本のジャンルとしてはビジネス系を除くと、教育書や小説、あと闘病記的な本が目に付きました。

年齢が含まれる本から見るとある女性の20代

20歳(はたち)でお店を立ち上げる!
21歳アタシ的寂しさ
綾。ホステス、22歳。新装版
23歳のディールメーカー
24才・時給750円の私がベンチャー経営で劇的成長できた理由(わけ)
迷い続ける25歳の退職届
26歳のレクイエム
27歳からの就職術
28歳からのぶっつけ留学成功法
29歳までに“その他大勢”から脱けだす習慣
30歳からの安産

私はアゲ子。20歳で店を起ち上げたけど、寂しくなって、ホステスになったの。23歳でディールメーカーになったけど、24歳の時給は750円。25歳で迷ったあげく退職した。。。
26歳の時は無職でどん底ね。でも27歳に奮起して就職活動をしたけど、気が変わって28歳で留学。29歳に「私はその他大勢とは違うのよ!」と一歩抜け出す習慣を身につけた結果、30歳で無事に安産。今は幸せよ。

といった20代人生が思い浮かびますね:D

年齢が含まれる本を探すサービス「アゲ本」

こういった年齢が含まれる本を探すサービスを作ってみました。

「アゲ本」
http://agebook.in/

年齢を入力すると書籍名にマッチした書籍をランダムで表示します。こちらでは「1から100歳」といった年齢範囲の書籍にもマッチするようになっています。

自分の年齢を入力するもの良し、どなたかの誕生日プレゼントとして本を探すのも良し、一度遊んでみて下さい。

Webサービス & 雑記 2010/04/28 09:17

Skypeで毎度出て来るアイツを消す方法

Skypeを使ってて毎度出てきて気になるアイツの話です。

気が付くとイベント一覧に上がってくるこれ。

これはムードメッセージフィード更新のお知らせです。それほど頻繁では無いのですが、ちょろちょろとイベント一覧に通知が来るので何となく気になります。

ずーと放置していたのですが、やっぱり気になるので表示させない方法を探してオフにしました。

まずムードメッセージフィード更新を一切通知しない方法。

「設定」-> 「詳細」にある「コンタクトのムードメッセージフィードをチャットで表示」にあるチェックを外せばok。

これでムードメッセージが更新されてもイベントが上がらなくなりました。

特定のコンタクトだけ通知をオフにするにはコンタクトの設定にある「ムードメッセージをフォロー」のチェックを外します。

あーすっきり。

Webサービス & event & twitter 2010/04/24 20:30

朝Twitterにメッセージが届く「ついもーにん!」を作りました。

お知らせ:2010/04/26

「ついもーにん!」をご利用頂きありがとうございます。

サービスイン当初は、毎朝全てのユーザさんにメッセージを送信することを想定していましたが、今後は一日数十ユーザさんに変更したいと思います。

結果、メッセージが届く頻度はばらつきはありますが、数日に一度程度となります。

主な理由としては、Twitterのpost制限の回避、そして多くのpostによってタイムラインが @twmorning の発言で埋まってしまう問題を回避するためです。

なおDMでメッセージを登録頂くと、投稿者アカウントがメッセージに含まれますので、よりmentionが反応する機会が増えます。是非これを機会にメッセージを登録下さい。

まだまだ生まれたばかりのサービスですが、今後とも「ついもーにん!」をよろしくお願いします。

朝あなたのTwitterにメッセージが届く「ついもーにん!」を作りました。


@twmorning

朝起きた時、通勤電車の中、会社についた時、ついつい見てしまうのがTwitter。誰かのつぶやきを見るのも面白いですが、やはり自分宛に投稿があると嬉しいもの。それが誰からのステキなつぶやきやお役立ち情報なら尚更です。

そんなほんの少しだけ朝を彩るサービスが「ついもーにん!」です。

朝メッセージを受け取る

メッセージを受け取るにはTwitterで @twmorning をフォローして下さい。

朝あなた宛にメッセージが届きます。

朝天気情報を受け取る

メッセージの他に天気情報を受け取ることもできます。

@twmoringをフォローした後に、@twmoringあてにreplyで以下のコマンドをつぶやいて下さい。

すると翌朝から天気情報が届きます。

なお「大阪」の部分は天気予報を知りたい地方名を入力します。

地方名はこのエントリ下部のリストから一つ選択して入力して下さい。

メッセージを送る

朝届くメッセージを登録することができます。

このメッセージが誰にいつ(どの朝に)届くかは分かりません。見知らぬ誰かの朝をステキなメッセージを届けて下さい。

メッセージの内容は @twmorning に DM を送って下さい。

登録されたメッセージは翌朝以降に @twmorning をフォローしている人に届けられます。

なおメッセージには送信者であるあなたのTwitterアカウントが記載されます。これをきっかけに良い関係が気付けるようにステキなメッセージを送って下さい:D

ご質問、ご要望は

@shin1×1まで。

天気情報の地方名

以下から一つ選択して@twmorningあてにつぶやいて下さい。

天気予報を設定する

  • 稚内
  • 旭川
  • 留萌
  • 札幌
  • 岩見沢
  • 倶知安
  • 網走
  • 北見
  • 紋別
  • 根室
  • 釧路
  • 帯広
  • 室蘭
  • 浦河
  • 函館
  • 江差
  • 青森
  • むつ
  • 八戸
  • 秋田
  • 横手
  • 盛岡
  • 宮古
  • 大船渡
  • 仙台
  • 白石
  • 山形
  • 米沢
  • 酒田
  • 新庄
  • 福島
  • 小名浜
  • 若松
  • 水戸
  • 土浦
  • 宇都宮
  • 大田原
  • 前橋
  • みなかみ
  • さいたま
  • 熊谷
  • 秩父
  • 東京
  • 大島
  • 八丈島
  • 父島
  • 千葉
  • 銚子
  • 館山
  • 横浜
  • 小田原
  • 甲府
  • 河口湖
  • 富山
  • 伏木
  • 金沢
  • 輪島
  • 福井
  • 敦賀
  • 新潟
  • 長岡
  • 高田
  • 相川
  • 長野
  • 松本
  • 飯田
  • 静岡
  • 網代
  • 三島
  • 浜松
  • 名古屋
  • 豊橋
  • 岐阜
  • 高山
  • 尾鷲
  • 大津
  • 彦根
  • 京都
  • 舞鶴
  • 大阪
  • 神戸
  • 豊岡
  • 奈良
  • 風屋
  • 和歌山
  • 潮岬
  • 岡山
  • 津山
  • 広島
  • 庄原
  • 松江
  • 浜田
  • 西郷
  • 鳥取
  • 米子
  • 下関
  • 山口
  • 柳井
  • 徳島
  • 日和佐
  • 高松
  • 松山
  • 新居浜
  • 宇和島
  • 高知
  • 室戸
  • 清水
  • 福岡
  • 八幡
  • 飯塚
  • 久留米
  • 大分
  • 中津
  • 日田
  • 佐伯
  • 長崎
  • 佐世保
  • 厳原
  • 福江
  • 佐賀
  • 伊万里
  • 熊本
  • 阿蘇乙姫
  • 牛深
  • 人吉
  • 宮崎
  • 延岡
  • 都城
  • 高千穂
  • 鹿児島
  • 鹿屋
  • 種子島
  • 名瀬
  • 那覇
  • 名護
  • 久米島
  • 南大東島
  • 宮古島
  • 石垣島
  • 与那国島

Google App Engine(GAE) & Webサービス 2010/02/17 21:16

約半月で 4,000,000PV を華麗にさばく Google App Engine

なんでも判定ツクール」へ多数のアクセスありがとうございますm(_ _)m

1月末にリリースした当初は僅かのアクセスだったのですが、Twitterで火が付いてからは一気にアクセスが集まり、気が付けば2月1日〜2月16日で4,000,000PVを超えました。

自分では絶対に考えつかないであろうユニークな判定がたくさんできて、私自身もとても楽しんでいます:-D(面白い発想をする人は世の中にたくさんいるものです)

このサイトはGoogle App Engine(GAE)+Pythonで構築しているのですが、このアクセス数ならではのGAE上で体験できたことをざざっと書いていきます。

無料?課金?

まずはじめに大事なこと。

「なんでも判定ツクール」ではGAEを課金状態にしています。無料のQuotaではとてもではないですが、このアクセスは捌けません:D

GAE公式サイトには

月間約 500 万ページ ビューに対応できる十分な CPU と帯域幅を、すべてのアプリケーションで完全に無料で利用できます。
Google App Engine について – Google App Engine – Google Code

といった記載があるのですが、少なくともDataStoreを使うような動的サイトでは5,000,000PV/月を無料Quotaで捌くのはかなり難しいと思います。

秒間200リクエスト

アクセスは日によって時間によってバラツキがあるのですが、瞬間最大風速では200超req/s(GAE DashboardのChart上)を記録しました。

この200req/sを記録したのは 2010/02/15 夜だったのですが、ブラウザでサイトにアクセスする分にはそれほど重さは感じませんでした。ですが、実は裏では結構なアクセスをさばいてくれています。

これはGAEの真骨頂とも言える「チャージ金額上限まで自動でリソースを割り当ててくれる」サービスのおかげですね。まさにクラウドです。チャージ上限金額までは負荷に合わせて勝手にリソースを確保していってくれるので、アクセスどんと来いという気持ちになります(比例して財布は少し寂しくなりますが><)

もちろん、これにはアプリケーションの設計も大きく関連します。いくらプラットホームであるGAEがスケールしていっても、アプリケーションがそれを想定していた作りになっていなければアプリケーション側がボトルネックとなります。「なんとか判定ツクール」は業務システムに比べると単純な作りになっているので、このあたりもGAEのスケーリングの恩恵が受けやすいということはあるでしょうね。

1日680,000PV

1日単位で見ると 2010/02/09 に 680,000PV を記録したのが最高値でした。

数値はGoogle Analyticsに記録されたものです。これはPC版の数字なので携帯版を加えるともう少し上乗せされます。

この日は秒間リクエストのピークは160くらいだったのですが、ピーク時以外もアクセスが続いたのでPVが伸びました。PVが伸びた分、課金額も一番です。

この数値を元に単純計算すると 680,000 * 30 = 20,400,000PV/月 はこなせそうです。

DataStoreの総エンティティ数が3,000,000

DataStoreのエンティティ数(RDBMSのレコード数のようなもの)の合計が3,000,000を超えました。

DataStoreにはいくつかのkind(テーブルのようなもの)があるのですが、これは全ての合計です。

中でも一番多いのが判定結果を表すエンティティで、1,500,000くらいです。つまりこれは延べ1,500,000回の判定(!)が行われたということです。(実際は、1,600,000エンティテイあるのですが、初期アプリケーションのゴミデータが含まれるので実質は1,500,000程度。)

これだけのデータがあってもキーを使った読み込みならとても高速に動作します。(これくらいのデータ量ならインデックスが効けばRDBMSでも早いですけどね。)

DataStoreエラー

負荷が上がった際、サイト自体は概ね動いているのですが、実はDataStore周りでいくつかエラーが発生しています。

例えば、平常時は瞬時に返答がある Model.get_by_key_name() でデータを取得するという単純な処理でも高負荷時は DeadlineExceededError が発生する場合があります。

これは避けがたい現象のようなので、クライアント側でリトライ処理を実装するなどして上手く付き合うしかないようです。

bit.ly

当初、判定結果をTwitterに報告する際にURLを短縮する方法としてbit.lyのAPIを利用していました。

これはとても上手く動いていたのですが、アクセス数が伸びるのに従って、bit.ly APIでエラーが発生するようになりました。一度この状態になるとエラーレスポンスが返ってくるばかりで短縮URLへの変換を行ってくれません。数十分経過すると復活するのですが、また負荷がかかると停止してしまいます。

bit.ly API のドキュメントでは1IPあたり同時アクセス数5未満とされているので、制限を超えるアクセスで止められるのは当然だと思います。なのでこれに関しては利用させて頂いてありがとうございますと、ごめんなさいという感じです。

いくらGAE自体がスケールしても、外部サービスに引っ張られて処理できないと元も子もないので、結局短縮URL機能を自作しました。

これには @kis さんとのTwitterでのやりとりが大いに参考になりました。ありがとうございました!

サイボウズさんキャンペーン

サイボウズさんのキャンペーンにて「なんでも判定ツクール」を利用して頂きました。

=>サイボウズコミュニティ – 特集 – 【終了しました】サイボウズ謹製ツバメノートプレゼント!

サイボウズさんにまつわる判定をやって、Twitterで報告するとノベルティが貰えるというキャンペーンだったのですが、多くの方が参加されて盛り上がったようです。

こういったキャンペーンに使えるという視点は当初は持っていなかったので面白かったです。

今後も絶賛募集中ですので、キャンペーンに使ってみたい、という方はご一報頂ければ嬉しいです:D

Google App Engineは使える!

「なんとか判定ツクール」を運営している感覚では、今更ながらですが、やはりGAEは十分に使えるなという印象を持ちました。

なんといってもチャージさえしておけば自動的にスケールしてくれる感覚は素晴らしいですね。これまで突発的な負荷に悩まされた経験がある方なら有難みが特に分かると思います。

もちろんGAEならではの制約(処理時間やDataStore仕様等々)があるので全てのアプリケーションをGAE上で動かすべきとは思わないですが、特性にマッチするアプリケーションであれば検討してみる価値がありますよ。

え、PHPしか書けない?PHP書けたらPython書けます。大丈夫:-D

Google App Engine(GAE) & Python & Webサービス 2010/01/19 09:29

はてブホットエントリーを見るWebサービス「hot.hatebu」を作りました

はてブホットエントリーを集計して見るWebサービス「hot.hatebu」を作りました。

はてブのホットエントリーを集計して一覧で見るサービスです。機能をざっくり挙げると以下です。

  • 「エントリ」「時間」「タグ」「ユーザ」の集計データを表示
  • 日付範囲を指定して、合算した集計データを表示
  • パネル機能

詳細については説明ページがありますので、こちらをどうぞ。
hot.hatebu | 説明ページ

ここでは作った経緯や使い方のポイントなどを。

週間はてブホットエントリーを見たい

そもそものきっかけは週間ホットエントリーを見たいというものでした。イベントやネットラジオなどで話す時のネタにホットエントリーを使うのですが、公式サイトでは一日単位で見る方法しかありません。

例えば、先週のホットエントリーをまとめて見る場合は1ページづつページを辿るしかありません。

そこで複数日のホットエントリーを合算して見られるサイトが欲しいと思いました。

あとちょうどGAEを試していたので、何か作ってみたいというのも理由の1つです。

平日は12時台、休日は23時台がピーク

実際にやってみて面白かったのが時間別のブックマーク数です。

平日と休日ではっきりと推移が異なります。

・平日(2009/12/07〜2009/12/11)
hot.hatebu | 2009/12/07〜2009/12/11の時間別

・休日(2009/12/12〜2009/12/13)
hot.hatebu | 2009/12/12〜2009/12/13の時間別

平日はオフィスで昼休みにRSS ReaderやTwitterからブックマーク、休日は家に帰って寝る前にWebを眺めてブックマーク、という使い方が多いのかもしれませんね。

パネル機能

あったら面白いなと思っておまけで付けた機能です。

勉強会やネットラジオをやる時、何となく話すネタが欲しい時ありませんか?そんな時にプロジェクタでこの画面を映して、表示されたエントリーについて話ができれば考えています。

イメージとしてはテレビのバラエティで見るパネルですね。

データは2009/12/01〜

データはまだ2009/12/01以降のものだけです。今後のデータは随時、追加していきます。

DataStoreで悩む

GAE+Pythonで作りました。

悩んだのはDataStore周りの実装ですね。どうしてもRDBMS感覚で作ってしまうので、パフォーマンスが出なかったり、30秒制限にひっかかったりで試行錯誤を繰り返しました。

TaskQueueを使う方法が分かってからは何とか形になりました。色々な制限があるGAEでは、TaskQueueをどう上手く使うかがキーですね。

無料のQuotaを超えて課金をはじめると分かりやすく「リソース浪費=コスト(金銭)の浪費」に繋がります。例えば、ロジックの組み方が悪くてCPUを無駄に使えばその分費用がかかります。これまで以上にチューニングや処理の分散化(ブラウザでできることはブラウザにやらせる)といったアプローチが重要になりそうです。

ホッテントリーは面白い

ホットエントリー、はてなブックマークのデータは題材として面白いですね。自分で作ってみても色々な見方ができて楽しいです。

ホッテエントリーのチェックに、話のネタ探しに、ブックマークの分析に使って頂ければ嬉しいです。

Python & Radio & Webサービス 2009/12/30 15:39

Ustream 録画動画のviewsをはてブ風に表示する

Ustreamで録画した動画のviews数をはてブ風に表示するサービスを作りました。

ust録画動画のURLを渡すと以下のように表示します。

64views

使い方

1. views数を表示する

このサービスではviews数をHTMLタグ+JavaScriptで出力します。views数を表示したいページで、以下のscriptタグを記述します。src属性のURLでviews数を表示したいust録画動画のURLを指定します。

CODE:
  1. <script type="text/javascript" src="http://www.u-st.tv/views?url=%ust録画動画のURL"></script>

ブラウザで見ると以下のタグが表示されます。

CODE:
  1. <span class="ust_views_10">64 views</span>

今はタグ表示だけですが、要望があればJSON出力とかも考えます。

2. CSS読み込み

はてブ風に表示するスタイルシートを用意しています。以下のスタイルシートを任意の場所に記述するなり、外部ファイルにして読み込むなりして下さい。

CODE:
  1. span.ust_views_1 {
  2.   color: #f00;
  3.   font-weight: normal;
  4.   background-color: #fcc;
  5. }
  6. span.ust_views_10 {
  7.   color: #f00;
  8.   font-weight: bold;
  9.   background-color: #fcc;
  10. }

viewsが10未満なら「ust_views_1」、10以上なら「ust_views_10」がspanタグのclass属性に割り当てられます。見た目を変えたい方はスタイルシートで調整して下さい。

ブックマークレット

簡単なブックマークレットを作りました。ブラウザのブックマークツールバー等にドラッグして利用して下さい。

[views表示タグ]

使い方ですが、まずviewsを表示したいustページをブラウザで開きます。

http://www.ustream.tv/recorded/3535672

その状態でブックマークレットをクリックします。すると以下のようなHTMLタグが別窓に表示されます。

CODE:
  1. <a href="http://www.ustream.tv/recorded/3535672" target="_blank">第0回 Webなんたらかんたら 2009.12.28., shin1x1 on USTREAM. Radio</a><script type="text/javascript" src="http://www.u-st.tv/views?url=http://www.ustream.tv/recorded/3535672"></script>

あとはこのタグをblog等に貼れば、views数が表示されます。

第0回 Webなんたらかんたら 2009.12.28., shin1x1 on USTREAM. Radio

GAE+Pythonでさくっと

作りました。

独自ドメイン(u-st.tv)をGAEサイトに割り当てています。実はnaked domain(http://u-st.tv)にしたかったのですが、GAEでは割り当てができないようで、www.u-st.tvにしています。

あと表示の度にustream.comにリクエストを投げるのは非効率なので一定時間キャッシュするようにしているので、ご注意を。

使い方も簡単なので、ust動画リンクのお供に使ってみて下さい。

Webサービス 2009/12/28 17:15

写真から年齢を当てるサイト howoldareyou.net

ドメイン名そのままのサイト。

howoldareyou.net

「この人は何歳だと思いますか?」

という感じで、表示される顔写真を見て年齢を当てます。

年齢は以下から選択します。

年齢をクリックすると画面右に正解が表示されます。

実年齢(20才)、回答の実年齢との差分(+10才)、そして写真下には平均回答年齢(28.5833才)が出ていますね。

若そうに見えて意外と、と狙って30才にしたら20才の方でした。。。でも平均で28.5ということは実年齢より上に見える人なのでしょう。

という感じで遊ぶサイトです。

PCで一人でやると何枚かやるともうお腹一杯になってくるので、iPhoneとかでみんなでやると面白いかもしれませんね。

あと画面右上の「Add Your Picture」から自分の写真を登録することもできます。削除方法が明示されていなかったりするので、試す人は自己責任でどうぞ。

自分のも上げてみたのでもし遭遇した人がいれば、よろしくお願いします。

CakePHP & Webサービス 2009/11/20 09:42

携帯サービス「おでかけくん」をリリースしました

ちょっと便利な携帯サービス「おでかけくん」をリリースしました。

odkk

お出かけ先を登録することで、天気予報やグルメ情報、ニュースといった情報を携帯で見ることができます。またアラートメール機能を使うと設定した時間に帰宅時間を知らせるメールが送信されます。これでうっかり終電を逃すことも避けられますね:-D

サービスの内容はサイトを見て頂くのが早いと思うので、ここでは制作について。

女性向け

デザインを見て頂ければお分かりだと思うですが、女性を意識したサイトになっています。

Webサービスは数あるのですが、特に個人で作れるような小規模なものとなると、どちらかと言うと「Webに詳しい人のためのサービス」というのが多くて、もっと普通の人が使えるサービスを作りたいという想いがありました。

なかでも女性向けのWebサービスは少ないので、この企画を考えました。

技術志向のサービスはもちろん素晴らしいのですが、それだけではなく技術的にはありきたりのものでも、誰かの役に立つサービスがもっと増えれば良いですね。

Mashup Award 5

マッシュアップサイトのコンテストであるMashup Award 5に応募しています。

作品#220 おでかけくん

目標があった方が開発も進むだろうということで応募することを決めたのですが、開発開始から応募締め切りまであまり時間が無かったので、最後はバタバタでした。。。

賞は、、、どうなるか分かりませんが、このイベントのおかげで目標設定ができ、おでかけくんを構築することができました。

技術構成

構成は1×1では定番の PHP + CakePHP + PostgreSQL です。CakePHPには社内標準ライブラリをまとめたプラグインがあるのでそれを活用しています。

技術的にはそれほど特筆すべき点は無いのですが、マッシュアップサイトならではの苦労というか悩みがありました。

いくつかの外部WebAPIを利用させて頂いているのですが、目的は合致していても欲しい項目が足りなかったり、制限があったりで、WebAPIにコンテンツ内容を合わせざるを得ないところがありました。

チーム開発

これまで幾つか自社(自分)運営のWebサービスを作ってきたのですが、それらはどれも私が一人で構築していました。

「おでかけくん」はここがこれまでとの大きな違いで、今回は1×1としてチームで構築を行いました。私自身は意識的にコードは書かないようにして、企画やディレクションといった「口を出す側」に徹しました。

結果として無事にサービスをリリースすることができ、これはとても良い方向に向かったと感じています。

開発スキルとしては社内で十二分に構築できるのは分かっていたのですが、意識の面で主体的にアイデアを出して実装を考えて構築するというのが経験できたのが収穫でした。

また口うるさいクライアント(私)が近くにいるというのも一つの経験になったかと:-D

締め切り直前に

10月入った段階ではまだ真っ白な状態でそこから本業もやりつつの開発だったので、とにかく時間が足りませんでした。

とくに締め切り直前にCakeMatsuriがあって、さらに私が新型インフルエンザで床に伏すという事態になり、どうなるかと思ったのですが、前途したチーム開発のおかげで無事にリリースすることができました。

リリース時は、布団の中で携帯でサイトを見て、にやにやしていました:-D

しっかりとサービスを構築してくれたスタッフには感謝の気持ちで一杯です。ありがとう!

それほど派手な機能は無いですが、ちょっと便利なWebサービスになっています。登録も簡単なので是非使ってみて下さい。

おでかけくん

CakePHP & Webサービス & twitter 2009/08/14 12:26

シンプルなTwitter検索「findTwitter」を作りました&ソース公開

AutoPagerize対応したシンプルなTwitter検索「findTwitter」を作りました。

findTwitter

Twitterのつぶやきを検索

機能はシンプルです。テキストボックスに検索したいキーワードを入力して、「検索する」ボタンをクリックするとキーワードに合致したつぶやきを表示します。

「shin1x1」で検索

find_twitter_screen

検索パターンとしては以下のような組み合わせが可能です。

  • 単語で検索。(ex. [CakePHP])
  • スペースで単語を連結してAND検索。(ex. [PHP カンファレンス])
  • 「OR」で単語を連結してOR検索。(ex. [shin1x1 OR msng])

仕組み

TwitterAPIを叩いているだけ

仕組みはごくごく単純でTwitterの検索APIを叩いてるだけです。

検索結果はAPIの挙動に依存しているので、検索漏れや古いつぶやきが検索対象にならないなど現象があります。

CakePHP

CakePHP1.2.4を利用しています。上記のようにAPIを叩いてるだけなのでDBは使っていません。

レンタルサーバで動作

ごく普通のレンタルサーバに置いているだけです。

ソースを公開

このサービスの本質はこちらです。

findTwitterのソースコードはgithubにて公開しています。

動作環境は、PHP5以上でCakePHPが動けば問題無いと思います。ライセンスはCakePHPに習ってMITライセンスにするので、ご自由にご利用下さい。

githubは分からない方にはZIPアーカイブも用意しています。下のリンクからもダウンロードして下さい。

CakePHPで動くサンプルを

CakePHPはフレームワークとしては多くの導入事例があるのですが、CakePHPを利用したオープンソースシステムが公開されている例は実はあまりありません。

最近では、私も(いちおう)参加しているPHP版Redmine「candycane」があるですが、これはRedmineという開発のプロが実務で利用しているシステムの移植ということで、これからCakePHPを使いたい人が参考するには大きいかな、という印象があります。

そこで全体は小さいものの、一つのシステムとして稼働するサンプルとしてfindTwitterを作りました。

WebサービスAPIを使ったシステムということで、手軽にサービスを作ってみたい人にはサンプルとして参考になるかと思います。

フレームワークを除いたソースは少しだけなので、特に難しいところは無いと思うのですが、いずれblogで解説を書くなり、発表するなりしたいと思います。findTwitterをベースにWebサービスを作る勉強会なんかも良いですね:-D

フレームワークだけで

こういった主旨なのでCakePHPの機能だけで作りました。

普段は自社で蓄えているプラグインやライブラリを活用しているのですが、今回は素のCakePHPだけで作っています。まあ、findTwitterは仕様も単純ですし、もともとCakeは機能が揃っているので特に困りませんでした。

また、どこでも動くようにということでfind-twitter.inはレンタルサーバ(チカッパ!)に設置しています。

レンタルサーバに設置するだけで動くCakePHPの良さを再認識しました:-D

楽しさを

Webサービスを作るのは大変なこともありますが、本当に楽しいものです。特にTwitterがある今ではユーザさんからリアルに反応を貰うことができます(もちろん非難もありますが><)。自分が作ったサービスで誰かがわくわくしているかもと思うと、ニヤニヤが止まりません:-D

findTwitterをきっかけに新たなWebサービスが生まれて、その楽しさを皆で享受できれば嬉しいです。

次ページへ »