タグ

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

  • 第9回 【Trema編】テストファーストでアジャイルに | gihyo.jp

    はじめに 初期ファイナル・ファンタジーの伝説的プログラマ、ナーシャ・ジベリの「早撃ち」エピソードを知っていますか? 彼はヒーローのようにさっそうと現れ、どんなプログラムでも電光石火で書いてしまいます。「⁠見てくれの悪さは気にしねえ。誰よりも早くやってやるぜ⁠」⁠。やがていくつかの伝説を残し、彼もプロジェクトを去るときがやってきました。残った同僚たちは困りました。彼の超絶プログラムは彼にしか理解できず、バグがあっても修正できないのです。それに、変更しようとすると動かなくなってしまいます。「⁠ナーシャ、カムバック!」でも彼はもう戻ってきません……。 こうした悲劇を防ぐ方法の1つがソフトウェアテストです。OpenFlowコントローラのように動作シーケンスが複雑なソフトウェアが壊れていないことを確認するためには、ソフトウェアにより自動化されたテストが有効です。それに、きちんとしたテスト一式があれば

    第9回 【Trema編】テストファーストでアジャイルに | gihyo.jp
  • 第25回 MongoDB最前線! 効果的なシャーディングとバックアップ | gihyo.jp

    「MongoDB」は、スキーマレスであることやスケールアウトが容易なこと、さらにレプリケーションのしくみが用意されているといった特徴から急速に人気を集めている、オープンソースのドキュメント指向データベースです。第21回で、MongoDBの基的なしくみや開発時における注意点などをサイバーエージェント技術者に解説していただきました。今回は後編ということで、運用時におけるポイントについて伺っていきます。 Ameba PicoやピグライフでMongoDBを実運用 サイバーエージェントにおいて、MongoDBはすでにいくつかのプロジェクトで活用されていますが、その1つにアメリカ向けのアメーバピグであるAmeba Picoが挙げられます。松下雅和氏は2011年1月に入社し、このAmeba Picoの運用にアサインされたことでMongoDBを使うことになったと話します。 「前職ではMongoDBを使

    moccos_info
    moccos_info 2012/01/05
    主にシャーディング周り。ヘテロなクラスタ上でのバランシングには対応していなかったり、偏ったときに人力を加えたり…
  • 2012フラッシュストレージ新時代 | gihyo.jp

    皆様、新年あけましておめでとうございます。 gihyo.jp恒例の新年企画「今年の○○はどうなる?」として記事を書く機会をいただきました。お題は「フラッシュメモリ」ということで、その中でも、ここ数年関心が高いコンピュータ用フラッシュメモリの方向性についてご紹介します。 ところで……コイツ誰だ?と思われている方も多いと思います。「⁠エンジニアなら知っておきたい仮想マシンの仕組み」……とご説明するとおわかりの方もいらっしゃるかもしれません。2011年6月より、フュージョンアイオー株式会社のセールスエンジニアとして、エンタープライズクラスのNANDフラッシュストレージのプリセールスに従事しております。 というわけで、ストレージ業界に足を突っ込んでただ7ヵ月たらずなのですが……、私が見ているNANDフラッシュストレージの最前線についてお話したいと思います。 今回のテーマ PCI Expressネイ

    2012フラッシュストレージ新時代 | gihyo.jp
  • 第4回 IPv6では、全てのアドレスに逆引きが設定できるわけではない─JPRS 藤原和典氏に聞く | gihyo.jp

    連載第4回となる今回は、JPRSの藤原和典氏にお話を伺いました。 藤原氏は、JPRS入社前の1997年ごろからqmailのIPv6対応パッチの作成・公開など、10年以上IPv6に関するさまざまなことをされています。 JPRS入社後にIPv6関係でかかわった仕事として、JP DNSIPv6アドレスをいくつ設定できるかの技術的検討や、RootにTLDのIPv6 DNSサーバを登録できるようにするときのIANAのprocedureのReviewなどがあげられるそうです。 今回は、IPv6 Operations forumで藤原氏が発表されていたIPv6における逆引き設定での課題や、その他IPv6DNSに関して注意すべきことを中心にお話を伺いました。 「IPv6対応レジストラかどうか」が重要 ――これからサーバを構築しようとしている人がIPv6対応するときに、DNSに関連して気をつけるべきこと

    第4回 IPv6では、全てのアドレスに逆引きが設定できるわけではない─JPRS 藤原和典氏に聞く | gihyo.jp
  • 匿名による告発「MongoDBは使ってはいけない」 | gihyo.jp

    「PASTEBIN」というコンソールの出力やエラーログ、ソースコードなどを張り付けて共有するWebサイトがあり、そこに投稿された内容が議論を巻き起こしました。「⁠Don't use MongoDB」というタイトルが付けられた文章には、ヘビーにMongoDBを利用しているユーザからの辛辣(しんらつ)な批判が綴(つづ)られていました。 告発者はプロジェクトにて数千万件ものユーザ管理にMongoDBを利用しており、これまで長い間10gen社(MongoDBの開発元)から最高レベルの)有償サポートを受けていたため黙っていたが、少しでも多くの人に警鐘を鳴らすべく立ち上がったそうです。MongoDBの扱いやすさやスキーマフリーなモデル、豊富な実績などに一定の評価をしつつも、大規模な環境で実際に動かさずに判断するのは時に重大な問題となり、MongoDBにはそれが向いていないと言い切っています。 具体的に

    匿名による告発「MongoDBは使ってはいけない」 | gihyo.jp
  • 第21回 MongoDB最前線!実戦投入の光と影と開発ノウハウ | gihyo.jp

    データストアの新たなカタチとしてNoSQLがブームになっていますが、その中で異彩を放っているのがドキュメント指向データベースである「MongoDB」です。サイバーエージェントでは、このMongoDBを比較的早い段階から実サービスで活用しています。そこで今回はMongoDBの使いどころや利用時の注意点について、サイバーエージェントの3人の技術者にお話を伺いました。 分散処理のしくみを最初から備えるMongoDB リレーショナルデータベース(以下RDB)ほど煩雑ではなく、分散KVS(Key-Value Store)ほどシンプル過ぎない第三のデータストアの1つとして、ドキュメント指向型データベースである「MongoDB」が挙げられます。GNU AGPLv3を採用したオープンソースソフトウェアであり、パフォーマンスが高くスケーラビリティにも優れているという特徴があります。また、JSON(JavaS

    第21回 MongoDB最前線!実戦投入の光と影と開発ノウハウ | gihyo.jp
  • 「第21回 HTML5とか勉強会」活動報告 | gihyo.jp

    猛暑と節電の夏を乗り越え、ようやく涼しくなってきました。2011年度もいよいよ後半に突入です。そんな中、HTML5とか勉強会も、前回の20回記念スペシャルイベントの余韻が冷めやらぬ中、9月27日に定例通り開催しました。 21回目となる今回は、現在のHTML5で最もホットな分野の、スマートフォンによるゲームアプリ開発にフォーカスをあて、様々な講演をしていただきました。HTML5というと、「⁠いつから使えるの?」という声を各所から聞かれますが、ことスマフォゲームの世界では、すでに当たり前に使われている技術であり、take offしているといって過言ではありません。今回の講演で紹介いただいた数々のプラクティスは、ゲーム業界に身をおかずとも、HTML5に関心を持つ開発者や企画者には必聴のものでした。稿では、その内容についてレポートします。 今回の会場は、サイバーエージェントさんの会議室をお借りし

    「第21回 HTML5とか勉強会」活動報告 | gihyo.jp
  • 第3回 ネットワーク業界の地殻変動、そして次世代のクラウドへ | gihyo.jp

    はじめに OpenFlowはネットワークの動作をプログラムにより制御できる技術です。今回はOpenFlowが業界に与えるインパクトや、クラウドへのOpenFlow の適用例について説明します。 OpenFlowが業界に与えるインパクト OpenFlowが業界に与えるインパクトを説明するため、まずは従来のスイッチとOpenFlowスイッチの違いを説明します。 従来のスイッチは、1台のスイッチの中にパケット伝送機能、パケット制御機能、設定機能が実装されています(図1⁠)⁠。一方、OpenFlowではパケット制御機能と設定機能がスイッチから分離されOpenFlowコントローラに集約されるため、複数のスイッチの一元管理が可能になります(図2⁠)⁠。 図1 従来のスイッチのスタック構成 図2 OpenFlowのスタック構成 OpenFlowの世界では、OpenFlowのスイッチの動作やスイッチとコン

    第3回 ネットワーク業界の地殻変動、そして次世代のクラウドへ | gihyo.jp
  • Perl Hackers Hub:第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(2)|gihyo.jp … 技術評論社

    大量にあるサーバへのアクセスを効率的に扱う Mobage APIでは、接続するDBサーバやmemcachedサーバなどが大量にあります。サーバが増えても、アプリケーションの変更は最低限にしたいものです。ここでは、複数のサーバへのアクセスを簡単に記述する方法を紹介します。 DBへのアクセスを隠蔽する DBは一般的な、マスタ/スレーブ構成を採用しています。INSERT/UPDATE/DELETEのような更新系のクエリはマスタへ、SELECTなどの参照系のクエリはスレーブへいくようにしています。また、Sharding[11]をしているDBの系統もあります。 このように大量にあるDBへのアクセスを簡単に行うために、Mobage APIではDeNAの有澤高介さんが開発したDBIx::DBHResolver(現在のメンテナは同じくDeNAの山口徹さん)を利用してDBへのアクセス情報を隠蔽(いんぺい)し

    Perl Hackers Hub:第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(2)|gihyo.jp … 技術評論社
  • 第1回 サブクエリ・パラノイア~副問い合わせ乱用による性能劣化を治療せよ! | gihyo.jp

    図1 テーブルのレイアウト 図2 リスト1の実行結果 cust_id | seq | price --------+-----+------- A | 1 | 500 B | 5 | 100 C | 10 | 600 D | 3 | 2000 リスト1 サブクエリ・パラノイア 患者1号 SELECT R1.cust_id, R1.seq, R1.price FROMReceiptsR1 (※) INNER JOIN (SELECT cust_id, MIN(seq) AS min_seq FROMReceipts ※ GROUP BY cust_id) R2 ON R1.cust_id = R2.cust_id AND R1.seq = R2.min_seq; ※ 同一テーブルを結合する自己結合 さてワイリー、お前ならどうする。 ええっ、ちょっと待ってください。整理します。このReceip

    第1回 サブクエリ・パラノイア~副問い合わせ乱用による性能劣化を治療せよ! | gihyo.jp
  • 第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはDeNAの嶋田裕二さんで、テーマは「高速なWeb APIの実装とテスト」です。 Web APIの基礎知識 はじめまして、DeNAでMobageオープンプラットフォームのWeb API(以降Mobage API)を実装しているxaicronです。Mobageオープンプラットフォームは、Mobageの機能をWeb APIを通して外部の開発者に公開することにより、ソーシャルゲームをユーザに提供するサービスです。 簡単に説明するとWeb APIとは、HTTPを利用してネットワーク越しに処理を行い、結果を返すしくみです。最近ではJSON(JavaScript Object Notation)というフォーマットを利用してデータのやりとりをすることが多くなっており、Mobage APIも基的にはJSONを受け取って処理を行

    第9回 高速なWeb APIの実装とテスト―Mobage APIを支えるノウハウ(1) | gihyo.jp
  • 第2回 冗長性症候群~条件分岐をUNIONで表現するなかれ | gihyo.jp

    ここはとある街の総合病院。 ここには通常の診療科のほかに、一風変わった診療科が存在する。 何軒もの病院をたらいまわしにされた、手の施しようのないSQLや、今すぐに改善が必要なSQLが担ぎ込まれる救命室である。 それがSQL緊急救命室、略してSER(SQL Emergency Room⁠)⁠。 そう、ここは国内でも唯一のプログラミング専門外来である。 ロバート救命室部長。腕の立つエンジニアだが、口が悪く性格はもっと悪い四十オヤジ。 (AM10:00 休憩室。ワイリーが机に向かって一人で何かしている) どってぃろーんどってぃろーん、ぽぽぽんぽーん、どってぃろーん…

    第2回 冗長性症候群~条件分岐をUNIONで表現するなかれ | gihyo.jp
  • 第8回 Perlによる大規模システム開発・設計のツボ(2) | gihyo.jp

    mixiのアーキテクチャパターン 2011年4月現在、mixiは2004年2月のサービス開始から7年以上をかけて、最適化、バグ修正、新機能リリースなどを続けています。(⁠2)では、こういった状況の中で、安定したサービスをみなさんにお届けするために取り入れているアーキテクチャ設計上の工夫や、失敗を修正していくための品質評価手法を紹介します。 システムの境界と階層化 mixiでは個々の機能について、次のようなパッケージレイアウトを採用しています。 Mixi::Voice::* つぶやき機能に関するモジュール群 Mixi::Video::* ビデオ機能に関するモジュール群 Mixi::Diary::* 日記機能に関するモジュール群 Mixi::Home::* ホーム表示機能に関するモジュール群 以降では、これらのモジュールの集まりを「コンポーネント」と呼びます。これらのコンポーネントは、相互に連

    第8回 Perlによる大規模システム開発・設計のツボ(2) | gihyo.jp
    moccos_info
    moccos_info 2011/09/27
    疎結合
  • 第2回 ネットワークアーキテクチャを一変させるOpenFlowのパケット制御技術 | gihyo.jp

    はじめに 前回は、昨今注目されているネットワーク制御技術「OpenFlow」の動向や基動作、仮想化が抱える課題について説明しました。今回は、より進んだOpenFlowの活用方法について説明します。 OpenFlowによるパケット制御方式 OpenFlowはネットワークの動作をプログラムで制御できます。具体的に言えば、OpenFlowを利用すると、パケット[1]の任意の部分を書き換えて、パケットを任意のノードに転送[2]できます。 パケットのどこを書き換え、どこに転送するか(以後「パケットの制御方法」と表記します)は、すべてOpenFlowコントローラが決定します。OpenFlowスイッチはOpenFlowコントローラから指示を受けて動作します。OpenFlowスイッチが独自の判断で動作することは基的にありません。未知のパケットを受信した場合、OpenFlowスイッチはOpenFlowコ

    第2回 ネットワークアーキテクチャを一変させるOpenFlowのパケット制御技術 | gihyo.jp
  • 第2回 完全版:ブラウザとデバッグ環境 | gihyo.jp

    こんにちは、太田です。前回はクロスブラウザの入口として、各ブラウザの特徴をまとめつつ、実際にクロスブラウザなコードを紹介しました。今回はクロスブラウザ対策における基である、各ブラウザ環境の構築について解説したいと思います。 前回紹介した通りブラウザにはたくさんの種類・バージョンがあります。それぞれが動作する環境を用意するだけでも、一苦労ではすみません。なるべく少ないマシンで、各バージョンをインストールして、さらにデバッグするための環境作りについて紹介します。なお、Safari以外はWindows環境を想定しています。さらに、特に断りがない限りはWindows XP SP3をベースに解説させていただきます。ご了承ください。 各ブラウザのデバッグ環境は近年目覚しいほどの進化を遂げています。統合デバッグ環境の草分けであるFirebugを筆頭に、Safari/Chrome(WebKit)のWeb

    第2回 完全版:ブラウザとデバッグ環境 | gihyo.jp
  • 第8回 Perlによる大規模システム開発・設計のツボ(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはmixiの広木大地さんで、テーマは「大規模システム開発・設計のツボ」です。 仕事やOSS(Open Source Software)プロジェクトPerlを用いた多人数開発をするにあたって気をつけるべきことや、品質を維持するためのノウハウを、国内最大級のPerlシステムであるmixiの事例をベースに紹介します。コーディング上の命名に関する考え方から、大規模アーキテクチャの設計や品質の数値化まで、ミクロからマクロに至るポリシーやテクニックを駆け足で解説します。 なお、今回の内容は(⁠株⁠)ミクシィの2010年度の新卒エンジニア技術教育メニューからの抜粋になります。これからPerl をはじめとするLL(Lightweight Language、軽量言語)を仕事で使うというフレッシュエンジニアのみなさんにも、ぜひご一

    第8回 Perlによる大規模システム開発・設計のツボ(1) | gihyo.jp
    moccos_info
    moccos_info 2011/09/16
    言語に依存した話ではない。コーディング規約、方針
  • 第3回 連携サイトのIPv6対応に要注意 ─NECビッグローブ 川村聖一氏に聞く | gihyo.jp

    第3回は、NECビッグローブ(以下、BIGLOBE)の川村聖一氏にお話を伺いました。 2009年に全サービスのIPv6対応計画を発表するなど、BIGLOBEは先進的なIPv6対応ISPです。川村氏はその中にあって、IPv6に関連する運用や課題に関して各所で発表されています。また、RFC5952の共著者(JPNICメルマガvol.780参照)としても知られています。 今回は、BIGLOBEでの経験から得られた「注意すべきこと」を中心に教えていただきました。 BIGLOBEでの取り組み ─⁠─川村さんはいつごろからIPv6に取り組まれていますか? 私自身がIPv6に関わり始めたのは、まさにBIGLOBEに来てからです。それ以前はNECの別の部署にいまして、IPv6とは関係ありませんでした。2004年です。 そのときからIPv6の担当を務めていました。当時は「IPv6担当」というものがあったんで

    第3回 連携サイトのIPv6対応に要注意 ─NECビッグローブ 川村聖一氏に聞く | gihyo.jp
  • デザイナートラックレポート | gihyo.jp

    稿では、「⁠Chrome+HTML5 Conference」のプログラムのうち、デザイナートラックの講演についてレポートします。 深見嘉明さん、白石俊平さん「HTML5/Web標準オーバービュー」 セッションの前半は、W3Cの活動は外から見えにくいと思っているため、こういった機会はありがたいと語る深見嘉明さん(W3C/Keio)より、W3C視点のHTML5とWeb標準の基礎についての発表がありました。 最初に、見慣れたW3CのHTML5のロゴ以外にもたくさんのHTML5に関するロゴがあることを示し、「⁠HTML5」と言っても一口に語れないと指摘します。仕様書原理主義に沿えば、HTML5の仕様書のページがHTML5であると言います。そしてHTML5の正式な定義は、W3Cで策定しているHTML4.01、XHTML1.0、DOM2 HTMLの次期バージョンということになると言及しました。なお

    デザイナートラックレポート | gihyo.jp
    moccos_info
    moccos_info 2011/09/12
    animation GIFがサポートされてなくてJS+HTML5 CanvasがサポートされるAndroid環境があるのか。
  • 第1回 OpenFlowって何だ!? | gihyo.jp

    はじめに みなさんは単にネットワークという言葉を聞くと、どのようなイメージを持たれるでしょうか。単純にパケットが通過するだけのケーブル的なイメージでしょうか。それとも、ロードバランスやパケットフィルタリングを行う箱のようなイメージでしょうか。 これまでのネットワーク機器はRFC(RequestFor Comment)などの標準で定義されたプロトコルに沿って動作し、ネットワーク機器を利用するユーザはメーカーが用意した記述ルールに従い設定を行うのが一般的でした。このような状況からネットワークは受け身でしか利用できないイメージが定着していると思いますが、次世代ネットワーク制御技術「OpenFlow[1]⁠」の登場により状況が変化しつつあります。 ネットワークをプログラムするOpenFlow OpenFlowを用いればネットワークの動きをプログラムにより制御することができます。ネットワークの動きを

    第1回 OpenFlowって何だ!? | gihyo.jp
  • 本格派エンジニアの工具箱:第14回 Ruby on RailsライクなJavaフレームワーク「Play Framework」|gihyo.jp … 技術評論社

    Play Frameworkとは 「Play Framework」(⁠日語サイトはこちら)は、Rub on RailsライクなJavaアプリケーション開発フレームワークです。簡単なコマンドの実行でアプリケーションの雛形を構築し、手軽に開発をスタートさせることができます。構築されるアプリケーションの雛形はモデル、ビュー、コントロールの3つのパーツから構成され、データベースシステムとJavaの永続化機能によるモデル、テンプレートエンジンを利用したビュー、Javaプログラムで記述するコントロールをシームレスに連携させたアプリケーション開発を行うことが可能です。 Play Frameworkの大きな特徴のひとつは、JavaコードやHTMLファイル、テンプレートファイルなどを修正しても、コンパイルやサーバへのデプロイ、サーバの再起動などを一切することなく、ブラウザでWebサイトをリロードするだけで

    本格派エンジニアの工具箱:第14回 Ruby on RailsライクなJavaフレームワーク「Play Framework」|gihyo.jp … 技術評論社