トップ 追記

日々の破片

Subscribe with livedoor Reader
著作一覧

2018-01-23

_ はじめよう! システム設計

技術評論社さんから(というか、羽生さんから、かな?)「はじめよう! システム設計」をいただいた。

いきなりあとがきから読んだわけだが、問題意識が興味深い。

2017年はIT投資に企業の目が向いた年として規定される。AI、IoT、RPAの3つのキーワードと(個々人は貧乏街道まっしぐらだが資本はどんどん膨らんでいる)経済状況が背景にある。

ところが、SIerは人材流出の結果としてプロジェクトの全体構想を立案し着実に遂行する能力をほぼ失い、個々のPMの属人的な能力、つまり経験と知見だけで動くようになった結果、失敗が多い。

一方の発注側は、ITは虚業という言葉に散々踊らされた結果のIT軽視のツケと、これまでのコスト部門の弱体化(というか低予算化戦略)の結果として、これまた人材がいない。

結果として口が巧みなコンサルタントによる実現不可能な夢をトップがもって突っ走りまっしぐらに罠にはまって身動きが取れなくなるような傾向があるように見える。

問題は、企画から実現までのつなぎにある。すでにさまざまな実装技術は世にあり、個々の人間の能力は低くはない。問題は、上流と下流の分断がかってないほどでっかな亀裂となっていることだ。

というわけで、関係者をすべて素人とみなして、for the rest of usのための薄い(内容が、ではなくて物理的に、なんだが別の意味になっちゃうな)システム設計の本を作ろう。

というモチベーションらしい。なんか正しい認識だと思える。

システムとして目次をみるかぎり、プレゼンテーション-ビジネス-データベースという3層構造を基本においているようだ(これ自体はまあそりゃそうだと思う。ただし呼称はUI、バック、DBと非専門語としている。DBではモデル設計、その他ではモジュール分割や各層間の責務によるインターフェイス設計など。

あとがきでは、本書のターゲットはユーザー企業側としているようだが、むしろ(ということはないけど)、ユーザー企業の担当者に対してシステムの開発方針などを説明する立場の人間が読むと効果的なのではないかと思った。

はじめよう! システム設計 ~要件定義のその後に(羽生 章洋)


2018-01-22

_ Let's Note用互換電源アダプタ

仕事用のLet's note(LTEモデルなのでどこでも利用できるのがとても良いし、タッチパッドの誤反応がないのが素晴らしい)を家に持ち帰っていたので、ちょっと使おうと思ったのが12/25くらいで、電源アダプタを職場に置いてきたことに気づき、案の定12/26の夜にはバッテリーがやばくなってしまった。とはいえ取りに行くのは面倒なので家用に1個買うかと何気なく調べたら10000円くらいする。仕事用のノートPCなんだからこれくらい当然だろうというパナソニック坊やの得意そうな顔が目に浮かんだ。

家に転がっている各種ACアダプタが使えないか見たが、どれもこれもまったく適合しない。おれが持っているのはCF-SZ6CFMQRというやつで、これは16V 4.06Aだが、パナソニックしか使ってないんじゃないか?

パナソニック CF-SZ6QFMQR Lets note SZシリーズ

で、アマゾンで見たら純正品はバルクでも7500円する。で、互換アダプタを見ると大体3000円前後なのだが、使えるんだか使えないんだか怪しさ爆発物しかない。

さらにいろいろ見ていくうちに、どうもMR.SUPPLYというところはまっとうな商売をしてそうだなという気になった。その分、高めで4000円くらいする。

アマゾンだと★1個とかあるけど、CF-SZ用と書いてあるのに、CF-NXでは使えないから★1というようなすっとぼけたやつなので無視して買った。

MR.SUPPLY パナソニック Panasonic CF-SZ専用ACアダプター 16V 4.06A AC アダプター CF-AA6412CJS

とりあえず、純正品ではないという文句がにょきにょき出てきたが、「2度と表示しない」チェックボックスがあったのでチェックして閉じた。

で、ちゃんと充電できるし、充電中も利用できる(比較的安価な純正品で、充電専用というのがあって、それも一瞬候補にしたが結果的にやめて良かった)。発熱もないし、少なくとも購入してから1か月たったがまともに利用できている。というわけで購入して良かったとは言える。

でもなぁ、パナソニックには、こんなところで追加商売しないで、USB-C PDを採用して欲しいところだ。


2018-01-21

_ 新国立劇場のこうもり

エレートのこうもり。

2011年2015年に続いて3回目。

いやぁ、実に良いなぁ。

指揮はエシュヴェ。ウィーン風なのだろうが、ワルツが小学校のトライアングルの形の指揮のような正三角形ではなく、ほとんど2拍子で(そのため、どれがワルツでどれがポルカかときどきわからなくなる)緩急自在、オーケストラ(東京交響楽団)がちゃんとついてくるのが素晴らしい。2幕の途中でずっとボーっと低音の木管が鳴るところがあるのだがこのあたりも実に良いものだった。

冒頭、今回はコウモリ博士の手引きで歌手(アルフレード)が登場するのをきちんと確認できた。1幕最後にロザリンデに博士の手紙が届くところは、最初意味がわからなかったが、今となっては良くわかる。

2幕でアデーレがイーダと、だまされたと怒るところで、今回はっきりと、博士の陰謀に単に巻き込まれただけとわかったが、それにしては(物語上)すさまじくアドリブがきくので、これは確かに女優向きではある。幕がしまったあと、公爵と所長のどちらがパトロンになるかで揉めそうだ。

前回こうもりを見てから、今回までの間に、メリーウィドウやチャルダーシュの女王とか他のオペレッタも観たので、オペレッタのコンテキストは艶笑譚だと知ったわけだが、そういう見方をすれば、確かに、エイゼンシュタインが靴はどこだ? と聞くところで、アデーレとロザリンデが同時に私のベッドの下と答えるところから、アデーレの立ち位置はすごく微妙だな、とか公爵の館でアデーレを認めたエイゼンシュタインの怒りが相当下司いとかどうでも良いところで見えてくる。

公爵は、去年薔薇の騎士でオクタヴィアンを歌った人。衣装あわせてものすごくフォトジェニックで素晴らしいのだが、どうも声が響かない(オーケストラに食われる)。それでも壁の手前で歌う前半は良いのだが、大広間が出て来て反響が減るととたんに全然聞こえなくなる。いっぽう、アデーレは立派なものだし、それ以上にエレートが常に響き渡るのはすばらしいな。

3幕、弁護士の鬘を投げ捨てて机の上に立ち上がって、おれはエイゼンシュタインだ! から始まるところは実に素晴らしい(前回も印象的だった)。1幕の悲しい悲しいから、心は乱れて夜が待ちきれなくてうきうきのところは何度見ても楽しい楽しい。

アルフレードが牢屋の中でヴェンチェーラ(トゥランドット)だのヴィットーリア(オテロ)だの歌ったあげく引っ張りだされて星は光りぬと歌いっぱなしで、これがなかなか聴かせる。星は光りぬでは拍手。1幕はリゴレットはわかった。鳥の歌は小鳥も白鳥もわからん。白鳥は当然のようにローエングリンだとは思うが。絵姿の歌はわかったけど。

ルナールとシャグランは西新宿2丁目と4丁目に住んでいるらしい。

心の底から楽しかった。


2018-01-18

_ 低レベルプログラミング

翔泳社の野村さんから低レベルプログラミングをいただいたのでレビュー(完全に読んだわけではなく、自分および少数の購買予定者のためのアジェンダ用にレビューしたというところ)。

著者はレニングラードの(こんなところで懐古趣味をひけらかしてもしょうがないが、そういう性格だからしょうがない、つまり聖ピョートルの都市のことだ)ITMO(と書いて国立情報技術機械光学研究大学、らしいのだが光学って本当なのか工学の誤記なのか謎)の先生で、多分、この本は副読本なのではなかろうか。どういう先生かというと、この先生のチームは、ACM-ICPCの国際大学対抗プログラミングコンテンストで6回優勝しているそうだ(少なくとも2017年の優勝は間違いない。というか3位は京城、7位が北京で、東京が12位なのか。韓国もすごいな)。

本書の目的がまえがきにある。7つの目標だ。

・アセンブリ言語で自由自在に書くことができる

・Intel 64のプログラミングモデルを理解する

・C11で、保守が容易で堅牢なコードを書ける

・コンパイルのプロセスを理解し、アセンブリリストを解読できる

・コンパイルされたアセンブリコードのエラーをデバッグできる

・適切な計算モデルを使うことで、プログラムの複雑さを大きく減らせる

・性能が重視されるコードを書ける

おお。少なくとも3は自信がないし、7と8は知りたい。

というわけで、なるほどACM-ICPCで優勝しそうな内容だ。

問題ががんがん入っていて、解答はGitHubにある(英語ですと書いてあるが、Apressの本だからロシア語というわけはないよなぁ)。

レポジトリには、すぐに使えるDebianのVMXへのリンクがあるので、すぐに実習ができるとのことだ(VMWareがあれば)。というか、これはうまい仕組みかも知れないと思った。

目次を見ると全体は4部構成。

1部はアセンブリ言語とコンピュータアーキテクチャ。

レジスタ、プロテクションリング、ハードウウェアスタック。なぜか10ページを使ってレガシーとしてリアルモードとプロテクトモードなどを説明、仮想メモリについていろいろ(効率とかメモリマップトファイルとか)、コンパイル処理、割り込みとシステムコール、計算モデルとしては、有限状態マシン、Forthマシン(スタックマシンのことだよな?)で、課題としてForthコンパイラとインタープリタ。はて、なぜこれが計算モデルの章なのだろう。

2部はプログラミング言語C。

基礎、型システム、コードの構造、構文のセマンティクスとプラグマティクス(意味と実際、なのだが、実際? 実態ではないのかなぁとか思う)。唐突にアラインメントの話。

そして良いコードを書くにはとして、選択、カプセル化、不変性、アサート、エラー処理、メモリー割当、柔軟性など。C11で。課題として画像の回転と、カスタムメモリアロケータ(これは面白そう)。

3部はCとアセンブラの間。

変換処理の詳細。つまり関数コールのシーケンス、volatile、非局所ジャンプとsetjmp、inline関数、restrictポインタ……(最適化の変換処理のことか)

共有オブジェクトとコードモデル。この章は再配置とPIC、GOTとPLT、プリローディング。どうでも良いけど、章題と実態がおれの感覚とはずいぶん違うな(これまでのところもそうだ)。

性能。最適化、キャッシング、SIMD、SSE/AVX。

マルチスレッド。難しいのはなぜか? 実行順序。強弱メモリモデル。volatile、メモリバリア、pthreadsの紹介(?)、セマフォ、Intel64の強さについて。ロックフリー。C11のメモリモデル。

付録。gdbの使い方。makeの使い方。システムコール(read、write、open、close、mmap、munmap、exit。性能テストの情報。参考文献。

520ページほど。

1部はどちらかというとトピックの紹介。アセンブリのリストはある。

たとえば有限状態マシンでは、最後に正規表現のNFAによる説明が2ページほどあって、問題117「よく知っている言語を使ってgrepに似たプログラムをNFAの構築によって実装してみよう。参考情報:Russ Cox. Regular expression matching can be simple and fast (2007)

という感じ。

一方、Forthはそれなりの長さのサンプル実装(アセンブリ)を示してForthマシンを説明している。課題はForthインタプリタの実装(当然、アセンブリ。sete、setl、setz、cpo。呼び出し先の退避にはr13,r14,r15を使え。ということからx64の話とわかる。自信がなければGforthでしばらく遊べ。

1部が150ページくらい。

2部がC11。セマンティクスのところは後でちゃんと読む(ぱっと眺めたところ、おれはちゃんと理解していない(知識として言語化されていないという意味)ことがわかった)。プラグマティクスの意味(言語仕様外だが、プログラムの振る舞いに影響するもの)。アラインメント、パディング。

13章の良いコードを書くには、は、ソフトウェア工学の話になるようだ。

3部。

変換処理:calling conventionの概念を再考して理解を深め、コンパイラがソスコードをどのように変換するかを詳述。

保護機構として、スタックに埋め込むセキュリティクッキー。アドレス空間のランダム化(なるほど)。DEPはわかる。

共有オブジェクト:ELFを思い出そう。から始まる。ffiの世界だ。

性能:高速化の神話。性能テストは特殊化されているし。プロファイルをしろ。コンパイラ作者はばかではないというか鬼のように賢いから、みんながよく書くコードパターンが恐ろしく最適化されている。手作業で最適化するのは不健全(コードが読みにくくなるし、保守は難しくなる)

まず、アルゴリズムの選択が重要。

具体的なコンパイラの戦略:スタックフレームポインタ省略。末尾再帰。共通式の除去。定数伝播。戻り値の最適化。分岐予測の影響(お、おう)。このへんまではわかる。実行ユニットの影響。リード・ライトのグループ化、わからん。後で読む。キャッシング、プリフェッチ。なんでプリフェッチのところでバイナリーサーチが出てくるんだ? メモリアクセスパターンが予測困難だから。valgrindのcachegrindモジュールを使って調べる。プリフェッチによってLast Levelキャッシュのミスが改善されている。なぜだ?後で読む。

キャッシュバイパス。巨大行列のアクセスでいかにシーケンシャルにアクセスするようにするか。ここでもvalgrind。

この章はおもしろい(しろそう)。

マルチスレッドがどう難しいか。

C11のメモリモデル。弱い。アトミックのサポート。メモリオーダリング。問題407:ミューテックスがあるとき、なぜ条件変数が必要なのか。問題408:メモリオーダリングでIntel64が保証するのは何か。といった問題が並ぶ。

付録。gdbってemacsで実行するのだと思っていたら(というか、そうやって実行しているのだが)、自分のXのGUIを持っているのか。知らんかった。

makeの説明はなんで? というレベル。

システムコール。

システムコールをアセンブリで発行するのは簡単だ。対応するレジスタを正しいパラメータ値に初期化して、syscall命令を実行するだけである。

そりゃそうだ。

低レベルプログラミング(イゴール ジルコフ/Igor Zhirkov/吉川 邦夫)

というわけで、すごくまっとうな本でした。

追記:本書の内容例


2018-01-05

_ ストーミーウェザーと有頂天時代(その顔は黒いか)

どちらが先かは記憶が定かではないが、多分、ストーミーウェザーが先だと思う。

ストーミーウェザーは、僕の記憶では、第二次世界大戦中に、米軍の黒人兵のために、彼らを慰問するために作成された映画だ。それまでハリウッドのコードでは、召使いと奴隷以外の役回りで黒人を出演させることはなかったのが、黒人兵に対する慰問という大命題のおかげで、初めて黒人が主演で黒人がほとんどの重要な役を占める映画として作られた(はずだ)。

記憶では、ボージャングル(ビル・ロビンソン)の一代記になっていて、蒸気船の小僧として雇われたボージャングルがタップの才能を認められてショービジネス界に君臨するまでを描いていた。途中、キャブキャロウェイがズートで歌いまくり踊りまくったり、タイトルのストーミーウェザーはリナホーンが歌うのではなかったかな。一度聴いたら少なくとも冒頭のストーミウェザーのザーの下降ジャンプは忘れることができない名曲だった(というか覚えているのだが、キャブキャロウェイも歌っていたような記憶があるのは何だろう)。

なぜかわからないが、蒸気船の小僧として雇われたボージャングルが、他の船乗りに言われてタップを踏むシーンは記憶に残っている。一通りタップを踏むと、相手がwell educatedな足の持ち主だ! と誉めるのだが、そのwell educatedという言い回しが気に入ったからだと思う。

このある時代を見事に切り取った傑作映画は、僕が確かユーロスペースで観るまで、日本では公開されなかったいわゆる封印映画だった。確か、記憶では、GHQが、黒人ばかり出てくる映画というものを恥じた(つまり国辱映画と考えた)だか何だか、つまるところ、通常のハリウッドコードを公開基準としたかららしい。

ストーミー・ウェザー [DVD]

この時期、他にもGHQが国辱映画として封印した映画がいくつか公開されて、そのうち1つはジョンフォードのタバコロードだった。プアホワイトというのはこういうものだという映画なのだから、こちらはわからないでもない(先進的な民主主義の豊な国アメリカというものを価値観として押し付けるにはいささか問題があるというのは、GHQの立場に立てば理解できる)。

タバコ・ロード [DVD]

それにしてもジョンフォードは大した監督だ。

で、おまけとしてキャブキャロウェイが来日して横浜のブントホテルでショーをやったのでわざわざ妻と観に行ったとか、2人組のタップダンサーがオリエンタルバザーの前を歩いていたとか、いくつかの記憶もある。

で、ボージャングルという名前を記憶しきったところに、RKO時代のアステア・ロジャースの有頂天時代がテレビで流されたので観たわけだ。もしかするとそのときはスウィングタイムというタイトルだったかも知れない。

すると、アステアが顔を黒く塗ってボージャングルのダンスを披露するシーンがあった。

その時、ストーミーウェザーの成立事情は知っていたのだと思う。それで、白人の観客たち(特に映画を観るしかない地方在住の人たち)は、どれだけ人気を博そうとボージャングルを観ることはできない(映画という手段はないわけだから)、それで代替物としてアステアが顔を黒く塗ってタップを踏むのかな、と納得したのを記憶している。

ただ、妙に荒々しさを強調した踊りで(もちろん、アステア固有の優雅な踊りとは趣を異にしている)、両脚を┌┐型に開いたジャンプを多用していて、それはストーミーウェザーで観たボージャングルの(これまた)優雅なタップ(とはいえ、既に老齢になっていたので本人が踏むタップはとても少なかったような記憶がある)とはえらく印象が違って、政治的な意図が透けて見えなくもなくて鼻白む思いをしたのは覚えている。

どう考えても、本来であればアステアはアステアとして、ライバルとしてボージャングルが彼自身で出演するのが映画としては正しかったのではなかろうか(だがそれはコードがある以上あり得なかったものだ)。

有頂天時代 THE RKO COLLECTION [Blu-ray]

(というわけで、アステア・ロジャースの作品としてはトップハットのほうが遥かに好きだ)

というようなことを思い出す昨今の黒塗り顔についてのいろいろ。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|

ジェズイットを見習え