タグ

ブックマーク / gihyo.jp (248)

  • 第6回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(1) | gihyo.jp

    mroongaのN-gramについては、bigramだけでなく、uni-gramやtri-gramの他、多数の派生N-gramでのトークナイザに対応しています。さらに2013年5月末リリースのmysql-mroonga-3.04にて、待望のWプラグマに対応しました。これにより、Tritonnからmroongaへ移行する際の障壁はEプラグマのみになったと言えます。 Tritonnから乗り換えるならば、mroongaの1択ですね。 Tritonnからmroongaへ移行する7つのメリット それでは早速、Tritonnからmroongaヘ移行するメリットを見てみましょう。 MySQL 5.6対応であること もはやレガシーとなったMySQL 5.0という縛りがなくなることで、MySQL 5.1以降の先進的な機能を取り入れることができます。特にMySQL 5.6ではその進化が甚だしく、次の点を始めと

    第6回 [実録] MySQL向け全文検索エンジン「Tritonn」から「mroonga」への移行ガイド(1) | gihyo.jp
  • 第15回 分類問題ことはじめ | gihyo.jp

    前回まで扱っていた回帰問題は、データ点にマッチした関数を見つけるものでしたが、機械学習には他にも様々な問題を解くための手法があります。 今回からはその中の一つ、「⁠分類問題」に入っていきましょう。 分類問題 「分類問題」とは、データをそれぞれカテゴリに分類するもので、機械学習の代表的な使い道の一つです。 例えばメールをスパムと非スパムに分類したり、文中の単語に名詞や動詞などの品詞ラベルを割り振ったり、Webページの内容に応じて「スポーツ」や「政治」などのジャンルに分類したりするのもすべて分類問題と見なすことで、機械学習を使って解くことができるようになります。 「分類」に雰囲気のよく似た言葉として「クラスタリング」というものもありますが、機械学習の分野ではその2つは明確に区別しています。 「分類問題」では、データをどのようなカテゴリーに分けるかは問題を解きたい人が指定します。したがって学習用

    第15回 分類問題ことはじめ | gihyo.jp
  • 第2回 パッケージ管理npmとアプリケーションの永続化 | gihyo.jp

    はじめに 前回は、Node.jsについての説明から、モジュール参照の仕組みや最もシンプルなHTTPサーバの実装についてまで紹介しました。今回はパッケージ管理ツールのnpmとNode.jsアプリケーションの永続化について紹介します。前回記事に引き続く内容になっていますので、未読の際はそちらからなるべくご覧ください。 予期せぬ例外に備える 前回の記事で、どんなリクエストにも「Hello World」を出力するだけの、単純なHTTPサーバの実装を紹介しました。そして、アプリケーションとそれを動作させるHTTPサーバがJavaPHPなどと異なり、オールインワンの1つのプロセスで動くことも述べました。 このため、単にnode app.jsのように動作させた場合、例外が発生すると、サーバ機能ごとプロセスが終了してしまいます。そのため、サーバ機能まで道連れにしないように、アプリケーション側で例外処理を

    第2回 パッケージ管理npmとアプリケーションの永続化 | gihyo.jp
  • ミーティングの五原則 | gihyo.jp

    プログラミング全般に関する話題についてJeff Atwood氏が書いているCoding Horrorでは、ミーティングに関する話題が投稿され話題になっていました。記事によるとミーティングについて彼が訴える五原則は次のとおりです。 ① 1時間以上のミーティングをしたものは「死刑」……ミーティングが1時間以内に収まらない場合は根的な過ちがある。まずはそれを正すべき ② すべてのミーティングは明確な目的があるべき……ミーティングの目的を簡潔な短文で定義できますか?ミーティングの目的が参加者全員に明確であることを確認しましょう ③ ミーティング前に宿題を済ませる……ミーティングのアジェンダを明確にしたら参加者には事前に何を話すべきかを伝える。ミーティングルームに入る前に宿題を済ませて準備ができていることが1時間以内にミーティングを終わらせる秘訣である ④ 任意参加にせよ……必須参加は甘え。参加者

    ミーティングの五原則 | gihyo.jp
  • テックヒルズ2012 #2「ネイティブアプリ」vs「Webアプリ」実施レポート | gihyo.jp

    以下、実際の発表を紹介していきましょう。 jQuery MobileではじめるWebアプリ開発 トップバッターとして、CROOZ株式会社 渡邉 真人さんよりjQuery MobileではじめるWebアプリ開発をテーマにお話がありました。 渡邉さんと言えば、オライリージャパンの『jQuery Mobile』の監訳者の一人としても活躍中です。今回のプレゼンテーションも全てjQuery Mobileで作成されていました。 そもそもjQuery Mobileはタッチデバイス向けのUIフレームワークということもあり、今回の資料も講演の最初から公開されていました。ネットワーク環境さえあれば、会場にいらした方々が(PCであってもスマートフォンであっても)手元で資料が共有できる形で進められるという点でとても新鮮でありました。 内容に関しては、jQuery Mobileの特徴、提供されるプラットフォーム、バ

    テックヒルズ2012 #2「ネイティブアプリ」vs「Webアプリ」実施レポート | gihyo.jp
  • 第6回 コンテンツベースのレコメンドシステムのHadoop実装[前編] | gihyo.jp

    今回から、コンテンツベースのレコメンドのHadoopによる実装を紹介します。 おさらい:協調フィルタリング 第3回~第5回に紹介した協調フィルタリングでは、入力データに履歴、アイテム間の類似性を計算するためにコサイン関数を使いました。その結果、アイテムごとに類似性の高いアイテム、すなわち、各アイテムを評価(購入、ダウンロード、チェック、クリックなど)したユーザが他に評価したアイテム集合を見つけることができました。 このアイテム集合が、「⁠このアイテムを評価している人はこのアイテムも評価しています」というタイプのレコメンドの基情報で、アイテムベースのレコメンドになります。同じ履歴およびコサイン関数を使って、ユーザ間の類似性も計算できます。ここで前提としているのは、「⁠ターゲットユーザ(レコメンドの対象ユーザ)と同じようなアイテムを評価するユーザは、ターゲットユーザと嗜好も似ている。したがっ

    第6回 コンテンツベースのレコメンドシステムのHadoop実装[前編] | gihyo.jp
  • 第14回 ベイズ線形回帰を実装してみよう | gihyo.jp

    前回までに紹介したベイズ線形回帰を実装してみます。 ベイジアンという言葉に難しい印象を持たれている方もいるかもしれませんが、実装が劇的に難しくなったりはしませんから、ご安心ください。 ベイジアンに難しいところがあるとすれば、増えたパラメータをどう決めるかという点と、確率分布として求まる解をどう扱うかという点でしょうか。今回はそのあたりも含めて、見ていくことにしましょう。 環境はこれまでと同じPython&numpy&matplotlibを使用します。インストールなどがまだの方は連載第6回を参照ください。 普通の線形回帰のコードを復習 それでは、ベイズ線形回帰を解くコードを実際に書いていくのですが、第11回で書いた普通の線形回帰のコードに必要な部分を書き足す形で進めましょう。ただし、特徴関数φにはガウス基底を使うことにします。 ガウス基底は、次のような正規分布と同じ釣り鐘型をした関数です。た

    第14回 ベイズ線形回帰を実装してみよう | gihyo.jp
  • 第10回 NHN Japan執行役員/CTO 池邉智洋氏に訊く(後編)―個人も組織も、”なんでもあり”の多様性の中で強くなる | gihyo.jp

    Webクリエイティブ職の学び場研究 第10回NHN Japan執行役員/CTO 池邉智洋氏に訊く(後編)―個人も組織も、”なんでもあり”の多様性の中で強くなる 前回に引き続き、NHN Japan 執行役員/CTOの池邉智洋さんにお話を伺います。今回は、中長期的視点でみたWebクリエイティブ職の育成、3社経営統合にまつわる組織の育み方、エンジニア職のキャリアパスなどを掘り下げます。 NHN Japan 執行役員/CTOの池邉智洋氏 他社やヘッドハンターからちゃんと評価される人にしたい では早速ですが、中長期目線で自社のWebクリエイティブ職をこう育てていこう、といったお考えはあるのでしょうか。 池邉さん「ぶっちゃけ、この業界は人の入れ替わりも早いですし、極端な話ずっといるかどうかわからないと思っていて、あまりうちの会社だけに特化したスキルとか処世術を身につけても意味がないと考えています。他社

    第10回 NHN Japan執行役員/CTO 池邉智洋氏に訊く(後編)―個人も組織も、”なんでもあり”の多様性の中で強くなる | gihyo.jp
  • 第29回 JavaオブジェクトとJSONオブジェクトの変換に便利な「Google Gson」 | gihyo.jp

    型→JSONの変換 前回は2回にわたってJavaプログラムでJSONデータを扱うための「Jackson Java JSON-processor」を紹介しました。今回はJSONデータを扱うもう1つのJavaライブラリ「Google Gson」を紹介します。Gsonの特徴は、JavaオブジェクトとJSONオブジェクトの変換を、シンプルなコードで行うことができる点です。字句解析を行えるような低レベルのAPIも備えていますが、それよりもオブジェクト変換の簡潔さに注力しているあたりがJacksonとの大きな違いと言えます。 Gsonはこのページよりダウンロードすることができます。「⁠google-gson-2.1-release.zip 」をダウンロードして解凍し、中のjarファイルをクラスパスに含めて使用します。 Gsonを使う場合に重要なのは、GsonクラスのtoJson()メソッドとfro

    第29回 JavaオブジェクトとJSONオブジェクトの変換に便利な「Google Gson」 | gihyo.jp
  • 第12回 Androidに見るOSアップデートの難しさ | gihyo.jp

    GALAXY SとGALAXY Tab 2011年12月22日に、日ではNTTドコモが販売していた「GALAXY S」と「GALAXY Tab」を、最新OSのAndroid 4.0に対応させないと開発元のSamsungが発表した。メモリ容量の不足を理由にしているが、ユーザの間には不満の声が高まっている。 Androidに関して言えば、これと似たような問題は以前にもあり[1]⁠、目新しいことではない。ソフトウェアの進化の早さのために、せっかく手に入れたハードウェアがすぐに陳腐化してしまうのである。 Androidのメジャーアップデート Androidのメジャーアップデートがリリースされた時期は次のとおりである。 2.0/2.1(Eclair⁠)⁠─2009/10 2.2(Froyo⁠)⁠─2010/5 2.3(Gingerbread⁠)⁠─2010/12 3(Honeycomb)※─201

    第12回 Androidに見るOSアップデートの難しさ | gihyo.jp
  • 第5回 ゼロから始める継続的なAndroidアプリケーション開発のしくみ | gihyo.jp

    はじめに 近年、iOSやAndroid向けのアプリケーション開発が盛んに行われ、これまでWebが中心であったソーシャルアプリ開発も、徐々にブラウザの枠を超えたところに手を伸ばしつつあります。ソーシャルアプリ開発のプロジェクトは、多くの場合、スモールスタートで始まりますが、開発を続けていくにつれて、コードが増え、端末が増え、人が増え、気がつけば、機能を実現するための実装と関係ない部分でのタスクが膨れあがっていきます。そんなコストを技術的に解決するためのしくみがあれば、もっと質的な部分に時間を割くことができるはずです。 今回は、CI(継続的インテグレーション)ツールのJenkinsと内製のQA向けダウンロードツール、コードレビューツールのGerritを組み合わせた、継続的な開発をサポートするしくみ作りについて、ミクシィでのAndroidアプリケーション開発の事例を取り上げてご紹介します。 1

    第5回 ゼロから始める継続的なAndroidアプリケーション開発のしくみ | gihyo.jp
  • 第28回 「Jackson Java JSON-processor」でJSONデータの読み書きを行う | gihyo.jp

    ツリーモデルAPIでJSONデータを読み込む 前回は「Jackson Java JSON-processor」(⁠以下、Jackson)のストリーミングAPIを利用して、JavaプログラムからJSON形式のデータにアクセスする方法を解説しました。今回はそれに引き続き、ツリーモデルのAPIを使う方法を紹介します。JacksonのツリーモデルAPIは、XMLのDOM APIに相当するもので、一度メモリ上に全てのデータを読み込んでオブジェクトのツリーを構築するため、先頭から順番にデータを読み込むストリーミングAPIに比べて柔軟なデータアクセスが可能です。 ツリーモデルの核になるのは、ブジェクトツリーのノードを表すJsonNodeクラスです。JsonNodeオブジェクトは、複数の子ノードと、それに紐付くフィールド名の情報を保持しています。子ノードを表すJsonNodeオブジェクトはget()メソッ

    第28回 「Jackson Java JSON-processor」でJSONデータの読み書きを行う | gihyo.jp
  • 「第5回 Jenkins勉強会」活動報告 | gihyo.jp

    はじめに 2月21日に楽天株式会社様の会場をお借りして、100名程度の参加者とともに第5回Jenkins勉強会を開催いたしました。稿では、イベントをレポートします。 今回の勉強会では、前半はいつものように有識者数名の発表を聴講し、後半はビアバッシュ形式で参加者皆さんと共に親睦を深めました。 なお、当日のUstreamをはじめ、各発表者の発表資料や参加者の感想ブログはwiki.jenkins-ci.orgにまとめられています。レポートの補足として参照ください。 DEV@cloudの実装~Jenkins-as-a-Serviceはどうやって動いているか~ 川口氏の今回の発表は、CloudBeesが提供しているJenkinsホスティングサービスDEV@cloudを構成する要素の紹介です。 EC2上で提供されているDEV@cloudでは、ProvidoreというJenkinsのスレーブをプー

    「第5回 Jenkins勉強会」活動報告 | gihyo.jp
  • 第13回 ベイズ線形回帰[後編] | gihyo.jp

    さて今回は、いよいよ確率版の線形回帰をベイズ化します。 まずはベイジアンとはどういう考え方だったのか、ベイズ化するとなにが嬉しいのか、そのあたりを簡単に復習するところからはじめましょう。 ベイジアンふたたび 例えば、「⁠コインを3回振ったら2回表が出た。だからこのコインの表の出る確率は2/3だ」と聞くとどのように感じますか? 「いや、それはたまたまでしょう」「⁠いくらなんでも結論が早すぎる」とかいった印象を受けるのではないでしょうか。その印象の正体は、試行回数が少なすぎてコインの確率はおおむね1/2だろうという事前知識(先入観)に反する結果を信用できない、というあたりでしょう。 これがもし「コインを300回振ったら200回表が出た。だからこのコインの表の出る確率は2/3だ」だったらどうでしょう。 こちらなら「ああ、それならそうかもしれない。変なコイン……」と思えるのではないでしょうか。試行

    第13回 ベイズ線形回帰[後編] | gihyo.jp
  • mixiエンジニアがおくるソーシャルアプリ開発実践講座:第3回 自動テストと継続的インテグレーションを既存プロジェクトへ導入しよう|gihyo.jp … 技術評論社

    はじめに はじめまして。(⁠株)ミクシィの加藤和良です。2008年度に入社し、2011年1月からはシステム技術部に所属しています。技術部は、日記やコミュニティといった特定のサービスに紐づかない、mixi全体を裏から支える部署です。「⁠支える」ための方法は、実際のサービスの一部として動作する共通基盤から、開発効率を上げるために社内で動作しているものまで、多岐にわたります。 mixiでは、ここ数年で自動テストの導入が急速に進みました。図1は、mixiのソースツリーにおけるコードと、そのテストコードの毎月1日のバイト数をグラフにしたものです。2008年の頭には少なかったテストが急速に増え、今年の5月にはコード量をも追い越しているのがわかります。 携帯電話向けmixiである「mixiモバイル」の開始が2004年、mixiニュースが2006年ですから、2008年当時のmixiも、それなりに大き

    mixiエンジニアがおくるソーシャルアプリ開発実践講座:第3回 自動テストと継続的インテグレーションを既存プロジェクトへ導入しよう|gihyo.jp … 技術評論社
  • 「第24回 HTML5とか勉強会」活動報告 | gihyo.jp

    2011年12月26日、ソフトバンクさんの堂をお借りし、24回目となる「HTML5とか勉強会」を開催しました。今回のテーマは「オムニバス⁠」⁠。2011年最後の勉強会ということでHTML5の総まとめと、2011年ブラウザに実装されたAPIについてやこのAPIを実際に使った話が講演されました。 稿では、今回のイベントについてレポートします。 FileとWebの関係をもっと知るBlob, FileそしてFile System API 最初のセッションは、Googleの安田絹子さんにFile/File System APIについて講演いただきました。 File APIというのはウェブ上でローカルファイルを扱うAPIです。そして、その延長線上にあるのがFile System APIです。ここでは、File API: Directories and SystemsをFile System API

    「第24回 HTML5とか勉強会」活動報告 | gihyo.jp
  • 第3回 レコメンドシステム-協調フィルタリングのHadoopへの実装[前編] | gihyo.jp

    今回はいよいよHadoopを用いたレコメンドシステムについて説明します。 今回のポイントは以下の通りです。 処理をMapReduceフレームワークへ変換することで、分散処理のメリットを享受 アウトプットからkeyについて着目し、処理ロジックを考える 簡単な処理でも数段階のMapReduce処理を踏む場合がある 前回までのおさらい 分散処理の基的な考え方は、大規模データあるいは処理する問題を小さく、かつ、互いに独立した単位に分割して並列に処理することで、各処理単位の出力を結合することで最終的な結果を得るというものです。Hadoopは数ある分散処理のフレームワークの実装のひとつで、システムレベルの詳細の多くを意識せず、処理ロジックに集中して設計できる特徴があります。 Hadoopで処理するため、前回紹介したユーザの映画評価の履歴をHDFSのディレクトリにコピーすると、HDFSは履歴を各ノード

    第3回 レコメンドシステム-協調フィルタリングのHadoopへの実装[前編] | gihyo.jp
  • 第12回 ベイズ線形回帰[前編] | gihyo.jp

    今回と次回でいよいよ「ベイズ線形回帰」を紹介します。だいぶ機械学習らしくなってきます。 「ベイズ線形回帰」とは、「⁠線形回帰」(⁠連載第8回、9回、11回)を「ベイジアン」(⁠第10回)の考え方のもとで解くお話です。 さて、復習を兼ねて必要な準備から入っていきましょう。 線形回帰を確率の問題に 「回帰」とは、一言で言えば「データ点から関数を求める方法」でした。 しかし、漠然と「関数を求める」と言われても何をしたらいいかわかりません。そこで「線形回帰」では、あらかじめベースとなる関数φi(x)(基底関数)を用意して、その線形和の範囲から一番適した関数を探すというアプローチをとります。 これなら係数wiを決めるだけで関数f(x)を求められますから、するべきことがわかりやすくなりました。 それでは、この係数はどのように決めたらよいでしょうか。もちろん一番いいwiになるようにしたいところですが、何

    第12回 ベイズ線形回帰[前編] | gihyo.jp
  • 第4回 図形のクリックを検出しよう─JavaScriptで外積の計算 | gihyo.jp

    以前gihyo.jpの特集で、Nゲージのエディタを取り上げたことがあります。このエディタでは、レールをドラッグ操作で動かせるようにしました。 レールの始点または終点から、x, y共に±3以内だったら端点と見なすことで、端点をドラッグすると変形になる処理が実現できます。これは簡単ですね。ifの条件で書くと ((sx - 4 < x)&&(x < sx + 4)&&(sy - 4 < y)&&(y < sy + 4)) のようになります。 では、レールの上をドラッグしたら移動になる、という処理はどう書けばよいでしょうか。レールは直線ですが、水平や垂直ではなく斜めにもなります。もちろん、1ドット幅を正確にクリックしないといけないのでは実用になりませんから、ある程度の幅を持たせる必要があります。高校で「点と直線の距離」を習った記憶がありますが、ルートが出てくるなど計算が複雑なため、たくさんの線があ

    第4回 図形のクリックを検出しよう─JavaScriptで外積の計算 | gihyo.jp
  • 第2回 mixi SDKでAndroidアプリを作ろう | gihyo.jp

    mixi API SDK for Androidの準備をする mixi SDK(Android)から各種APIを使うためには、事前にいくつかの手順を踏む必要があります。これについては前回も触れているため、iOS版とAndroid版で違う部分のみ説明します。 パッケージ署名のハッシュ値を設定する まずPartner Dashboard上[1]で「パッケージ署名のハッシュ値」という項目を設定します。パッケージ署名のハッシュ値とはAndroidマーケットに公開する際にapkファイルに署名する署名ファイルのハッシュ値です。mixiアプリとmixi Graph APIで設定する個所が異なります。 mixiアプリ mixiアプリの設定画面で、アプリ対応範囲にAndroid版をチェックした場合に表示される「スマートフォン(Androidアプリ版)に関する設定」の部分(図1) 図1 パッケージ署名のハッシ

    第2回 mixi SDKでAndroidアプリを作ろう | gihyo.jp