タグ

ブックマーク / xtech.nikkei.com (12)

  • Androidの仕組みを知る(2)

    Android Runtime 次いで,アプリケーションの実行環境「Android Runtime」を解説する。Android Runtimeは,仮想マシン「Dalvik VM」と,基的なAPIを提供するコア・ライブラリで構成される。 Androidのすべてのアプリケーションは,Dalvik VM上で動作する(図4)。Dalvik VMは,Java VMと同様,メモリー管理をガベージ・コレクタ*が担当している。開発者がメモリーの確保と解放を明示的に実行しないでも,メモリー・リークによる深刻なシステム破壊を防いでいる。 加えて,JavaからC/C++を呼び出すAPIのJNI(Java Native Interface)にも対応している。CやC++で書かれたネイティブのコードが実行可能となっている。 Dalvik VMのアーキテクチャは,“レジスタ・ベース”を採用している。レジスタ・ベースは

    Androidの仕組みを知る(2)
  • 「××をしてはいけない」---オープンソースにいまだにある誤解

    長いこと放ったらかしにしていた当連載ですが、思うところあってまたちゃんと書きたいと思います。今回はその「思うところ」から始めたいと思います。 休んでいた言い訳 長いこと放ったらかしにしていたのは、原稿を書く余裕がなかったということもありますが、それ以上に「もう今さら私が言うべきことはないじゃん」と思っていたからです。 オープンソースが普及したお陰で、オープンソースの技術についての解説は、そこらじゅうで見掛けます。かつてオープンソースの解説を書いている人達は「オープンソース」という大きなくくりでしたが、今は個別のソフトウエアについて書かれるようになりました。つまり、専門化が進んでいます。 「ビジネス」についても、いろんな切り口で書かれるものが増えて来ると共に、「いわゆるIT技術」がコモディティ化したお陰で、ビジネスモデルには「そんなものがあるのか」的なものまで出て来るようになりました。また、

    「××をしてはいけない」---オープンソースにいまだにある誤解
  • 本物のプログラマはHaskellを使う:ITpro

    筆者 shelarcy Haskellは,関数型プログラミングというジャンルに属する言語です。Haskellや関数型プログラミングを題材に物事を見ていくことで,今まで思いもよらなかったような未知の世界を知ることができるでしょう。 プログラミング言語を学ぶという行為には, 言語の基的な文法や考え方を理解する 言語の文化圏で広く使われている考え方に親しんでその言語らしい書き方を習得する 単に言語を使ってできること以上の知恵を学ぶ の3段階があります。この連載では,三つ目の段階を目標に,Haskellプログラミングの世界を一つひとつ丁寧に紹介していきます。 更新は毎月第1水曜日(1月のみ第2水曜日)

    本物のプログラマはHaskellを使う:ITpro
  • 第20回 更新を高速化するためのSTモナド

    前回,MArrayクラスの配列を扱えるモナドの一つとして,STモナドを挙げました。他にも第6回や第7回で何度かSTモナドについて言及しています。ただ,これまでSTモナドについてまとまった説明はしてきませんでした。そこで今回から2回にわたってSTモナドの詳細を解説していくことにしました。 今回は,STモナドの基的な特徴,およびSTモナドと関係のある拡張機能について説明します。 前回の補足 前回「すべての次元において下界が上界を上回るよう値を与えた場合,そのような範囲は存在しないため配列は空になります」と書きましたが,誤りでした。正しくは「下界が上界を上回るような次元が一つでも存在する場合」に配列が空になります(参考リンク1,参考リンク2)。 Prelude Data.Array> array ((9,22),(10,11)) [((10,11), 33)] array *** Except

    第20回 更新を高速化するためのSTモナド
  • Windows 7の内部構造を理解しよう

    ユーザーインタフェースの裏側で、Windows 7はどのように動作しているのでしょうか。ここからは、プログラミングをする上で知っておきたいWindows 7の内部構造を見ていきましょう。これから説明する内部構造により、Windows 7の特徴である「新しいユーザーインタフェース」や「動作の軽快さ」などが実現されています。 Windows 7に限りませんが、現在のOSは様々な機能を備えています(表1)。プログラマの皆さんに身近なのは、アプリケーション・プログラミングインタフェース(API)でしょう。Windowsの場合は、.NET FrameworkやWin32 APIが相当し、Visual Studioなどの統合開発環境を用いて開発します。プログラミングインタフェースを通じて、OSが備える数多くの機能をアプリケーションから利用するわけです。そのため、OSの機能を提供している内部構造について

    Windows 7の内部構造を理解しよう
  • 第31回 禁断の機能「unsafePerformIO」の深淵

    Haskell以外の言語に慣れ親しんでいる人は,プログラムがIOモナドに閉じこめられてしまうHaskellのプログラミングを窮屈に感じるかもしれません。そうした人にとって,unsafePerformIOはこの窮屈さを取り除いてくれる頼もしい味方に見えるでしょう。しかし,unsafePerformIOを気軽に使用すべきではありません。unsafePerformIOは,決してHaskell初心者が期待するようには動作しないからです。 今回は,unsafePerformIOとは一体何なのかを掘り下げて考えてみたいと思います。GHCのunsafePerformIOの実装を例に取り,「unsafePerformIOが実際にはどのように振る舞うか」「unsafePerformIOの使用が問題を起こさないのはどのような場合か」といったことを説明します。 最適化によって振る舞いが変わる なぜunsafeP

    第31回 禁断の機能「unsafePerformIO」の深淵
  • コンパイルが速くて、スクリプト言語的に書ける言語が欲しかった グーグル ソフトウェアエンジニア 鵜飼 文敏氏 - インタビュー:ITpro

    GoGoogleが中心となってオープンソースで開発が進んでいるプログラミング言語です。いろいろなプログラミング言語の良いところを採り入れたGoは、様々な“顔”を持っています。Go言語の生まれた背景や特徴などについて、グーグルのソフトウェアエンジニアである鵜飼文敏氏にお話を伺いました。 Goが生まれた経緯や背景について教えてください。 Googleの中には検索エンジンや「Google App Engine」など、様々なサーバーがたくさんあるのですが、その中でスピードを要求する部分ではC++を使っています。ただ、C++は実行速度は速いのですが、ビルドに非常に時間がかかります。社内では分散コンパイル環境を作っていますが、仮に検索エンジンのサーバーを1台のマシンでビルドしようとすると、1日くらいの単位で時間を見ておかなければなりません。CPUなどが速くなっているのにコンパイルが遅いというのは何か

    コンパイルが速くて、スクリプト言語的に書ける言語が欲しかった グーグル ソフトウェアエンジニア 鵜飼 文敏氏 - インタビュー:ITpro
  • 「感情の共有」,「負荷との戦い」---ニコニコ動画の技術:ITpro

    インターネット・サービスの激戦区である動画配信で後発ながらYouTubeを上回る成長速度,YouTubeの3倍以上となる1日ひとり3時間以上という平均視聴時間を実現したニコニコ動画。開設後1年足らずで400万人の会員を獲得,日全体のトラフィックの約10分の1を占める。その成長速度はmixiも上回り,日史上最速と見られる。 ニコニコ動画は多くのメディアで語られ,2007年10月にはグッドデザイン賞も獲得したが,これまでは社会現象やマーケティングの観点から語られることが多かった。しかしニコニコ動画を作り上げ,その急拡大を支えたのはまぎれもなくエンジニア技術だ。多くのクリエイタやユーザーを魅了し,巨大なアクセスをさばく技術はどのようなものなのか。ドワンゴのエンジニアに聞いた。 「感情」を共有するアルゴリズム 動画の上に文字をかぶせるサービスはニコニコ動画以前にも存在した。また,動画のタイミ

    「感情の共有」,「負荷との戦い」---ニコニコ動画の技術:ITpro
  • 第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~

    大手SIベンダにてSEやPMやアーキテクトとして勤務したのち,株式会社豆蔵を経て,現在は合同会社シンプルアーキテクト代表社員であり,株式会社匠Business Placeのチーフコンサルタント。主に超上流のプロセスである要求開発やオブジェクト指向,アジャイル開発のコンサルタントとして活躍中。開発の現場にこだわり,開発の現場を少しでもよくしたいと日夜奮闘している。要求開発アライアンス執行委員。著書に『オブジェクト脳のつくり方』や『eXtreme Programming実践レポート』(ともに翔泳社発行。後者は共著)などがある。 Javaなど,オブジェクト指向や手続き型のプログラミングの経験はあるけれど,関数型のプログラミングは初めてという皆様のための,そして筆者自身のための「関数脳のつくり方」シリーズのSecond Season(First Seasonはこちら)。今回は「モナド」を取り上げま

    第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~
  • Windowsはどうやって起動しているのか?:ITprowsq

    Windows 2000/XPを搭載したパソコンが突然起動しなくなったら,どうすればいいだろうか。もちろん,Windows 2000/XPが起動するまでにはたくさんの段階を踏んでいるので,原因や復旧策を一言で表すことなど不可能だ。こういうときに役立つのは,ブート・プロセスに関する基礎知識である。どうやってWindowsが起動しているのかを知れば,トラブルの原因や対処法も見当が付くはずである。 パソコンの電源を入れれば,Windowsが起動(ブート)する。この極めて当たり前と思われる動作の中にも,実は複雑な処理が多数潜んでいる。例えば,あなたのWindowsパソコンが突然起動しなくなったとしよう(図1)。あなたはその原因の目星を付けられるだろうか? ブートに関するトラブルは案外多い。パソコンへの衝撃やハードディスク(HDD)の動作不良によってブートに必要なファイルが破損したり,ウイルスによっ

    Windowsはどうやって起動しているのか?:ITprowsq
  • 第5回 GoogleAppEngineでMVCアプリケーションを作成する

    GoogleAppEngineについて前回紹介し,SDKを用いたローカルでの開発方法,および「Hello, World」を表示して公開するところまで説明しました。 今回はかんたんなアプリケーションの作成を通してGoogleのwebapp Frameworkを説明します。サンプルとして,かんたんなひとことブログサービスを作成します。このアプリケーションの作成チュートリアルを通して,データの投稿や削除,ユーザー認証などWebアプリケーションの基的な機能を実装する方法を一緒に学んでいきましょう。 仕様を決める 実装する機能は以下の通りとします(図1,図2)。 ひとことの投稿 ひとことの削除…自分が投稿したひとことを選んで削除できる すべてのひとことの削除…管理者のみすべてのひとことを削除できる

    第5回 GoogleAppEngineでMVCアプリケーションを作成する
  • 第11回 クロージャによる超軽量並行プロセスの簡単実装法

    最近,ネットの一部で「Erlang」(発音はアーランまたはエアラン)というプログラミング言語が流行している(参考リンク)。Erlangはスウェーデンの通信機器メーカーであるエリクソンにて開発された言語で,エリクソン内部や通信業界はもちろん,Twitter(関連記事)などのオンライン・サービスでも採用されているという。 Erlangの特徴は,複数のプロセスが通信をしながら計算をする「並行プログラミング」を,言語の機能として強力にサポートしていることだ。C言語などの逐次プログラミング言語は,プロセスや通信の機能を内蔵しておらず,こうした機能をオペレーティング・システムに「外注」している。しかし,そのような外付けの仕組みは,メモリー消費量や速度,開発効率などの点でオーバーへッドが大きい。Erlangのような並行プログラミング言語では,プロセスや通信といった機能をプリミティブとして実装することによ

    第11回 クロージャによる超軽量並行プロセスの簡単実装法
  • 1