2012年6月24日

[書籍]リーダブルコード

ブックファースト 新宿店The Art of Readable Code (amazon)の翻訳である

リーダブルコード (amazon)/Dustin Boswell、Trevor Foucher著/角征典訳/オライリージャパン/ISBN978-4-87311-565-8/2,520円

を購入。

Firebird 2.1.5

Firebird Ver2.1.5がリリースされています。

Firebird: Firebird 2.1.5
Firebird 2.1 Release Notes (PDF)

元ねたはFirebird News » Firebird 2.1.5 sub-release is available

2012年6月13日

Microsoft Monthly Update 2012/06

今日はMicrosoftのセキュリティアップデートの日です。
MS12-036
MS12-037
MS12-038
MS12-039
MS12-040
MS12-041
MS12-042

2012年6月7日

第22回エンバカデロ・デベロッパーキャンプ(東京)まとめ

第22回エンバカデロ・デベロッパーキャンプ(東京)の個人的なまとめです。なお以下の内容については無保証ですのでご注意ください

【G1】キーノートセッション「エンバカデロ2012年製品戦略」
  • 公式レポート: 第22回 エンバカデロ・デベロッパーキャンプ キーノートセッションレポート

  • 2011年の業績は好調で、売り上げは10%成長して約75億円だった。手元資金は潤沢である。

  • 2012年以降に向けて3つのことを考えている。
    1. 既存製品: RAD Studio XE3、ER/Studio portal
    2. 買収: 資金的な余裕があり、景気の低迷で相対的に安く買収を行えるため、年内に1~3社程度の買収を目指している
    3. AppWave

  • 2012年の製品計画
    • 新世代コンパイラアーキテクチャ
      • LLVMをベースとし、

        Delphi F/EまたはC++ F/E(=Clang+PME) → LLVM IR → LLVM Intel/ARM/Other CPU Code Gen

        という構成にコンパイラを再構築する(コンパイラにおけるフロントエンド、バックエンドについてはwikipediaのコンパイラの設計の項を参照)。
    • XE3
      • Delphi/C++: iOSにネイティブ対応
      • C++Builder: x64対応
      • FireMonkey: Hyper-Real 3D UI、ホログラフィック 3D UI
      • HTML5: ビジュアルHTML5/CSS3クライアント開発 - Delphi/C++Builder/RadPHP

  • C++Builder 2012ロードマップ
    • 64bitツールチェーン: IISシェルエクステンション、SQL Serverインタフェース、64bitデバイスドライバ
    • C++11: BoostACEに対応
    • ARM: iOS/Andriodサポート、ARMv7バイナリの出力、FireMonkeyでデバイス(GPSや加速度計などのセンサ)のネイティブサポート
    • スケジュール:
      • 現在ベータ1で、まもなくベータ2が始まる
      • 2012年後半(Q3): C++11、x64、Hyper-Real Holographic(HRH)
      • 2013年初め: ARM iOS/Android

  • ER/Studio
    • データガバナンス、クロスモデルトレーサビリティ
    • メタデータのソーシャライズ
    • Social Portal
    • 最大の競合先であるCA(おそらくERWinシリーズ)が日本語へのローカライズを今年からやめる(注:本当かどうかは確認できませんでした)のでチャンスと考えている

  • AppWave: 今年も積極的にバージョンアップを進める

【T2】Delphi/C++Builderテクニカルセッション「RAD Studio次期バージョンプレビュー ~ 64-bit化を進めるC++Builder」
  • C++Builder
    • C99C++11標準への準拠度の向上
    • LLVMベース(ベータ1ではまだx64のみ)
    • ARM上ではGDBでデバッグすることになる
    • STL(Dinkumware)、Boost(BoostPro)、ACE(ADAPTIVE Communication Environment)、CORBA(TAO)をサポートする予定
    • Windows x64、iOS(シミュレータ、デバイス)、Android

  • Delphi XE3
    • FireMonkeyの強化
      • アクションリスト
      • ジェスチャ
      • アンカー
      • レイアウトマネージャ
      • Audio/Video: DirectShow/QuickTime
      • 物理エンジン
      • Indy for iOS
      • dbExpress for iOS
    • FPCベースからLLVMベースへの移行

  • C++11: C++で追加された便利な機能の紹介 - autoによる型推論lambdaなど

【T3】Delphi/C++Builderテクニカルセッション「FireMonkey道場」
【T4】Delphi/C++Builderテクニカルセッション「アプリの肥大化、チームメンバーの増大など!プロジェクトの拡大にRAD環境でどう対応するか?」
【G5】Q&Aセッション「何でも質問!アスク・エンバカデロ」
  • エンバカデロ・テクノロジーズの全世界における日本の売り上げの比率は8%程度
  • Clang/LLVMはおそらくオープンソースプロジェクトのものからフォークした独自のものとなる(ような雰囲気のことを言っていた)
  • PC上のIDEのシェアはMicrosoftが80%、Embarcaderoが10%、それ以外が10%程度と認識している

【G6】ライトニングトーク「共有!みんなの開発事例、開発経験、テクニック」
個人的な感想など:
  • これからの1年は筑木さんのターンらしいです。C++11とかBoostとか。
  • ClangやLLVMをベースに、とはいっても、いまどきのモダンなIDEではコンパイラから非常に多くの情報を取り出しており、それらの部分はまったく新規に作り込みが必要なので結構大変らしいです。
  • コンパイラの再構築についてはXE3で全部まとめて、という形にはならないのかも。デモで使用していたベータ1ではC++Builder/x64(=Clang+PME、x64 CodeGen)のみが新しくなっており、RTMまでにDelphi F/Eやx86/ARM CodeGenが出揃うかどうかは…。(以下自粛)
  • 資金的な余裕があるのならインストーラのメーカを買収するとかオープンソースのインストーラに出資するとか考えてほしいですね。
  • 参加されたある方から『午前中にキーノートなどの偉い人向けのものをやっても偉い人は朝っぱらから来られるわけがない、ましてや五十日(ごとおび)や月末なんて無理、偉い人の理解がなければ下っ端はこんなところに1日中いられないんだからそこのところを考えてほしい』というお話を聞きました(懇親会で)。確かにそのとおりですよね。"デベロッパー"キャンプとはいえ、勤務時間中に自由に行動できる人はそれほど多くはないわけで(自分は勝手気ままにやらせてもらってますけどね)。キーノートは夕方ラス前くらいに設定して、それ以前の時間にテクニカル系のセッションをやるというのもひとつの考え方かもしれません。

2012/06/08追記: セッション資料のダウンロードが可能になっています(T3、G6のみ)。ライトニングトークは時間の関係で説明されなかった部分などがあるのでダウンロードして確認がお勧め。

第22回 エンバカデロ・デベロッパーキャンプ - セッション資料ダウンロード

2012/06/11追記: キーノートの公式レポートのリンクを追加しました。

2012/06/15追記: CodeZineに関連記事が掲載されています。

次期C++Builderはアーキテクチャを刷新 ~「エンバカデロ・デベロッパーキャンプ東京」レポート(1/3):CodeZine
開発ツールベンダーの老舗が語る C++によるソフトウェア開発の今と将来性(1/3):CodeZine

2012/07/02追記: IT Leadersに関連記事が掲載されています。

コンパイラを全面改良、異機種クライアント向けアプリの生産性向上へ~米エンバカデロ・テクノロジーズ | IT Leaders

2012年6月6日

指定されたビットを交換する

整数型の値の指定された任意の2つのビットを交換する方法。
function ExchangeBits(Value: Integer; Pos1: Integer; Pos2: Integer): Integer;
var
  n: Integer;
  t: Integer;
begin

  Result := Value;

  n := Pos1 - Pos2;
  if n = 0 then
  begin
    Exit;
  end;
  if n < 0 then
  begin
    Pos2 := Pos1;
    n := -n;
  end;

  t := ((Value shr n) xor Value) and (1 shl Pos2);
  Result := Result xor t;
  Result := Result xor (t shl n);

end;
元ねたはびびすけさんのビット交換 (RunRunDietOnline)。昔からある(バッド)ノウハウのひとつであるXORによる値の交換の応用ですね。

2012年6月1日

2012/06開催のウェブセミナー