̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2013/ 4/22 通巻616号 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄                        News and Column  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄    Facebook が Android スマホのホーム画面を乗っ取る 2013年 4月 4日、Facebook は、ホーム画面を交換できる Android スマート フォン向けに、Facebook のホーム画面を提供することを発表した。 4月 12日から提供を開始しており、徐々に対応端末を増やしていく。    Facebook の設定を変えたり、Facebook Home をダウンロード    すると、ホーム画面が Facebook が提供するサービスを    便利に使えるスマホに変わる。 元に戻すには、アンインス    トールするための設定を起動するための元のホーム画面を    探さなければならない。    Facebook Home をインストールすると、Cover Feed と呼ばれる    壁紙に通知テキストを表示するシンプルなホーム画面になる。    Android や iPhone のようなアプリのアイコンが並んだホーム    画面ではなく、人やメッセージをメインにした構成となる。    スマホを SNS しか使わない人にとっては、使いやすいだろう。    電話をかけるときは、友達リストから選ぶことになるのだろう。 「ホーム画面は存在しない」として人やメッセージを中心としたアプローチを とってスマホを根本から変えていく野心的な発言があるが、人やメッセージを 中心とした考えは昔からあるもので、何度もチャレンジされてきた。 しかし、 現在でも、アプリが並んだホーム画面がよく使われている。 人やメッセージや コンテンツなど、データ中心のアプローチの有効性は以前から言われているが、 結局、ハードウェア、アプリ、データ、という階層を変更することは受け入れ られていない。 ホーム画面を変えると、アプリの一覧を表示する方法が、非常に難しくなる。 その方法が、いかに簡単でも、その方法を知らなければできないからだ。 Facebook Home が気に入った人でも、いずれ、時々他のアプリを使いたくなる ことが起きる。 そのときに、やっぱり、ハードウェア、アプリ、データ、という 元の構成がよかったと思うものだ。 このメタファーの順番を変えることは 不可能だ。 その構成を維持しつつ、ホーム画面を乗っ取るには、メニューボタンを押せば、 元のホーム画面に戻ることだ。 困った時に近くのボタンを押すのは自然な ことであるし、ホーム・ボタンとメニューボタンが並んでいる部分が、 ハードウェア、アプリ、データという構成のアプリ層を残しており、 違和感を感じにくくする効果があるからだ。 参考リンク: http://pc.watch.impress.co.jp/docs/column/config/20130419_596484.html http://japan.cnet.com/news/commentary/35030824/ * The others Last week watched News  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ◇ 電王戦プロ棋士完敗。ソフト開発者冷静。実感わかない。 http://mainichi.jp/feature/news/20130421k0000m040085000c.html … 現役棋士に対してもコンピューターの数を増やしてコンピューターが勝ち。 ◇ スマホのUSB給電でノートPCが動作可能に。拡張規格 USB PD の技術デモ。 http://www.itmedia.co.jp/pcuser/articles/1304/19/news124.html … IT機器同士で最大100ワットの電気を USB で提供し合えるように。 ◇ アップル、幹部4人がS&P 500企業報酬額トップ5入り。CEO移行期の幹部維持で多額報酬。 http://japan.cnet.com/news/business/35030886/ … 外資で働くことはこういうこと。 ◇ パズドラ効果がGoogleの決済インフラも脅かす。 http://www.itmedia.co.jp/news/articles/1304/17/news084.html … 世界は無料が主流だが、日本人はきちんと課金する。 ◇ Microsoft、脆弱性緩和ツール EMET v4.0のベータ版を公開。 http://www.forest.impress.co.jp/docs/news/20130419_596693.html … セキュリティ更新が提供されていないときに、設定で防御する。                      Snap Note 3 開発BLOG  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ [ データ構造を押さえることの重要性 - BM法(13) ] 前回は、*_getSkipCount_* 関数(SearchStringByBM_Class_getSkipCount_Sub 関数)の中で、SkipArray 配列を使って、キーワードを進める数を調べている ことを確認しました。 今回は、その SkipArray 配列がどこで作られるかを探す準備をします。 データ構造がしっかりしたプログラムは、データ、または、オブジェクトが ツリー構造になって整理されています。 世の中にあるプログラムは、 そうなっていないものもありますが、本書で説明している文字列検索 プログラムでは、しっかりとデータ構造が整理されています。 SkipArray 配列は、*_getSkipCount_* 関数の引数ですが、データ構造的には、 clib.h ファイルに書かれている SearchStringByBM_Class 構造体の中の SkipArray メンバー変数です。 そして、SearchStringByBM_Class 構造体の 変数は、T_SearchStringByBM 関数のローカル変数です。 以上をまとめて、 C言語の記号を使って書けば、 T_SearchStringByBM()SearchStringByBM_Class search_by_BM.SkipArray となります。(関数を表す () の右にローカル変数が続くのはC言語の文法上 存在しませんが推測できるでしょう。) データ構造(所有関係ツリー)を押さえておくことは、世界地図の一部が 明らかになったことと同じです。 世界地図を手に入れられれば、データの 関係性も世界地図から推測できるようになりますし、未知のデータがこの辺に あるはずだと予測することもできるようになります。 そのためには、C言語では構造体をマスターすることが必須です。 基本技術です。 しかし、整理しなくてもプログラムはある程度できてしまうため、データ構造を 整理できない開発者が多いです。 狭い範囲しか扱えない開発者が多いのです。 ファイル構成を説明しろという人は多いのですが、データ構造を説明しろと言う 人は少ない。なぜならデータ構造があることさえ知らない人が多いからです。 もしくは、活用する方法を知らないのです。 *_getSkipCount_* 関数の引数である SkipArray 配列が、T_SearchStringByBM() SearchStringByBM_Class search_by_BM.SkipArray であることを見つけるには、 どのようにすればよいでしょうか。 まず、*_getSkipCount_* 関数の中で SkipArray 配列を参照している行に ブレーク・ポイントを張って、ブレークさせます。 そして、デバッガーの 呼び出し履歴(デバッグ > ウィンドウ > 呼び出し履歴)を表示させます。 SkipArray 配列は、*_getSkipCount_* 関数の第3引数であることを覚えておいて、 呼び出し履歴の1つ下の *_search 関数(SearchStringByBM_Class_search 関数)を ダブルクリックします。 すると、*_getSkipCount_* 関数を呼び出すコードが 表示されるので、その第3引数を確認します。 skip_array ですね。 続いて、skip_array をダブルクリックして、すべての skip_array 変数を 強調表示させ、skip_array に値を代入しているところを探します。 古い Visual Studio 2008 なら上方に検索して探します。 すると、 skip_array = self->SkipArray が見つかります。 続いて、self を代入しているところを探し、 *_search 関数の第1引数で あることが分かります。 再び呼び出し履歴の1つ下の T_SearchStringByBM 関数をダブルクリックします。 T_SearchStringByBM 関数を呼び出している コードの第1引数を見て、search_by_BM 変数であることが分かります。 この変数は、SearchStringByBM_Class 型のローカル変数です。 search_by_BM 変数は、self->SkipArray の SkipArray のような構造体の メンバー変数ではないですし、search_by_BM が別の何かを指すように 代入されていないのでここがトップとなります。 これで、データ構造の 一部であるデータのアドレスが下記であることが分かります。 T_SearchStringByBM()SearchStringByBM_Class search_by_BM.SkipArray データ構造が分かれば、そのデータに代入している場所を探すことが とても簡単になります。 それは次回に説明します。 ソースコード(C言語)の全体は、以下からダウンロードできます。 Visual Studio の Express 版 for Desktop(無料)で試せます。 http://www.sage-p.com/b/searchstring.zip         ソフトウェアデザイン館 Sage Plaisir 21 について  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ホームページ  >>> http://www.sage-p.com/ メルマガ    >>> http://www.mag2.com/m/0000083983.html ブログ     >>> http://blog.livedoor.jp/sage_p/ ツイッター   >>> http://twitter.com/Ts_Neko ダウンロード  >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災  >>> http://www.sage-p.com/saigai.html メール   >>> ts-neko◇sage-p.com ←◇を@に変えてください          緊急メールは件名に「うどんメール」を付けてください。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ このメルマガの登録・解除をするときは… >>> http://www.mag2.com/m/0000083983.htm  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ News & Column are composed by T's-Neko 2013  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄