mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

2009-01-01から1年間の記事一覧

検索クエリログからのスペル訂正辞書の自動生成

先月ハワイに行ってきてオルオルな (ハワイ語で '楽しい' という意味) 気分の takahi-i です。最近ログデータの有効活用が話題になっていますが、検索エンジンが出力する検索クエリログを使用してどんなことができるのかについて紹介させていただきます。 …

Tokyo TyrantとテーブルDBでリアルタイム検索

ドラクエは卒業して、もっと英語漬けをやっているmikioです。さて今回は、データベースサーバTokyo Tyrantとテーブルデータベースを使ってリアルタイム検索システムを構築する方法について語ります。 テーブルDBを分散させたい Tokyo TyrantでもテーブルDBが…

Lua on Promenade

ドラクエのプレー時間がついに150時間を突破して妻の視線が痛いmikioです。今回は、かんたんCMS「Tokyo Promenade」にスクリプト言語Luaを組み込んでカスタマイズする方法について述べます。 なぜスクリプト言語処理系を組み込むのか Tokyo Promenade(TP)…

YAPC::Asia 2009で大規模画像配信とPerlについて発表しました

開発部・システム運用グループの長野です。9月10日・11日に東工大大岡山キャンパスで開催されたPerlのカンファレンス、YAPC::Asia 2009に参加してきました。 昨年は2つのセッションをやらせて頂きましたが、今年は1つだけ発表をしましたので、資料を公開しま…

かんたんCMS「Tokyo Promenade」の便利機能

新生児が家に来たおかげで生活が一変して激太りしたmikioです。さて、一部のWebマニアには好評をいただいているTokyo Promenadeですが、今回はその追加機能について語ります。 サイト移転 Tokyoシリーズの配布サイトを新規設置したホームページに移しました…

かんたんCMS 「Tokyo Promenade」を使おう

先日、待望の長女が誕生したmikioです。あまりにかわいいから育児ブログでもつけようという魂胆ではありませんが、今回は自作のCMSであるTokyo Promenadeについて語ります。 Tokyo Promenadeとは 以前の記事で、Tokyo Cabinet(TC)を使ったCMSを作ることを…

bayonでソフトクラスタリング

先日ようやくドラクエ9をクリアしたのですが、切ない話が多くて、たまに泣きそうになってしまったfujisawaです。以前ご紹介したデータクラスタリングツールbayonにいくつか機能追加を行いましたので、その中から以下の2つをご紹介させていただきます。 入力…

オレオレ検索窓を設置しよう

まだピクミン2をクリアしてないのでケジメ的に新作ゲームを買えないmikioです。今回は、Tokyo Cabinetを使って激烈簡単に特定サイトの専用の検索機能を設置する方法について説明します。クローリングから検索までを10分くらいの作業で可能にします。 特定サ…

転置インデックスを実装しよう

相対性理論のボーカルが頭から離れないmikioです。熱いわっふるの声に応えて今回はTokyo Cabinetのテーブルデータベースにおける検索機能の実装について語ってみたいと思います。とても長いのですが、最後まで読んだあかつきには、自分でも全文検索エンジン…

mixi、gooホーム共催!OpenSocial Hackathonを開催いたします!

こんにちは!プラットフォーム開発チームに所属してます、よういちろうです。7月に行われるOpenSocial Hackathonについてお知らせいたします。 株式会社ミクシィ、エヌ・ティ・ティ レゾナント株式会社の共同主催にて、OpenSocial Hackathonを7月17日に開催い…

3行でできる超お手軽全文検索

梅雨。部屋干しした洗濯物による異臭騒ぎに苦しむmikioです。今回は、Tokyo Cabinetのテーブルデータベースで超お手軽に全文検索をする方法について説明します。 使い方 テーブルデータベースについてまずおさらいしておきましょう。PerlやRubyのハッシュの…

軽量データクラスタリングツールbayon

逆転検事を先日クリアして、久しぶりに逆転裁判1〜3をやり直そうか迷い中のfujisawaです。シンプルなデータクラスタリングツールを作成しましたので、そのご紹介をさせていただきます。 クラスタリングとは クラスタリングとは、対象のデータ集合中で似てい…

100行のCプログラムでWebチャットを実装する方法

例の冷却ファンを修理してもらいに秋葉原に行ったのですが、最近の同人ゲームのクオリティはすごいなあと感心していたら、その二階はもっととんでもないことになってて、ひとつ大人になってしまったmikioです。今回は、Tokyo Cabinetのテンプレート直列化機…

memcached-1.4 RCをつかってみよう

数日前にmemcached-1.4のリリース候補が出ましたので、今日はその最新版と、それを使ったメモリ節約の運用法を紹介します。厳密にいうと、ご紹介させていただくmemcachedのメモリ節約機能は1.3のbetaから存在し、過去にこちらで取り上げました。 memcached-1…

mixi主催OpenSocial Hackathonが開催されました!

5月15日に、mixi&OpenSocial-Japan主催OpenSocial Hackathonが開催されましたので、ここで簡単にレポートをしたいと思います。会場は渋谷にあるGoogleの一室をお借りしました。 Hackathonはグループに分かれ、グループごとにひとつの作品を作り上げる過程で…

データベースの動的デフラグ

ノートPCの冷却ファンがうるさいのを対処しようとしてWebで調べたら、そのファンの設計者が「静音性へのこだわり」を語ったページにたどり着いて複雑な心境のmikioです。今回は、Tokyo Cabinet(TC)の最新バージョンで実装された動的デフラグ機能について長…

プラグインで独自ストレージを作ろう

OpenSocialとかC++0xとか世の中の流れが早すぎて、いろいろと勉強しなきゃなと焦りつつも、ついついピクミン2にはまってしまうmikioです。今回はTokyo Tyrant(TT)を使ってユーザ独自のストレージシステムを簡単に構築する方法について説明します。 プラグ…

WEB+DB PRESS Vol.50からmixiのシステム運用の連載開始です!

息子が3ヶ月になり、日に日に出来る事が増えていくのを見て、親馬鹿度合いがますます増えているかぜぶろです。 さて、もう手に取って読んで頂いた方も多くいらっしゃると思いますが、技術評論社様からでているWEB+DB PRESSのVol.50から「大規模Webサービスの…

はじめよう!コンピューターミュージック

iPhoneゲームの買い過ぎでついにアプリが7ページ目に突入してしまった bonar こと中野恭兵です。今のお気に入りは手軽に遊べる"frenzic"と本格派ファンタジーパズル"Aurora Feint" 。最高です。 普段はアプリケーション開発グループ ミュージック開発チーム…

OpenSocial Hackathon開催のお知らせ

株式会社ミクシィは、OpenSocial-Japanコミュニティと共に、OpenSocial Hackathonを5月15日に開催いたします。 OpenSocialは誕生から1年で6億人ものユーザを獲得するまでに成長を遂げました。mixiアプリのオープンβ版が4月8日から個人の開発者にも公開され、…

PerlとRubyで省メモリなハッシュを使おう

サボっていた早朝ジョギング@駒沢公園を再開して2週間たち、やっと抜かれる数より抜く数の方が増えてきたmikioです。今回は、PerlやRubyのハッシュの代用としてTokyo Cabinetを使うことでメモリ使用量を激減させられることを説明します。 抽象データベースA…

TCのHaskellバインディングとODF繰り越し制度の紹介

はじめまして。ミュージック開発チームのtomと申します。名前はtomですが純日本人です。(本名も"tom"でちゃんと漢字があります。) 今回は、"オンラインコーヒーメーカー萌香たん"を作ったりできることでおなじみのODFをちょっとお得に使うための、「ODF繰り…

「Web2.0中の人ナイト」に行ってきました。

はじめまして。07年入社エンジニアのあまやんです。 今日はmixi Engineer's Blog初(?)、弊社エンジニアの社外での活動レポートをお届けしてみたいと思います。 去る3月29日、東京・お台場の「東京カルチャーカルチャー」にて、ウェブ業界の若手社員たちに…

MapReduce on Tyrant

先日、隅田川の屋形船で花見と洒落込んだのですが、その日はまだ一分咲きも行ってなくて悲しい思いをしたmikioです。今回はTokyo Tyrant(TT)に格納したデータを対象としてMapReduceのモデルに基づく計算をする方法について述べます。 MapReduceとは Google…

オンラインコーヒーメーカー「萌香たん」とはじめるドキドキ☆コーヒーブレイク

はじめまして!08年度新卒エンジニアの「きょろ」こと井上恭輔と申します。ミクシィではコミュニケーション開発チームというところで、mixi上の色々なコミュニケーションサービスの開発を担当しています。 就職で東京に出てきて早10ヶ月、最初は周囲の歩く速…

Pure JavaScript Template Engine その弐

どうも、こんにちは。hirokiです。前回は、HTML::Template::ProのJavaScript実装を紹介させていただきました。今回はその実装部においてのちょっとした工夫についてと、Webフロントエンドのパフォーマンスチューニングについて簡単にまとめさせていただきま…

Pure JavaScript Template Engine

はじめましてhirokiです。こんにちは。新卒で弊社に入って一年が経過しようとしているので、そろそろエンジニアブロガーの仲間入りをしてみようかと思っています。 今回はJavaScriptのお話です。ハードボイルドなバックエンド側技術のご紹介が多い当ブログで…

DBMによるテーブルデータベース その五

ついに発売されたスト4のコンシューマ機版をやりたくてしょうがないけど筐体を買ってもらえないので、駅前のゲーム屋のディスプレー前で垂涎するばかりのmikioです。今回は連載の最終回で、各種スクリプト言語を使ってお手軽にテーブルデータベースを操作す…

DBMによるテーブルデータベース その四

コアライブラリを一生懸命書くとユーティリティやバインディングなどの周辺機能がおろそかになり、逆も然りで、工数割り当てのジレンマが歯がゆいmikioです。今回は余談として、Tokyo Cabinetのテーブルデータベース(TCTDB)を作る途中で思いついた更新機能…

MySQLに対するDrizzleの答え #1 スレッド管理編

先日、Drizzleのスレッド管理を担うコアの一部分がモジュール化され、勉強がてらMySQLのスレッド管理の設計を調べてみました。その時のメモ(だから文が少し固いかも)と、Drizzleでの戦略を今回のエントリーで公開します。 最後のDrizzleでは?セクションま…