CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。
近年、ハードウェアの性能向上などにより、IT業界をめぐるインフラは、ようやく市場の要求に耐えうるようになってきた。以前はプラットフォームの陳腐化によって5年と持たなかったソフトウェアの平均寿命は、ここへきて徐々に延びつつある。 このような状況の中でソフトウェアに求められるものは、繰り返し行われる機能追加に耐えうる「拡張性」と、長期に渡って品質を保てる「保守性」だ。これらの課題については、クラウドのような分散コンピューティング技術や、オブジェクト指向デザインのような設計思想といった大きな枠組みの中で数多く議論され、ソフトウェア技術の進歩を押し上げてきた。「実際の現場においてこれらの課題をインプリメントするのは、システム設計者やSEといった上流工程を任された人間の役目である」と一般に言われている。 彼らのアウトプットは、基本的に文書(Document)だ。文書は日本語や図から構成されており、読
はじめに ソースコードは設計であり、コードの記述は品質に直結するのは言うまでもない。ちなみに、プログラマにとって特に重要なのは保守性だ。コードは書いた直後から保守対象となるからだ。コードは要求文書の範囲で動けばいいと思っている人がいれば今すぐ、ソースコードをコピペして100klに増えるプラグインがいつの間にかインストールされる呪いをかけてあげよう。幸い、ここを読んでいる人にはそんな人はいないだろうと思うけれども。 ということで、コードの品質を下げる要因、すなわちシステム全体の品質を下げる要因となり、かつ使われやすいアンチパターンを挙げ、対策を検討していくことにする。対象は以下: 出力パラメータ 処理状態返却 意味のある配列 無意味な初期化 多すぎるtry-catch 暗黙の順序 コンパイラ警告の無視 過剰なコメント e.printStackTrace() 出力パラメータ メソッドの引数にオ
ぐぬぬ。。。せっかくのご指名ですが。。。 JVMがOSごとにどの計時関数を呼び出すのかすら、自分はろくに知らないのです…無念だ。 でも、「ネタを振られたら全力で撃ち返せ」ってじっちゃが言ってた。 というわけで、最適化よりもずっと手前の話題、JVMの時間取得まわりのコードを眺めてみようと思います。 Systemクラスのソースコードを見ると public static native long currentTimeMillis(); と、native宣言されている。ここから先はネイティブの世界。VMの実装依存の世界でもある。 Javaパフォーマンス計測 そんなタイマーで大丈夫か? - プログラマーの脳みそ そですね。では、その世界を確認してみましょう。 ゴール Javaで時間計測を行った時に各OSで最終的に呼ばれるAPIとその精度について、JDKのソースコードおよびドキュメントを元に把握する。
米10genは3月16日、オープンソースのドキュメント志向データベースシステム「MongoDB 1.8」を公開した。リクエストが多かったというジャーナリングなどの新機能が加わっている。 MongoDBはドキュメント志向のKey-Valueストア型データベースシステムで、SQLを使わない「NoSQLデータベース」と呼ばれるものの1つ。Python、PHP、Ruby、Javaなどから利用するためのドライバも公開されている。 最新版は2010年8月に公開されたバージョン1.6のフォローアップリリースとなる。最大の特徴は、新機能となるジャーナリングストレージエンジンの追加。これにより、クラッシュ時に普及作業が高速かつ安全に行えるという。 このほか、1.6で導入された分散運用機能のシャーディングを改善し、スプリットやバランスなどが高速化し、全体のシステムへの影響が抑えられたという。同じく1.6で加わ
メタモデル記述をJavaで書いて解釈するってのが前回の主張ですが、GAE以外のケースでいくらかうまくいかないものを発見。 たとえば、HogeがFooを参照していて、それぞれのメタモデルがHogeMetaとFooMetaであるとすると、HogeMetaは次のように書かなきゃいけない。 public class HogeMeta { // FooはFooMetaからあとで生成されるので、いまは参照できない public static final Property<Foo> foo = ...; } そうすると、FooじゃなくてFooMetaを参照しないといけない。 public class HogeMeta { public static final Property<FooMeta> foo = ...; } もしくは遅延を掛けておく。 public class HogeMeta { pub
ZEN-Playerはシンプル、かつ必要最低限の機能を備えたWebベースの音楽プレーヤ。 ZEN-PlayerはHTML5製のフリーウェア(ソースコードは公開されている)。Webサイトやサービスは時間が経つにつれてどんどんリッチに、そして複雑になっていく。決して悪いことではないが、時にあまりの激しさに疲れてきてしまうものだ。 プレーヤはこんなにシンプル Webサイト側もそれを認識していて、時々リニューアルしては機能をごっそりと削ったりデザインをシェイプアップする。そうやって徐々にサービスが磨かれていくのだ。同様に磨き抜かれた、WebベースのオーディオプレーヤがZEN-Playerだ。 ZEN-Playerを表示すると大きな丸いアイコンだけが表示される。クリックすると音楽が再生されはじめる。再生中は円が回転し、再生されている様子が分かるようになっている。もう一度クリックすれば音楽が一時停止す
SnippetはjQuery/JavaScript製のオープンソース・ソフトウェア。ブログやWebサービスでプログラミングコードを扱っているのを見ることは多い。そう、ソースコードはコンテンツなのだ。Tips、関数、オブジェクトなど様々なコードがコンテンツになり得る。 ハイライト例と実際の使い方 そんなプログラミングコードを表示する際にJavaScriptのライブラリを利用することがよくある。幾つかあるが、ポイントは対応しているプログラミング言語と表示方法の多様さだ。その二つに重点を置くならSnippetは注目したいライブラリだ。 Snippetが対応するプログラミング言語は実に15種類もある。C/C++からはじまって、各種スクリプト言語、SQL、XML、Java、HTML、CSSなどに対応している。さらに拡張することでMakefileやLDAPファイル、Diff、Changelogといった
「コードの読まれ方が分かった」、工数見積もり精度向上に寄与:奈良先端科学技術大学院大学 森崎修司氏らが発表 「ソースコードの読まれ方の傾向がまた1つ明らかになった。これで派生開発、保守開発の工数見積もりの精度が向上する」――奈良先端科学技術大学院大学 森崎修司助教らの研究グループは、2009年9月~11月にかけて行ったソースコードリーディングのオンライン・ハンズオン、2010年1月、2月に行ったイベント「ソースコードリーディングワークショップ」、ほか3回におけるハンズオンの分析結果を発表した。 総計126人に、保守/派生開発プロジェクトを模した形式で複数のソースコードを読んでもらい、それぞれにかかった時間を計測、分析したところ、「ソースコードの読解時間はソースコードの行数だけで予測することは難しい」「大規模な変更の場合、コードレビューの経験があるとソースコードの読解時間を短縮できる」ことな
RSyntaxTextAreaはJava製のオープンソース・ソフトウェア。何度も書いているがWebブラウザのテキストエリアの貧弱さにはがっかりさせられる。あんな表示では新しく文書を書こうという気にはとてもなれない。特にテキストエディタに求める機能が多いプログラミングなど全くできそうにない。 Javaアプレットのデモが提供されている Webブラウザ自体の進化には期待できそうにない。プラグインまたはそれに類するソフトウェアが変えていくしかない。JavaScriptやCSSを使ったハイライタが多い中、RSyntaxTextAreaはJavaを使ってテキストのハイライトを行っている。 Javaアプレットということもあって敬遠されてしまう方もいそうだが、JavaScriptで無理矢理作るよりも実現可能性は高いのではないだろうか。もちろんJava製なのでGUIアプリケーションに組み込むこともできる。ソ
Ham CutletはRuby/Sinatra製のフリーウェア(ソースコードは公開されている)。時々見かけるのだが、インデントが全く無視されたソースコードはとても見がたいものだ。Pythonだったら動きようもないが、他の言語の場合無視しようと思えばできてしまうので、とても辛い。 こんなに汚いソースコードが… プログラミング言語の場合、それでも統一はある程度できているのではないだろうか。問題はHTMLだ。時々ものすごいソースコードに出くわしたりすることがある。そんな時に使いたいのがHam Cutletだ。 Ham Cutletは既存のHTMLソースコードを貼付けて実行し、インデントを綺麗にして表示してくれるソフトウェアだ。インデントがきちんとすれば、タグの関連性が分かりやすくなりデザインの問題も発見しやすくなる。完了したソースはそのままコピーして利用できる。 こんな綺麗なHTMLに! 最近は
Google Code PrettifyはJavaScript/CSS製のオープンソース・ソフトウェア。Google Codeではリポジトリにあるソースコードをオンラインで閲覧する機能がある。多様な言語に対応しており、色づけによってソースコードの閲覧が容易になる。 JavaScriptの正規表現 そんなハイライトライブラリがGoogle Code Prettifyだ。Google Codeに限らず容易に使えるインタフェースが提供されているので、任意のソフトウェアやブログに組み込むことが出来るだろう。標準で多数の言語に対応していることもメリットの一つだ。 対応している言語はCSS/Bash/C/C++/Java/JavaScript/Perl/Python/SQL/XML/HTML/XHTML/XSL/WhiteSpace/Lua/VBScript/Haskell/OCaml/Lisp/Sq
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く