タグ別アーカイブ: ソースコード

精度95%以上! ソースコードは指紋、作者はほぼ特定できる : ギズモード・ジャパン

スペースやタブ、大文字やアンダーバーを組み合わせた命名規則、コメント…コードの書き方には、人によってスタイルがありますよね。それはもう指紋のようなもので、それさえ見えれば、誰がコードを書いたかほとんどわかってしまう…そんな驚きの研究結果が発表されました。

米ドレクセル大学、メリーランド大学、プリンストン大学、独ゲッティンゲン大学の共同チームの研究によると、自然言語処理と機械学習によるコード分析により、95%の精度で作者は特定できるそうです。

解析されるのは、レイアウトや語彙の特性と、「抽象構文木(AST)」です。ASTとは、「コードの書き方からまったく影響を受けずに、コードの型の特性をとらえる」もので、つまり、関数の名前、コメント、スペース入れ方などのクセ以上のものを探し出し、作者を特定するカギにする、というわけです。

研究チームが開発した機械学習ソフトウェアで、Google Code Jamに公開されているコードの分析を試しに行ってみたところ、あるひとりの人が書いた630行のコードを分析すれば、95%の精度でその作者が特定できたそうです。コードの行数を増やして1,900行にすると、特定の精度は97%になるとか!

このコード解析、すぐに使えそうな分野が思い浮かびますよね。そう、当局がハッカーを見つけたり、オンライン詐欺の犯人を特定したり、という使い方です。あと、他人のコードをちょっと拝借、なんていうケースもバレちゃったりするんでしょうか。「特定されたら困る!」という人は、今から誰かのコードの書き方をそっくりマネする練習を始めた方がいいかもしれない…ですかね?

引用元: 精度95%以上! ソースコードは指紋、作者はほぼ特定できる : ギズモード・ジャパン.

米Google、送受信者以外読めないGmail暗号「End-To-End」プロジェクトを発表 -INTERNET Watch

エンドツーエンド暗号化とは、メール送信者が暗号化してウェブブラウザーで送信した暗号を、メール受信者がウェブブラウザー上で解読するまで誰も読むことができないという意味だ。理論的に暗号鍵保有者以外は誰もメールを読むことができないため、鍵をなくした場合には誰であれ二度と解読できないことになる。

これまでのエンドツーエンド暗号化ソフトには「PGP」や「GnuPG」等が有名だ。しかしこれらのソフトを利用するには高度な技術力が必要で、お世辞にも誰もが利用できるソフトとは言えなかった。「End-To-End」は、オープンな標準規格「OpenPGP」を使った同等の暗号化機能を誰もが利用できるようにすることを目標とする。

公開されたソースコードはまだアルファ版だ。Googleでは、まず公開することにより、十分にテストと評価が行われ、安心して使用できるレベルの安全性が確認されることが重要だと考えている。それでGoogleは「End-To-End」を「Vulnerability Reward Program」に加えた。これはセキュリティ脆弱性発見者に賞金を与えるGoogleのプログラムだ。

「End-To-End」が採用したのは、新たに開発されたJavaScriptによる暗号化ライブラリ、OpenPGP標準規格、IETF RFC 4880。機能としては鍵生成、暗号化、復号化、デジタル署名、署名検証を有する。

暗号化はメール本文のみで、添付ファイルには適用されない。なお、もともとOpenPGPによるメールでは、メールタイトルと受信者リストは暗号化されない。また、現時点で「End-To-End」はChrome拡張機能として実装されているため、拡張機能のないモバイル向けChromeでは利用できない。

文字化け対策は行われているが、まだ完全でないそうだ。特に日本語利用者には改良が必要となりそうだ。

引用元: 米Google、送受信者以外読めないGmail暗号「End-To-End」プロジェクトを発表 -INTERNET Watch.

OpenSSL脆弱性の再発防止へ、業界大手が重要オープンソースプロジェクトを支援 – ITmedia エンタープライズ

オープンソースのSSL/TLS暗号化ライブラリ「OpenSSL」に致命的な脆弱性が見つかったことを受け、GoogleやMicrosoft、IBMなどの業界大手が参加して、インターネットのインフラを担うオープンソースプロジェクトを資金面でバックアップする「Core Infrastructure Initiative」を発足させた。Linux Foundationが4月24日に発表した。

Core Infrastructure InitiativeにはAmazon Web Services(AWS)、Cisco、Dell、Facebook、富士通、Google、IBM、Intel、Microsoft、NetApp、Rackspace、VMwareなどの各社が参加。Linux Foundationの運営の下、支援が必要なオープンソースプロジェクトを見極めて、人材獲得やセキュリティ強化といった必要経費のための資金を提供する。

まず最初の候補となるのはOpenSSLで、人材など必要なリソースのための資金を拠出して、セキュリティ強化や外部からの検査、パッチ対応などを支援する方針。

OpenSSLは多くのWebサーバやOS、ソフトウェア、ネットワーク機器などに利用され、インターネットインフラの根幹を支える存在だ。ところがOpenSSL Software Foundation幹部によれば、寄付などを通じて得る収入は年間2000ドル程度にすぎず、フルタイムでOpenSSLの開発にかかわる担当者は1人だけだという。

「共有ソースコードの重要性はかつてなく増し、開発やメンテナンスの複雑性も増しているにもかかわらず、その重要性に見合ったサポートを受けていないプロジェクトが存在する」(Linux Foundation)。そうした実態を打開するために業界大手が協力して、OpenSSLで起きた「Heartbleed」のような事態の再発を防ぐことを目指す。

引用元: OpenSSL脆弱性の再発防止へ、業界大手が重要オープンソースプロジェクトを支援 – ITmedia エンタープライズ.

「FC2ブログ」ソースコードがオープンソースに – ITmedia ニュース

FC2は3月19日、ブログサービス「FC2ブログ」のソースコードをMITライセンスで公開したと発表した。GitHubからダウンロードできる。

FC2ブログのテンプレートを利用したり、1つの記事に複数カテゴリーを設定したり、複数ブログを作成したりといったことが可能。独自のカテゴライズを行ったブログや情報サイトの構築などに利用できるとしている。

引用元: 「FC2ブログ」ソースコードがオープンソースに – ITmedia ニュース.

本の虫: アニメにおけるセルシェーディングの利用について

アニメは完全にセルシェーディングにして、ビルドして映像生成という形にすべきではないのか。すなわち、ソフトウェアだ。ソフトウェアである以上、自由ソフトウェアにすべきだ。そうすれば、稚拙な3Dメッシュが直されたり、シェーダーが改良されたりするのではないか。

いい加減に人の手で努力しただけのものを評価するのは、やめようではないか。もはや、写実画は写真に負けている。人間がまだ優位に立てると安心しているデフォルメの世界だって、例えばアニメ塗りのようなものは、セルシェーディングで近似できる。セルシェーディング技法は今後もますます発展することに疑いはなく、人間の優位性はいよいよ危うい。

将来は、ピカソのような絵や、デフォルメ化された3Dメッシュなども、自動的に生成できるようになるだろう。

私の観測できる範囲では、プログラマーとアニメの親和性は高い。私はアニメが好きではないから、これは不思議なことだ。私には、なぜ彼らがアニメを尊ぶのか、理解できない。現行のアニメが、単に人の手による単純作業で作られている。アニメ制作者が安く買い叩かれているのは、やはり、ある程度の画力があれば、代わりはいくらでもいるような単純作業だからだろう。

変えようではないか。現状を。アニメは技術者が作ればいいのだ。作画は3Dメッシュに取って代わられる。塗りはセルシェーディングに取って変わられる。高品質な3Dメッシュを作成するのは困難だが、一度作成してしまえば、後はアニメーションを作ればどのようなシーンもアニメーションできる。破綻しない自然な塗りをシェーダー言語で記述するのは困難だが、一度書いてしまえば、後はどのようなシーンでもレンダリングできる。

怠惰は美徳である。機械的な作業は機械に任せようではないか。もし、ある手動作業が自動化できるとするならば、我々はむしろ自動化するための準備に労力を注ぐべきなのだ。そうすれば、後は全て自動化される。我々人間は、機械を作るべきなのだ。その身を機械におとしめてはならない。

なるほど、私がアニメを好まない理由が、今にしてわかった。アニメは手動の単純作業だから感動しないのだ。そして、その映像の描画方法、すなわちソースコードが公開されていないから嫌悪するのだ。ああ、残念ながら、この考え方はあまりにも先進的すぎる。おそらく、数百年は理解されないことだろう。

ただし、2013年にこのような考えを持つ進んだ一個の人間がいたということは、ここに記しておく。

本の虫: アニメにおけるセルシェーディングの利用について.

「お気に入りのフィヨルド」を3Dプリント! 地図データ公開で実現したサーヴィス « WIRED.jp

オスロを拠点とするBengler社は、誰でもノルウェーの壮観な風景の好きなところを選んで、3Dプリントにできるウェブアプリ「Terrafab」を開発した。

ノルウェーの地形の一部を「自分のものにする」ためには、欲しいと思う場所を選択し、そのサイズを調節するだけでいい。その後は、「Shapeways」等の3Dプリントサーヴィスに注文する。例えば、10x10x10cmのフルカラー・サンドストーン・モデルなら、価格は70ユーロ(約9,400円)から100ユーロ(約13,000円)だ。あるいは、3Dプリントファイルをダウンロードして、自分で3Dプリントすることもできる。

Terrafabは、最近ノルウェー政府が行ったジオデータの公開によって生まれたプロジェクトだ。これは、退陣するノルウェーの中道左派政権による置き土産で、同政権はノルウェー地図局に対し、膨大な量のデータを無料で一般に公開することを求めた。

Bengler社の製品デザインおよびソフトウェア・アーキテクチャー責任者ジーメン・スヴァーレ・スコグスルドはWired UKに対し、「われわれは、国が制作したノルウェーのジオデータを、民間の再販業者を通じて不当な価格で販売しているやり方を批判してきた。イノヴェイションの妨げになってきたからだ」と説明する。

ノルウェー地図局はデータ公開にあたってBengler社に支援を求め、このデータがどのように活用できるかデモンストレーションする方法をともに開発したのだという。

すべてのソースコードは現在、このデータで自分のサーヴィスを構築したいと考えている開発者に対して公開されている。また、Bengler社では、今後、Terrafabを自社製品として完成させることを決めている。

引用元: 「お気に入りのフィヨルド」を3Dプリント! 地図データ公開で実現したサーヴィス « WIRED.jp.

さよなら手作業・人海戦術! HTML5時代のツール「Selenium2」でWebシステムのテストを自動化 (2/2):CodeZine

Selenium2のメリット

Selenium2を使うメリットは、上述したブラウザテストの課題に対応できる点です。

複数ブラウザ(クロスブラウザ)の対応。基本的には1つのテストコードで、ソースコードまたは設定ファイルを1行変更するだけでIEもFirefoxもChromeもテストできます。

モバイルブラウザのテストも発展途上ではあるものの対応可能。

リグレッションテストの対応。一度テストコードを準備してしまえば何度でも同じテストを実行できるため、これまでは時間やコストの制限で十分に実施できなかったリグレッションテストを実施できるようになります。

Jenkinsなどと組み合わせて継続的統合(CI)の対応が可能。

属人性・ヒューマンエラーからの解放。テスト実施者による違いや手順誤りによる確認漏れなどが発生しません。

Selenium2のデメリット・問題点

むろん、良いことばかりではありません。Selenium2を利用するにあたって発生するデメリットや問題もあります。

テストコード作成に時間がかかり、1回目のテスト工数は手作業の2倍以上。従って、短納期でテストは1回しか実施しないような案件ではSelenium2を適用すると余計に工数がかかりメリットがありません。

複雑な画面の場合、テストコード作成がさらに大変。例えばframeやpopupウィンドウを多用していたり、画面項目(name属性など)が動的に変化するなどの場合、テストコード作成にさらに工数がかかることが予想されます。

システム・アプリケーションを修正した場合に、テストコードの保守・修正作業が発生。これは単体テストでも同様ですが、テストコード自体もメンテナンスしていく必要があります。

引用元: さよなら手作業・人海戦術! HTML5時代のツール「Selenium2」でWebシステムのテストを自動化 (2/2):CodeZine.

「オープンソースが組み込み機器にもたらすインパクトとは」—ET2008でまつもとゆきひろ氏らが討論:ITpro

アプリックスの郡山龍氏は「ソフトウエアは人間の叡智だけで作られている唯一の工業製品であり、ソフトウエアこそが機械に生命を吹き込む」と組み込み機器におけるソフトウエアの重要性を強調。そして「昨日自分が書いたコードより、今日書いたコードの方が進歩している。昨日のソースはもういらない。誰かがすでに作ったものと同じものを作って人間の叡智を無駄遣いしないためには、昨日のソースコードは共有し、新しいこと、差別化になる部分に叡智を使わなければならない」と指摘した。

引用元: 「オープンソースが組み込み機器にもたらすインパクトとは」—ET2008でまつもとゆきひろ氏らが討論:ITpro.

リファクタリング (プログラミング) – Wikipedia

リファクタリング (refactoring) とはコンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理すること。いくつかのリファクタリング手法の総称としても使われる。十分に確立された技術とはいえず、「リファクタリング」の語にも厳密な定義があるわけではない。

引用元: リファクタリング (プログラミング) – Wikipedia.

【後藤弘茂のWeekly海外ニュース】海外のオクタコア版GALAXY S4の「big.LITTLE」ソフトウェアアーキテクチャ

CPUマイグレーションモデルの利点は、OS側からはCPUコアは対称型のSMP(Symmetric Multi-Processor)構成に見えているのに、ハードウェア的には非対称なAMP(Asymmetric Multiple Processor)構成である点。Samsungの例で言えば、AndroidのLinuxカーネルからは、ハードウェアはクアッドコアのSMP構成に見えている。ところが、実際にはCortex-A15のクアッドとCortex-A7のクアッドの、2種類8コアが混在するAMP構成だ。

引用元: 【後藤弘茂のWeekly海外ニュース】海外のオクタコア版GALAXY S4の「big.LITTLE」ソフトウェアアーキテクチャ.

そして、CPUマイグレーションモデルでは、Linuxカーネルのスケジューラ自体には手を加えない。これは重要なポイントで、開発期間を短くできた理由でもある。

 「Linuxカーネルのスケジューラのソースコードは1万行程あるが、それには一切タッチしない。その下にアドオンで単純な2,000行くらいのコードを足して、CPUコアのスイッチを行なわせている。OSのスケジューラからは仮想的にCPUコアは4つにしか見えない。しかし、その下でCortex-A7とA15を勝手に切り替えている。切り替えるスイッチャがカーネルの中に入っているのでインカーネルスイッチャ(In-Kernel Switcher:IKS)と呼んでいる」(塚本氏)。
インカーネルスイッチャ(IKS)とMP(PDF版はこちら)
IKSソリューション
MPソリューション

 In-Kernel Switcher(IKS)がOSのスケジューラをだますことで、SMPと見せかけながら、AMP構成を有効に使う仕組みとなっている。アドオンのIKSを使うことでOSの根本機能であるスケジューラのコードには変更を加えずに済ませている。Linuxの歴史でも、スケジューラの変更は2回程度しか行なわれておらず、それを改変しようとすると大変な作業になってしまうため、IKSという抜け道を使った。

 LinaroのIKSは、CPU負荷に応じて2つのコアを切り替える。切り替えの遷移ポイントの決定には、負荷に応じてCPUコアの電圧と動作周波数を切り替える「DVFS(Dynamic Voltage and Frequency Scaling)」の仕組みを使ってる。Linuxの場合は、CPUFreq Governorと呼ばれるサブシステムがあり、CPU使用率をモニタしてCPUの動作周波数を遷移させる。IKSは、Governorからの情報で、DVFSが一定のポイントに達した時にCPUコアをスイッチさせる。

 そのため、OS側はDVFSでCPUの周波数を遷移させているつもりでいるが、実際にはその下で、IKSが一定のDVFSポイントから下はCortex-A7、上はCortex-A15という具合に振り分ける。もっとも、実際にはCortex-A7とCortex-A15では周波数レンジが異なり、Cortex-A7の最高周波数から、Cortex-A15の最低周波数へと遷移する。そのため、IKSでは、バーチャルOPP(Operating Performance Point)を設定して、Cortex-A7とCortex-A15それぞれの実際のDVFSポイントにマップしている。OSから見えるのは、バーチャルOPPとなる。
CPU使用率をモニタしてCortex-A15に切り替える
Cortex-A7/A15を切り替えるバーチャルOPP

 LinaroのIKSで立ち上がった非対称型のAMP構成のbig.LITTLEアーキテクチャ。次のステップは、big.LITTLE MPモデルの実現となる。MPモデルでは、タスクのCPU負荷に応じて、混在する全てのコアに適切にタスクが割り当てられるようにするとARMは説明していた。しかし、これにはさまざまなチャレンジがある。それは、OS側がタスクのCPU負荷を知る術が極めて限られているからだ。