タグ

ブックマーク / thinkit.co.jp (182)

  • 「はやく作る」と「しっかり作る」のバランス

    okinaka
    okinaka 2010/05/18
  • 外部モジュールとの連携

    テスト・クラスの拡張 今回は、データベースへのアクセスが必要なテストや、未実装のモジュールを補完してテストするなど、外部モジュールとの連携が必要な場合に役立つテスト方法について紹介します。 まず、データベースのテストに入る前に、PHPUnitのテスト・クラスについて振り返ってみます。 これまで作成したテスト・ケースは、すべてPHPUnit_Framework_TestCaseクラスを継承していました。このクラスはPHPUnitの基底テスト・クラスになります。テスト・ケースを実装するには、setUp()メソッドとtearDown()メソッドをオーバー・ライドします。その中でテスト開始前の初期化と、終了後のクリーン・アップ処理を行います。そして、テスト項目ごとにテスト・メソッドにアサーションを定義しました。 このようにテスト・ケースを実装していくにうちに、共通の処理をまとめたり、新たな機能を追

  • 開発ツールの導入とライセンス管理

    ツール導入に関する悩み 開発ツールを導入しようとしたときに、必ず問題となるのが、導入コストです。フリーで入手できるツールもある中で、それなりの対価を支払ってツールを導入するには、しかるべき理由が必要です。また、当然コスト削減のプレッシャーもありますから、どのようにしたらコストを最小化できるかも考えなければなりません。 もちろんツールの活用方法はいろいろありますから、導入効果を説明するときに「生産性向上○○%」とはなかなか言えません。反対に、無償のツールを使えば当にコストがかからないかというと、それも違います。ツールによって得られる価値と同様、ツールを使用することで生じるさまざまな問題に対するコストについても理解しておくべきです。 例えば、「有料ツールはコストがかかるから、基的にフリーのツールを使う」という方針の開発グループがあったとします。 直接的な開発生産性を比較すると、有料ツールが

    開発ツールの導入とライセンス管理
    okinaka
    okinaka 2010/05/18
  • PHPUnitによるテスト:応用編

    PHPUnitでのテスト応用編 これまで、PHPUnitのフレームワークを利用したテスト・プログラムの書き方や、コンソールから phpunitコマンドを実行してテストする方法を説明してきました。今回は、PHPUnitをより有効に活用する方法について紹介したいと思います。 具体的には、下記の3つの方法を順に説明します。 (1)NetBeans IDEを使った単体テスト (2)Xdebugを使ったコード・カバレージの測定 (3)Selenium RCを使ったブラウザ・テストの自動化 NetBeans IDEを使った単体テスト 「NetBeans IDE」は、マルチ言語、マルチプラットフォームの統合開発環境(IDE)です。米Sun Microsystemsとオープンソースのコミュニティによって開発されており、無償で利用することができます。もともとはJavaの開発環境だったの ですが、次第に他の言

  • [ThinkIT] 第1回:チューニングの基準 (1/4)

    データベースのチューニングという言葉からどのようなことを想像しますか。表の設計の見直しやSQL記述を探ること、バッファプールの調整などと主にデータベース自体の調整であったりするかと思います。 しかしこうしたチューニング作業を行ったにもかかわらず、パフォーマンスがあまり変化しなかった、明確に問題が解決されなかったなどといったといった経験はないでしょうか。またより詳細な調査の結果、実はOSの設定やデバイスドライバのバージョンに原因があった、あるいはハードウェアの選択に問題点があったということも聞いたことがあるかと思います。 もちろんデータベース自体のチューニングは欠かせないものですが、なんらかの問題が起こっている場合、システム全体を考慮しなければならない状況に陥ることがあります。 一口にパフォーマンスをチューニングするといっても、ハードウェアを含めたシステム全体を考えると、考慮すべき項目は多い

  • 等価変換型プログラムをかじる

    基礎理論からわかること いつの間にかねじれてしまった宣言型プログラミングの質をあらためて考えてみると、当にやりたかったことは、問題の定義とその解法を分離して、それぞれを独立して理論化していくことだったと考えられます。 宣言型プログラミングは、仕様と実装を同一視するため、問題の定義に解法が深く侵入してしまい、分離不可能なものとなっています。そのため、問題ドメインごとに、効率化のためのさまざまなデータ構造と、それを扱うための手続き(制約ソルバー)が拡張された、多くの言語が次々と開発されるようになりました。結果として、命令型プログラミングと同様に、まとまりに欠ける混迷状態となってしまっています。 プログラミングという概念が、より広く、より複雑なものになってきているのですから、どこが一番上のレイヤーで、どこが一番下なのかということは一意に決まりませんし、決めるべきではありません。また、問題ドメ

    okinaka
    okinaka 2008/11/29
  • 言語仕様とオブジェクト指向

    インタフェース 多重継承は、複数のスーパークラスの性質や機能を併せ持つクラスを作りたい場合に利用します。例えば、サブスレッドを生成してファイル入力を行うクラスと、URLで指定したネット上のファイルを読み込めるクラスを多重継承できると便利そうです。ただし、多重継承は複数のクラスのメソッドやインスタンス変数が混在したサブクラスを作るため、利用するスーパークラスの実装を指定し、意図通り動作するように調整する必要があります。 多重継承の1つとして、図1-1のように抽象メソッドを継承する場合もあります。抽象メソッドを用いると、スーパークラスでメソッドの宣言のみ行い、具体的な実装はサブクラスで行うことができます。この方法では、スーパークラスの抽象メソッドとサブクラスのメソッドの実装の間に、必ずしも関連性はありません。 実装をまったく伴わずメソッドの宣言のみの抽象クラスを作ることもできます。JavaやC

    okinaka
    okinaka 2008/11/29
  • 動画配信規模とコストの関係はどう?

    そもそも動画配信のコストって何? 2001年に筆者がWeb制作会社に勤めていた時の体験談です。 その当時の部長から「お前は、ビデオの制作費が100万円と言うけど、ページ単価が数万円なのに、その中に入る動画に100万円も払えないんだよ!」と言われました。これは動画配信のコスト意識をわかりやすく表現しています。 その当時、筆者は「Web系の人たちはこんな費用計算をするんだ!」と思ったのですが、こういう発想だと、「UNIQLOCK(http://www.uniqlo.jp/uniqlock/)」のようなコンテンツは到底制作できないわけです。現在でも、こういう発想のWeb制作会社を多く見かけます。 また、クライアント側でも誤解が多く、例えばジュエリー系の動画配信で筆者がビデオ制作費を数十万円とかなり安く見積もっても、「料金が高すぎる!」というクライアントもいます。この場合、クライアントは数万円で動

    okinaka
    okinaka 2008/11/29
  • Red5とその他のオープンソースFlash技術

    オープンソースが開くFlashの世界 連載では、これまでにオープンソースのFMS(Flash Media Server)互換のサーバーソフトウエアであるRed5を中心にサーバーサイドと連携したFlashの世界について紹介してきました。今回はまとめとして、Red5の今後と、それ以外のFLash関連のオープンソースプロジェクトについて紹介し、今後のFlash開発の姿を占っていきます。 まず、背景としてFlashの世界は長らくMacromedia社/Adobe社の製品に依存してきました。現在でも最も重要な要素であるFlash PlayerはAdobe社によって精力的に開発が続けられています。そのFlash Playerの普及度は99%にせまっており、Flashをプラットフォームとしたアプリケーションやサービスの可能性は今後も高まるばかりです。 長らくクローズドな方針をとってきたAdobe社自身

  • ソースでわかる!ハッシング

    これまでの2回で、増減するデータを格納して検索するための方法を2つ紹介しました。1つはリスト構造(linked list)、もう1つは二分探索木(binary search tree)です。 この2つは、配列に対する線形探索(linear search)と二分探索(binary search)と同様の探索性能があることを示しました。アルゴリズム性能を表すオーダーOで表すと、それぞれO(n)とO(log2(n))です。 今回は、O(1)である方法を紹介します。今回もプログラムを使いながら見てみましょう。プログラムはこちら(http://www.thinkit.co.jp/images/article/159/3/15931.zip)からダウンロードできます(15931.zip/2 KB)。 アルゴリズム性能がO(1)であるとは、「いつでも一定の時間でアルゴリズムが停止する」ということです。探

    okinaka
    okinaka 2008/11/22
  • はじめよう!Red5プログラミング

    Red5プログラミングをはじめよう 前回(http://www.thinkit.co.jp/article/152/2/)は、Red5をインストールして同梱(どうこん)されているデモアプリを見ていくことでRed5を使ったアプリケーションのイメージをつかんでいただきました。今回は、実際にプログラミングしていきます。Red5を使った一歩進んだFlashの世界へふみだしてみましょう。 まずは必要なものをそろえます。Red5はJavaで書かれたサーバーですので、サーバー側の実装はJavaになります。クライアント側はFlashですので、言語としてはActionScriptで書くことになります。 具体的に必要になるのは、クライアント側はおなじみのFlash CS3などのFlash IDEかFlex SDK、または、Flex Builderで行います。最低限のセットとしては無料で手に入るFlex SDK

    okinaka
    okinaka 2008/11/20
    【現場に学ぶWeb動画配信】Red5でストリーミング!
  • 携帯用に動画を変換するには?

    携帯用動画コンテンツを用意しよう! 携帯動画を配信するためには、まず最初に動画コンテンツを用意する必要があります。あなたならどのようなコンテンツを配信したいと思いますか。 企業PV/商品PVなど、もちろんどのような内容のコンテンツを配信されても良いと思います。しかし、配信するメディア(デバイス)に合わせてコンテンツの内容(構成)を考える必要があります。 例えば、PCで配信する場合でも、使用するプレーヤーの画面サイズにあわせて動画の構図やテキストテロップのサイズを調整したり、ナローバンド、ブロードバンド向けにコンテンツを用意したりとユーザビリティを考慮します。 携帯動画は「リッチコンテンツ」です 筆者は、「携帯電話で撮影した動画を使用してみようと思うんだけど…」という要望を多く耳にします。 「携帯電話で撮影した動画を手軽に配信できる!」というのはあくまでエンターテインメントでの利用シーンを想

    okinaka
    okinaka 2008/11/18
  • 動画を効果的に使うための制作フロー

    Webサイトに動画を使ってみよう 前回(http://www.thinkit.co.jp/article/150/1/)は、事例を交えて動画の効果的な使い方を紹介しました。今回は、Webサイトに動画を効果的に使うために企画から制作までのフローを紹介します。 動画をWebサイトに使おうと言っても単純に動画を公開するだけならば簡単ですが、やはり動画自体から企画・制作をしたいと考えたいものです。しかし、動画を制作すると言っても、撮影や編集など、その行程に関しては専門的なことも多く、Webサイトを制作している方々にとっては敷居が高く感じられている方も多いのではないでしょうか。 特に撮影現場に関しては、何をしているのかわからない、気軽に立ち入れない雰囲気があるように思われがちなようです(実際にはそんなこともないのですが)。その制作フローを少しでもわかっていると現場で何が行われているかなど自分で確認も

    okinaka
    okinaka 2008/11/18
  • Red5をインストールしてデモアプリを試す

    Red5をインストールしてみよう 前回(http://www.thinkit.co.jp/article/152/1/)は、FlashでのストリーミングをキーワードにFlashクライアントとサーバー連携の技術的な概要と、それを可能にするオープンソースによるサーバーであるRed5について説明しました。今回は実際にRed5をインストールして動かしていきます。 Red5はOSFlash.org(http://osflash.org/red5)からダウンロードします。2008年10月の現時点では最新版はバージョン0.8のリリース候補版ということになっています。安定版とされているもので最新はバージョン0.7ですので、今回はバージョン0.7を選択します。 Red5はそれ単体で動くスタンドアローン型と、Tomcatなどと連動させて動かすWAR型との2つのタイプがあります。とりあえず試すという場合には、自

    okinaka
    okinaka 2008/11/12
  • なぜ動画ファイルにはエンコードが必要か

    エンコードが必要なのか? 今回は、「なぜ、手間のかかるエンコードが必要なのか?」「そもそもエンコードとは何なのか?」動画ファイルが多数あるがどう違うのか?」「エンコードの設定って複雑?」、そんな初歩的な疑問を解決していきます。 動画をWebで配信する場合、元の動画データをそのままWeb上で配信しようとするとデータ量が多すぎて、動画を視聴することができません。そこで、「エンコード(encode)」という動画データの圧縮作業が必要になります。 通常、Webで視聴する動画は1Mbps弱ぐらいのビットレート(データ量)になるのですが、元の動画データのビットレートはどのくらいかというと図1-1のようになります。 エンコードとは、元の動画データを10分の1から100分の1以下に圧縮して、Web上で視聴しやすい動画データに変換することをいいます。 また、動画データはネットワークのトラフィックに過大な負荷

  • 品質を定量的に把握するテンプレート

    障害処理票の使い方 「第3回:機能をモレなくテストするテンプレート(http://www.thinkit.co.jp/article/140/3/)」では単体テスト、「第4回:要件をモレなくテストするテンプレート(http://www.thinkit.co.jp/article/140/4/)」では結合テストと続けてテストフェーズのドキュメントテンプレートを紹介しました。 その中で出た共通の話題として、品質を把握する際の「定量的な分析」がありました。今回はテストフェーズのまとめとして、定量的な分析にポイントを絞り、品質管理を行うためのテンプレートを解説します。また、顧客側での品質チェックフェーズである受入テストについても、テンプレートとともに、そのフェーズに開発側がどのようにかかわるべきか述べたいと思います。もちろん、今回のテンプレートもダウンロードして活用することができるようにしています

    okinaka
    okinaka 2008/10/31
  • 統合プロジェクト管理ツールを比較!

    dotProjectの機能と特徴 今回は、プロジェクト管理機能に加え、企業のほかの部門で扱う情報も含めて管理することを目指したオープンソースの統合管理ツールを紹介します。 まずは、PHPで記述されたWebインタフェースの「dotProject」です。原稿執筆時点(2008年9月現在)の最新バージョンは2.1.2です。 dotProjectには「プロジェクトの登録」「タスクの登録と追跡」「カレンダー作成/表示」「ファイル共有」「顧客コンタクト先リスト」「フォーラム」「トラブルチケット登録」「企業(取引先)の登録」「部署の登録」「ガントチャート表示」などの機能が搭載されています。 dotProjectのインストールに関しては、ツールそのものよりも、動作に必要となるPHPのセットアップに筆者は手こずりました。そこで、少し試してみたいという方には、demoサイト(http://www.dotpro

    okinaka
    okinaka 2008/10/29
  • ベイズの定理でプロジェクトの失敗を予測

    データを確率の枠組みでとらえる「ベイズの定理」 今回は「ベイズの定理」を概説し、この定理をプロジェクト管理にどのように利用するのか説明します。「ベイズの定理」は確率論や統計学において知られている定理であり、さまざまな事象に関するデータを確率論の枠組みで取り扱うことができるという点で有用な定理です。 確率論の枠組みでデータをとらえることができるという点は、確率や統計の知識のある方にとっては特に大きな利点であるように思えないと思いますが、これがまさにベイズの定理の特徴であるということを説明します。 なおベイズの定理はさまざまな応用があります。この定理を使った内容を総じて「ベイズ的」もしくは「ベイジアン」(Bayesian)と呼びます。今回は、ページ数の都合もあり、ベイズ的意志決定に焦点を当て、特にプロジェクト管理における課題を例として説明していきます。 統計を用いた意思決定 ベイズ的意思決定の

    okinaka
    okinaka 2008/10/23
  • [Think IT] 第3回:機能をモレなくテストするテンプレート (1/3)

    単体テストフェーズで確保する品質とは? 「標準化」は「生産性向上」の取り組みという位置づけでとらえられますが、効果はそれだけではありません。作業の属人化解消による「品質向上」と、テンプレート導入時の意識改革による「スキル底上げ」を同時にもたらし、その結果「生産性向上」につながるといった仕組みになっているのです。 今回もこれらの観点を織り交ぜながら単体テストフェーズについて、ダウンロード可能なテンプレートファイルを使って説明していきます。 前回までの上流工程ドキュメントにおいても、「品質」について触れました。その際は「顧客満足度の切り口」で解説しましたが、品質には「企画品質」「設計品質」「製造品質」「使用品質」といった工程別に確保するべき品質を定義した考え方もあります。システム開発では、それぞれの品質とそれを確保する工程は図1のようになるでしょう。 「第2回:要件と機能を簡潔に伝えるテンプレ

    okinaka
    okinaka 2008/10/16
  • 要件と機能を簡潔に伝えるテンプレート

    設計で使用するドキュメント 「第1回:要件と機能の関連を保つテンプレート(http://www.thinkit.co.jp/article/140/1/)」では、上流工程のうち要件定義フェーズで使用するドキュメントとして、「DUNGEON」テンプレートの中から「要件一覧」と「機能一覧」を紹介しました。今回は基設計フェーズでのドキュメントについて、ダウンロード可能なテンプレートファイルを元に紹介していきたいと思います。 なお、基設計で作成する全成果物とその作成手順については、連載「即活用!業務システムの開発ドキュメント標準化(http://www.thinkit.co.jp/free/project/4/1/1.html)」の第3回(http://www.thinkit.co.jp/free/project/4/3/)に詳しいのでそちらを参照してください。 ここで、注意するポイントが

    okinaka
    okinaka 2008/10/10