android4.1 Jelly Beansからのセキュリティ対策

概要

Jelly Beansからセキュリティ面も大幅強化!
一部ご紹介!

Androidセキュリティ

アプリケーションやサービスが実行不可能なメモリ領域からコードを実行することを防止する。
ただし、DEPに必要なライブラリを攻撃することでDEPを無効化される可能性がある。
そこで、ASLRによる防御方法が取られている。

ターゲットのアドレスをランダムにすることで攻撃者からターゲットのアドレスを隠蔽する。

  • アプリの暗号化

開発者の大切なデータを死守。
有料アプリのデータを端末固有のキーで暗号化。

まとめ

近年、コンピュータウィルスはスマートフォンと呼ばれる高機能携帯をターゲットにしている。
なぜなら、電話帳などのアプリに個人情報が入っている可能性がパソコンより高いからだ。
以前より、Androidではサンドボックスなどにより一定のセキュリティは確保されていた。
だが、Androidに対する攻撃は凶暴化し続けている。
そこで、Androidでは、
GooglePlay上にウィルスが紛れ込まないよう用心棒を雇ったり、
今回紹介したようにセキュリティの工場に日々務めたりしている。
以上!

android4.1 Jelly Beansから導入されたトリプルバッファリングって何?

概要

togetterで話題になっていたのでまとめを要約してみた

トリプルバッファリングとは?

現在のフレームを描画している表のバッファと次のフレームの描画をキャッシュしている裏バッファとさらにもう一つバッファを用意することで画面のちらつきなどを抑えようというもの。
バッファを多く取ることでGPUの性能に依存せずに一定の画面描画速度を維持することができるようになる。
この背景として、高性能なGPUを積むよりもメインメモリを多く盛ったほうが現状コストパフォーマンスが良いからと推測される。

そもそもAndroidはマルチタスク前提のOSである。
トリプルバッファリングにより多くのバッファを持つことで画面描画をしながらもバックグラウンドでその他(メール着信など)にCPUリソースを割けるようになる。

ただし、トリプルバッファリングを採用するのはメリットばかりではない。
格闘ゲームなどでコンマ1秒の争いをしている人たちにとって確実に遅延が発生するのはあまり良くない。

まとめ

トリプルバッファリングの採用はこれまでハードウェア性能の差に苦しんでいたAndroidを救えるかもしれないと感じた。

オープンセミナー2012@香川に参加してきた

オープンセミナー2012@香川に参加してきた

今年もやって参りました技術者のお祭りオープンセミナー2012@香川!
今回は、ハードウェアに関する講演や展示があると聞き、参加した。
これもIT勉強会なんだろうけど勉強会っての外してもいいんじゃねってくらい楽しく、面白い勉強会だった。

タイムテーブル

今回は、LT枠を充実させたとかでギュウギュウ詰めのタイムテーブル!
LT枠とか一人5分で交代30秒というタイトなスケジュール。

  • 岩浅晃郎さま「PostgreSQLストリーミングレプリケーション
  • 吉田さま「Titanium Mobile によるスマートフォンアプリ開発」
  • 大石さま「FPGAで再現するMZ-80 〜ハンダのいらない電子工作趣味のススメ〜」
  • 足立さま「Tizenキタコレ!読み方は『たいぜん』な!」
  • LT
    • 今中さま – 「OSSの翻訳やってみた」
    • 岩倉さま – 「Androidで気軽にCMSを始める」
    • 大熊さま – (Arduinoをはじめ電子工作関連の話題)
    • 山下さま – (瓦町で行われている「ぷち勉強会」のご紹介)
    • 多田さま – 「香川県内の超高速ブロードバンドの普及について」
    • oks486さま – (PSoC関連の話題)
    • ちいといつさま – 「GAE/Goで限界に挑戦してみた」
    • 住友さま –GoogleIOに行ってきた
    • Tamさま - Project Glass Some Day
岩浅晃郎さま「PostgreSQLストリーミングレプリケーション

 NECソフトウェアの岩浅さんによる講演。
データベースサーバーの勉強なってやったことねーよっていう自分にも丁寧でわかりやすい説明だった。
クラウド化されるサーバー群をいかに効率よくレプリケーションするかはこれからの課題になると思うので大変興味深い講演だった。
そういえば、うどんを奢ってもらったらしい。

吉田さま「Titanium Mobile によるスマートフォンアプリ開発」

スマートフォン向けのwebアプリケーション開発のためのフレームワークTitanium Mobileの説明とデモ。
マルチプラットフォーム対応のフレームワークが増えてくるなか、
どのように差別化されるのか、
どのように優位性があるのか。

今後、激戦がありそうだと感じた。

吉田さんのキーワード「ぐぐってくれ」

大石さま「FPGAで再現するMZ-80 〜ハンダのいらない電子工作趣味のススメ〜」

おじさんホイホイで名機MZ-80をFPGAで再現しようというもの。
MZ-80上で動作しているゲームの動きまで再現するためにわざとノイズを載せるなど涙ぐましい努力があった。
これやらないと例えば野球ゲームだとピッチャーはものすごい豪速球しか投げられなくなるらしい。
また、当時のMZ-800は現在のFPGAより低スペックなため、デュアルチャンネルのメモリをシングルにするなどもしているとか。
ということは、高スペックなFPGA上に低スペックなMZ-800が動作しているという事にならないか。
MZ-80が現役のころからよくある話だったそうで。

周辺機器のほうが本体より性能が上って、どうしてこうなった。


足立さま「Tizenキタコレ!読み方は『たいぜん』な!」

Tizen Developers,info中の人
Tizenの歴史からデモまで。
なんども開発終了になりかけたかわからないOS「Tizen」。
その壮絶なドラマが語られた。
開発者向けの端末のしょぼさ、
開発用コマンド「sdb」はandroid開発用コマンド「adb」を移植したもの、(helpに何度もandroidって単語がある)
正直もう楽にしてやれよ、Tizenはよく頑張ったと感じた。
まだ出たばかりのMozillaのOSはGalaxyS?上で動作してるのに、
サムスンが関係しているTizenは動かない。

誰か、Tizenを助けてやって。

LT
  • 今中さま – 「OSSの翻訳やってみた」

 新しいアイディアがでてもすでにandroidアプリがあるというのは、よくあること。
そして、海外の人が出したアプリの日本語訳が残念なのもよくあること。
じゃ、翻訳者としてアプリ開発にさんかすればいいじゃない。

というわけでやってみたらしい。
英語で開発者にメールを書くのは大変だったけど、ローマ字で「arigato!」と帰ってきたのは涙。

  • 岩倉さま – 「Androidで気軽にCMSを始める」

androidからwordpressの管理のできるアプリあるよ!
wordpressに関する勉強会WordBenchってのがあるよ。
WordPress勉強会WordBenchをよろしく!

私は、日本Androidの会、四国支部の人間だけどね!

  • 大熊さま – (Arduinoをはじめ電子工作関連の話題)

サバゲ楽しいよ!
みんなもやってみよう!

  • 山下さま – (瓦町で行われている「ぷち勉強会」のご紹介)

初心者大歓迎!
テーマを決めずにレッツスタディ!
皆さんも参加しよう!
ぷち勉強会

  • 多田さま – 「香川県内の超高速ブロードバンドの普及について」

香川のブロードバンド普及率は全国ワースト8位!
ネットが使えないなんて日本じゃない

  • oks486さま – (PSoC関連の話題)

FPGAほど自由度はないが、今後の発展が楽しみで

  • ちいといつさま – 「GAE/Goで限界に挑戦してみた」

カラム減らせば高速化できるよ!

  • Tamさま - Project Glass Some day

LTはあったがその内容を記すにはここの余白は狭すぎる!

  • 住友さま –GoogleIOに行ってきた

日本だとおじさまが新商品紹介やってるけど、GoogleIOだと若い人がやってるね!
日本だと自虐ネタ多いけど、アメリカ人は数分おきにドヤ顔!
来年も行ってやるぜ!

まとめ

今回のオープンセミナー@香川で学んだこと。
うどん県人のワイロは、うどん。
わからないところはググってください。
Tizenは、オワコン

DevFestX Japan 2012 Summer

DevFestX Japan 2012 Summerに参加してきた

https://sites.google.com/site/devfestxjapan2012/home
Googleの最新技術の動向を知りたいと思い参加。
いやー楽しかったなあ。
新しい試みがあったり、新端末をタッチアンドトライできたり、記念品もらったりといろいろあったので軽くまとめてみた。

DevFestX Japanとは

DevFestX Japanとは、Google Technologyについて学びたいと考えているコミュニティの人達が開催するカンファレンスのこと。
コミュニティの皆さんが開催し、公演し、学び教えあうというもの。
なんと日本発の試みだったりする。

DevFestX Japan 2012 Summer

今回の新しい試みとして日本全国をGoogle+のハングアウトというライブチャット機能を使っての開催。
全国各地8箇所をつないでの講演会。
地方在住だと参加できるイベントが少なくて困ってたけどこれで解決するかも?

アジェンダ

・ごあいさつ&GoogleIO 2012総括
Androidセッション報告
Chrome/HTML5セッションの報告
・Cloud Platformセッションの報告
・Social/Geoセッションの報告

ごあいさつ&GoogleIO 2012総括

今回のGoogleIO最大のブースはやはりAndroidのブースだった。
Android型のビールサーバーや電源供給用のminiUSBがあったらしい。
参加者への記念品が回を増すごとに豪華になっており、
・2009年 スマートフォン一台
・2012年 タブレット、NexusQ、Galaxy Nexus、chromebox、ADK2.0、GoogleTV
こんなに変わってるのか・・・

Googleグラスの発表中には、サーゲイ・ブリンが現れたり、飛行機からパラシュートで開発者が現れたりと一番会場が湧いた。
今回のGoogleIOでは、Googleがリアルとインターネットをつないでいるとより強く感じた。
ごあいさつ&GoogleIO 2012総括スライド

Androidセッションの報告

・GCM
・最適化
・ADK2.0
・FiresideChat
・最適化その2
・デザイン

とにかく最初から本気出せよと言いたくなるほどの機能追加と最適化が行われたのがAndroid4.1 JELLY BEANS!
NexusQと呼ばれるメディアプレイヤーやGoogleグラスなどの新しいデバイスの紹介。
また、ADK(Accessory Development Kit)2.0のデモようにアラームクロックの紹介。
これをばらした時に再び会場がわいたらしい。
その他、FiresideChatと呼ばれるGooglerが会場からの質問にことごとく答えるだけのセッションがあったとか。
その間、スライドはなく98分間炎が燃えているだけの動画が流れていたとか・・・
(ちなみにFiresideChatと呼ばれるセッションは、一時間しかない。あれ、計算が合わないゾ!)
最期にアプリ開発者のためのアプリ開発へのヒントがあった。
・オフラインでも動くか
・奇をてらってない?
・Less is moreになってる?
・多種多様な端末に対応してる?
Androidセッションの報告スライド

Chrome/HTML5セッションの報告

Chromeはv8エンジンの最適化によるJSの高速化
インラインにIS記述禁止することでXSSの防止など徹底的なセキュリティの向上。
OSになったことの影響か、低レイヤー用のAPIが用意された。

Chrome/HTML5セッションの報告スライド

Cloud Platformセッションの報告

IaaSを新しく発表。
GAEなどの更新情報

Cloud Platformセッションの報告スライド

Social/Geoセッションの報告

皆さんつかれてないですかー。
ということであっさり終わった。
Google+にGoogle+Eventsという写真を簡単に共有できるサービスの追加。
Google+HistoryというGoogle+上で使用履歴のわかるサービス。
いろいろなサービスがGoogle+で使えるようになる。

Social/Geoセッションの報告スライド

まとめ

九州会場は、よく訓練されていることがわかった。
あと、記念品としてサンダルとUSBメモリを頂いた。

WindowsでDocumentsのパスを取得

概要

WindowsでDocumentsへのパスを取得するC言語プログラム。

環境
  1. WindowsVista
  2. bcc32コンパイラ
内容
#include <shlobj.h>
#include <stdio.h>

int main()
{
	char buf[MAX_PATH];
	SHGetSpecialFolderPath(NULL, buf, CSIDL_PERSONAL, FALSE);
	
	printf("%s\n",buf);

	return 0;
}

WindowsOSのバージョンを取得する

概要

WindowsOSのバージョンをC言語から取得する。

環境
  1. windowsVista
  2. bcc32コンパイラ

内容

int JudgmentOSver(){
	int ver = 0;
	OSVERSIONINFO version; // バージョンを格納する変数 version
	memset(&version, 0, sizeof(version)); // 変数 version の中身を 0 でクリア
	version.dwOSVersionInfoSize = sizeof(version); // 設定
	GetVersionEx(&version);  // これで変数 version に Windows のバージョンが格納される。
	// version.dwMajorVersion や version.dwMinorVersion などを参照できる
	
	ver = version.dwMajorVersion;
	return(ver);
}