タグ

ブックマーク / xtech.nikkei.com (49)

  • 東証システム、全面刷新の真相---目次

    2005年11月から続いた情報システムを巡るトラブルで信用を大きく損なった東京証券取引所。その東証によるシステム再構築プロジェクトがこの1月、2009年後半の稼働を目指して格的にスタートする。開発ベンダーの選定にあたって、東証は初の国際入札を実施。18グループに及ぶ世界の有力ベンダーから富士通を選定した。そこに至る真相を、日経コンピュータ編集部が集中連載の形で詳報していく。 ・【真相1】18グループから勝ち残った富士通 ・【真相2】西室 東証社長兼会長 インタビュー ・【真相3】東証システム、10ミリ秒への挑戦 ・【真相4】東証システム、99.999%への挑戦 ・【真相5】東証システム、6億件処理への挑戦 ・【真相6】丸投げ体質からの脱却を目指す ・【真相7】開発の舞台裏、黒子に徹したNTTデータ ・【真相8】プロジェクトの実像、覚悟を決めた富士通

    東証システム、全面刷新の真相---目次
  • 第29回 グローバル変数の代わりに使えるReaderモナドとWriterモナド

    Haskellでは,グローバル変数の使用による副作用の発生を防ぐため,グローバル変数として使える可能性のある機能は,IOモナドやSTモナドといった特定のモナドでしか利用できないようになっています。しかし,ときにはグローバル変数に頼りたくなることもあるでしょう。 そんなときでも,物のグローバル変数を使わなければならない場合は実はあまりありません。たいていは,より制限された何らかのモデルで代用できます。代わりに利用できる機能さえ知っていれば,グローバル変数を使わずに済むのです。 今回は,グローバル変数の代わりに使用できる二つのモナドを紹介します。 「読み取り専用」のReaderモナド プログラムの実行時に決まるような大域的な情報を,プログラムの何個所かで共有するにはどうすればよいでしょうか? 同じ値を利用する場合,その値を引数やデータ型の一部として関数から関数へと受け渡していくのが常道です。

    第29回 グローバル変数の代わりに使えるReaderモナドとWriterモナド
  • パターンファイルは肥大化しすぎた

    トレンドマイクロは2009年からウイルス対策の方針を大きく転換する。ウイルス判定をトレンドマイクロが運用管理するサーバー上で行う技術「ファイルレピュテーション」を、同社製品に順次組み込んでいく。これまでパソコン上でいかに正確に早くウイルスを検知するかに心を砕いてきたはずだが、方針を変えたのはなぜなのか。トレンドマイクロに聞いた。 ファイルレピュテーションを導入する狙いは。 当社製品をはじめ現在のウイルス対策ソフトは、パターンファイルにある情報と合致する情報があるかどうかを調べることによりウイルスを判定してきた。しかし長年の蓄積でパターンファイルが肥大化してきた。当社製でいうと2008年末時点で、2005年1月時の約21倍のサイズになっている。クライアントパソコンのディスク容量やメモリーを圧迫してしまっていた。 新種用のパターンを従来のものにマージするなどして、できるだけパターンファイルのサ

    パターンファイルは肥大化しすぎた
  • 「テストをすべきなのは知っているが,現実にはできない」という現場の状況をいかに打破するか,気鋭のソフト開発者とテスト技術者がパネル討論

    「テストをすべきなのは知っているが,現実にはできない」という現場の状況をいかに打破するか,気鋭のソフト開発者とテスト技術者がパネル討論 Developers [Test] Summit 2008(デブサミTest) 「建前ではなく実際にテストを普及させるにはどうすればいいのか」。2008年4月23日,東京・九段で開催されたテストに特化したソフトウエア開発者向けカンファレンス「Developers [Test] Summit 2008(デブサミTest)」で「【徹底討論】テストなんていらない?!-テストを,どこまでやるべきか?」というパネル・ディスカッションが開催された。 司会を務めたのはタワーズ・クエスト プログラマ兼取締役社長であり,テスト駆動開発(TDD)の日での第一人者である和田卓人氏。同氏に,オープンソース・プロジェクト「Seasar」のチーフコミッタであるひがやすを氏,テストの

    「テストをすべきなのは知っているが,現実にはできない」という現場の状況をいかに打破するか,気鋭のソフト開発者とテスト技術者がパネル討論
  • オフショア開発で奮闘する中国人開発者の視点---目次

    チェンジビジョン社の設計支援ツール,JUDEの開発は,日中国での分散開発で行われている,いわゆるオフショア開発である。 私は,現在日が行っている典型的なオフショア開発には,大きな問題があると考えている。それは「日が上流」「中国が下流」というわけ方であったり,「いちども顔を合わせたことのない人がメールと仕様書のやり取りをしている」というコミュニケーションの仕方だったりする。 私たちは,2002年から様々な開発手法,コラボレーション手法を試してきた。やり方を変えながら,改善してきたのだが,大きくコミュニケーションが変わったのは,ある日在住の中国出身技術者が,チームに偶然加わったことだ。それが,この連載の著者,周翼(しゅうよく:周が苗字,翼が名前)である。 もともと,私たちは英語とUMLを使った図,そしてコード自身で会話しており,いわゆる「ブリッジSE」と呼ばれるような,中国語と日

    オフショア開発で奮闘する中国人開発者の視点---目次
  • 第1回 LINQの特徴とメリットを知る

    四国のSOHO。薬師寺 国安(フリーWebプログラマ)と,薬師寺 聖(デザイナ,個人事業所自営,http://www.SeinDesign.net/)によるコラボレーション・ユニット。XMLに関する記事や著書多数。両名とも,Microsoft MVP for Windows Server System - XML (Oct 2003-Sep 2008) http://www.PROJECTKySS.NET 2007年12月,Visual Studio 2008日語版(以下,VS 2008)がリリースされた。開発者の注目の的は,「LINQ」(Language-Integrated Query,統合言語クエリー)である。LINQと,任意の開発言語(Visual BasicやC#)を使いこなせば,データ処理が劇的に変わるのは明らかだ。 連載では,「LINQ to XML」の基を5回にわたっ

    第1回 LINQの特徴とメリットを知る
  • 第15回 Haskellでのデバッグのコツをつかむ

    プログラムが思った通りに動かないとき,あるいは他の人が書いたプログラムを理解したいときには,プログラムの挙動を調べてみるでしょう。例えば,「入力」に対する「出力」を調べたり,プログラムが保持する「状態」を確認することで,挙動を理解しようとするはずです。そうしたときに使う手法が,プログラム動作中の変数の値といった情報を適宜出力する,いわゆるトレース(trace)です。C言語では情報の表示によくprintfを利用することから,printfデバッグとも呼ばれます。 Haskellでトレースを使うには,二つの問題があります。一つは,Haskellの型は必ずしも値を表示できるものばかりではない点です。これは回避が容易なので,さほど問題ではないでしょう。より深刻なのは「Haskellでは,副作用によるバグの発生を防ぐために,I/Oの扱いに対して制約がある」という点です。この結果,Haskellではトレ

    第15回 Haskellでのデバッグのコツをつかむ
  • 第12回 アジアの人材を活用する勘所

    システム開発においてアジア各国のソフト会社に開発を委託しようとする気運が高まっている。しかし,過去にも何度か“ブーム”に終わっており,自社のプロジェクトに適用し成功させることは難しい。技術的に主導権を握り,「活用はするが依存しない」体制で臨まなければ失敗する。インド,中国,ベトナムなどのソフト会社を適材適所で活用してきた経験を基にポイントを解説する。 岡崎 邦明 記事は日経コンピュータの連載をほぼそのまま再掲したものです。初出から数年が経過しており現在とは状況が異なりますが、この記事で焦点を当てたITマネジメントの質は今でも変わりません。 IT(情報技術)産業のグローバル化によって,インド・中国はもとよりアジア各国で,優秀なプログラマやSEが大量に育成されている。ソフト開発においてこれらの外国人エンジニアを活用すれば,開発コストの削減,最新技術の採用,海外での事業展開の基盤構築,という

    第12回 アジアの人材を活用する勘所
  • OOM Killer

    OOM Killer(Out of Memory Killer)は,システムが実メモリーと仮想メモリー空間(スワップ領域)を使い切り,必要なメモリー領域を新たに確保できない場合に,プロセスを強制終了させて空きメモリーを確保する,Linuxカーネルの仕組みです。OOM Killerは,空きメモリーが確保できないことによりシステム自体が停止するという最悪の事態を避けるために用意されています。 OOM Killerは,空きメモリーを十分確保でき,システム上損失のなるべく少ないプロセスを選んで,強制終了します。また,強制終了するプロセスの数がなるべく少なくなるようにしています。実際に,どのプロセスを強制終了するかは,カーネル内部のbadness()関数が決めます。 ただし,OOM Killerにより,システム上大切なプロセスが強制終了させられることもあります。システム・トラブルの原因に成り得ること

    OOM Killer
  • 第16回 すべてのものは関数である

    すべてのものは…である SmalltalkやRubyなど,いわゆる生粋のオブジェクト指向言語では,「すべてのものはオブジェクトである」(everything is an object)と言われることがある。JavaC++などと異なり,整数の「123」や浮動小数の「4.56」といった,基データ型の値もオブジェクトとして扱うことができるからだ(ちなみに,現在のJavaには自動ボックス化という機能があり,基データ型からオブジェクト型への変換が自動で行われる場合も多い。しかし,両者の差異が全くなくなったわけではない。例えば123.toString()のようなメソッド呼び出しはできない)。 では,オブジェクト指向言語のまねをして,関数型言語において「すべてのものは関数である」と言うことはできるだろうか? もちろん,オブジェクト指向と違って,関数型プログラミングはあくまで「数学的な(=副作用のな

    第16回 すべてのものは関数である
  • 5分で人を育てる技術 (33)“仕事が速い人”の7つの特徴(前編):芦屋広太一つ上のヒューマンマネジメント:ITpro

    前回は,「質問の効果」に関する話をしました。「質問」は非常に重要で,効果的に使えば「自分や他人の理解を深める」こともできますし,もっと高度な仕事の場面でも使えます。例えば,「相手の主張を確認し,論点を明らかにしながら効果的な説得をする」ような場面でも質問する力は大変役に立つのです。 しかし,質問が上手くない人もたくさんいます。そんな人たちには,ぜひ「質問」のテクニックを学び,実戦で生かしてほしいと思います。たかが「質問」なのですが,上手く使えるようになると,仕事が面白いほど上手く進むようになるからです。せひ,今後は考えて,工夫した「質問」をするようにしてください。 さて,次のエピソードに移ります。今回から,岡田・坂・私の3人のチームに藤井と一緒に参加した若い部下である「小島」に関するエピソードを紹介していきます。 小島は,藤井を含めた私たちよりもだいぶ若い社員です。小島は入社以来3年間,

    5分で人を育てる技術 (33)“仕事が速い人”の7つの特徴(前編):芦屋広太一つ上のヒューマンマネジメント:ITpro
  • Webプログラミング実力アップ---目次

    「ちょっとしたスクリプトは書けるようになったけれど,どうしても初心者のレベルから脱出できない」。そんな悩みを抱えているWebプログラマの方は,「プロのやり方」をのぞいてみてください。Perlを使ったCGIプログラミング一つ取っても,プロは高品質のコードを書くための秘訣を実践しています。Web開発の現場では常識となっているWebアプリケーション・フレームワークの活用,付け焼き刃では太刀打ちできないセキュリティ対策,品質を確保するうえで欠かすことのできないテストなど,プロのスキルを身に付けて1ランク上のWebプログラマを目指しましょう。 Part1 正しいPerl/CGIの書き方 対談「初心者とハッカーが共存できるPerl」 ──KENT-WEB 見上氏 & Shibuya.pm 竹迫氏 Part2 Webアプリケーション・フレームワーク入門 Part3 セキュアWebプログラミング入門 Pa

    Webプログラミング実力アップ---目次
  • Part3 JavaScriptに学ぶ「言語の拡張性」:ITpro

    サイボウズ・ラボ株式会社に勤めるWebプログラマ。出身は石川県金沢市。21歳でプログラミングに出会い,IT戦士になることを決意。それからというもの,寝ても覚めてもプログラムを書き続け今に至る。はてなでamachangというidでブログを書いてます。 最近,「とんがった」プログラマの間ではJavaScriptがちょっとしたブームです。あちこちの書店で,JavaScriptの書籍を見かけるようになりました。「はてブのホッテントリ」*1にも,よくJavaScriptの記事が入っています(図1)。 その人気を象徴的に示しているが,Shibuya.js*2という団体が開催しているJavaScript関連のイベント「Technical Talk」です。1回目は2006年4月,2回目は6月に開催されましたが,いずれの回も予約が殺到し,たった1日で席が埋まってしまいました。これには「JavaScript

    Part3 JavaScriptに学ぶ「言語の拡張性」:ITpro
  • 第8回 遅延評価の仕組み

    これまでの回で,何度か遅延評価の持つ性質について語ってきました。皆さんの頭の中には,すでに遅延評価に対して「なんとなくこういうものだ」という漠然としたイメージができていると思います。 多くの場合にはそうした漠然としたイメージだけでも十分なのですが,それでは困る場合もあります。例えば,プログラム全体の最適化(optimization)のために関数やデータ構造の効率化(efficiency improvement)を図ろうとする場合,遅延評価に対する理解がなければ完全に手探りで行うしかありません。 残念ながら,前回のIOモナドと同様に,遅延評価を実現するための仕組みもまた,Haskell標準ではほとんど触れられていません。実装のための余地を残しておくためです。ただ,IOモナドの場合と同様に,「このようなモデルで,このような性質を持つ」という仕様外でのだいたいの合意は存在します。 そこで今回は,

    第8回 遅延評価の仕組み
  • 第1回 ルートキットの進化を追う

    セキュリティコンサルタント 村上 純一 昨今,ボットやスパイウエアなどのマルウエアによる被害が増加している。こうした最近のマルウエアには,ユーザーから自身の姿を隠すために,ルートキットと呼ぶソフトウエアが併用されていることが多い。ところが,ルートキットの危険性の認知はその被害の規模に反して低い。これはルートキット自体が「隠れることを目的とする」という性質を持つことに起因していると思われる。そこで,稿ではルートキットの現状に至るまでの経緯と,その実態を紹介する。 1997年から始まった 1997年ごろに登場した初期のルートキットは,SolarisやBSD,LinuxといったUNIXを対象としたものがほとんどだった。こうした初期のルートキットは,名前から推測できるようにツールキットとしての意味合いが強く,侵入者がコンピュータのコントロールを奪取するための不正プログラムの“詰め合わせ”だった

    第1回 ルートキットの進化を追う
  • ITエンジニアの「やってはいけない」---目次:ITpro

    設計・実装から運用,メソドロジまで,最新アンチパターンを徹底解説 先輩から教わったことのなかに多くの「やってはいけないこと」(アンチパターン)があるだろう。だが,その理由を問われると,うまく説明できないことがあるのではないだろうか。突き詰めて考えると,状況によっては「やっても構わない」こともあるし,技術の進化に伴い「やれるようになってきた」こともある。そこで設計,実装,テスト,運用,メソドロジの各分野について,取材を通じて浮かび上がった最新アンチパターンを徹底解説する。テーマごとに「どれくらいやってはいけないか」のレベルも表した。レベル3~レベル1の3段階あり,レベルの数字が大きいほど,やってはいけない度合いも大きい。 関連サイト: ■設計編 ■メソドロジ編 ■実装編 ■テスト編 ■運用編 ■サーバー運用編 ■データベース編 ■セキュリティ編 ■記録メディア編 ■方式設計編 ■内部統制編

    ITエンジニアの「やってはいけない」---目次:ITpro
  • 第13回 「表明」と「契約」による命令型プログラムの形式的検証

    この連載では,OCamlやλ計算など,いわゆる関数型言語を中心に,プログラミング言語理論に関連する話題を紹介してきた。λ計算などの関数型言語は,クロージャや型推論といった高度な機構を簡潔に議論することができるので,基礎研究では非常に便利だ。第10回や第12回に出てきたMyFun言語も,実はλ計算の一種だ(MyFun言語の「fun x -> 式」が,λ計算の「λx. 式」にあたる)。 しかし,プログラミング言語理論の研究者も,関数型言語ばかり研究しているわけではない。現存する最古の高級プログラミング言語であるFortranは命令型言語だし(Fortranの直後に登場したLispは関数型言語だが),そもそも現代のコンピュータの機械語は,ほぼすべて命令型言語だ。命令型言語の研究をしないわけがない。 実際に,命令型言語に関する理論は数多い。その中でも命令型プログラムの仕様を記述・証明する「ホーア論

    第13回 「表明」と「契約」による命令型プログラムの形式的検証
  • 第12回 「型推論」の実装法

    型推論:「コンピュータ以前」からML,Java 7まで OCamlをはじめ,MLやHaskellなど,多くの型付き関数型言語には型推論という機能がある。この連載でも,暗に陽に,OCamlの型推論機能を利用してきた。 例えば,以下のような関数say_hello_toを定義してみよう。文字列引数nameを受け取り,nameの前に定数文字列"hello "を付け加えて返す,という関数だ。 # let say_hello_to name = "hello " ^ name ;; val say_hello_to : string -> string = <fun> このように,引数や返り値の型を指定しなくても,say_hello_toはstring ->string型(文字列を受け取り,文字列を返す関数)であると自動推論される。 ただし,(例えばプログラムを読みやすくするために)もし型を書きたけれ

    第12回 「型推論」の実装法
  • Windows XP/2003のTCP同時接続数制限とその回避:鵜飼裕司のSecurity from KAGURAZAKA:ITpro

    Windows XP SP2とWindows Server 2003 SP1のTCP/IPスタックでは、不完全な外向きのTCP同時接続数を10接続に制限しています。接続数が10に達した場合、接続要求はキューイングされ、ある一定間隔で処理されるようになります。 この制限は、ホストがワームに感染した際、他のホストへの影響を最小限にするため、Windows XP SP2とServer 2003 SP1で新たに実装されました。しかしこの制限は、不完全な外向きのTCP接続を大量かつ同時に張るアプリケーションにおいては、大きなパフォーマンス低下を招く可能性があります。例えば、P2Pシステムや脆弱性スキャナなどが挙げられます。特に脆弱性スキャナは業務で利用するケースが多いと思いますので、パフォーマンス低下は非常に致命的です。 これを回避する選択肢の一つとして、TCP同時接続数制限の無いプラットフォームを

    Windows XP/2003のTCP同時接続数制限とその回避:鵜飼裕司のSecurity from KAGURAZAKA:ITpro
  • フリー言語で真のプログラミングを学ぶ--目次:ITpro

    プログラミングの世界は広大です。自分の「母語」であるプログラミング言語を極めることも大切ですが,他の言語に目を向けることで驚くほど世界が広がることがあります。他の言語からエッセンスを学ぶことで,汎用的な「プログラミング力」が格段にアップするのです。 この特集では,個々の言語から何が学べるかについて具体的に解説しています。まず,Rubyの開発者でありプログラミング言語マニアとしても知られるまつもとゆきひろ氏に「複数のプログラミング言語を学ぶ意義」について語っていただきました。まつもと氏には,プログラミングの基礎となるコードの読み方の解説もお願いしました。 注目の言語,RubyJavaScriptについては,気鋭の若手開発者のお二人に解説していただきます。さらに,伝説のプログラミング言語Eiffelの解説を,Bertrand Meyer氏の名著「オブジェクト指向入門」の翻訳で知られる酒匂寛氏

    フリー言語で真のプログラミングを学ぶ--目次:ITpro