Design As Implementation

自分でもしつこいと思うが、アーキテクチャについて。実際に先日経験したことから書き留める。 同僚の開発プロジェクトに助言をしていて、システムのおおまかな構造の把握・設計をレビューした。そのプロジェクトでは、やっかいな既存モジュールを活用するこ…

SEMAT “Call for Action” の日本語訳

いまさらなんだろうけど、SEMATという活動に注目した。 それでいろいろ調べていて見つけたものの一つが、The Essence of Software Engineering: The SEMAT Kernel で、日本語訳が「ソフトウェアエンジニアリングのエッセンス」にある。訳者は SEMAT Japan Ch…

甲状腺がんと事故との因果関係の帰無仮説は

影響は無いよ派 放射線影響考えにくい 甲状腺がん50人確定で県民健康調査検討委 PKA先生の、甲状腺検診はもっと普及してもいい という話 影響してるんじゃね派 1万人に2人-フクシマの小児甲状腺がん 甲状腺癌については、もともと「100万人に1人」とか…

ファイルスラック領域の偽装

スラック領域というのが争点の一つらしいですね。 http://bylines.news.yahoo.co.jp/egawashoko/20140323-00033814/ 関氏も多くの痕跡が「ファイルスラック領域」から出てきた、と述べた。ファイルスラック領域は、あるファイルの上に、それよりサイズの小さ…

PC遠隔操作 真犯人のメール

進展がありましたね。「自称真犯人からのメール(本日午前11時37分に送付されてきた)」 内容を読んでビックリしたので書いてみます。 以下、”真犯人”が本当にいると仮定して述べていきます。 技術的な内容 GUIDを利用した証拠偽造 AssemblyInfo.cs というの…

構造体とnullの比較

public struct S { public readonly long Offset; public readonly int Length; } こういう構造体があったとして、なぜ S s; if (s != null) { } がエラーじゃないのか不思議だったんですが、なんてことはない if (((object)s) != null) { } // auto boxing …

論文の剽窃は本当に罪なのか

STAP騒動で、論文の一部が他人の論文のコピペであったことが問題になっている。 著作権法があるのだから、独創性のある文章を無断転載すれば著作権法違反になることはもちろん間違いない。 しかし、それは外野がとやかく指摘することなのか? 著作権侵害は親…

真にエレガントな設計は動作しない

ちょっと前に見たテレビ番組に為末大が出演していて、子どもや後進へアドバイスしている場面が映っていた。 そのときの為末曰く、 走る競技で、”うでを良く振れ”とか”ももを上げろ”というのはナンセンスだ。 走る競技は最終的に早い者が勝つルールなのだから…

コミュニケーションを密にするというディスコミュニケーション

情報共有できていないという問題への解決方法として「コミュニケーションを密にする」というのを見た。 矛盾 それは、勉強ができない生徒に勉強をさせるのと、お金が貯まらない人に節約させるのと変わらない。つまり、問題を逆に言っただけ、あるべき姿のひ…

遠隔操作ウイルスで気になるところ

前回は無視したんですが、メソッド名などの他に気にしている点があります。前回の補遺になりますから、技術的な興味がある方だけ参考にしていただければと思います。 公開資料が不完全 まずは簡単な指摘から。警察庁のPDFには Main メソッドがありません。と…

遠隔操作ウイルス開発者のプロファイリング

世の中を騒がせてますね。素人が専門家にぼろ負けしてるという印象です。問題は素人が権力を持っていること? ウイルス自体が手に入ると良いのですが、どこにもないので、警視庁のページを見てみました(PDFのコピー禁止設定とか、情報提供する気あるのかっ…

ブログ迷走

はてなブログは AtomPub に対応してなくて、使えない。 Blogger はインポートがうまくいかなくて、いちいちCAPTCHAを要求されるのも面倒。 結局、ちょっと垢抜けなくてもはてなダイアリーを使い続けるのが良さそうだ。

テスト

はてなブログに投稿できる?

はてなブログのテスト

はてなブログに乗り換えてみようかと。 しかし、いつも使っている Windows Live Writer からはてなブログに投稿したい。 でも、AtomPubのURLは d.hatena.ne.jp でいいのかな……。どうみてもはてなダイアリーに投稿されているとしか思えないんだけど。 自動で…

アーキテクト

ソフトウェアアーキテクチャ/システムアーキテクチャ(以下、アーキテクチャ)が何がという問いに対して、IT業界は、混乱しているか議論を避けているように見える。私は、個人的にはアーキテクチャが何がついておおよその見解を持っているが、記事として公…

生産性の「向上」?

なにげなく生産性向上などと書いてしまうが、生産性は改善するものじゃなかろうか。 なぜなら、生産する主体は人だから。人に対して向上というのは、なにか違和感がある。まるで機械みたいだ。確かに、ソフトウェア工学という似非学問の大部分は人を機械とし…

リファクタリングは手術?

以前、「リファクタリングは手術に似てる」という人に会って、そうだなあと納得したのだけれど、どうも違う気がしてきた。そもそも手術は、人体が損傷・劣化するという前提があり、その変化した分を元に戻すか代替するということだと思う。対して、ソフトウ…

演算、手続き、ルーチン、モジュール、関数、メソッド

先日、関数とメソッドの違いを学生に聞いたら、分からんとのこと。せっかくなので自分的に整理する。 コンピュータの一番最初の処理――演算から。 演算 コンピュータは当初、計算のための道具であった。実際、最近まで「計算機」と呼ばれていたのはその名残。…

TxF (Transactional NTFS) はオワコン

TxF は将来サポートされなくなるらしい。 CopyFileTransacted の解説文より: Microsoft strongly recommends developers utilize alternative means to achieve your application’s needs. Many scenarios that TxF was developed for can be achieved thro…

IsSomething == true

同僚は次のようなコードスタイルらしい。 if( obj.IsExists == true ) { … } 私としては、”obj is exists” is true ? というふうに見えるので、冗長だなあと思う。もし、こんなふうに書いてあったら理解に苦しむ。 if( obj.IsExists != false) { … } こう書…

最も根本的なスキルは「想起」だと思う

仕事でソフトウェア開発スキルを扱うことが多いが、最も根本的で得がたいスキルは「想起」、つまり、それが必要とされることを認知する能力だと思う。これがなければ、どんなに知識を身につけても意味がない。 たとえば、「会議ではクロージングを意識する」…

行動ターゲティング広告

最近PayPalを利用する機会があり、Googleに “PayPal”, “PayPal 支払い”, “PayPal API IPN” などと検索しまくっていたら、Google提供のWeb広告がすべてPayPalになってしまった。 これぞまさしく行動ターゲティング広告、……なのだろうか。 PayPalと入れたからP…

「読み取り専用」は汎化ではない

InfoQ: .NETのリードオンリー コレクションインターフェースの物語 読み取り専用コレクションが.NET4.5で追加されると言う話。 記事は「ようやくかよ!」という感じだが、.NETチームのこれまでの判断は妥当だと思う。 面白いのが、IList<T>は、IReadOnlyList<T>か</t></t>…

リファクタリングはハノイの塔

InfoQ: リファクタリング中は考えることを止めよう 個人的には、リファクタリングに向き合うときはハノイの塔を解いている気分になる。 円盤(コード)を移動させる前に、完成までの手順が見えていなくてはならない。 完成までの手順が見えないなら、円盤を…

Bazaarの概念モデルは過度に複雑すぎる

DVCSを比較すると、いつも Bazaar が良さそうだという結論になる。 そうして試してみるものの、いつも「よくわからない」という結果に終わる。 何度も繰り返してたどり着いたのが Mercurial で、いまのところ不満はない。 しかしながら、Bazaar の何が良くな…

Thrift

Apache Thrift を自作ソフトの通信に使おうかと思って調査。 非同期のサポートがない。(THRIFT-1というプロトタイプがどこかにあるらしいが、リリースにはない。) メモリバッファの扱いが適当で、通信のたびに細かく生成しまくる実装になっている。GCへの…

Ghost in the Stack

メモリリークを取っていたが、最後の最後のヤツはこんなんだった。 次のようなコードでメモリリークする。 void UndertakeOnNewThread() { while(true) { Task task; task = WaitForTask(); Process(task); }} ただし、UndertakeOnNewThread は独立スレッド…

コンテキストに沿い、インテントを持ち、セマンティクスを踏まえ、シンタックスに則る。

UMLの重要性は明らかだが、UML記法に従っていれば有用だと思われている節がある。文法的に正しければ良いわけではない。良いUML図とは、コンテキストに沿い、インテントを持ち、セマンティクスを踏まえ、そしてシンタックスに則っている。 最も大切なのはイ…

ちょっとひどいと思ったオブジェクト指向の解説

http://www.csg.is.titech.ac.jp/~chiba/notes/aop03/index.html これはひどい。オブジェクト指向を誤解しているのでは。`03年とはいえ、、、。 非常に直感的に説明すると、オブジェクト指向ではシステムを全体から部分へ階層的に分割する。システム全体は、…

相互依存問題への間違ったアプローチ

学習する組織を読んでいる。 ちょっと前に記号と再帰という本も読んだ。 両者に共通するのは、再帰、フィードバックという概念。相互依存、循環、ループ。 現在容易に解決できない種類の問題は、かならずこのような性質を含んでいると思う。 私は昔から、問…