タグ

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

  • [Android編]短命なオブジェクトを作ってはいけない

    Android上のアプリケーションはJava言語で開発できるが、PCやサーバー向けのJava仮想マシンとは異なる「Dalvik仮想マシン」上で動作する。Dalvik仮想マシンは、モバイル向けに特化されているのが特徴である。 Androidアプリケーションの開発では、Javaの開発現場で培ってきた資産やノウハウを生かすことができる。だが、基的にPC上で動作させるJavaアプリケーションと同様に考えてしまうと、思わぬ落とし穴に陥ることになる。 そこで、主にメモリー管理の面からJava仮想マシンとDalvik仮想マシンの違いを見ていくことにする。 両者とも、メモリー管理はガベージコレクタ(GC)が担当する。ヒープ領域に空きがない場合、不必要なオブジェクトを回収して空き領域を作るのがGCの役割である。Java仮想マシンでは「世代別GC」という方式を採用しているが、Dalvik仮想マシンは「マーク

    [Android編]短命なオブジェクトを作ってはいけない
    authorNari
    authorNari 2010/08/25
    あとでツッこむ/コメントしました。
  • 組み込み向け「軽量Ruby」と「Rubyチップ」、福岡県が経産省の事業で開発へ

    福岡県は2010年6月25日、経済産業省の地域イノベーション創出研究開発事業に「軽量Rubyを用いた組込みプラットフォームの研究・開発」事業が採択されたと発表した。同事業は福岡県が県内外の企業や大学を組織し経産省に提案していたもの。「Rubyによる組込みソフト分野の研究開発事業は世界初であり、研究成果は製品化して世界中に展開する」(福岡県)としている。 事業予算は、2年間で約1億4000万円。開発にあたるのは福岡CSK、九州工業大学、東芝情報システム、福岡県などで、Rubyの作者であるまつもとゆきひろ氏も軽量Rubyの言語仕様決定など「中心となって取り組む」(福岡県)という。 Rubyは組み込みシステムでよく利用されるC言語などに比べ、開発生産性が高いとされる。福岡県ではRubyを組み込みシステム向けに最適化、軽量化することにより、家電製品などの開発生産性を向上させることが可能になると見て

    組み込み向け「軽量Ruby」と「Rubyチップ」、福岡県が経産省の事業で開発へ
    authorNari
    authorNari 2010/06/29
    ハードウェアにGCを組み込む
  • ガベージコレクションのアルゴリズムと実装

    「GC(Garbage Collection、ガベージコレクション)のみを取り扱ったはじめての日」である。前半の「アルゴリズム編」ではマークスイープGC、参照カウント、コピーGC、マークコンパクトGC、保守的GC、世代別GC、インクリメンタルGCといった、GCのアルゴリズムを解説する。コンピュータサイエンスの書物でよくある疑似コードを使った解説で、GCのこれまでの学問的成果を一覧するのに役立つ。アルゴリズムやそれを改良する手法について一つひとつ、メリットとデメリットを明確にしているのがよい。 後半の「実装編」では、PythonAndroidのDalvikVM、Ruby処理系の一つ「Rubinius」、Google ChoromeのJavaScriptエンジン「V8」のGCの実装を解説する。最新のソフトウエア製品でいかにGCが工夫されているか、それをのぞき見ることができて面白い。 著

    ガベージコレクションのアルゴリズムと実装
    authorNari
    authorNari 2010/04/30
    書評ありがとうございます!!
  • 「Java SE 6完全攻略」Garbage First GC

    Javaがヒープの管理にGCを使用しているのは、読者の皆さんもご存じの通りです。GCの手法にはいろいろありますが、HotSpot VMが採用しているのが世代別GCです。今回は、世代別GCの概要と問題点を解説したうえで、これを解決するために導入されたGarbage First GCについて説明します。 世代別GCの概要と問題点 世代別GCは若いインスタンスと時間を経たインスタンスを別々の領域に配置し、管理する手法です。これは寿命の短いインスタンスほど多いという性質をベースにしています。 若いインスタンスが配置される領域をヤング領域、時間を経たインスタンスを配置する領域をオールド領域とよび、それぞれの領域で異なるGCの手法を使用します。つまり、ヤングとオールドという世代の異なる領域を、それぞれ異なるGCで管理するのが世代別GCというわけです。 ヤング領域には高速ですが漏れのあるGCを用います。

    「Java SE 6完全攻略」Garbage First GC
    authorNari
    authorNari 2010/02/15
    あとでよむ,g1gc
  • [自分の道を拓く!]やりたいことをやればいいんだ

    上司に気のりしない仕事を頼まれたとき、それを断るのは勇気がいることだ。嫌な顔をされるだろうし、評価が下がるのではないかと不安になる。仕事だから、と自分に言い聞かせて結局引き受けてしまう。だが、まつもとゆきひろ氏は、やりたいことをやればいいという。(日経コンピュータ、文中敬称略) 「最近の若いプログラマは、特に断れない人が多い。社会人になってから景気が良かった経験がないから、ここで断ったら仕事がなくなるのではないかという不安が強いようだ」。Ruby開発者のまつもとゆきひろはそう危惧している。「僕は、新人のころから会社や上司にはっきり意見していた。嫌な仕事は断る。それでも、今も好きな仕事を続けられている」。 まつもとの趣味はプログラミング。「好きな趣味仕事にできた僕はラッキーだった」と楽しそうに語る。中学生のころから、プログラミングが一番好きだった。大学でもコンピュータ工学を専攻し、プログラ

    [自分の道を拓く!]やりたいことをやればいいんだ
    authorNari
    authorNari 2009/12/14
    "やりたいことをやればいいんだ"←おぉ
  • 松江市がRuby技術者認定試験を受験する学生に1万円を補助

    松江市は2009年8月より,市内の教育機関に在籍する学生を対象に,Ruby技術者認定資格試験受験費用を助成する制度を開始した。消費税を除いた受験料の3分の2にあたる1万円を支給する。 松江市は,同市に在住するまつもとゆきひろ氏が開発したプログラミング言語Rubyによる地域振興を図る「Ruby City Matsue」プロジェクトをすすめている。Ruby技術者認定試験は,まつもとゆきひろ氏が理事長を務めるRubyアソシエーションが実施している認定試験制度。 受験料の助成を受けるには,学校からの推薦書が必要。受験後に,半券もしくは領収書と学校からの推薦書,交付申請書を添えて松江市企業支援課に申請する。助成が受けられるのは,1年度の間に1人当たり1回まで。

    松江市がRuby技術者認定試験を受験する学生に1万円を補助
    authorNari
    authorNari 2009/08/10
    松江市の本気
  • 松江市が中学生対象にRubyプログラミング教室,「次は小学生も」

    松江市は2009年1月25日,市内の中学生を対象に「Ruby教室」を開催した。中学生13名と保護者9名が参加,画面に図を書いたり時計を表示したりするRubyプログラムを実際に動かし,コンピュータの動作を学んだ。 松江市では,世界的に普及しているプログラミング言語Rubyの作者まつもとゆきひろ氏が市内に在住していることから,Rubyによる産業振興を図る「Ruby City Matsueプロジェクト」を推進している。これまで島根大学や松江高専などでRubyプログラミング講座を実施してきたが「中長期的にRubyユーザーの増加を図るためには,若年層からRubyのリテラシー向上を図ることが重要」(松江市)として,中学生を対象にしたRuby教室を開催した。定員15名に対して32名の参加申し込みがあり,抽選で参加者を決定した。 Ruby教室は,Ruby City Matsueプロジェクトの拠点として松江

    松江市が中学生対象にRubyプログラミング教室,「次は小学生も」
    authorNari
    authorNari 2009/01/27
    来月も楽しみだなー
  • [実装編]メモリー管理を処理系任せにしてはいけない

    Javaや.NETを使うと,メモリー管理を意識しなくてもプログラミングできる。例えばJavaの場合は,Java VM(Virtual Machine)が備える「ガベージ・コレクタ」と呼ぶメモリー管理機能が,未使用のオブジェクトを破棄してメモリーを解放するといった処理を自動的に実行する(図1)。 図1●JavaVMによるメモリー管理の仕組み ヒープ領域は,生存期間の短いオブジェクトを格納する「New領域」と生存期間の長いオブジェクトを格納する「Old領域」で構成される。New領域はさらに,最初にオブジェクトを格納する領域「Eden」と,しばらく生存しているオブジェクトを格納する「世代0」「世代1」から成る。Edenに存在するオブジェクトは,生存期間が延びるにつれて,世代0または世代1に移動。世代0と世代1を何度か移動した後,最終的にOld領域に移される [画像のクリックで拡大表示] だが,処

    [実装編]メモリー管理を処理系任せにしてはいけない
    authorNari
    authorNari 2008/07/15
    素晴らしい図、わかりやすい←題名はいただけないが
  • 第13回 Webページで読みやすいテキストとは:ITpro

    今回のポイント 1行あたりの文字数の目安 1段落の文字数の目安 段落に含む文字数 行間調整の考え方 字間調整を使ったロゴ風味見出し 日語というのはもともと縦書き文化です。文字も筆で縦書きしていくときに書きやすいように作られています。現在PC画面上で見るフォントは,活字印刷物のフォントとは違い,横書きで読みやすいようにもともとの字体から若干形を変えられています。それでも起源である縦書きの形を完全に壊すことができないので,やはり横書きでは読みづらいようになっています。 日人が苦痛を感じることなく読める横書き1行あたりの字数は20字+α程度だと言われています。意識して雑誌などを見るとたいていが!)25文字から28文字程度です。用紙,つまりのサイズがA4を超えるような大判になると,1ページを左右2段組に分けて25~28字程度に調整されています。 一方,縦書きの場合には識別許容量はグンと増加し

    第13回 Webページで読みやすいテキストとは:ITpro
  • 第2回 Comet---プッシュ型のWebアプリケーションを作る

    この記事は,日経ソフトウエア2007年1月号,連載「簡単実装で学ぶWeb技術2006」の第7回「Comet――プッシュ型のWebアプリケーションを作る」の再録です。記事は執筆時の情報に基づいており,現在では異なる場合があります。 こんにちは,結城浩です。 今回は,サーバーからデータをプッシュするタイプのWebアプリケーションを作成する技法の「Comet」を紹介します。簡単なチャット・プログラムを通してCometの仕組みを学びましょう。 Cometとは 通常のWebアプリケーションは,クライアント(Webブラウザ)から送られてくるリクエストを受け取って動作します。つまり,WebアプリケーションはユーザーがWeb上のリンクをたどったり,ボタンを押したりすることをきっかけに動くのです。ここで,動きの主導権はクライアント側にあります。クライアントがサーバーから情報を「引き出す」ことによって動作する

    第2回 Comet---プッシュ型のWebアプリケーションを作る
  • まつもと直伝 プログラミングのオキテ 第19回 HTTPとCGI:ITpro

    Webアプリケーションが流行しています。Webブラウザ上で何でも実行させる昨今の風潮はいかがなものかと思いますが,これも時流なのかもしれません。Webプログラミングに習熟する前段階として,今回は基礎となるHTTPとCGIについて学びます。 WWW(World Wide Web)はもともと欧州合同素粒子原子核研究機構(CERN)で開発された,相互リンクした技術文書を参照する手段でした。文書間のリンクが世界中をクモの巣(Web)のようにつなぐありさまをもってWWWと名づけられました。 WWWが最初に登場した時点では,基技術は次の3つしかありませんでした。 (1)HTML(HyperText Markup Language),相互にリンクされた構造を持つ文章を記述するマークアップ言語。 (2)URL(Uniform Resource Locator),各地のサーバーに分散した,文書を指定する記

    まつもと直伝 プログラミングのオキテ 第19回 HTTPとCGI:ITpro
    authorNari
    authorNari 2008/02/29
    HTTP仕組み
  • まつもと直伝 プログラミングのオキテ 第18回 プログラムを高速化する(その2):ITpro

    プログラムの高速化については連載の第13回で紹介しています。プログラム中のどの部分を高速化すべきなのか,どのように効果を測定するのか,そもそも高速化が必要なのかを考察しました。今回は実際に高速化を試みます。 今回はプログラム高速化の実践編として,ある程度の大きさの具体的なプログラムを段階的に高速化しながら,実践的なテクニックを学ぶことにしましょう。 例題はマンデルブロ集合*1の計算プログラムです(図1)。マンデルブロ集合は非常に美しい集合ですから,当はグラフィックス表示が好ましいでしょう*2。しかし,GUIを使うと,特定のGUIライブラリ(グラフィックス・ルーチン)に依存したコードが大量に必要です。今回のテーマは「高速化」ですから,直接関係のないGUIコードはできるだけ省くため,キャラクタ(英文字)で図形を表現することにしました。 1 require 'complex' 2 3 def

    まつもと直伝 プログラミングのオキテ 第18回 プログラムを高速化する(その2):ITpro
  • 「Joel on Software」の筆者が語る“人を幸せにする”ソフト開発のポイント:ITpro

    2008年2月13日,ソフトウエア開発者向けイベント「Developers Summit 2008」(主催:翔泳社)が始まり,米Fog Creek SoftwareのCEOであるJoel Spolsky氏(写真1)がセッションに登壇した。Spolsky氏は,ソフトウエア開発についての諸問題を皮肉とユーモアたっぷりに論じた書籍およびブログ,「Joel on Software」で有名。セッションも著書と同じく皮肉とユーモアに満ちたものになった。 セッションのテーマは「素晴らしいソフトウェアを作るということ」。機能的に優れた製品を作っても,市場で優位に立てないというよくある現象を分析し,万人に愛されるソフトウエアを作る方法を探るという流れでセッションは進んだ。 セッションの冒頭でSpolsky氏は,いきなりサッカー選手David Beckhamとその同僚Landon Donovan(どちらもLo

    「Joel on Software」の筆者が語る“人を幸せにする”ソフト開発のポイント:ITpro
    authorNari
    authorNari 2008/02/14
    まずきれいであること、自分が思うように操作できると気持ちいい
  • 「メモリーを意識してみよう」第2回 GCの仕組みを理解する

    皆さんは,ご自分で作成されたアプリケーションでどのくらいの頻度でガーベジ・コレクション(GC)が発生しているか認識されていますか。まずは,このGCの発生頻度から調べてみましょう。 GCの発生頻度を調べるにはjavaの起動オプションに-verboseを使用します。-verboseだけだとクラスローディングやネイティブライブラリの使用に関する情報も表示されてしまうので,GCだけに特化したいときには-verbose:gcとします。 先週も使用した,JDKのサンプルのJava2Demoでやってみましょう。 > java -verbose:gc -jar Java2Demo.jar [GC 512K->216K(1984K), 0.0089257 secs] [GC 726K->486K(1984K), 0.0281309 secs] [GC 997K->635K(1984K), 0.0097482

    「メモリーを意識してみよう」第2回 GCの仕組みを理解する
  • 梅田望夫×まつもとゆきひろ対談「ウェブ時代をひらく新しい仕事,新しい生き方」(前編):ITpro

    まつもとゆきひろ ネットワーク応用通信研究所 フェロー 楽天 楽天技術研究所フェロー Rubyアソシエーション理事長。Rubyの作者 Blog「Matzにっき」 まつもとゆきひろの起こした小さな奇跡---梅田望夫氏の著書「ウェブ時代をゆく」の中の節のタイトルである。「時代の巨大な変化の中で個人がどう生きるべきか」をテーマにしたというこのの中で,Rubyを生み「オープンソースで飯をう」生き方を実践するまつもと氏の生き方に,梅田氏は何を見い出したのか。梅田氏とまつもと氏が,インターネットがもたらす新しい時代の新しい仕事,新しい生き方を語る。 まつもとゆきひろの起こした小さな奇跡 ――梅田望夫さんの新刊「ウェブ時代をゆく」には,「まつもとゆきひろの起こした小さな奇跡」という節があります。こので何を伝えようとされ,なぜまつもとさんを紹介されたのでしょうか。 梅田 いま,インターネットの切り拓

    梅田望夫×まつもとゆきひろ対談「ウェブ時代をひらく新しい仕事,新しい生き方」(前編):ITpro
  • まつもと直伝 プログラミングのオキテ 第16回 ネットワーク・プログラミング(ソケット編):ITpro

    LinuxのようなUNIX系OSでは,ファイルに対する操作と同様にネットワーク通信を行うために,「ソケット」と呼ばれる仕組みを使います。今回はソケットについて学びましょう。 コンピュータは「電子計算機」という和名が示す通り,来は高速に計算するための機械でした。しかし,現在のコンピュータは,Webブラウジングや電子メールのやり取りなどに使われることが多く,ネットワークと切り離すことができません。最近は「コンピュータを使う」ことと「ネットワークを使うこと」がかなり同義になっているのではないでしょうか。 今回は,ネットワークを介した通信の基礎になっている「ソケット」という概念を紹介します。 ディスクリプタでアクセスが単純に ソケットはネットワーク通信に用いるファイル・ディスクリプタ(file descriptor)です。そこで,ソケットの説明に入る前に,より一般的なファイル・ディスクリプタにつ

    まつもと直伝 プログラミングのオキテ 第16回 ネットワーク・プログラミング(ソケット編):ITpro
    authorNari
    authorNari 2007/11/08
    簡易HTTPサーバ作ったり
  • まつもと直伝 プログラミングのオキテ 第14回 意外に深い整数の世界

    整数はコンピュータにとって最も基となるデータの一つでしょう。今回はその基的なデータの背後にあるコンピュータの秘密について考えてみます。最後に,応用問題として公開鍵暗号方式についても触れます。 0,1,2,3,…と続く整数は小学生のころから慣れ親しんだ数です。しかし,学校で学ぶ算数や数学に登場する整数とコンピュータが取り扱う整数には,少しだけ性質に違いがあります。整数を学ぶにあたって,まずこの違いから考えてみることにします。 最初の違いはコンピュータの中の数は2進法で表現された2進数だということです。コンピュータを使っていて,この違いが目立つことはほとんどありませんが,ここはきちんと押さえておく必要があります。 私たちが普段使っているのは10進法です。10進法は0から9までの10種類の数字によって表現されます。しかし,10進法が唯一の位取り法というわけではありません。例えば時間の表現は6

    まつもと直伝 プログラミングのオキテ 第14回 意外に深い整数の世界
  • まつもと直伝 プログラミングのオキテ 第13回 プログラムを高速化する:ITpro

    プログラムの高速化はプログラマにとって永遠の課題です。しかし,そこには知られざる暗黒面が隠れています。そもそも高速化に意味があるのかを調べなければなりません。次に,どの部分をどの程度高速化するのかが重要です。アルゴリズムの効率にも目配りが必要です。 コンピュータの処理速度は驚くべき勢いで向上しています。現在私たちが使っているパソコンは一昔前のスーパーコンピュータをしのぐ性能を備えていますし,半世紀前に登場したばかりの計算機と比較すると数十万倍の性能に相当します。 このように高速なコンピュータを持っているにもかかわらず,人間の欲望は限りがないものです。プログラムの実行速度はプログラマにとっての永遠の課題のようです。プログラムを高速化していると,「そんなに急いでどこに行く」という気になることもあります。 今回は,プログラムの高速化にまつわるさまざまな「秘密」と「限界」,そして「戦略」について解

    まつもと直伝 プログラミングのオキテ 第13回 プログラムを高速化する:ITpro
  • 生年月日から年齢を計算する簡単な計算式:ITpro

    私の個人ブログに掲載したら好評でしたので、こちらでもご紹介してみます。 最近知ったんですが、生年月日から年齢を計算する簡単な計算式というのがあるそうです。 (今日の日付-誕生日)/10000の小数点以下切捨て。 PHPで書くと echo (int)((20070823 - 19850101)/10000); Perlで書くと print int ((20070823 - 19850101)/10000); JAVAで書くと System.out.println( (int)((20070823 - 19850101)/10000) ); という感じになります。 日の法律を確認してみました。誕生日の前日が終了する瞬間(すなわち誕生日をむかえる午前0時00分の直前)に1歳を加えることになる。ただしうるう年など、年によって期間を定めた場合において最後の月に応当する日がないときは、その月の末日を

    生年月日から年齢を計算する簡単な計算式:ITpro
  • まつもとゆきひろのプログラミング言語論---目次:ITpro

    プログラムを実行して初めて決まる事項が多い「動的言語」。柔軟性が高い,簡潔な表現が可能など複数の利点を持っている。さらに性能の問題などの欠点がコンピューティング環境の変化で目立たなくなってきた。速く柔軟な開発が求められる中で動的言語の存在感は増すばかりである。 ●第1回 まつもとゆきひろの「プログラミング言語論」【前編】(1) ●第2回 まつもとゆきひろの「プログラミング言語論」【前編】(2) ●第3回 まつもとゆきひろの「プログラミング言語論」【前編】(3) ●第4回 まつもとゆきひろの「プログラミング言語論」【後編】(1) ●第5回 まつもとゆきひろの「プログラミング言語論」【後編】(2) ●第6回 まつもとゆきひろの「プログラミング言語論」【後編】(3) 1965年生まれ。鳥取県米子市出身。筑波大学第三学群情報学類卒業。高校時代からのプログラミング言語おたく,オブジェクト指向おたく。

    まつもとゆきひろのプログラミング言語論---目次:ITpro