運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。
![継続は力なり―大器晩成エンジニアを目指して 記事一覧 | gihyo.jp](https://cdn-ak-scissors.b.st-hatena.com/image/square/7241c583676d54fc052c4388a6edd25e4c7f280b/height=288;version=1;width=512/https%3A%2F%2Fgihyo.jp%2Fassets%2Fimages%2Fgihyojp-ogp.png)
先を歩むエンジニアへのインタビューを通してエンジニアのキャリアについて考える本連載、今回は古くからPerlコミュニティで活躍し、最近ではWebテクノロジ情報発信のポッドキャスト「Rebuild」が話題の宮川達彦さんにお話を伺いました。宮川さんは、筆者のクックパッドの同僚でもあります。 [撮影:平野正樹] プログラミングに興味を持ったきっかけ ──最初にプログラミングやエンジニアリングに興味を持ったのはいつでしょうか? 宮川:父親がプログラマだったので、コンピュータは小さいころから家にあったんですけど、プログラミングはしておらず、純粋にPCユーザとしてゲームとかで遊んでいました。プログラミングのきっかけは、東京大学に通い始めて、趣味でホームページや掲示板を作っておもしろいと思ったことですね。そのあと3年次に、理学部情報科学科を選択し学びました。それと前後して、大学の友達から「オライリー・ジ
2014年9月25日紙版発売 2014年9月25日電子版発売 山田浩之,末永匡 著 A5判/224ページ 定価2,948円(本体2,680円+税10%) ISBN 978-4-7741-6753-4 ただいま弊社在庫はございません。 Amazon 楽天ブックス ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle 楽天kobo honto 本書のサポートページサンプルファイルのダウンロードや正誤表など この本の概要 まいにち使っている検索エンジンがどうやって動いているか,知っていますか? 本書では,小さな検索エンジンを作りながら,ソースコードレベルで検索エンジンのしくみを解説。 Yahoo!Japanの検索エンジン開発チームを経て2008年度上期未踏IT人材発掘・育成事業において高性能分散型検索エンジンの開発によりスーパークリエータに認定さ
Webエンジニアのキャリアにはどんな道があるのか、先頭を走ってるいろいろなエンジニアに話を伺うインタビュー連載。第1回はグリーCTOの藤本さんです。 [撮影:平野正樹] CTOの役割 ──私舘野も最近CTO[1]になって、長年CTOをされている藤本さんが、CTOに対してどんな考えをお持ちなのかを聞かせていただければと思い、本日はお伺いしました。突然ですが、ぶっちゃけCTOってエンジニアなのでしょうか? 藤本:純粋な意味ではエンジニアではないですね。もちろん技術の知識は必要で、エンジニアリングも業務で兼ねたりしますけど、それだけじゃないですよね。 ──大きな技術ビジョンを描いて、それに対して貢献したりとかでしょうか? 藤本:そうですね。会社がある程度大きくなると、そこに経営視点で貢献したり、技術と事業を結び付けたりなど、全体の舵取りをする必要があります。そういう意味ではいちエンジニアでは
前回は、Linuxで使えるコンテナの実装を説明したあと、LXCを使って簡単にコンテナの作成、起動、停止が行えるところを紹介しました。今回は、そのコンテナの仕組みを簡単に説明し、その仕組みからくるメリット・デメリットを紹介した後、コンテナはカーネルのどのような仕組みを使って動作しているのかを簡単に説明していきたいと思います。 コンテナの仕組み コンテナをまだ使ったことがない方でも、VMwareやVirtualBox、KVMといった仮想マシン(VM)を使ったことはあるという方は多いのではないでしょうか。まずはVMとの比較をしながら、コンテナの仕組みを説明してみましょう。 図1 VMとコンテナの仕組み(1)仮想マシン VMでは図1のように、コンピュータの上で動くOSやVMを実現するためのハイパーバイザの上で、実際のハードウェアをエミュレートするVMが動きます。つまり実際の物理的なコンピュータと同
こんにちは、太田です。前々回、前回とJavaScriptにおける継承について学習しました。今回はそれに深く関わるthisについて学んでいきます。 JavaScriptのthisはややクセのある動作をするように思えるかもしれませんが、仕組みをしっかり把握すれば実に簡単です。特に重要なのは次の2点です。 thisが何を指すかは関数の呼び出し方で決定する thisは関数スコープに存在する特殊な変数である インスタンスとしてのthis では、まずはコンストラクタ内でのインスタンスとしてのthisを見てみましょう。 コンストラクタとthis function A(name){ this.name = name; } A.prototype.getThis=function(){ return this; }; var a = new A('aaa'); console.log(a); console
なぜアルゴリズムを学ぶのか GCによる停止時間が長くなり、アプリケーションの処理時間が短くなると、業務に使える時間が短くなってしまいます。その問題を解決するために、GCをチューニングすることで、アプリケーションの停止時間を短くすることが考えられます。 その際大事なのは、GCのアルゴルズムを把握しておくことです。 GCのチューニングを行うときは、GCで行われている処理の内、どの処理に時間がかかっているかをモニタリング⇒分析⇒チューニングする、という流れになります。しかし、GCのアルゴリズムを知らないと、モニタリング結果を見てもどこに問題があるかがわからず、分析やチューニングを行うことができません。 今回は、以下の4つのアルゴリズムをご紹介します。 マーク&スイープGC コンパクション コピーGC 世代別GC GCのアルゴリズムはJVMの実装によって異なりますが、多くの場合、上記4つのアルゴリ
前回までに、分類問題のモデルの一つ「パーセプトロン」を紹介して、その実装を行いました。 パーセプトロンはとてもシンプルでわかりやすいモデルでしたが、「線形分離可能」なデータにしか適用できないという難点がありましたね。 今回は線形分離できないデータにも適用できる分類モデルとして、「ロジスティック回帰」を紹介します。 予測の信頼度 分類器を使って、実際の問題を解くときのことを考えてみます。例えば「メールのスパムフィルタ」などが想像しやすいでしょう。 一般的にスパムフィルタでは、データであるメールを「スパム(迷惑メール)」と「スパムではない(通常のメール)」のどちらかに分類します。そこで、ちょうどパーセプトロンのような2値分類器を使えば無事解決……とは、なかなかいきません。 スパムフィルタを通り抜けてしまった迷惑メールを一つ一つ消す、反対に必要なメールが間違ってスパムと判定されてしま
原因は大きく分けて3つあります。 1つめは、リソース不足です。たとえば、CPUのクロックやコアが足りず、処理の完了待ちであることなどが原因として考えられます。 図1 CPUのリソース不足の例 2つめは、M/W(ミドルウェア)からアプリケーションに提供されるスレッドや、コネクションのプールにあるリソースが不足していて、その提供待ち(無応答)になっている可能性です。 M/Wでプールしているリソースが不足した状況は、会社の書籍棚に1冊しかない本を社員で順番待ちしている状況に似ています。1冊しかないため、今借りている人が返すまでは他の人は借りれません。 図2 M/Wでプールされたリソースが不足しているケース 1つめのケースで問題がGCにある場合、GCに割り当てるリソースのバランスが悪いことが原因です。たとえば、特定のプロセスに対するCPUリソースの割り当てが大きい場合、GCが起きると、CPUリソー
みなさん、次のようなことができたらいいと思ったことはありませんか? 「顧客ごとに、適したタイミングと内容で、DMを送信できたら……」 「CGM系サイトへの誹謗中傷なんかのスパム投稿を自動識別できたら……」 「サーバの負荷が高まるタイミングを事前に予測できたら……」 一見するとこれらは実現していることがまったく異なりますが、じつはある共通点があります。それは「データを分析し、その結果を活用している」という点です。 Data is Kingの考えから得られるメリット かつてAmazonに在籍していたRonny Kohaviは「Data is King at Amazon」と言い、データの重要性を説きました。事実、Amazonはユーザの購買履歴から商品のレコメンデーションを行い、ユーザのサイト内の遷移履歴やクリック率からサイト構造の改善を行うなど、データを徹底的に活用していることで知られています
シリコンバレーの投資家からも一目置かれるTreasure Dataの成長を支えているその技術力と経営理念について、Treasure DataのCTOである太田一樹氏が基調講演で語ったその内容をレポートします。 Feature Creepではなく“ナタ”を作る 太田氏をはじめとするTreasure Dataの創業メンバーはいずれもHadoopやmemcached、MongoDBなど、現在のビッグデータブームを支えるオープンソース技術の開発に学生時代から関わっていました。これらのオープンソースプロダクト、とくにHadoopに触れる経験が長かったことが、Treasure Data設立の大きなきっかけになっています。 「Hadoopの登場はこれまで使いづらいだけの存在だった分散システムの世界を大きく変えた。一方で、ユーザ企業がHadoopをデプロイし、運用をはじめても、結局はメンテナンスが大変にな
あのWebサービスもJVMを利用している 「Javaは大規模なエンタープライズシステムにしか使われない」 それが常識だと思っていませんか? たしかに、これまでJava Virtual Machine(JVM)は、他の言語を実行すると遅く、Javaのプログラムを実行する環境にすぎないものでした。ところが、Java 7から実装されたInvokeDynamicにより、JVM上で、RubyやPHPなどさまざまなコンピュータ言語で記述されたプログラムをより高速に実行できるようになりました。 これにより、今までエンタープライズでJava言語で記述されたプログラムを実行するだけの環境であったJVMが、汎用的な実行環境になったと言えます。また、これまでJavaの実行環境として使用されていたノウハウが、他の言語で記述されたプログラムを実行する際にも利用できます。 最近では、TwitterがJVMをアプリケー
RDBMSはオワコン? 「右を向いても左を向いても“ビッグデータ”というキーワードが闊歩する時代に、いまさらRDBMSの話題?」 本連載のタイトルを見てそう思われたかもしれません。 「ディスクベースのRDBMSはオワコン、これからは○○(お好きなアーキテクチャを入れてください)の時代だ!」 とおっしゃる方もいるかと思います。 しかし、むしろ多くの企業がビッグデータに注目しているおかげで、RDBMS側でも大規模データを取り扱うニーズが増えています。 大規模データを取り扱う時にボトルネックとなる5つのポイント 数百ギガバイトといったレベルのRDBMSであれば、現場のエンジニアの方にとってはあたりまえの世界でしょう。しかし、テラバイトを大きく超えたデータを扱う場合には、ボトルネックの傾向が変化するのはご存じでしょうか。 次の図は、RDBMSにまつわるボトルネックを示したものです。 図1 大規
今回はいよいよHadoopを用いたレコメンドシステムについて説明します。 今回のポイントは以下の通りです。 処理をMapReduceフレームワークへ変換することで、分散処理のメリットを享受 アウトプットからkeyについて着目し、処理ロジックを考える 簡単な処理でも数段階のMapReduce処理を踏む場合がある 前回までのおさらい 分散処理の基本的な考え方は、大規模データあるいは処理する問題を小さく、かつ、互いに独立した単位に分割して並列に処理することで、各処理単位の出力を結合することで最終的な結果を得るというものです。Hadoopは数ある分散処理のフレームワークの実装のひとつで、システムレベルの詳細の多くを意識せず、処理ロジックに集中して設計できる特徴があります。 Hadoopで処理するため、前回紹介したユーザの映画評価の履歴をHDFSのディレクトリにコピーすると、HDFSは履歴を各ノード
Webサービスつくってるけど何か質問ある?―「ボケて」のゆーすけべーと「nanapi」のけんすうが答えました!(前編) 秋葉原の書泉ブックタワー9Fのイベントスペースにて、11月30日(金)19時より和田裕介さん著『Webサービスのつくり方 ――「新しい」を生み出すための33のエッセイ』出版記念イベント「Webサービスつくってるけど何か質問ある?」が開催されました。この記事ではその内容についてレポートします。開始時刻になっても和田さんが現れないハプニングはありましたが、イベント開始の数分後に和田さんも会場に姿を現し、その後はつつがなく進行していきました。 知り合ったきっかけは1981年生まれの会 イベントには、『Webサービスのつくり方 ――「新しい」を生み出すための33のエッセイ 』著者であり「君のラジオ」や「ボケて」の開発者としても知られるエンジニアの「ゆーすけべー」こと和田裕介さん
当日の講演資料と動画を公開です。 動画はニコニコ動画を利用して配信しています。ニコニコ動画のアカウントをお持ちでない方でも,gihyo.jp上で動画を再生できます(コメントの書き込みはできません)。 動画の最後でニコスクリプトを使ったアンケートを行っていますので,ニコニコ動画のアカウントをお持ちの方はご協力いただければ幸いです。動画をクリックすることでニコニコ動画の該当ページへアクセスすることができます(ニコニコ動画のマイリストはこちら)。 今回の動画公開にあたって,gihyo.jp用に新たなニコニコ動画プレーヤーを作っていただきました。この場を借りてニコニコ動画の方にお礼を申し上げます。 JavaScript Tips & Technique IT戦士amachangが最近のJavaScriptのテクニックやTipsについてご紹介します。
あけましておめでとうございます。一昨年、昨年に引き続き、今年も昨年のJavaScriptを振り返りつつ、JavaScriptの近い未来についてちょっとだけお話させて頂きます。 それでは早速、昨年の予想を振り返りつつ、最近までのJavaScript界隈の動きを振り返ってみましょう。 2011年のJavaScript界隈でのニュース 昨年の記事で私は2011年はウェブアプリの普及に向けて、JavaScriptの開発環境とテスト環境がキーになると書きました。まずはこの2つの視点から見てみましょう。 JavaScriptの開発環境 2011年のJavaScriptの開発環境に関する大きなニュースといえば、Ruby on Railsの3.1にCoffeeScriptがデフォルトで採用されたという一件があります。Railsは非常に人気の高いウェブアプリケーションフレームワークで、多くのフレームワークに
はじめに 今回から9回に渡り、Hadoopを使ったレコメンドシステムの実装について紹介させていただくことになりました。 レコメンドシステムを構築した方は少ないと思いますが、レコメンドのサービスに触れている方は多いと思います。今回の連載で、読者の皆様にレコメンドシステムの可能性とその実装の面白さをお伝えできればと思います。よろしくお願い申し上げます。 連載の予定は次の通りです。 レコメンドシステムと集合知(今回) レコメンドシステムの実装と課題 協調フィルタリング(前・後編) コンテンツベースレコメンド(前・後編) 今回の記事のポイントは以下の通りです。 レコメンドシステムの目的は気付きと驚きを与えること 理想のレコメンドはソムリエのお薦め レコメンドシステムに必要なのは嗜好と専門性 では、早速はじめましょう。 レコメンドシステムとは? レコメンドシステムは情報フィルタリングの一種で、大量の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く