Tweet
こんにちは、山下です。 今年もどうぞよろしくお願い致します。 Webサービスを開発していると、特定のキーワードを自動でURLリンクにする処理が必要になることがあると思います。今回は、このキーワード自動リンク機能を形態素解析ツールMecabを使ってPHPで実装する方法を紹介したいと思います。 説明に入る前に少し補足しておくと、Trieの実装であるDouble-Array処理だけ利用したいのであれば、MecabからDouble-Array処理の部分を切り出したDartsというライブラリがあります。しかし、なぜMecabを使うかというと、PerlだとDartsのバインディングが公開されているのですが、現時点でPHP版はありません。また、最近のLinuxディストリビューションでは、Mecabのパッケージが最初から用意されているため、より簡単に利用できると思ったからです。 それでは、順を追って説明し...
Tweet
こんにちは、山下です。 今回は、jQueryのパフォーマンス最適化について説明したいと思います。 軽量と言われているjQueryですが、いろいろな機能を実現しようとして複数のプラグインを導入すると、だんだんと動作が重くなってきます。サーバ側をいくらチューニングしたところで、ブラウザ側での処理に時間がかかっていたら、せっかく訪問してくれたユーザに重いサイトとして認識されてしまいます。以下に、ウノウで運営している「映画生活」で実際に行っている方法を紹介します。 1. Packed版ではなくMinified版を使う jQuery1.1まではPacked版のみだったのですが、jQuery1.2からMinified版もダウンロードできるようになりました。Packed版よりもMinified版を使うことをお勧めします。どう違うのかというと、Packed版はファイルサイズを極限まで削減するために静的辞書...
Tweet
こんにちわ、山下です。 9月に発売された人気のiPod touchですが、私も即予約して購入してしまいました。二本の指で操作するインタフェースは、Mac OS X譲りの滑らかな動作と相まって非常に楽しいです。ベッドで寝る前にSafariでWebブラウジングしているうちに眠ってしまって、一緒に朝を迎えることもしょっちゅうです。iPhoneと違ってGoogle Mapsのアプリがない、カレンダーに予定を入力できないなど、いろいろ制限もあるのですが、今は自由で楽しいiPodライフを送っています。 さて今回は、世の中にiPhone/iPod touch対応サイトがもっと増えればいいなという願いを込めて、iPhone/iPod touch対応サイトを作るために参考になるページを紹介します。 iPhone向けWebアプリケーションとコンテンツの最適化 アップル本家によるiPhone向けWeb開発ガ...
Tweet
こんにちわ、山下です。 Software Design 10月号にサーバ監視ツールCactiについての記事を書きました。この号のNagios,Swatch,Wiiの記事もウノウ・エンジニアによるものですので、ぜひ興味のある方はご覧ください。 さて、今日はWebブラウジングを快適にするAutoPagerizeというツールを紹介します。AutoPagerizeはGreasemonkey用の拡張スクリプトで、今、自分のまわりで爆発的に流行っています。先日の出張 Shibuya.js 24でも作者の方が発表されていたのでご存じの方も多いのではないでしょうか。 念のために何をするツールかを説明しておくと、Googleなどの検索結果で次のページを表示するときに「次へ」ボタンを押さなくてもページ下部までスクロールすると、勝手に次のページを読み込んでその下に付け足してくれるものです。なかなか文章では伝わら...
Tweet
こんにちわ。山下です。 最近、私の周りではJavaScriptライブラリといえば、jQuery の名前がまず最初に挙がってくるようになってきました。今回は、jQueryって何が便利なの?っていう人向けに、ポイントを掻い摘んで説明します。 1.名前空間を汚さない 他のJavaScriptライブラリとかだとStringとかArrayを直接拡張してたりしますが、jQueryはグローバルな名前空間を汚しません。eachとかmapのような便利な関数もすべてjQueryオブジェクトの属性として定義されています。 jQuery.each, jQuery.extend, jQuery.grep, jQuery.map, jQuery.merge, jQuery.trim, etc. また、標準では $ にショートカットが割り当てられるのですが、jQuery.noConflict()と書くことで proto...
Tweet
こんにちわ、山下です。 Amazonなどで使われているような商品を☆の数で評価するスターレイティングというものがあります。今回は、CSS The Star Matrix Pre-loadedに紹介されている記事を参考に、その作り方を簡単に紹介しようと思います。 1.画像を用意する まず次のような1枚の画像を用意します。16×16ピクセルの☆が、横に5個、縦に11個並んでいて、下に向かうに従って色の付いている☆の数が増えているのがポイントです。 2.HTMLを書く HTMLはとてもシンプルで、ULリストを使います。 <ul class="rating onestar"> <li class="one"><a href="#" title="1 Star">1</a></li> <li class="two"><a ...
Tweet
こんにちわ。 7月2日に、エイガでつながるクチコミサイト「映画生活」のリニューアルが無事に終わってほっとしているhideです。近々、映画APIなども公開していきたいと思っていますので、どうぞよろしくお願い致します。 さて、今日は、Cactiを使ったサーバ稼働状況の監視について説明したいと思います。サーバの稼動状況を監視するツールとしてはMRTGが有名ですが、ウノウではCacti を使っています。MRTGと比べて、Webブラウザ上から設定を行うことができる、データはMySQLに保存されるので過去の任意の時点を詳しく見ることができるなどの点で優れています。 Cacti posted by (C)フォト蔵 Cactiは普通にインストールしただけだとサーバから取得したデータをグラフ表示するだけなのですが、http://cactiusers.org/にて公開されている Cacti Pl...
Tweet
こんにちわ、hideです。 最近は、jQueryというJavaScriptライブラリを使ってAjax関連の処理を書くことが多いです。なんといっても軽量で高速、XPathによる要素の指定がとても便利です。今回は、その便利なjQueryをもっと便利にするプラグインをいくつか紹介します。 ThickBox LightBoxのようなもので、画像の他にHTMLの表示も可能です。難点は、$()を使って書かれているので、他のライブラリと混ぜて使えないこと。僕はソース内の$()をすべてjQuery()に書き換えて使っています。 JSON for jQuery AjaxでJSONを取得して、処理できるようにするプラグイン。これは必須とも言っていいと思います。CallBack関数を指定してのJSONPも簡単。 BlockUI Plugin 画面の一部や全体を半透明のレイヤーで覆って操作できなくするものです。A...
Tweet
こんにちわ、hideです。 ゴールデンウィークの真っただ中、皆さんいかがお過ごしでしょうか?この時期、旅行に出かけたり、実家に帰省したりして、いつものインターネット接続環境が使えないことも多いかと思います。今日は、そんなあなたにGoogleのサービスを携帯電話で使う方法を紹介したいと思います。 ※一緒にQRコードも載せておきますので、バーコードリーダーで読み取ってご利用ください。 Google検索 携帯電話でもGoogleの検索エンジンが利用できます。このサービスの便利なところは、PC用のサイトを検索できるだけでなく、携帯電話での表示に適した形に変換してくれるところです。画像サイズの変換、長いページの分割、簡単なJavaScriptの描画などもしてくれるようです。 Google Mobile Proxy PC用のサイトを携帯電話での表示に適した形に変換してくれます。Google検索を使うと...
Tweet
こんにちわ、hideです。 先日のエントリにある通り、2泊3日で開発合宿に行ってきました。僕は「1日1サービス」を目標に掲げて合宿に望んだのですが、なんと風邪でダウンしてしまい真ん中の日は丸々寝てました。 そんな状況ではあったのですが、Flickr2PhotoZouというFlickrの写真をフォト蔵にインポートするツールを作りました。もともとFlickrの無料アカウントが200枚制限に達してしまったため、その写真を移行したくて自分用に作ったものなのですが、せっかくなので公開します。 http://flk2pz.demos.unoh.net/ 【使い方】 フォト蔵にログインするためのメールアドレスとパスワードを入力してください。 Flickrにログインしていない場合は、ログイン画面が表示されるのでFlickrにログインしてください。 Flickr2PhotoZouへアクセスを許可するために、...
Tweet
こんにちは、hideです。 ThinkITでPHP開発手法の連載 第6回目が掲載されました。ウノウで採用している「Trac」のインストール方法と活用事例について説明していますので、興味のある方はお時間のある時にでも見て頂ければ幸いです。 第6回:BTS(Bug Tracking System)の利用 ...
Tweet
こんにちは、hideです。 皆さんは、キャバクラって行ったことありますか? キャバクラとWebサービス、この一見、まったく関連が無いように見える2つのサービスですが、実は多くの点で共通点があります。これから新しくWebサービスを作ろうとしている人、現在Webサービスを運用している人は、彼女らの接客態度やサービス精神からいろいろと学ぶことができます。 では、順を追って紹介していきましょう。 1. 見た目が大切 第一印象で悪いイメージを持たれて損をしないように、思いっきりお洒落してユーザを迎えましょう。キャバクラでは香水の香りで嗅覚を刺激するなど、五感を活用した接客というのが行われています。しかし、Webサービスの場合、嗅覚/味覚/聴覚/触覚はないので、使えるのは視覚のみになります。より見た目が重要になってきます。 2. おもてなしの精神 とても基本的な事なのですが、数あるお店(Webサイト)...
Tweet
こんにちは、hideです。 僕がウノウに入社してからもう少しで6ヶ月が経過しようとしています。入社して間もない頃に「ウノウってこんな会社です」というエントリを書いたのが、とても懐かしく感じられます。 僕の前職はいわゆるスーツ系のSIer企業でした。特に大きな不満があったわけではないのですが、一生このままでいいのかな、という漠然とした不安は感じていました。そんな僕が転職を決意するきっかけとなったのは、ポール・グレアムの書いた「ハッカーと画家」という一冊の本を読んだことでした。その本にはこのようなことが書かれていました。 最良のイントラネットは、インターネットだ。 信頼できる、良いプログラマからなる小さなチームでのほうが、大企業での平凡なプログラマからなるチームよりもうまくいく。 良いハッカーになる鍵は、たぶん、自分がやりたいことをやることだ。 難しいのは問題を解くことではなく、どの問題を解く...
Tweet
1月22日、ウノウを会場にDjango勉強会が開催されました。 DjangoからAjaxを使うにはどうしたらいい感じか?(mopemopeさん) 寺子屋「RandomNoteを作る」(uemuraさん) ライブブログ構築(遠藤さん) Leuchtturmデモ(酒徳さん) 寺子屋では、実際に参加者の方が、ペア・プログラミングでサンプル・アプリケーションを作成するという形で行われました。半数以上がDjango初心者だったのですが、皆さん初めてでもすぐに覚えてしまったようです(Python自体が初めてという人もいました)。 参加者は24名で、懇親会もほぼ全員の方が参加して、エンジニア同士での意見交換が活発に行われました。 Django勉強会 Disc2 posted by (C) フォト蔵 Djangoは、Pythonで書かれたWebアプリケーション・フレームワークで、見通しのよい MVC 分...
Tweet
hideです。 Dashboard posted from フォト蔵 Mac OS X 10.4(Tiger)から追加された機能にDashboardというものがあります(右図)。F12キーを押すと現在のデスクトップ画面上に重ねてウィジェットというユーティリティが表示されます。電卓やカレンダー、天気予報など、ちょっと使いたい時にいちいちアプリケーションを起動することなく、これらの機能が利用できるので、とても使い勝手がよいです。 このウィジェットですが、中身はHTML、CSSやJavaScriptといったお馴染みの技術でできていて、実は簡単に作ることができます。また先日にベータ版ではありますが、Appleからウィジェット開発環境のDashcodeというソフトウェアが公開されました。次期Mac OS XのLeopardにバンドルされる予定のものなのですが、このソフトを使うと1行もプログラムを記...
Tweet
こんにちは、hideです。 近年のAjax技術の台頭により、Web2.0時代のエンジニアにとってJavaScriptは欠かすことのできない技術となってきました。しかし、2000年頃のWeb1.0時代には低機能な言語として認知されていました。このことは、"Rediscover the JavaScript"と題された次の文章に良く表れていると思います。 10 年。世界が JavaScript の真の実力を発見するのに要した時間である。 1995 年、Netscape 社の Brendan Eich により開発・設計された JavaScript は、「世界で最も誤解されたプログラミング言語」などと呼ばれもした、ともすれば不遇とすらいい得る歳月を経て、あたりのそこここに満ち充ちていた「Web の旧来的なインタラクションの窮屈さを革命したい」という思いによって、ふたたび表舞台に招来された。(Shi...
Tweet
こんにちは。できないのではなく「つくらない派」のhideです。 以前、「Dojoで簡単にクロスドメインAjaxを実現」というエントリを書きましたが、その後、新機能が追加されたDojo 0.4がリリースされました。0.4になって、JSONPを簡単に扱う方法は、dojo.io.bind() を dojo.io.ScriptSrcTransport.bind() を使うように変更しないと動作しなくなったので注意してください。 追加された機能は次の通りです。 ・グラフ描画機能の追加 ・各種ウィジェットの追加 ・SVG/VMLのベクター描画ライブラリ(GFX)の追加 ・FireBugと連携したデバック機能の改善 ・名前空間のサポート ・i18nサポート そして、Dojo 0.4を使っていろいろ遊んでみたサンプルがこれです。HTMLとJavaScriptのコードを書いただけで、サーバサイドのプログラム...
Tweet
こんにちわ、hide です。 10月25日早朝にFirefox 2.0が正式にリリースされました。少し前にInternet Explorer 7も英語版がリリースされていたりして、最近Webブラウザ周りがにわかに熱いようです。 Firefox 2.0の主な変更点は次の通りで、レンダリングエンジン自体に変更はないとのこと。先日のジュンヤさんのエントリにRC2の先取りレビューがあるので、個々の機能についてはそちらを参考にして頂ければと思います。 デフォルトテーマのデザイン変更 フィードのプレビュー機能とRSSリーダ購読機能 タブ機能の強化 検索バーでのサジェスト機能 JavaScript 1.7 さて、今日はFirefox 2.0に移行する際のお勧め設定について書きます。通常の設定画面では行えない、中級者以上の方向けのちょっとだけマニアックな設定です。と言ってもそんなに難しくないので、初心者の...
Tweet
こんにちわ、hideです。 最近、JavaScriptライブラリのDojoを使い初めて、その便利さに目覚めてしまいました。Ajaxで使用される通常のXMLHttpRequestではセキュリティ上の理由から、現在表示しているページ以外のドメインに対してリクエストを送ることができません。そこで考え出されたのが、JSONP(JSON with padding)という方法です。JavaScriptのインクルードは、同一ドメインでなくても読み込めるという性質を利用しています。 dojo.require("dojo.io"); dojo.require("dojo.io.ScriptSrcIO"); function getJSONP() { dojo.io.bind({ url: 'http://api.se...
Tweet
hideです。 僕がMac OS Xを使うようになって1ヶ月と少しが経ちました。最初は戸惑うこともあったのですが、だいぶ手に馴染むようになってきました。最近、オープンソース関係のイベントに行くとMacユーザがかなりの割合でいる理由が分かったような気がします。感想としては、 UNIXの良い文化を取り入れている DockやDashbordの動きがいちいちカッコいい VMwareやcoLinuxを使わなくてもローカルに開発環境を作れる 今更ながら、BSDベースにしてMicrosoft製のOSとの違いを出していくというAppleの戦略には関心してしまいました。Web系エンジニアの方は、Macを次に購入するPCの候補に入れてみてはいかがでしょうか。 というわけで、あなたがいつかMacユーザになった際に便利なように、最初にインストールするべき10のアプリケーションを紹介します。 1.Firefox 何...