2015年7月26日日曜日

Eclipse Siriusの簡単な使い(3)


セクションを追加                     

  • Defaultを選択 > New Tool > Section を選択
ダイアグラムにパレットが表示される。



ノードを追加                     

パレットからノード追加が行えるようにする。

  • Section選択 > New Element Creation > Node Creation
以下を設定する。
設定項目設定内容説明
IdcreateManID
LabeManパレットに表示するラベル
Node MappingManNode対応するノード


  • Begin 選択 > New Operation > Change Context を選択
以下を設定する
設定項目設定内容
Browse Expressionvar:container


  • Change Context 選択 > New Operation > Create Instance を選択
以下を設定する。
設定項目設定内容説明
ReferenceTypemembers設定するfeatureを指定する
Type Namebasicfamiy.Man対象のクラス
Variable Nameinstance変数名


  • Create Instance選択 > New Operation > Set を選択
以下を設定する

設定項目設定内容説明
Feature Namename設定するfeature
Value Expression['man'+container.eContents()->filter(Man)->size()/]設定する値


設定結果は以下キャプチャのようになる。


Womanノードを作成する場合も上記同様の設定を行う。



関連線を追加                    

パレットから関連が設定できるようにする。
まずは、fatherの関連を引く設定をパレットに表示する。
※ModelでいうとPersonクラスのFatherの属性を設定

  • Sectionを選択 > New Element > Edge Creation
設定項目設定内容説明
idnewEdgeID
LabelfatherEdgeパレットの表示名
EdgeMappingsfatherEdgeマッピングするRelation Base Edge



  • Beginを選択 > Change Context 
  • Change Context を選択 > New Operation > Set  を選択

設定項目設定内容説明
FeatureNamefatherFeature名
Value Expression[target/]fatherに設定する値を指定
今回だと、targetがFatherクラスになるので[target/]

設定結果は以下キャプチャのようになる。





ダイアグラムを表示すると、パレットに関連線を引くアイコンが表示されている。
fatherEdgetを選択して、WomanNodeまたはManNodeからManNodeに関連線を引くことができるようになる。






motherの関連を引く設定をパレットに表示の仕方は上記と同様のため、省略






ここまでが、4MinTutorial をの内容になります。



2015年6月25日木曜日

Eclipse Siriusの簡単な使い(2)

前回の引き続き 以下について説明。
  • ノードに画像の表示
  • WomanNodeの表示
  • 関連の線表示
  • ノード追加方法

ノードに画像を表示                         
  • my.project.designフォルダにiconsフォルダを作成
  • 下記画像をiconsフォルダに保存
    • https://wiki.eclipse.org/images/1/12/Man32.png
    • https://wiki.eclipse.org/images/b/bc/Woman32.png
  • ManNodeを選択
  • New Style > Workspace Image
    • ノードを画像で表示するように設定
タブ設定項目設定内容説明
GeneralWorkspacepath/my.project.design/icons/Man32.png表示するアイコンのパス
LabeShow Iconチェック解除ノードを表示する時に、アイコンを表示有無
Label Expressionfeature:nameラベル表示内容
Label Positionborderラベルの表示場所を境界にする


WomanNodeを表示                         
ManNodeと設定方法は同じ。そのため、画像は省略
  • DefaultLayer を選択
  • New Diagram Element > Node 
  • id: WomanNode
  • Domain Class: basicfamily.Woman
  • Semantics Candidate Expression: feature:members
  • Woman Node を選択
  • New Style > Workspace Image
  • Workspacepath : /my.project.design/icons/Woman32.png
  • Label  Show iconsチェックボックス解除
最終的に表示されるのは以下のようになる。


関連線の表示                         

  • 参照関係の線を定義するのも、ノードと同じような仕組みで定義が可能
  • Default Layerを選択
  • New Diagram Element > Relation Based Edge
  • id: fatherEdge
  • Source Mapping: ManNode ,WomanNode
    • 関連線のソースとなるノードを指定
  • Target Mapping ManNode
    • 関連線のターゲット(矢印の先)となるノードを指定
  • Target Finder Expression: feature:father
    • 関連線のターゲットとなるノードを見つける表現

ダイアグラムを表示すると、関連の線が表示される。

  • motherの関連線も上記同様に設定する。
  • Default Layerを選択
  • New Diagram Element > Relation Based Edge
  • id: motherEdge
  • Source Mapping: ManNode ,WomanNode
    • 関連線のソースとなるノードを指定
  • Target Mapping WomanNode
    • 関連線のターゲット(矢印の先)となるノードを指定
  • Target Finder Expression: feature:mother
    • 関連線のターゲットとなるノードを見つける表現

  • 線の色等を変更したい場合
    • Edge Style solidを選択して、Color > Stroke Colorで変更可能

ノード追加                               


ダイアグラムからノードを追加する方法
  • Default Layerを選択
  • New Tool >  Section

  • New Element Creation > Node Creation


  • id: createMan
  • Label:Man
  • Node Mapping: ManNode


  • Beginを選択
  • New Operation > Change Context


  • Browser Expression: var container
  • Change Contextを選択
  • New Operation > Create Instance
  • Reference Name : members
  • Type Name : basicfamily.Man
  • variable Name : instance

  • Create Instance を選択
  • New Operation > Set


  • Feature Name : name
  • Value Expression : ['man'+container.members->filter(Man).size()/]
  • ダイアグラムにセクションが表示される。
  • Manを選択して、ダイアグラムにD&Dするとインスタンスが作成される。



WomanNodeを追加する方法はManNodeの追加方法と全く同じ。
基本的に上記のManをWomanに変更するのみ。

次回:
 ダイアグラムで関連付けする方法。

2015年6月14日日曜日

Eclipse Siriusの簡単な使い方

数回に分けて、4MinTutorial を簡単にまとめてみます。
そこから、徐々に4MinTutorialに記述されていない機能を追加していく予定です。
Sirisuのハンズオンをやるときの参考資料になればよいかなと。

まずは、Siriusを扱うときの基本的な流れ

  1. Domain Modelの作成
    • 作成するDomainModelを定義
  2. Viewpoint Specificationの作成
    • DomainModelをどのようにDiagramで操作(表示)させるかを定義
  3. モデル作成
    • 扱うモデルを作成
  4. Viewpointsとモデルの紐付け
    • モデルにViewpointsを紐付け
  5. Diagramの作成
    • 実際にモデルを表示するダイアグラムを作成
今回はダイアグラムに限定するが、Tree,Table,Sequenceなども作成可能。

1.Domain Modelの作成                             

今回作成するDomain Modelは4MinTutorial のbasicfamily




  • 新しいruntimeを起動
    • DomainModelのプラグインが入ったruntimeが起動された。





2.ViewSpecificationの作成                          

  • SiriusのPerspectiveを指定する。
  • Viewpoint Specification Projectを作成する。

  • project Name : my.project.design で作成する。

  • プロジェクト作成完了後、Sirius Specification Editorが開かれる。
  • projectを選択して、viewpointを作成する





  • id: persons を設定
  • Model file Extension: basicfamily を設定
    • 連携するモデルの拡張子
  • New Presentation > Diagram Description を選択





  • id : Persons Diagram
    • diagramのIDを設定
  • Domain model: basicfamily.Family
    • DiagramのDomainModelを指定


  • New Diagram Element > Default Layer を指定する。










  • New Diagram Element > Node を指定する。
  • 以下を設定する

  • 設定項目設定内容説明
    IdManNode識別子
    Domain Classbasicfamily.Manノード表示する対象のクラス
    Semantic Candidate Expressionfeature:membersノード表示するときの候補









    • ノードのスタイルを指定する。
    • New Style > Squre



    •  Color light_blue




    • 3.Modelの作成                             

      • Modeling Projectでプロジェクトを作成
      • Project Name : basicfamily.sample
      • New >Others > Example EMF Model Creation Wizards > Basicfamily Modelを選択
      • 以下で作成
        • File name: デフォルト
        • Model Object: Family 

      • 適当にモデルを作成する。


      4.Viewpointsとモデルの紐付け                         

      • Modeling Projectにviewpointsを紐づける
      • personsにチェックを入れてOKにする。


      • Create Presentation を選択する。
      • Person Diagramを選択する。
      • Diagramを作成するDomain Modelを選択する。
      • Diagramの名前を指定する。





      • ManNodeが表示されているダイアグラムが表示される。


      長くなったので、ここまで。
      次回は画像の表示、WomanNodeの表示、関連線、ノード作成の方法を解説



      2014年12月20日土曜日

      関数プログラミング実践入門読了

      関数プログラミング実践入門を読み終わりました。(1回目)

      #1回目はさくっと読んで、もう1度じっくり読む派なので、全て理解しているわけではないです。

      結果としては、「良い本」だと思います。
      以下、良かった点、悪かった点を書き示します。

      良かった点
      • 関数型言語(主にHaskell)を実践で使える様になるための説明になっていた。
        • サンプルコード、図解なども多かった。
      • 「6.2のトップダウンで考える」は参考になる。
        • トップダウンで設計するのは当然だが、他の本にはあまり書かれていない内容だったので、面白いと思う。

      悪かった点:
      •     初版だけに誤植が多かった。
        • これはしょうがないと思うので、今後の版で修正されると思われます。注記が多すぎるのも気になった。
      • Haskellと他の言語の比較の際に、他の言語の設計がよくない。
        • 多分述べたいことは、関数型言語にすると、悪い設計ができなくなる(主に副作用)ことを言いたいのだが、そこまでの根拠が薄い感じがした。
      • 7.4以降の依存関係の話は不要ではないかと。
        • ちゃんと説明はできているのだが、穴が多い気がする。バージョン4桁の説明も曖昧だし。


       関数型に触れたこと無い人が読んだ時の感想って全く違うんだろうなぁ。
      自分の会社の人間に回して読んでもらおう。
      果たして読める人がどれくらいいるのだろうか。。。。。


      2014年12月14日日曜日

      Eclipse Siriusを使ってみた

      2014/10/24 にSirius2.0.0がリリースされたということで使ってみました。

      Eclipse Siriusとは



      • EMF、GMFをベースにグラフィカルなモデリングワークベンチを作成可能
      • ダイアグラム、テーブル、ツリーなどが簡単に作成可能
      • Siriusの設定ファイルは動的に解釈されるため、動的に画面を確認することが可能。

      使用事例


      結構沢山なところで使われています。といっても、殆どがSiriusを作成した、Obeoのツールです。


      使ってみた感触

      ダイアグラムを作成するのは、Get Start を参照すると作成は可能。
      操作感も悪くないので、社内ツール等には使えそう。
      しかし、Get Start 以上のことをやろうとするとドキュメントが少ないため、結構苦労する。特に日本語ドキュメントは皆無。

      今後同じようなことをする人のためドキュメントを作成していった方がよいのかなと。


      簡単なサンプル

      とりあえず、試行錯誤で作ってみたデザインとか抜きのFTA図作成ツール。

      • FTA図作成ダイアグラム
      • FTAツリー表示




      もうちょっといいものを作れたら公開していこうかな。



      2014年10月19日日曜日

      Raspberry Pi にmongodbをインストール

      mongodbをインストールでちょっと手こずったので備忘録

      1. バイナリダウンロード

      http://www.mongodb.org/downloads
      上記URLからバイナリをダウンロードして、展開。
      mongodbを実行してみた。

      -bash: ./mongo: バイナリファイルを実行できません

      そりゃ、ARMアーキテクチャじゃ動かないよなぁ。
      ということで、ARMアーキテクチャ用のバイナリがgithubにあるのでゲットする。

      https://github.com/Barryrowe/mongo-arm

      >./mongod --nojournal --noprealloc --dbpath /mnt/usbhdd/mongodb

      動いた。

      2014年9月6日土曜日

      Raspberry Piにnode.jsをインストール

      色々踏んでいるため、インストールログを残す。

      # まずはgit インストール
      > sudo apt-get install git-core

      # nvmのclone
      > git clone git://github.com/creationix/nvm.git ~/.nvm
      # nvmの実行を有効にする
      > source ~/.nvm/nvm.sh
      > nvm help

      # バージョン取得
      > nvm ls-remote
      #インストール
      > nvm install 0.11.13

      #インストール時に下記エラー

      gyp: name 'arm_version' is not defined while evaluating condition 'arm_version==7' in /home/pi/.nvm/src/node-v0.11.13/deps/v8/tools/gyp/v8.gyp while loading dependencies of /home/pi/.nvm/src/node-v0.11.13/node.gyp while trying to load /home/pi/.nvm/src/node-v0.11.13/node.gyp
      Error running GYP
      /usr/bin/python tools/gyp_node.py -f make
      gyp: name 'arm_version' is not defined while evaluating condition 'arm_version==7' in /home/pi/.nvm/src/node-v0.11.13/deps/v8/tools/gyp/v8.gyp
      make: *** [out/Makefile] Error 1
      nvm: install v0.11.13 failed!

      # 手動で修正する方法
      #common.gypi に下記設定を追加
      > cd .nvm/src/node-v0.11.13/
      > vim common.gypi

      'arm_version%' : '1',


      # しかし、手動編集は嫌いなので、一つバージョンを下げてインストールをしてみる。
      > nvm install 0.11.12

      # 問題なくインストール完了。

      > node -v
      > node example.js
      Illegal instruction

      # Illegal instruction をエラーになってしまう。


      # バージョンが新しいとちゃんと対応していないらしい。
      # そのため、少し古いバージョンをインストールする。
      > nvm install 0.10.24

      > node -v
      > npm

      # 問題なく通った。

      > node example.js