運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。
僕の仕事は「優秀なエンジニアを採用すること」 いまや月間4.9億PV、1,400万人のユーザを擁するレシピコミュニティーサイト『クックパッド』。同サービスを運営するクックパッド株式会社は、日本有数のテクノロジー・カンパニーとしても知られています。今回は、同社で技術部部長を務める井原正博さんを訪ね、お話を伺いました。 現在社員数は100名弱、そのうち35名ほどのエンジニアが在籍しています。その技術部門の部長を務める井原さんの役割は、 (クックパッドでいうところの)優秀なエンジニアを採用すること 優秀であるはずのエンジニアがきちんと成果を出している状態にすること の2点であると言います。 井原さんが「どういうものを作ろう」とか「ああいうことをやろう」といった指示を出すことはほぼないそう。そうしたことはスタッフ個々が当然自分の仕事としてやっている環境のようです。それも、井原さんが担うところの
はじめに 前回は、情報可視化の基本的な考え方について、HatenarMapsなどの実例を示しながら説明しました。第2回以降は、Java言語を使用して実際にプログラムを作成することで、情報可視化の実践例を示していきたいと思います。 目標 本連載では、はてなブックマークの人気エントリーのデータを可視化することを最終的な目標にします。可視化にあたっては、統計学的観点から「階層的クラスタリング」、視覚的観点から「ツリーマップ」の手法をそれぞれ用いることにします。 Java開発環境のセットアップ 手元にJavaの開発環境がなく、本連載のプログラムを試したい場合には、Sun Microsystemsが提供している統合開発環境、NetBeansの導入をおすすめします。 NetBeansはオールインワン型のIDEですので、インストールするだけで特別な設定の必要もなく、一通りの開発環境を整えることができ
こんにちは、太田です。今回はChrome拡張の開発時のノウハウとして、開発ツールの解説をお送りします。Google ChromeにはWebKit由来のWeb Inspectorというデバッグツールが搭載されています。以前にも少しだけ紹介しましたが、今回は具体的な使い方まで掘り下げて解説します。なお、今回のWeb Inspectorの解説はChrome拡張だけでなく、JavaScriptを使ったウェブアプリケーションの開発に一般的に役立つノウハウとなっています。 WebKitのWeb Inspector Chrome拡張の開発の必需品であるWeb Inspectorですが、こちらは元々WebKit(Safari)で開発されたもので、Google Chrome(Chromium)に搭載されているものはさらに機能が追加されています。FirefoxにはFirebugという定番ツールがありますが、そ
UNIXの基本的なコマンドの1つであるdiff。 これに実装されているアルゴリズムは実に興味深い世界が広がっています。 本稿では、筆者が開発した独自ライブラリ「dtl」をもとに「diffのしくみ」を解説します。 はじめに diffは2つのファイルやディレクトリの差分を取るのに使用するプログラムです。 ソフトウェア開発を行っている方であれば、SubversionやGitなどのバージョン管理システムを通して利用していることが多いかと思います。本稿ではそのdiffの動作原理について解説します。 差分の計算の際に重要な3つの要素 差分を計算するというのは次の3つを計算することに帰結します。 編集距離 2つの要素列の違いを数値化したもの LCS(Longest Common Subsequence) 2つの要素列の最長共通部分列 SES(Shortest Edit Script) ある要素列を別の要
はじめまして、株式会社はてなでアプリケーションエンジニアをしている倉井龍太郎(id:r_kurain)と申します。この連載では、今もっとも注目集めているスマートフォンアプリ開発環境であるTitanium Mobile(以下Titaniumと省略)を使ったiPhone及びAndroidアプリケーションの開発方法について解説していきます。 Titaniumとは TitaniumはAppceleratorが開発しているスマートフォンアプリ開発環境です。本来iPhone/iPod/iPad であればObjectice-Cを使用して、AndoridであればJavaを用いて作成するネイティブアプリケーションが、どちらの環境でもJavascriptのみで開発できるようになるものです。Titanuiumは無料で利用することができます。サポートを受けるにはAppceleratorの有料プランに入会する必要が
前回は、様々な方法で複製したリポジトリにおいて、それぞれ異なる作業成果を"hg commit"し、下図のような状態を構築するところまでを説明しました。 図1 成果の分散 今回は、これら複数の成果を、最終的な成果へと統合する「マージ」について説明します。 成果の集約 成果をマージするためには、マージ作業を行うリポジトリへと成果を集約する必要があります。 成果の集約には"hg pull"を使用します。前回の説明では「リポジトリの複製」に使用した"hg pull"ですが、厳密には「一方の保持していない成果を他方に伝播」する、リポジトリ間連携機能なのです。 myrepo2の成果をmyrepoに取り込む手順を以下に示します。 コマンド1 % cd myrepo % hg pull ../myrepo2 pulling from ../myrepo2 searching for changes add
JSONPの動作原理 前回はAjaxに存在するセキュリティモデルであるSame-Originポリシーを紹介し、そのSame-Originポリシーを迂回する方法とセキュリティについて見てきました。また、回避する方法の1つめとしてリバースProxyを用いた方法を紹介しました。リバースProxyを用いた方法ではセキュリティ的な問題点もありましたが、そもそもProxyサーバを用意しなければならないため、この方法は手軽に使うことはできませんでした。 そこで考え出されたのがJSONP(JavaScript Object Notation with Padding)という方法です。 それではまず簡単にJSONPについて説明します。 Ajaxで使われるXMLHttpRequestオブジェクトには前回説明したとおりSame-Originポリシーがありクロスドメインアクセスはできません。一方、SCRIPTタグ
こんにちは、株式会社ALBERTの太田です。Extensionsが有効になるベータ版のリリースが近づいてきました。そこで今回は、現時点(2009年11月23日)でのExtensionsの作り方をまとめてみます。 Extensionsの開発の下準備 まずは開発環境を整理します。といっても、基本的にHTML/CSS/JavaScriptで作成するので最低限エディタがあればなんとかなります。 ただ、実際に開発/テスト/リリースをする場合には、プロファイルの異なる複数のChromeを起動できると何かと便利です。そういった場合、起動オプションで--user-data-dirを指定することで同時起動ができます(User Data Directory - Custom-Location)。 プロファイル ディレクトリの指定 [パス省略]\chrome.exe --user-data-dir="C:\
こんにちは、ALBERTの太田です。今回からChrome4のリリースまでの間、Google Chrome Extensionsの詳細を追っていきたいと思います。なおタイトルの通り、この連載は先取り! Google Chrome Extensionsの続編となっています。 まず、重要なお知らせがあります。前回の特集で何度か使用していたToolstripsとMoleがベータリリースまでに削除されることが決まりました。その代わりとして、今回解説するBrowser Actionsが利用できるようになります(Important: Toolstrips being removed in favor of browser actions)。また、Browser Actionsに合わせて、第3回で解説したPage Actions APIの新バージョンが提案されています。こちらも詳細は追って解説します。
Rails Web アプリケーションをもっと速く こんなストーリーを考えてみます。 あなたは、Railsを学び、アプリケーションを作成し、サービスをインターネットに公開しました。しばらくすると、最初のユーザができます。あなたはとてもハッピーです。そうするうちにユーザが二人増え、十人になり、百人になりました。あなたはハッピーです、ユーザーもみんなハッピーです。 でも、ユーザが千人になり、一万人になり…。といった場合、何が起こるでしょうか? そこで起こるのはアプリケーションへの同時接続数増加によるサービス提供速度の低下です。ユーザ数が一万人を越えてしまうWebサーバに特有の問題は、C10K問題として知られています。 それでなくとも、残念ながらRailsは同様他種フレームワークと比べて、単位時間あたりの処理量が低いことで知られています。その理由は、RailsではRubyが遅くて、NativeTh
デベロッパーツールの機能が基準となっている面も少なからずありますが、間違いなくデベロッパーツール・Web インスペクタは開発者向けツールの中で最も多機能な開発者向けツールといえます。 ただし、FirefoxのFirebugについてはAdd-onと連携することで機能を追加できるため、総合的にはFirefoxに一日の長があります。なお、Firebug用のAdd-onはFirebug Extensions - FirebugWikiなどから見つけることができます。 デバッグ時の注意点・ノウハウ 起動オプションの指定 Chromeではオプション項目にない設定を起動オプションで指定するという方針を取っています。起動オプションで指定するオプションでは、試験的に導入されている機能を試したり、特定の機能を無効にしたりすることができます。 まず、アドレスバー(OmniBox)に about: とだけ入力して
はじめに あなたは「Ruby」と聞いて最初に何を思い浮かべますか? オブジェクト指向スクリプト言語であること、プログラミングの「楽しさ」を重視して設計された言語であること、最近新しいバージョンである1.9.1がリリースされたこと……。 Rubyにはいろいろな特徴がありますが、Rubyという単語からすぐに「Ruby on Rails」を思い出す方も多いのではないでしょうか。Ruby on Rails(以下Rails)は2004年に公開されたRuby用のWebアプリケーションフレームワークで、その生産性の高さから注目を浴び、Rubyの名前を広めることにも大きく貢献しました。 ですが、Java、PHP、Perl、Pythonなど、他の言語の世界ではいくつものフレームワークがしのぎを削っているのに対し、Rubyの世界においてはRailsの完成度の高さから、長らくライバル不在の状況が続いてきました。
例:リンクの表示 GET /users/1/links/6.xml :member CRUD以外、すなわち作成、参照、更新、削除以外の処理を行いたい場合、map.resoucesで、:memberオプションを指定します。:memberオプションには、アクション名とHTTP MethodのHashを指定します。 例として、リンクを非表示に設定するケースを考えます。リンクの非表示を、hideカスタムアクションへのPUT Methodで表現すると決定した場合、以下のように設定します。 :memberオプション map.resouces :link, :member => {:hide => :put} URI例 PUT /links/1/hide なお、このURIにはhideという「動詞」が入っているため、RESTの統一インターフェースの原則的にはあまり望ましくありません。 miniciousの
今回は、WebSocket APIについて解説と、WebSocketを使ったチャットアプリケーションのクライアント側の実装を行ないます。 WebSocketオブジェクト ブラウザのJavaScriptからWebSocketを利用するために、WebSocket APIがW3Cで策定中です。執筆時点のブラウザ(Safari及びChrome)は、最新のドラフト「Editor's Draft 27 July 2010」に対応していません。ここでは、現行のブラウザが対応しているWebSocketの仕様を解説した後、最新の仕様について説明します。 インスタンス化 WebSocketはインスタンス時、第一引数に「ws://」または「wss://」で始まる文字列で接続先を指定します。また、省略可能な第二引数にはサブプロトコルを指定できます。サブプロトコルについては後述します。 new WebSocket(
Pythonハッカソンは、Djangoハッカソン(8回まで開催)から引き継がれる形で開催されている勉強会です。7月10日、オラクル青山センターにて、4回目の勉強会「Python Hack-a-thon 2010.07」が開催されました。 Pythonと銘打っていますが、Pythonに限定しない話題も数多く登場します。今回も、Ocaml, C++(?), PHPなどについてのプレゼンもありました。初心者から上級者まで評判が良く、リピート率も高いイベントです。とにかく人気で、とくにここ数回は100人以上の規模での募集にも関わらず、申し込み後すぐにいっぱいになってしまう盛況ぶりです。 Pythonハッカソンは、ハッカソン、ハンズオン、プレゼンテーションの3つのパートで構成されています。本稿では、これらのパートごとに、今回の勉強会についてレポートします。 Note: もともとは、Pythonのウェ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く