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

  • 業務ソフトとiPhoneプラットホーム

    業務ソフトプラットホームとしてみたiPhone iPhoneが大ブームとなり、このところはiPadの新発売でも注目を集めています。iPadの日での発売がちょっと遅くなってがっかりですが、今か今かと待ち構えている人も多いでしょう。iPhoneそしてiPod touch、iPadとシリーズ化されるまでになったこれらの製品について、稿ではまとめてiPhoneと呼び、機種に個別な話が出てくれば機種名で示すことにします。今回の最後の方では、iPhoneiPadの違いについても少し触れます。 iPhoneが話題に上るポイントはたくさんありますが、携帯できるデバイスなのにパソコン並みのOSが入っているという点で、画面は小さくても従来の携帯電話のような制約された環境ではなくなった点があります。結果的に、パソコンOSにはないアプリケーションまで登場するなど新しい世界を切り開きました。 特に最近では、ゲ

    kodaif
    kodaif 2010/05/19
    "また、逆に顧客が「iPhoneで作ってほしい」ということを要求する場合も出始めています。iPhoneをおもちゃや遊びの道具と思っていると、こうしたムーブメントから乗り遅れてしまうでしょう。"
  • 動画配信規模とコストの関係はどう?

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

    kodaif
    kodaif 2008/11/27
    "数千円になったり、数百万円になったりと、コストってどうなっているのと思われるかもしれませんが、原因は映像制作の人件費とビデオ制作費などのコスト意識の違いなんです。
  • 言語仕様とオブジェクト指向

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

    kodaif
    kodaif 2008/11/27
  • モバイル動画をもっと活用する

    写真で作れる動画コンテンツ 前回、「携帯動画はリッチコンテンツです」と紹介しましたが、そうはいってもいきなり映像制作にかける予算の捻出(ねんしゅつ)は難しいかもしれません。そこで、品質を損なわず動画コンテンツを作る方法としてフォトスライドショーをお勧め致します。 これは、Adobe Photoshopのような画像編集アプリケーションであればたいてい付加されている機能で、安価なソフトでもかなり品質の高いトランジション(場面転換)等を使用してスライドショーを演出できるので、とても利用価値は高いと思います。 あらかじめ使用する画像(写真)にテキストテロップなどを書き込んでおけば、必要な情報の補足もできて効果的です。さらに、BGMを入れてムービーファイルに書き出してくれるアプリケーションも多くあります。これにナレーションを加えることができれば当に十分な動画コンテンツが作れると思います。 ただし、

    kodaif
    kodaif 2008/11/27
  • 等価変換型プログラムをかじる

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

    kodaif
    kodaif 2008/11/27
    "プログラミングという概念が、より広く、より複雑なものになってきているのですから、どこが一番上のレイヤーで、どこが一番下なのかということは一意に決まりませんし、決めるべきではありません。"
  • Railsに変えてよかった!:iKnow!の場合

    iKnow!はRuby on Railsでできている みなさん「iKnow!」という語学学習サイトはご存じでしょうか? iKnow!は、効率的に暗記ができる、スケジュール管理および記憶定着度管理機能を備えたパーソナル学習アプリケーションを搭載した、無料のSNS型語学学習サイトです。サービス開始からわずか1年でユーザー数が34万人を超え、現在も国内最大の語学学習 SNSとして日々成長を続けています。 Think ITでも「【Webデザインワークフロー】iKnow!の作り方(http://www.thinkit.co.jp/article/111/1/)」(英語版「【Web design work flow】How to make iKnow!(http://www.thinkit.co.jp/article/121/1/)」)で、Webアプリケーションの開発手法について取り上げました。 この

    kodaif
    kodaif 2008/11/25
  • ソースでわかる!ハッシング

    これまでの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)であるとは、「いつでも一定の時間でアルゴリズムが停止する」ということです。探

    kodaif
    kodaif 2008/11/21
  • ファイルサーバ乱立を統合ストレージで解決!

    「作成されるデータ量>ストレージ容量」の現実 企業内には数多くのファイルサーバが立ち上がっていることが多く見受けられる。多くはWindowsサーバの内蔵ディスク、もしくはにDAS(直接接続型ストレージ)形態で接続したシステムになっている。だが、この「DASを使用するサーバ」というアプローチは、サーバの増加、使用率の低下、非効率なバックアップにつながりやすい。また、管理オーバーヘッドが高くなるため、システム拡張も困難である。 このような場合は、システムをファイバ・チャネルSANに移行することも容易ではない。 そこで、既存のネットワークで接続できる専用NASを導入することで課題の解決を考えてみよう。既存のLANインフラストラクチャに接続することにより、ファイルまたはブロックのどちらを保存しているかにかかわらず、すべてのDASを専用NASに統合が可能である。ここでは、Windowsファイルサーバ

    kodaif
    kodaif 2008/11/21
  • 立体アニメーションのしくみ

    立体アニメーションができるまで 今回は、立体アニメーションができるまでの行程を説明したいと思います。 ストーリーを考え、シナリオを書きます。自分1人で制作できる範囲の舞台セットを頭に浮かべながら、制作可能な個所を抜粋し、絵コンテを描きます。同時に主人公となる人形のことも考えます。演出によってどのような人形にしたらいいのかも考慮にいれます。 30センチに満たない人形の中には関節(図1)が入っています。少しずつ動かしては撮影、動かしては撮影という繰り返しに耐えられるだけの人形を作ります。人形のサイズに合わせた舞台セットを作ります。 資料は実際に撮影にいく時もあります。写真集を参考にする時もあります。カメラアングル、照明を決めて、人形の演出を頭に思い浮かべます。コマ撮りは静止画の連なりにより動いているように見せます。だから動いてはいけないものはすべて固定しておきます。それから撮影を開始します。

    kodaif
    kodaif 2008/11/21
  • 宣言型プログラミングの可能性と限界

    宣言型プログラミングとは 命令型プログラミングと対比されるもう1つの大きな流れとして、ハードウエアとは独立した、数理論理学に根ざした流れが存在します。(純粋な)関数プログラミングや論理プログラミング、制約プログラミングなど、いろいろな理論に根ざしたプログラミングモデルが存在しますが、ここではそれらを総称して、宣言型プログラミングと呼ぶことにします。 宣言型プログラミングは、問題の解法、すなわちデータ構造とアルゴリズムを記述する命令型プログラミングとは対照的なプログラミングパラダイムです。宣言型プログラミングが記述するものは、問題の定義、すなわち解くべき問題の性質や、その際に満たすべき制約の記述です。 問題の定義は、問題の解法とはなるべく独立しているべきです。なぜならば、問題の効率的な解き方は、実行環境に依存したさまざまなやり方が考えられるからです。たとえ、ある環境では効率的な解き方であって

    kodaif
    kodaif 2008/11/20
  • はじめよう!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

    kodaif
    kodaif 2008/11/20
  • Pythonを選んだワケ

    Pythonを選択した理由 通常のプログラマの皆さんと同様に、筆者もいろいろな業務や私的なプログラミングにおいて複数の言語を利用しています。組み込みシステムの業務をするときはC言語を使用しますし、最近の私的なプロジェクトではErlangを使っていますし、趣味においてはMathematica、Rなどを使用します。 過去、システムインテグレーションを業としていた時期は、C++Javaも利用していましたし、現在もそれらを利用することに強い抵抗を感じるわけではありません。このように目的に応じて利用するプログラム言語を変えているのですが、総じてみると、Pythonを利用する頻度が高くなっています。筆者が日常的に利用する言語として、Pythonを選択する理由は大きく次の2つがあります。 ・アイデアをすぐに実現できるから。 ・Zopeで利用しているから。 以降、この2つの理由について説明しますが、一言

    kodaif
    kodaif 2008/11/18
  • 携帯用に動画を変換するには?

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

    kodaif
    kodaif 2008/11/18
  • そのやり方では生産性は上がらない!

    生産性の高い言語とは? 今回はプログラミング言語の生産性に焦点を当ててみます。生産性の向上を目指す時、言語は何を選べば良いでしょうか。生産性が高いことは言語のメリットの1つのとなるため、最近よく使われる言語はどれも生産性の向上を考慮しています。よって、それぞれの言語の持つ生産性の方向性を考えて、開発に合うものを選択することになります。言語にはそれぞれ特徴があるため、一概に順位を付けることはできませんが、今回は、4つの言語をピックアップしてそれぞれの生産性についてみてみます。 1つ目がJavaです。Javaはクライアントアプリケーションや大規模サーバーの構築、携帯電話のアプリケーションなど、C言語の代替としても幅広く使われている言語です。C言語に比べると、プラットホーム依存のコードが必要ないことや、メモリ管理の煩雑性がないことから、より少ない時間でバグの少ない高品質な開発ができると言われてい

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

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

    kodaif
    kodaif 2008/11/17
  • 図解!二分探索のプログラミング

    二分木(Binary Tree) 「第1回:サーチのアルゴリズムを学ぶ」は、動的に増減する要素をリンクトリストで管理する方法を紹介しました。 リンクトリストでは要素を探索する場合、リンク(ポインタ)を順にたどるしかないため、線形探索と等しい時間がかかってしまいます。今回は、リストと同様にポインタでつながった構造でありながら、探索時間は二分探索と同じ性能の構造である二分木(Binary Tree)を紹介します。これはB-Tree や Balanced Tree(バランス木)と言葉も機能も似ていますが、少し違います。今回は、探索目的に使う二分木である二分探索木(Binary Search Tree)と呼ぶものを扱います。 図1-1に二分探索木を示します。 全体を木だと思ってください。丸をノード(node;節)と呼びます。また、ノードから出ている線は木の枝(branch)に相当します。各ノードか

    kodaif
    kodaif 2008/11/14
  • 作品が出会いにつながる

    Mr.Childrenとの出会い 定職につかないかわりに固定収入がないのが創作者の宿命で、そのために精神的プレッシャーがのしかかります。それを少しでも解消したく、なんとかお金を稼げないか模索しているという話は前回お話した通りですが、もう一点、どうすれば作品を見てもらえる機会を増やすことができるかということがあります。 それでとりあえず大学を出てすぐのころにいくつかの映像コンペに作品を送りました。「文化庁メディア芸術祭(http://plaza.bunka.go.jp/)」「広島アニメーションフェスティバル(http://hiroanim.org/)」「ぴあフィルムフェスティバル(http://www.pia.co.jp/pff/)」などのコンペで幸運にも賞をいただき、発表させてもらえることが何度かありました。作品を見てもらう機会が増えるということは、多くの方々と出会うきっかけになります。

    kodaif
    kodaif 2008/11/14
  • データ型とポリモーフィズム

    何がオブジェクトか? 「第1回:オブジェクト指向、再考」では、オブジェクトについて、概念的な説明を試み、C++による簡単な定義例で雰囲気をつかんでもらいました。ただ、オブジェクト指向には実にいろいろな考え方があり、「○○は△△だ」とすっきり断言できない事情があります。 オブジェクト指向の世界の大御所的な存在に「Smalltalk」があります。Smalltalkは1980年代のオブジェクト指向ムーブメントのきっかけを作った言語システムであり、現在もVisualWorksやSqueakなどの多くの環境で触れることができます。このSmalltalkでは、整数や真偽値、条件分岐や繰り返しに用いるブロックまで、ほぼあらゆるものがオブジェクトです。 最近人気の高いRubyは国産のオブジェクト指向言語で、その対抗馬としてよく比較される言語にPython(パイソン)があります。これらはインタプリタで動作す

    kodaif
    kodaif 2008/11/13
  • 動画映像だけを受け取ってしまったら?

    動画の権利関係は? 例えば、クライアントから「わが社のPRビデオ(DVD)をちょっと短く編集して、Webで配信したいのだが…」という依頼がきたとします。ここでまず確認しなければならないのが、コーデックでもファイル形式でもないのです。 それは「権利問題」です。 結論から言うと「クライアントと映像制作会社(映像プロダクション)間で権利関係はクリアになっているか」を確認しなければならないのです。権利確認での注意点は、図1-1となります。その用語解説は図1-2となります。 そして、企業が自社の映像を作る場合には、映像プロダクションと委託契約を締結している場合と、締結していない場合があります。 締結している場合は、たいてい著作権などの知的財産権を発注主であるクライアントに譲渡するような条項があります。これがあると一応安心です。締結していない場合、著作権の権利は映像プロダクションにあるのが原則となりま

    kodaif
    kodaif 2008/11/13
  • 命令型プログラミングはどこに行くのか

    命令型プログラミングパラダイムとは 現在主流のプログラミング言語は、質的にはハードウエアの実行メカニズムに深く根ざして発展してきた言語です。すなわち、固定長メモリセル列の上にデータ構造を構築し、状態を表現します。そして機械語命令列をプロセッサが順番に実行し、状態遷移を行うというチューリングマシン的メカニズムです。プログラミング言語が変われば、1つの命令文が扱えるデータ構造の粒度や抽象度も大きく変わりますが、「データ構造を構築し、計算を実行するためのアルゴリズム(命令文の列)を記述する」というパラダイムには変わりありません。 連載の視点では、PascalやCなどの構造化プログラミングや、C++Javaのようなオブジェクト指向プログラミングなども、質的には命令型パラダイムに含まれると考えます。 命令型プログラミングは、次回紹介する「宣言型プログラミング」と対になる概念です。「手続き型プ

    kodaif
    kodaif 2008/11/12