Software Automation Testing Secrets Revealed を読みました。 全体的には主に見積もりや計画という観点から事例を載せてまとめた感じです。ツールの話もありますが、ちゃんと取り組むならこの書籍ではまかなえないかなという感じの量でした。タイトルの通り、よくお題になりやすいテストの実装/実施/分析などの領域とは少しずれた、見積もりとか環境構築、繰り返しなどを考慮した上でのプロジェクト全体からのテストやそれにかかるコストという側面を強くした狙いを持った本な印象です。 いわゆる、開発者テストではない領域のテスト活動に関わる人は読んでて良いのかなと。内容が具体的なので、その方面を経験されている方からすると、頭の中を整理する感じでしょうか。特に、プロジェクトマネジメントとか、テストマネージャと言われる人からすると参考になりそうな。 見積もりの中には、 繰り返し回数 環境面の構築 データの用意 機能の理解 テストシナリオなどのレビュー 実施 などを考慮した形が例として書かれていました。 テストのじっこうの見積もりは、 Critical Path Method Critical Chain Method Resource Leveling などの方法も合わせて書かれていたりと、単に抽象的に “見積もる” という話ではなく、実際にコストを仮定した時の計算など載っていて、計画立ての事例として良い材料だと感じました。 そんな書籍でした。More
Category Archives: books
『啓蒙とは何か』をカントより
永遠平和のために/啓蒙とは何か 他3編 (光文社古典新訳文庫) を読みました。 これ自体ではなく、カントの”啓蒙とは何か”が目当てでした。 カントは、啓蒙を 人が自ら招いた未成年の状態から抜け出ること と定義しています。この未成年の状態とは、他人の指示を仰がなければ自分の理性を使うことができない状態をさします。つまり、他人の指示がなければ自分の理性を使う決意も勇気もないことをさす。 これに対して、カントは幾つか規律を定めている。 悟性の規律(自分自身で考えること) 判断の規律 首尾一貫した思考の規律 これらを学び身につけていくことが啓蒙。 カントの思想はコンピュータシステムを学ぶときにいくつも出くわします。その一面がこの啓蒙ですね。 これとは別に、何か思想を広めるときに”啓蒙活動”するといいますが、その目指すものは自立して判断、実施できるようにする、までなのですね。なるほど。濃厚。More
つい手に取った『メカ屋のための脳科学入門-脳をリバースエンジニアリングする-』を読んだ
SmartNewsの読書チャンネルで見つけて、気になって購入しました。 メカ屋のための脳科学入門-脳をリバースエンジニアリングする- 人の反応・感覚・学習などが、どのようにして脳の細胞やその関わりにより構成されるのかの大枠を知ることができます。人の学ぶ仕組みなども垣間見ることができて、脳科学やさらには深層学習といった 学ぶ や 意思決定 を模倣する領域への面白さも感じることができました。 人の考える仕組みとかに興味ある人はもちろんなのですが、深層学習などから人の学習や脳の科学に興味を持った人や元々そういう方面に興味ある人であれば読んでみると良さそうな感じです。生物学の延長という感じではなく、工学系の大学生に脳科学に興味を持ってもらうために書かれているので、仕組みを紐解くというリバースエンジニアリングな話の流れがあってエンジニアにはオススメできると思いました。 内容 人はハードウェア的に多くを処理している 人の聴く仕組み(音の知覚)から、細胞の反応に入ってきます。そこでは、有毛細胞の振動を起因とした機械仕掛けのセンサの話、神経信号が細胞内外のイオン濃度の膜電位を起電力として電力に変換、脳に音を知覚させるという話が広がります。 神経細胞レベルで情報処理が始まるきっかけは、細胞内外のイオン濃度の平衡状態が崩れることだと知りました。ところで、熱力学第二法則が世界には存在しますね。そのため、実は細胞内のイオン濃度を保つために内外の濃度さを調整するイオンポンプが存在するそうな。このポンプを動かして濃度を保つ事に、脳の基礎代謝の50%が使われているらしいです。脳の半分がこれに使われるのですね。電位を生む源泉。 そのため、このイオンポンプを強制的に操作するような外的刺激を加えることができると、細胞に流れる電気を意図的に操作できます。これが発展したものが、人の感覚補助をする補助装置。あのような補助装置の動きが垣間見れてなるほど感。 運動感覚への関わり。 歩行運動に関わる神経と筋肉の動きは、 4つの指令信号 から再現される10個の活動パターンとして存在するそうです。それらが成熟していき、歩行運動をとれるようになると。さらには、サル、ネコ、ラットなどにおいてもその 4つの命令信号 によって歩行運動が再現されるそうな。骨格などもちがうのに、人問わず基本は同じになってくるのですね。筋肉などを動かす根本は似ていると。 脊髄内には多くの運動モジュールが存在するとのこと。そのモジュールを脳が組み合わせて使うことで、体の動きが決まってくるらしいです。モーターによる身体の補助装置なんかは、この組み合わせをリバースエンジニアリングで観測し、それを元に機械側でも動作を予め予測して動いているらしです。そうせずに、素直に細胞の反応を計測しながら補助装置を反応させると人の反応と機械の反応が乖離して補助にならないとか。こう言うところって、品質を考える上で重要な指標になりそうな気づきです。 脳の反射の話で出てきたのですが、脳の検索性能ってすごいですね。処理能力だけでなく、階層化などしてる。さらには、脳はマルチクロックで動作するし、集団的ベクトル表現を持っているし。奥が深い… 脳による信号の学習というところで、学習前、学習中、学習終盤における神経細胞の動きに関して書かれているところがありました。神経細胞の入出力に注目して見ると、入力に対する処理はだんだんと非同期的になっていくそうです。つまり、学習が進むと細胞はバッチ処理的に効率的に処理を始めるのですね。人の学習も、習慣として身についた後は勝手に処理されていくもんな。バックグラウンドで非同期に処理される感じ。 Brain machine interface を皮切りに、エンジニアの脳への挑戦が進んだことも書いていました。その結果で行き着いた一つが深層学習。 脳の設計に関する話も少し。脳は基本的に干渉設計であって最適設計ではないそう。要求機能が干渉し合うのはシステム開発では望ましくないが、脳は干渉し合う形で設計されている。むむむ。。。神経細胞の多様な反応と、機能マップによる効率化が天秤にかけられているのかも?と。 最後は芸術。 コンピュータグラフィックスの世界で、どのように脳に本物のように見せるか、という話が展開されていました。ヒトは見慣れたものを美しいと思うようになるとのこと。なので、慣れたものほど疑え、というのは脳の構造としてもまっとうなのですね。 締め 人の学ぶ仕組みやその反応の仕組み、奥が深い。ただ、それを模倣しながらコンピュータが発展している面もあるので、分散系に興味あるなら無知ではいない方が良いかな感。More
人工知能学会監修の『深層学習』を読んでTenserFlowへの入り口に触れる
深層学習 Deep Learning (監修:人工知能学会) を読みました。確か、この深層学習系に詳しい知人の誰かがこれ読んでおけば最低限良いと言われたことがきっかけで買いました。TensorFlowなどのツールには時間的には十分に手を出せそうにないので、基礎だけでも知っておこうと思ったことがきっかけです。 こういうロジックと工夫とかがまとまった書籍、良いですよね。大学院までで学んだことが基本となって、そこからさらにこういう理論の構築がされているのだということはよくわかりました。こういう大学院の頃にかじったことが主となる技術として生活を変えていく、というところを垣間見ることができるのって良いですね。 1部 基礎的な話。 確定的なニューラルネットワーク、確率論的なマルコフ過程やその中の統計的機械学習のモデルとしてのボルツマンマシンの話。今回は扱われていなかったけれど、ベイジアンベースの話は成果がどうか気になりますね。計算が複雑になりがちだけれど、計算時間は短い印象です。ベイジアン系。そこから、実装の話になって応用の2部へと話が移ります。 以下、幾つか具体的な話。 DistBelief http://research.google.com/pubs/pub40565.html DropOut 複数モデルの推定値の平均を利用することで、過学習を防ぐ。計算コスト上昇を防ぐために、ランダムでノードを消して学習を繰り返し、その結果を使う。幾つか、計算量増加を防ぐ。 ノードは他のーどを頼らないので、独立性を持つ。 https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf 面白かったところとして、ニューラルネットワークの超パラメータを決定するのにランダム探索が優れていることが報告されているとあったところがあります。私も違った類の計算をする時にランダムに決めることが何故か比較的有効だということがありました。その時は一様ランダム関数でしたが。この書籍で書かれていたところにおけるランダムがどうランダムなのか、は議論があるけれどスコープ外なので省略。(参考文献の研究にはちゃんと書かれているっぽい。) 実装技術のところで、ニューラルネットワークはパーツ自体は単純だが、全体が複雑でそれらが正しく動作しているかのチェックが難しいとありました。実際、この話に限らず複数の独立したモジュールが連なって1つの意味のあるシステムを作る場合、そのテストって難しい。さらにはこの学習系はそれが正しいかをパッとunit testみたいに判定するのが難しい。確率的。。。 2部 画像、音声認識、自然言語に対してこれらの技術がどう使われるかが書いていました。気になったところをメモ。 画像 畳み込みニューラルネットワーク(convolutional neural network) 学習には教師あり学習が基本 1980年代後半の文字認識のためのものから、対して変わっていない 教師なし学習でも、条件によってはk-means法などと同等の結果がでる、というのは面白かったです。ただ、学習なしでは、まだ多層ネットワークで扱おうとしたら処理が仕切れない、という状態なので処理性能を上げるかロジックの短時間化が必要そうなのですね。 音声認識には、深層ニューラルネットワークと隠れマルコフのハイブリッド 時系列における、入力に対する出力 音響モデル。 言語モデルベースの話 自然言語 品詞タグ付けや意味表現など、多くの学習にこの深層学習が応用されている いずれも、現実世界の問題を解くには計算量の削減や計算能力の向上に繋げることがとても重要なのだと感じました。 TensorFlowを読む この書籍とは関係ないですが、TensorFlowの以下も合わせて読みました。DistBeliefとのつながりもわかって、以前さっと眺めた時に比べて理解が深まった気がします。 TensorFlow2015ver2 https://drive.google.com/file/d/0B04ol8GVySUuSmpVdVVjNWtxVWs/view 締め 今の主流が確率的なのか確定的なのか、それらの基礎は何かを含めて知ることができました。確率的はものだと、この書籍ではマルコフ系が主でベイジアン系はさっと触れる程度だったので、マルコフ系が今の所主流なのかな。ただ、サンプル数と計算量からするとベイジアン系も必要とされていそうなので、きっかけあればそちらの技術も覗いてみたいですね。 そういえば、分散系での意思決定には独立性がキモということを思い出した。あと、この手の複雑な計算が混ざるロジックの証明は近似計算大事ですね。近似計算は十分に小さいと見る、といったことの他に確率モデルに近似される、とかなテクニックも必要なのでここまで近似を使い証明に落とし込んだ人たち素直に素晴らしいですね… ともあれ、数学計算だったり聞きなれない用語も多数出てきたので、読むのに集中力が必要だった。More
『世界でいちばん幸せな国フィジーの世界でいちばん非常識な幸福論』を読んだ
世界でいちばん幸せな国フィジーの世界でいちばん非常識な幸福論 を読んだ こういう系の書籍はほとんど読まないのだけれど、オススメされたので読んでみた。 適当にやってこ、とか、幾つか私も共感できるところあったなー。変に考えすぎな人とか読むと良いかもしれないですね。 こういう考え方も知るとか、そういう類のものだと良い感じでした。More
『複雑さとともに暮らす』、を読んで
人間中心設計で有名なドナルド・ノーマン氏の書籍です。 複雑さと共に暮らす―デザインの挑戦 過去、同氏の書籍では誰のためのデザイン?を読んだことがあります。 こちら 人間中心設計であったり、さよなら、インターフェースであったりと、私は定期的に課題解決のためのデザインに関する書籍を読んでいるぽい。こう言う書籍、頭の運動兼ねて適度に読むと考え方の体操になって良いですよね。現実世界でQualityと向き合うときにこの考えに触れることは避けることが難しいと考えています。 簡単だからと言って機能が少ないとは限らない “簡単”は”使いやすい”、”機能が少ない”は”能力がある” “複雑”と”迷う”はイコールではない 社会的signifireは社会的な約束事 良いシステムデザインは、人間中心な社交的システム などなど。 こう言う系統の物は記載されていることを知るよりも、それによって何か考え直したり考えるきっかけになることが大事だなーと感じます。 時折、さっと読み返していきたい。 そういえば、複雑さに対処するための心構えが書いていました。こう見ると、個人的にはエンジニアが普段やっているようなことだなーと感じました。この考え方。 受け入れよ(複雑なものである) 分割統治せよ(細かく砕いて、それを組み立てる) just in timeで学べ(必要に応じて) 理解せよ、記憶はするな(基礎理解が大事で応用が利く) 他の人をよくみよ 実世界の知識を使う: signifier, affordance, limitation 実世界の知識を使う: sign, label, marker 実世界の知識を使う: list(checklistなど)More
Reading “Mobile Application Penetration Testing” and dive into it
『 Mobile Application Penetration Testing 』 を読みました。 セキュリティ系の話でこのようにまとまったものはなかなかないので、周辺の知見を集めるという意味も込めて。あとはペネトレーションテストに焦点を当てた書籍自体をあまり見ないので、純粋にその方面への興味からも。 この書籍は、言うなら現状のiOS/Androidに対して実装するなにがしかのソフトウェアに対して、どのようなセキュリティリスクが存在するか、をいろいろとまとめているものです。また、実際に攻撃可能なサンプルも用意しており、それらを試すことも可能です。 The key challenges for mobile app モバイルアプリのセキュリティという話において、以下のように大まかに重要な領域を分けて話をしていました。 Network Layer Hardware Layer Operating system Layer Application Layer この書籍は、これらに対してちゃんと脅威モデルを作成し、それらへのリスク判断や対処を行うための参考になるように作られていました。区分整理や実演など含めて多くに取り掛かっています。 methodology for Mobile applications ペネトレーションテストなどの取り組みは、Discovery、Analysis、Exploitation、Reportingの4つな手順から形作られます。OSSやプラットフォーム理解、サーバとクライアントのことを考えながら重要な情報を探し出す。リバースエンジニアリングだったり、ネットワークの状態といったことや静的ツールといったものを使い解析を進めます。そこから実行やレポートへ落とし込むことになります。このような一連の流れをベースに、実際にどのような点を考慮すべきか、というところに焦点を当てて作業を進めることになります。 mobile top 10 risk OWASPは、2013年にモバイルアプリのtop 10のリスクをあげました。 Weak Server Side Controls Insecure Data Storage Insufficient Transport Layer Protection Unintended Data Leakage Poor Authorization and Authentication…More
『和菓子 WAGASHI』を読んで和菓子の多くの側面を覗いた
和菓子 WAGASHI ジャパノロジー・コレクション (角川ソフィア文庫) を読んだ。 和菓子って、いろんな季節感あって良いですよね。料理が季節を活かすように、和菓子にもいろいろな知恵や創作があって面白いです。 日本橋にある和菓子を目の前で見ることができ、食べることができる場所があります。そこは目の前でこのような和菓子作ってくれるので、今度行くときはその季節の和菓子を知って足を運びたいなと思います。More
『チームが機能するとはどういうことか』を読んだ
チームが機能するとはどういうことか ― 「学習力」と「実行力」を高める実践アプローチ を読んだ。 内容自体は、個人的には目新しいものではありませんでした。一方で、学ぶ続けることができる環境を作るなどの必要性やその環境の構築に対して、ある程度まとまった知見を得ることができます。 心理的安全性など、威圧的になることによって発生する課題に対しても言及されていたことは良かったと思います。 また、 人が重視するのは、能力よりも優しさや信頼できるかどうかや正しい行いをするかどうかであることが、研究によって証明されている など、経験的な判断に対して研究という裏付けがあることも教えてくれます。 最後に、よくある人に対する3つの境界を。 物理的な距離 地位 知識 これらに違いがあることを前提に、うまいこと仕組みを作りたいですね。More
『アプリ法務ハンドブック』を読んだ
少し前なのですが、ここに残し忘れていたので。 【BUSINESS LAW JOURNAL BOOKS】アプリ法務ハンドブックを読みました。OSSの話だったり、肖像権とか、そういうアプリ開発からサービス開発にかかる法律的な話が網羅されていました。 メモメモ。More