goo blog サービス終了のお知らせ 

組み込まれたエンジニア

我輩は石である。名前はまだ無い。

ポータブルな開発環境

2010-04-22 17:09:03 | Weblog
ネットブックを持ち歩いて、どこでも開発(電車の中でも)という体勢を作っているのだけれど、電車の中をあきらめれば、たいていの行き先にはPCが常駐しているので、別の手段も取れそうだ。

今、検討中なのが、VirtualBox + ポータブルHDDの組み合わせ。

行き先のPCに、すべてVirtualBOXをインストールしておき、ポータブルHDDに開発機のVMイメージを入れておくというもの。

その予備試行として、USB接続の固定HDDにVMイメージを入れて試してみたが、案外大丈夫そうな気がする。VMといえども、命令実行は本体のPCだから、当然といえば当然だが、開発業務のようにそれほどディスクアクセスが頻繁でないなら、実用的に使える。

次のステップは、HDDに暗号処理を施した場合の実用試験だ。これが可能なら、ポータブルHDDをなくしたりしても、被害は最小限に抑えられる。

ただし、VMは思ったよりメモリ喰いであり、行き先(?)のひとつである、自宅のPCには重過ぎるのが玉に瑕。
(DURON 1.1GHzなんていう高速CPUだけれど、メモリ512MBだと厳しい)

もうひとつは、やはり、電車でデバッグが必要なケースがなくなったりはしないだろうという(悪い)予感。

さて、どうしたものやら・・

今度のネットウォーカーは、BlueTooth付き

2010-04-20 00:50:24 | Weblog
前のバージョンも購入寸前まで検討したが、BlueToothがないので、結局やめたのだった。
こんどのネットウォーカー PC-T1にはBlueToothも付いているし、重量も軽くなって、辞書まで標準だ。

これでは、買わない理由を探すのが難しい(?)。

でも、無線LAN以外では、USBモデムを装着って?
せっかく、BlueToothがあるのだったら、BTモデムでしょうが~!
何故、DUNプロファイルを実装しないのか意味不明。

こういったデバイスと、iPadのような形状のタブレットPCをBlueToothキーボードと組み合わせて持ち歩けば、機動力が上る気がする(あくまで、気がするレベル)。


モデリングの目的

2010-04-20 00:08:45 | Weblog
なんでだろう?
モデリングの目的を「再利用性」や「変更容易性」に置く人達が多いのは。

もう一段階進めて、なぜ「再利用」が必要なのか、「変更容易」でないといけないのかと分析すれば、自ずと、「よい製品を作るため」もしくは、「会社利益の最大化」というところが見えてくるんだと思うのだ。

モデルを作る目的を「再利用性」や「変更容易性」に矮小化してしまうと、「非機能要件」などという言葉でお茶を濁すことを当たり前とする文化になるのだと思う。

ここは、異論反論が多く出るのは必至だが、私は「非機能要件」という言葉が大嫌いである。モデル屋が「非機能要件」という言葉を使ったときには、彼等のツールでは、設計上必要な「機能」が定義できないと暴露しているとしか思えない。

非機能要件(non functional requirement)って、エンタープライズ系でソフトウェアしか裁量の範囲がない文化で、それも、ソフトウェアの品質や性能に無頓着な連中らしい、あまりに、ソフトウェアだけしか見ていない近視眼的な言葉だ。

顧客の立場からは、性能だって品質だって製品機能なのだ。特に組込みシステムでは、時間軸を持ったシステム特性が表現できないモデルなんて(!)と思うのである。

モデルが設計図であるというのなら、製品機能を定義できない設計図なんて役に立たないと思うのは、自然ではないか?

と、アルコール変調が入った脳が考えるのだ。

オーバートーンのホームページ

2010-04-13 07:42:08 | Weblog
NSLのリファレンスマニュアルや、サンプルコードもあり、
ようやく、ホームページが整備されてきた感があります。

オーバートーン株式会社

ツールもEclipseベースの統合開発環境となり、UMLエディタ(Papyrus)と、NSLエディタ、コンパイラが一体となり、使いやすくなっています。

統合開発環境は、開発部において機能拡張の真っ最中で、これからも、どんどん使い勝手が向上していく予定ですので、、お楽しみに。

xyzzyというLISP処理系兼エディタ

2010-04-07 18:57:12 | Weblog
コマンドラインでうろ覚えのLISPを書いていると、時々処理系ごとクラッシュしたりして、あまり生産性があがらないので、エディタの上で評価ができるものということで、xyzzyを導入してみる。

これで、結構、快適になった。

(car '(a b c))

とエディタで打って、M-x eval-buffer
で評価した値が画面下のメッセージとして表示されるので、試行錯誤が簡単。


惜しむらくは、VIPモードがないことだ。

emacs風キーバインドも記憶の片隅には残っているので、使えることは使えるが、やはり、VIPモードが欲しい。


Common LISP(ECL)をインストール

2010-04-06 21:44:42 | Weblog
ECLを使おうと思って、現時点の最新版(10.4.1)パッケージをダウンロードしたけれど、インストールにかなり難儀した。
Cygwinではコンパイルできず、Visual Studioなら出来そうだと、職場のマシンにインストール。これは、無事完了して、普通に動いていそう。

それならと、自分のマシンにもダウンロードしてコンパイルすると、コンパイルが通らない。
Visual Studioのバージョンは同一だし、OSも英語版と日本語版の違いはあるが(職場は日本語版)、どちらもWindowsXPだ。

しかも、エラーがand.objが見つからないというリンカーのエラーである。

しばらく格闘したけれど、原因がつかめず、職場のマシンでコンパイルしたソースツリーをオブジェクトごと自分のマシンにコピーして、その上でmakeするとOK。

なんだか、よくわからない現象で気持ち悪いが、時間が惜しいので、とりあえず、このまま進めることにする。

LISPはずいぶん久々なので、基本的な部分を忘れていたりして、プログラムの完成はいつになることやら。。

VSで前のバージョンをアンインストールするインストールプロジェクトを作る

2010-04-06 06:34:12 | Weblog
備忘録

1:インストールのプロパティで、RemovePreviousVersionをTrueに
2:同じく、バージョン番号とプロダクト番号をアップデート
3:ORCAでMSIを開き、新規プロパティとしてALLUSERSを作成、値を2とする
4:同じく、「FolderForm_AllUsers」をALLに変更

このあたりを参照

それにしても、毎回、ORCAを開くのは嫌だなぁ。。3,4は誰かにやってもらおうか。

仮想マシンとバックドア

2010-04-02 09:05:59 | Weblog
VMwareが有名だけれど、多くの仮想マシン環境にはバックドアがある。
バックドアというと、ウィルスかと脊髄反射する人もいるけれど、そうではなく、管理ツールをVM下で動かすために、ゲストからホストを制御するルートを持つということだ。

私は、過去、仮想マシンの開発を仕事にしていた時期もあり、その仕組みは、よく知っているが、管理を放棄するなら、バックドアを作らない方法も勿論ある。VirtualBOXは、その点、よく仮想化しているらしい(開発チームが仮想マシン原理主義なのだろう)。

仮想マシンを問題にしているのは、自社のツールのノードロックライセンス相手の仮想マシン上に発行したりすると、仮想マシンごとコピーされる恐れがあるから。

ユーザの利便性と、不正利用の対策をどうするのかが、かなりクリチカルな問題となる。

バックドアや、PC環境であば、必ず仮想画面や仮想ストレージが検出できるので、これを検出して仮想環境では動作しないようにできるけれど、対策は検討中。

試しに、VMware Playerを自分のマシンにインストールしてみた(ゲストOSはなし)ら、ネットワークアダプタとして、VMwareの仮想ネットワークアダプタが勝手に増設されている。

しかも、これらのアダプタ、通常の順序ではなく、ネイティブなアダプタよりも前に登録されたように見える。

仮想環境へのライセンスをどうするかは、未定だけれど、MACアドレスチェックは、全アダプタを対象に行なうように修正(Windows版のみ)

UMLで書くCPU その2

2010-03-30 19:25:55 | Weblog
小型8bitCPUのm8をUMLで記述。
命令数は少し減らしているけれど、UMLtoNSLとNSLOvertureを使うことで、論理合成可能なファイルが得られる。


ただ、2種類のCPUを書いて思ったのだけれど、UMLでコードを書くのは、あまり便利ではない。開発を不便にしている原因としては、主として、エディタの問題と、可視性の問題の2つがある。

普通にコードを書くのであれば、エディタで検索やタグジャンプしながら作成した方が、早い。

やはり、UMLはスケルトン生成までにしておいた方が、現実的か?


ともかく、UMLからCPUが合成できるようにはなっている。

コメントのネスト

2010-03-29 08:39:47 | Weblog
SFLでは、コメントはネスト可能ということで、
/* hogehoge
/* nested hogehoge
*/
*/
という記述が書けた。
NSLもそれを踏襲していたけれど、*/と/*を間違って、全部がコメントとなっているケースを作る人がいて、やはり、ネストはやめた方がいいかもしれない。
コメントは基本として人が書くので、自由度は少なくしておこう。

20100329版から、NSLでは、コメントネストを禁止します。
SFLは従来通り。


VB-2008 comboboxの初期化

2010-03-28 22:25:33 | Weblog
Comboboxを置いたら、最初に初期値を入れておきたいと思うのが人の性だと思うが、VB-2008では、この単純な要求をスマートに解決する方法がない。

いろいろと調べていたが、スタートアップ記述を書くのが、それらしい解決かな?

プロファイルで操作できるほうが、それっぽいのですが。。

PapyrusUMLエディタのプリファレンス設定

2010-03-27 09:55:47 | Weblog
PapyrusUMLのオペレーションの記述で、パラメータ名が図に表示されないのが
気持ち悪かったのですが、
windwos->preference

Papyrus->Diagrams->Class Diagram->Operation
において、添付のような設定で、名前を図に表示できるようになります。

現在開いている図には反映されないので、プリファレンスを設定したら
一度図を閉じてから、再度開いて見てください。

UMLtoNSL: UMLコメントのサポート

2010-03-27 03:38:40 | Weblog
UMLtoNSLで、PapyrusUMLで記述したコメントをNSLソースコードに反映するようにした。

書かれたコメントは編集なしで直接ソースコードに反映させるので、
#define ABC 123
なども、そのまま出てくる。

そこで、本当にコメントを書きたい場合、NSLコメント形式で記述する。
たとえば、

// これはコメントデス

など、//から始まる行はコメントであり、 /* .... */ で囲われた部分もコメント扱いになる。

なんで、こんな仕様にしたかというと、UMLではマクロ定義を記述する場所がなさそうなので、マクロをなんとかサポートしたいと思ったからである。

パッケージのコメントは、ファイルの先頭部分に出力され、各クラスのコメントは各クラスのdeclareの前に出力される。

NSLtoUML 2010-03-27版からのサポート


XSLTとdocument関数

2010-03-25 22:47:07 | Weblog
XSLTは、document関数で外部ファイルを読み込むことができるのだけど、絶対パスならともかく、相対パスで読み出しをかけるときの、ファイルの起点が変換XSLシートのある位置だという。

ユーザーデータを処理する用途だと、使い難いこと、この上ない。

XmlResolverで対応できるというのだけれど、例題がネット上に少いし、(MSDNを含め)情報が古く間違っているものが多い。

絶対パスだと何でだめかというと、ポータビリティの問題なのだ。

もう少し研究要。


絶対パスなら、UMLだけで、SN/X互換CPUは完成しているけれど、絶対パスでは、配布しても役に立たないので、相対パスを何とかしようと、悪戦苦闘中。

追記

document関数に基底URIを指定することで対応した。
だけれど、基底URIにトップノードを指定するとNGで、一工夫が必要だった。

ともあれ、無事動いてよかった。

UMLtoNSLはココからインストール可能



NSL profile for UML

2010-03-22 21:57:04 | Weblog
PapyrusでのUMLクラス図作成を助けるものとして、NSL profile for UMLを作成してみた。

このプロファイルを用いて作成したXMIをNSLに変換するには、2010-0322版のUMLtoNSLが必要となる。

先日の開発ステップバイステップのドキュメントは、プロファイルを利用するようにアップデートしておいたので、下記説明とともに参照いただきたい。

ただし、Windows .NET版は、document関数がセキュリティ上許可されないので、動作しないようだ。Java版のみ、正しく動作するはず。(プロファイルの参照は、相対パスのhrefとなるため、実行パスの設定の問題かもしれないが・・)
やはり、実行時パスの問題だった。カレントディレクトリを実行時に設定することで、変換OK。

プロファイルといっても、中身を見れば一目瞭然で、NSLの基本データ型が定義されているだけで、あまり便利とも言いがたいが、入力ミスを避けるためには、多少、役に立つかもしれない。

使い方は、Papyrusのワークスペースに上記のファイルをダウンロードし、新規プロジェクトを作成するときに、パッケージに上記プロファイルを適用するしたときに、outlineのプロジェクトトップを右クリックし、Import Package→Import Package from fileと進み、ダウンロードしたファイルを指定して、NSLにチェックを入れる。

そうすると、属性を定義する時に、typeの項目の+記号をクリックし、NSLプロファイルの中からデータタイプを選択することができる。(こんなのは、手で入力した方が早いと思うが、Papyrus流は全て選択で進むのだ)タイプ名にNSL::まで入れると、NSLの型のリストがプルダウンメニューに出てくるので、必要な型を選択できる。属性の可視化は、入出力はpublicだが、内部端子はprivateに明示的に変更しておく必要があることに注意。

XSLT的には、Papyrusにおけるプロファイルの参照は、クロスファイルの参照となるので、案外難しかったが、一応ファイルは生成されているようだ。