(12/03/01~)

12/03/01

21th デベロッパーキャンプ資料加筆修正
 Update 4 は、

 の修正が多い。細川さんも俺も涙目 (^o^)/

Rad Studio XE2 Update 4
 公式フォーラムの FireMonkey スレッド "Update 4: EVERYTHING blurry!" で 「ブラーが!」、「ブラーが!」 言われてるけど、TrueType のフォントをチョイ大きめで使えばむしろキレイに見えるんだがなぁ...フォントサイズを 8pt とか 9pt とかでデザインしてるんじゃないのか?

 てか、ハッキリクッキリフォントだけ使おうと思ったら、FireMonkey のウリの一つである "回転&スケール変更ができなくなる" じゃないか。


2012/3/4

今日。
 日付のトコがおかしいのはワザとです。

あと一週間か...。
 毎度の事ながら 「早く当日にならないかなー」 とか 「当日が来なければいいのに」 とか複雑な感情が入り混じるなぁ、この時期になると。

 さて、今回のデブキャンは "僕の担当セッション" と "懇親会" 以外は USTREAM でも配信される模様です。僕自信がリモート参加なので、担当セッションは GotoWebinar 経由のみとなります...会場に僕の代わりの "クマのぬいぐるみ" を置いといて USTREAM で中継するというのも絵的にはシュールで面白いと思いますが (w

 こういった形態の場合、リモートで参加される場合には、GotoWebinar をメインに USTREAM も同時進行で観るのがオススメです...会場の雰囲気が伝わってきますのでね。

 Update 4 がリリースされた事により、ネタがすべて見直される事になりました。

 なんだかんだプラスマイナスした結果、当初の予定より 1 ページ増えてしまいましたとさ (w

IBConsole 日本語版+α
 Unicode 版 (32bit / 64bit) の rel.18 をリリースしました。XE2 Update 4 で再コンパイルされています。

 スタイル (VCL スタイル) も変えられますよ。Update 4 でスタイルが増えているので、確認してみて下さいね。


12/03/05

ONKYO TW2A-A25Z7CK
 店頭で実際に触る機会があったので試してみた。

 え?なんかモッサリ。チューニングしていないとかそういうレベルじゃなく遅いぞ?画面解像度も TW317 シリーズ より小さいのに何故だ?エクスペリエンスインデックスを確認したら、最低は CPU で "2.1"。おいおい、TW317 シリーズより遅くなってるじゃねーか...orz

右手座標系&左手座標系
 指の向きは+方向。人差し指が向いているのが +Y、親指が向いているのが +X、中指が向いているのが +Z。ちなみに FireMonkey は右手座標系。

 この右手座標系と左手座標系を説明してあるサイトには間違っているものもある。

 違うから。また、20th デベロッパーキャンプの資料 にある図も間違ってはいないが、FireMonkey の画面上での上は +Y じゃないし、手前が +Z でもない...ただ、誤解を招きかねない図ではあるが "間違ってはいない"。

 画像は FireMonkey の座標系 (見やすいように Y 軸を少しだけ回転させてある。三角錐のある方向が+)。これで確認してみる事にする。自分の右手を使って試してみると、

 こうなる。左手でやろうとすると、中指は手前を指してしまう...左手座標系ではないと言う事だ。ここまでやっといてアレだが、回転後には軸の方向が変わってしまうし、カメラの位置や向きも関係してくるので、実は画面上での上下左右にはあまり意味がない。

 右手でやると手がつりそうになるので、左手と鏡を使うといいかも。

 これならやりやすい。但し、左手の中指を下に向けてしまうと 「ちぇけら~♪」 になってしまうので注意が必要だ (w


12/03/06

IBConsole 日本語版+α
 新版をリリースしました。

 修正内容ですが、クエリの実行時間が限りなく短い時、"'0.0' は正しいタイムスタンプではありません" エラーが出るというバグが fix されています。

 MSecsToTimeStamp() に 0 が渡されるとエラーになるというものですが、前からそういう仕様でしたっけ?

 調べてみたら、やはり XE2 固有の問題のようでしたので QC 入れました。ちなみに、MSecsToTimeStamp() 関連の QC が別に投稿されていまして、

 ...Open されてますけど、これってバグだったのですか?以前、IBConsole ではこのようなロジックで回避したのですけれど...。


12/03/07

FireMonkey の 3D 関係を深く理解するには
 3D 関連で数学や物理の話をしていたら何時間あっても終わらないので、デブキャンではその辺の話は出てきません。ですが、3D 関連を深く理解するには "ある程度の数学や物理の知識が必要" なのは確かです。そこで、とりあえず書籍を一つ紹介しておこうと思います (あ、逃げたw)。

 オライリーの "実例で学ぶゲーム 3D 数学 (ISBN-13: 978-4873113777)" です。リンク先の Amazon で中身を "なか見!" できますので、どういった内容なのかはすぐに把握できると思います。"ゲーム 3D 数学" と銘打ってありますが、実際には 3D 全般を網羅した内容となっています。

 FMX.Types3D には、行列演算等のメソッドが揃っているのですが、数学や物理...それも 3D 関連の知識がないと使いこなせないような気がします (ヘルプ / DocWiki は英語版であっても解説は皆無に等しいですし) ので、"比較的安価ではあるけれど一通りの解説がなされている専門書" が手元にあるとイザという時に役に立ちそうです...かくいう僕も数学は苦手なので、この書籍を購入し、空き時間を見つけては勉強しています。

 "勉強している" とは言っても、別に "イチから 3D のフレームワークを作るための勉強をしている" という訳ではなく、単に 3D の概念を知るためだったり、FMX.Types3D の各メソッドが何をするもので、どう使うべきものなのかを調べるという事をやっています。DirectX、OpenGL、OpenGL ES を個別に勉強するよりはこっちの方が手っ取り早いでしょう、多分。

 なお、この書籍は第 5 刷以前のものに幾つかミスがあり、オライリージャパンのサイトに正誤表が掲載されています。古本で買い求める場合は刷数を確認した方がいいかもしれません (所有しているものは新品で購入したもので、6 刷となっています)。

右手座標系&左手座標系のアレ
 某所ではしっかりと役に立ったようだ (謎)。某所で出てくる話は上で紹介した書籍でも解説されている (謎)。てか、普通に英語を読み書きできる人間でも FireMonkey の 3D は難解だというのか?うーむ、こんな書き方したら、高橋さん位しか笑ってくれない...かもなぁ (謎)。


12/03/09

第 21 回デベロッパーキャンプ - Day 1 -
 1日目は、本日 14:00 から開催です。

 ...よくよく考えてみたら 【G1】 セッションの内容如何によっては喋る内容を一部変更しなきゃだぞ?

【T4】 「FireMonkeyファーストインプレッション」 関連情報
 とりあえず、反省会は後回しにする事にして関連情報を一気にアップ。後日公開されるであろう資料のために、スッ飛ばしたネタも全部含めてあります。

【T4】 セッションの内容を FireMonkey Tips に反映
 追加は 1 本ですが、中身が結構更新されています。まだ、すべてのセッション内容を反映できていませんが。

【T4】 セッション関連動画 (YouTube)
 新しい動画が 2 本追加されています。セッション中でサラっと流した Update 4 で追加された SubDivisions 関連です。

 動画の方が解りやすいと思います。既に公開済のものは以下になります。

【T4】 セッション関連 QC
 セッション中で出てきた問題に関する QC です。

 他には、  それと、これは僕が投稿した QC ではありませんが、QC#103696 に関連して  QC#101933QC#103696 のどちらかが Fix されればどうにかなるのですが...。もしよろしければ Vote してやって下さい m(_ _)m

【T4】 DXScene のデモを眺めてみると将来の FireMonkey が見えるかも?
 CodeCentral には FireMonkey の前身 (の一つ) である DXScene のデモアプリがアップされています (結構前からですが)。どこかで見たようなデモもあり、見た事のないデモもあり...。

 ※画像をクリックすると別ウィンドウ (タブ) で開きます。

【T4】 セッション資料に出てきた (かもしれない) デモアプリとそのソースコード
 ご自由にお使い下さい。

【T4】 セッション資料補足資料
 Twitter (#dcamp_jp) に流したものと同一です。上に書いたトピックと重複しているものもありますが、ご了承ください m(_ _)m

 それと、資料巻末に列挙してあった "FireMonkey 関連情報 & 資料" です。

 Twitter の情報と重複しているものは省いています。

【T4】 セッション関連情報は以上となります。
 時間が全く足りませんでしたが、全部盛り込んでいたら何時間になったのやら...(^^;A

【T4】 大反省会会場 (1)
 未消化ネタをまず片付けます。

 とりあえず、こんな感じです。ネタの箇条書きから文章を起こしたので、殴り書きに近いです。ネタ自体はなんとなく解ると思うので、読み終えたら、"【T4】 セッション資料補足資料" を読み返してみて下さい。

【T4】 大反省会会場 (2)
 ...さて、本当の反省会です。

 今日までの FireMonkey の...というか、XE2 の情報というのはエンバカさんのものは製品紹介のようなものが多かったです。ちょっと擁護しておくと、セミナー等で "毎回似たような機能の紹介しかされない" のには理由があって、XE2 はあまりにも新機能が多すぎるのです...YouTube チャンネルを観ても、得られる情報は "広く浅く" なのです。

 但し、RAD Studio XE2 のすべての新機能を "広く浅く" 紹介しようとすると、以下のような変な情報となってしまいます。

 どれひとつとして嘘ではないです。ただ、これを限られた時間の中で紹介しようとすると "4大スマホOS対応のアプリ開発ツール「RAD Studio XE2」とは (@IT)" のような記事になってしまいます。さて、この記事を読んで Delphi / C++Builder それぞれで "できる事とできない事" が理解できるでしょうか?この文面から 「C++Builder XE2 では FireMonkey を使った iOS アプリ開発はできない」 という情報を読み取れるでしょうか?

 【T4】セッション では、曖昧さを排除するために "FireMonkey の機能" に絞って話を進める事にしていました。ですから、「Windows API 呼べばできるよ」 とか、「Cocoa 呼び出せばできるよ」 とか、「DirectX / OpenGL まで潜ればできるよ」 とかそういったものは一切排除しました。それでもあの量になってしまったという事です。

 無難に 1h で収めようとすると既存の Firemonky 紹介セッションと何ら変わらなくなってしまい、"YouTube チャンネル観てたほうがマシ" という内容になりかねなかったので今回のようなセッション構成になった訳ですが、結果的にはあのような中途半端なセッションになってしまいました。詰め込んだつもりはないのですが、それでも情報過多だったようですね。

"【G1】 2012年 - エンバカデロの製品戦略" の感想
 兎にも角にも C++Builder をお願いします。折角 Delphi で 64bit アプリが作れるようになったのに、C++Builder で 64bit アプリが作れないために "助けてブラザー" ができません...いあ、Windows のヘッダを大量に拡充してくれるというなら話は別ですが。"C++Builder の FireMonkey で iOS 開発ができない" 件は、Delphi での iOS 開発を考えると問題点が解ります。C++Builder には FPC に相当するコンパイラが存在しないのです。C2P トランスレータでも作らない限り、C++Builder から FPC を利用する事はできない訳ですから。

 AppWave は前にも書きましたが"Delphi 2007 の件をどうにかして欲しい" と切に願います。

 未だ Open のままなんですよねぇ...。

 ER / Studio のモデリングとコーディングの分離の話が出ていましたが、FireMonkey もその方向性が見て取れます。分業がトレンドなんですかね?

"【T2】 実践!Delphiデバッグテクニック" の感想
 細川さんのセッション。IDE と GotoWebinar が最前面ウィンドウを取り合いしているのか、デバッグプロセスが変な事になっているのかよくわかりませんが、デモができない状態に陥ってしまわれたようです。デブキャン恒例 "デモの神様" が...orz

 デモの件は確かに残念ではありましたが、スライド内に記述のあったデバッグテクニックに関しては、「それは正直知らんかった!」 的なものが結構あり、今後のデバッグ作業に活用できそうなものばかりでした。かなり内容が濃かったです。スライドのすべてをスクリーンショットに収めましたので、資料が配布されるまではこれを眺めながら勉強したいと思います m(_ _)m

"【T3】Delphi / C++Builder + FastReportで作る実用レポート出力" の感想
 DH 山本さんのセッション。FastReport はGUI で作成できるレポートツールの中では現在最も有用だと思われます (DH 山本さんはかなり以前から FastReport をプッシュされていましたね)。

 セッションはデモメインでしたが、Embarcadero Edition とフル機能版の違いのフォローもあったりと、隙のない丁寧なセッション内容でした。なお、FireMonkey では FastReport は使えません。VCL で "印刷サーバ" を作って、そこへメッセージなりデータを投げれば印刷してくれるようなのを作るといいかもしれません。レポートツールを使わないで FireMonkey から印刷する方法は Mr.XRAY 氏のサイトに情報があります

"【W5】FireMonkeyアプリケーション構築実習" の感想
 当方の環境のせいかもしれませんが、音声が何度も途切れてマトモに聞き取れない事が何度かありました。ワークショップの内容は Marco Cantu 氏のホワイトペーパーがベースになっているようでした。まぁ、私はこの裏で必死になって【T4】セッション関連情報を書き殴っていた訳ですが...orz


12/03/10

第 21 回デベロッパーキャンプ - Day 2 -
 2日目は、本日 9:00 から開催です。

 ちょっとまだ昨日のセッションの失敗を引きずってマス...orz

FireMonkey と IM(E)
 「何かおかしいトコロがある」 とだけ言い放ってしまうのはあまりにも暴力的なので、具体例を。

 TStringGrid または TEdit に日本語を入力してみます。"あいうえお" と入力し、未確定のままで確認してみるとキャレットは何故か "え" の後ろにあります。ここで 〔BackSpace〕キーを押すと "お" が消えて、キャレットは "あ" の前に移動します。

 また、TEdit に未確定文字列が残った状態で他のコントロールに移動すると、TEdit に戻っても未確定文字列が削除できなくなる事があります。

 加えて、Google-IME を使っている場合には、スペースキーを何度押しても変換候補は表示されず、サジェスト機能も使えません。

 ATOK 等他の IME をお使いの方がいらっしゃいましたら、入力系のコントロールで一通り日本語入力を試してみて下さい。

 追記: ATOK はダメでしたか...(QC#104084 のシスオペコメントを参照)。TEdit でダメという事はセルコントロールで TEdit を使っている TStringGrid も NG という事ですね。Google-IME は IMM で動作しており、ATOK はデフォルトで TSF で動作しています。ひょっとすると ATOK も IMM モードで動作させればある程度は OK なのかもしれません。

 TMemo に日本語を入力しようとすると未確定文字列がコントロール内に収まりきれていない件です (何故か 2 行目からは OK)。

 日本語入力関連で何か不具合があったら QC 入れろとまでは言いませんので、公式フォーラムにでもご報告下さい。

Delphi FireMonkey Tips
 昨日の 【T4】セッションの内容を反映させました。

 駆け足になってしまった箇所です m(_ _)m

"【W6】 挑戦!Delphi クイズで実力チェック" / "【T7】 RadPHP でスマホアプリを作ろう!"
 所用で聴講できませんでした...残念。

"【T8】 Delphi 言語再入門" の感想
 細川さんとふーさんによる Delphi 言語講座。Delphi 2006 以降、地味に言語仕様が拡張されていますが、再確認するいい機会でした。資料が配布されたら、またじっくり読んでみたいですね。

"【T9】 Delphi / C++Builder で iOS / Mac アプリを作ろう!" の感想
 "String が ANSI で UTF-8" のくだりは、FPC の String が ANSI で UTF-8 だからです (FreePascal の Unicode 対応は UTF-8 ベース)。iOS 開発の場合には FPC を考慮しなくてはいけないのが個人的には...将来的に FPC 廃止されたら、多分 "バージョン (XE2) 依存のバッドノウハウ" ですしね。

 Open CL に関しては以前もご紹介しましたが、"Delphi OpenCL" というプロジェクトがあります。


12/03/12

第 21 回デベロッパーキャンプ関連の togetter
 全セッション分、トゥギャられています。

 【T4】は自分で投下したツイートがかなりの割合を占めているような...(^^;A

使い方が解ってくると楽しくなってくる FireMonkey
 デブキャンで端折った (消化できなかったのではなく) ネタの一つである "投影について"FireMonkey Tips に追記しておきました。

 FireMonkey Tips は、既にデブキャンネタを反映したものになっているので、"FireMonkey で使えるコンポーネントは? (FireMonkey Tips)" の各カテゴリを参照すれば、コントロールの基本的な使い方は解ると思います。ちなみに、各カテゴリのリンク先は DocWiki ではなく独自ページです...中に入ってみるとイロイロ書いてありますよ。

 DocWiki は 3D 関連のコンテンツが遅れ気味な上、Update 4 で追加されたものに関しては英語版ですらコンテンツがなかったりします。そういった事情もあり、当サイトでは 3D 関連を優先的にやっています。デブキャンでも言いましたが、HD (2D) 関連のコントロールは触ればなんとなく解りますしね。

コンポーネント一覧
 いや...確かにあるんですけどね、VCL 版は。それの FireMonkey 版がないので、同等の "FireMonkey で使えるコンポーネントは? (FireMonkey Tips)" を書く事にしたのですよね...DocWiki からは目的のものが探しにくいし。

 ちなみに、VCL のコンポーネントに関しては、DocWiki よりも AFsoft さんの Delphi 2010 の記事の方が解りやすいと思います。(失礼ながら) 目的の記事を探すのが若干難しいのですが、XE2 でも充分に参考になる秀逸な記事です。やっつけですが、AFsoft さんの Delphi 2010 の記事をフレームで一覧表示する html を書いてみました > afsoft_d2010.zip。適当な場所に解凍してから、index.html をブラウザで開いてみてください。

 追伸: AFsoft さんAKT さん を素で間違ってしまい、AKT さん にはご迷惑をお掛けしてしまいました...誠に申し訳ありません m(_ _)m

ん?
 2年前のデブキャンにも出てたんだっけ...ん?2年前?何か重要なことを忘れているような、思い出したような。


12/03/14

言う程簡単ではない事は承知の上で。
 Jw_cad って有名な CAD ソフトがありますが、2012/02/19 に ver7.11 がリリースされています。リリースノートを見てみると、

◆Version 7.11 での変更点は以下のとおりです。(2012/02/19)

    ・DXF出力時に3DSフォーマットのデータを同時出力する機能を追加した。

    ・SPEEDビューワーから3Dデータ転送で受け取ったデータをDXF出力できるようにした。

 ...なんですって?

  1. Jw_cad で DXF を出力 (これと同時に 3DS データが出力される)。

    (画像は Jw_cad の 3DS 出力設定画面。[設定 | 基本設定] にある)
  2. Google SketchUp で *.3ds をインポート。
  3. 読み込まれたデータは線データなので、これを面データにして立体化する。

    (画像は面データ作成中の Google SketchUp)
  4. COLLADA 形式 (DAE) でエクスポート。
  5. FireMonkey の TModel3D へインポート。
 オウ!こういう連携もアリなのか。

 けれど、そもそも Jw_cad で図面引いたり、"面データにして立体化する" する事自体が、一朝一夕にできるものではないのだよなぁ...言うのは簡単だけど。


12/03/16

第21回 エンバカデロ・デベロッパーキャンプ - セッション資料ダウンロード
 先日行われたデベロッパーキャンプのセッション資料が DL できるようになりました。

 【T4】セッション資料の P.55 ですが、後で再確認してみたら、Update 4 では TComboBox の ItemByIndex が存在しないようです。代わりに ListItems[] を使ってください。また、Delphi Tips にある "とりあえず、デベロッパーキャンプの資料を読んでみようか。" も更新されています。

 デバッガの挙動に泣かされた細川さんの【T2】セッションが本日再講演されます。モヤモヤした方、見逃した方は是非ご参加を。

Delphi VCL Tips
 "131.VCL スタイル (Delphi XE2 以降)" を追加しました。RTM 時は 5 つしかなかった VCL Style も、Update の度に増えていって Update 4 時点で 22 個あります。


12/03/24

PC の IP アドレスを変更するスクリプト (Windows)
 ロケーションによって PC の IP アドレスを自動的に変更してくれるツールはノート PC なんかによく付属している。自動で切り替えるための情報として、無線 LAN の ESSID をキーにしている事が多いが、当然の事ながら有線 LAN にはこの方法は使えないため、有線の場合には大抵手動で切り替える事になる。

 このテのツールは無線であれ有線であれ接続を切り替えるのがとても遅い。さらにノート PC を買い換えたりした場合、付属するネットワークマネージャツールが異なると再設定はとても面倒な作業だ。なんだかんだ勘案すると、取り扱いには注意を要するが "正直スクリプトで変更した方が早いし速い"

@echo off
::==============================================================================
:: 環境設定
::==============================================================================
set INTERFACE="ローカル エリア接続"
set IP=192.168.1.xxx
set SUBNET=255.255.255.0
set GATEWAY=192.168.1.xxx
set DNS1=192.168.1.xxx
set DNS2=192.168.1.xxx
::==============================================================================

cls
@echo off
echo ============================================================
echo  ネットワーク環境切り替え (%INTERFACE%)
echo ============================================================
echo.

:: -----------------------------------------------------------------------------
:: 静的 IP 設定か?動的 IP 設定か? 
:: -----------------------------------------------------------------------------
if "%IP%" == "" goto DYNAMIC

:: -----------------------------------------------------------------------------
:: 静的 IP 設定
:: -----------------------------------------------------------------------------
:STATIC
echo IP アドレス(%IP%) とデフォルトゲートウェイ (%GATEWAY%) を設定中...
netsh interface ip set address %INTERFACE% static %IP% %SUBNET% %GATEWAY%
if "%DNS1%" == "" goto DNSDHCP
echo プライマリ DNS (%DNS1%) を設定中...
netsh interface ip set dns %INTERFACE% static %DNS1% PRIMARY
if "%DNS2%" == "" goto EXIT
echo セカンダリ DNS (%DNS2%) を設定中...
netsh interface ip add dns %INTERFACE% %DNS2%
goto EXIT

:: -----------------------------------------------------------------------------
:: 動的 IP 設定
:: -----------------------------------------------------------------------------
:DYNAMIC
echo IP アドレスを自動取得 (DHCP) に変更中...
netsh interface ip set address %INTERFACE% dhcp
:DNSDHCP
echo DNS を自動取得 (DHCP) に変更中...
netsh interface ip set dns %INTERFACE% dhcp

:: -----------------------------------------------------------------------------
:: 終了
:: -----------------------------------------------------------------------------
:EXIT
pause

 名前は Change_IP.cmd とか適当で。環境設定の部分を適宜修正して利用する。

 このテのスクリプトはググればいくらでも出てくるのだけれどあえて掲載。XP 以降で動作するハズ (2000 は未確認)。

Delphi FireMonkey Tips
 "13.(FMX) スタイル" を追加したのを忘れていました。


12/03/28

MECSUtils 1.54
 山本隆さんのブログで既報ですが、MECSUtils 1.54 をリリースしました。

 海外の ANSI テキストを Unicode 化して翻訳したものを "そのまま Shift_JIS 等に変換すると混入しがち" な "マイナス / ハイフン / ダッシュ" の亜種を可能な限り可読変換するために、

 を修正しました。具体的には、  を半角マイナス等に変換します (マイナーな "マイナス / ハイフン / ダッシュ" は省略しています)。そういえば、Delphi 2007 / 2009 のヘルプには U+2012~U+2014 が紛れ込んでいて、(変換できなくて) おかしな表記になっている箇所がありましたよね...ん?何か重要なことを忘れているような、思い出したような。

カミカミ動画
 先日のデベロッパーキャンプの動画が公開されているようです。「何度も "子コントロール" 言うのはシンドイんじゃい!」 と、謎の逆ギレをしておきます。

 "88.とりあえず、デベロッパーキャンプの資料を読んでみようか。 (Delphi VCL Tips)" には過去のものも含め、動画と togetter のリンクが追加されています。

最近のドラえもん
 "ゴンスケ" がよく出てくるので、「コイツの名前知ってる?」 と子供たちに訊いた事がありましたっけ。21エモン ED の "谷村有美 「21世紀の恋人」" は名曲だと思います。

IBConsole 日本語版+α
 Unicode 版 (32bit / 64bit) の rel.20 をリリースしました。コンパイラを XE2 にして一部機能が使えなくなっていた (AV が発生する) のを修正しましたが、全部を修正できていないかもしれません。

 XE2 で IBX 関係のコンポーネントに ServerType プロパティが追加されていますが、コンポーネントを動的作成した場合には ServerType が自動で設定されない事に起因した問題です。

 等から派生しているコンポーネントを動的作成する際には注意が必要です。


 BACK   古いのを読む   新しいのを読む