« 2018年8月 | トップページ

2018年9月

2018/09/09

第2回astah関西の感想 #astahkansai

昨日の第2回astah関西の感想をラフなメモ書き。

【参考】
第2回astah関西勉強会「開発現場のモデリング事例紹介」 - connpass

Mix Leap Study 特別編 -「開発現場のモデリング事例紹介」(astah勉強会) - connpass

7/7土の第2回astah関西の見所 #astahkansai: プログラマの思索

第2回astah関西勉強会(2018/9/8)のスライドが公開されました | astah in 5 min

【1】7月の西日本豪雨で1度流れ、4日前の台風の影響で参加者は減りましたが、参加者の熱気もあって盛り上がり、雰囲気はとても良かったように思います。
講演の内容もビジネスモデリングから組込み系、astahのより良い使い方など盛りだくさんで、飽きない感じでした。

講演中のアンケートでは、astahの利用または経験者が多数いた事、組込みエンジニアまたは組み込み系コンサルタントの方が半数以上いた点が興味深かったです。
僕自身は、業務系Webシステム開発をベースとしたビジネスモデリング系だったので、グループディスカッションでは、全く違う層の人たちと、最近の電気自動車や組み込み機器のセンサー化、機械学習の動向などの話が聞けて面白かったですね。

以下、講演内容について感じたことをメモしておく。

【2】兒玉さんの講演では、astahに描いたアクティビティ図から、astahAPIで情報抽出するデモを見せてくれた。

考え方としては、レガシーなCプログラムから手作業でastahのアクティビティ図へリバースしてモデリングする。
その時、アクティビティ図の吹き出しに、該当ソースの行番号も書いておく。
その後、astahAPIを用いて、JavaScriptでアクティビティ図の吹き出しにあるソース行番号の情報を抽出し、Excel設計書に貼られたCプログラムと照合して、合致した行番号に色塗りする、という仕組み。

つまり、astahのモデルとCプログラムの照合作業をastahAPIを使って自動化する、という作業を実現されている。
もちろん、astahのモデルは手作業で描くし、ソース行数も手作業でモデルに埋め込む必要はあるが、モデルを作っておけば、後はastahAPIでいくらでも情報を抽出できるので、照合やカバレッジなどの作業を自動化できる点は面白い。

astahを起動せずにJavaScriptで情報を取得する方法: プログラマの思索

また、astahAPIは、公開されているJavaDocだけでなく、astahからXML出力されたXMLファイルのXPATHを参考にすると良い、という話もあった。
つまり、XPATHからJavaDocにあるメソッドを連想しやすくなる、ということで、これは面白いなと思った。

astah* API

astah* API概要

astahAPIを使いたいと思っていても、大量のJavaDocから見当を付けるのが面倒でいつも何とかならないかな、と思っていたので、この発想は使ってみたいと思った。

【2】高井さんの講演では、組込みシステムのソースのリバースエンジニアリング作業は、プログラマだけでなく、熱力学など自然科学の専門家、自動車や家電機器などの業務の専門家も関係していて、彼らドメインの専門家のリバースエンジニアリングの観点は異なるので、SySMLという共通言語によって有益な情報を組合せることができる、という主張が面白かった。

確かに、プログラマはCやC++は強いだろうが、熱や振動などの自然力学の法則に詳しいわけではないから、アルゴリズムの本来の意味まで分からない。
自然科学の知識を持つ専門家であれば、このアルゴリズムが表す制約条件は、鉄板の強度や耐熱や振動の範囲を示す、などの知見を言い当てることができる。
そうすれば、自動車や家電製品の設計エンジニアは、材料の強度や耐熱、振動などの制約条件を元に、製品の形状や大きさはこういう範囲で設計しなければならない、等の知見が得られる。

すなわち、リバースエンジニアリングした内容は、プログラム層、自然科学のドメイン層、業務ドメイン層等で解釈が異なるわけだ。
そんな事を理解すると、ソフトウェアを組み込んだハードの設計や開発を真に理解するには、プログラミングだけでなく、自然科学の知識や製品の知識まで知る必要があり、膨大な範囲になる。
だから、組み込み機器の設計開発は、どんどん難しくなっているのだろう、と推測した。

もう一つ面白いと思った話は、SysMLはソフトウェア技術者の地位を高めた、という話。
つまり、今まではハードの部品ができた後で、ソフトウェア開発を行うので、ソフトウェア開発者は限定された仕様の中でプログラミングせざるを得ず、主導権を取ることができなかった。
しかし、ハードの部品が開発される前に、SysMLを用いて、製品の論理構造をモデル化できるようになり、ハード技術者へソフトウェア開発に必要な仕様や制約条件を事前に伝えられるようになった、と。

確かに、ハードの部品や製品は、材料の購買・発注・組み立てなど数多くのコストがかかるので、そう簡単に作り直しはできない。
一方、ソフトウェアはいくらでも変更できるので、無理な要望を受けてしまいがち。
しかし、ハードを発注する前の設計段階で、ソフトウェア開発では、これだけのメモリや性能は必要です、という情報を事前にハード設計者に伝達できれば、ソフトウェア開発もやりやすくなる。
SysMLはそういう波及効果があった、という話が面白かった。

【3】細合さんのSTAMPの講演後、僕は、そういう機能安全設計のモデリング技法は、一般事象のリスク識別に適用できるのではないか、と質問してみた。

僕の理解では、自動車の機能安全設計のモデリング技法STAMPでは、対象のハード製品の利用シーンをユースケースとみなして、そこからハザード分析し、人命に関わるリスクを識別し、そのリスクを潰す為の安全設計の仕様を導き出す。
そうならば、PMBOKのリスク管理に出てくるリスク識別において、ある事象のリスクを、何らかの対象の相互作業(I/F)をユースケース(利用シーン)とみなすことで、STAMPの技法を適用できるのではないか、と連想したからだ。

しかし、後で、宿口さんから、STAMPとリスク管理は観点が違いますよ、と教わった。
宿口さんの話を理解した限り、PMBOKに出てくるリスク管理は発散系の技法に近いが、STAMPは収束系の技法である。
仕様が固まっている製品に対し、製品の利用シーンを想定して、それを元にハザード分析していく手法なので、根本から手法が異なる、と。
話を聞いた限り、STAMPの技法は、ロジカルに説明できるような資料作りに役立てる技法の一つ、という印象を受けた。
僕はPMBOKもSTAMPも詳しくないので、この辺りはまた考えてみる。

【4】稲田さんの匠メソッドによるビジネスモデリングでは、経験に基づいた試行錯誤の話が興味深かった。

彼の講演の中で、ビジョンから業務要求・IT要求・仕様へ至るまでモデリングしていく中で、モデルを書いていると、ダブリやつじつまが合わなくなる時がある。
特に、数多くのステークホルダーにヒヤリングしてその内容を収集すると、そういう傾向が出やすい。
だから、その内容を早めにフィードバックして、何を最優先すべきなのか、何を妥協すべきなのか、を決めていく、と。

【5】僕の講演では、astahのRedmineプラグインの紹介。

AstahのRedmine連携プラグインが公開されました: プログラマの思索

言いたかったことは、単にプラグインの紹介だけでなく、その背景にあるモデリングツールが今後発展するために必要な機能追加の要件だ。
それは、モデルのグルーピング機能とモデル間の相互リンク機能を追加することだ。
それらは、モデルの粒度やモデルのトレーサビリティという、モデリング作業の問題解決に直結すると考えている。

モデル間のトレーサビリティと粒度、変更管理に関するastahのあるべき姿: プログラマの思索

モデルの粒度とトレーサビリティ、変更管理の問題は、モデリングツールではなくUMLそのものに真因があるのではないか: プログラマの思索

astahで設計書とモデル、プロセスをつなぐ為の資料のリンク: プログラマの思索

高井さんと話していて、モデルを沢山書いていくと、astahでもモデルのタブを切り替えるのが面倒になってくる、という話があった。
モデルが3個ぐらいなら問題ないが、10個、50個と書いていくと、モデルを探す作業に相当の時間が取られるから、とのこと。
つまり、モデルの関連や情報を検索するのに時間がかかっているのだ。

その問題の真因には、モデルの粒度とモデルのトレーサビリティがあると思う。
大規模なシステムになるほど、概念モデル、論理モデル、物理モデルなどモデルにも数多くのレイヤが発生し、区別せざるを得ない。
すると、それらモデルの粒度を合わせるために、グルーピングしたくなる。
しかし、そういう機能がUMLの仕様そのものにないし、astahにもない。

また、一つのシステムを静的な観点、動的な観点、状態遷移図、利用シーンなど数多くの観点で分析したモデルを作ったとする。
それらモデルは、一つのシステムの射影にすぎないので、相互にリンクさせることで、追跡できるようにしたい。
そうすること、重複や考慮漏れに気づくことができ、モデルの精度を上げることができるはず。
しかし、そういう機能がUMLの仕様そのものにないし、astahにもない。

つまり、astahを含めた既存のモデリングツールは、大規模なシステムの分析にはたぶん力不足。
もっと大規模で複雑なシステムを、数多くの観点で数多くのモデルで分析した時に、それらモデル間の整合性をとるために、モデルの粒度とモデルのトレーサビリティという考え方が必要になってくると思う。

一方、アプリ開発者の観点では、モデルのグルーピング機能は所詮、フォルダ分けという機能にすぎない。
また、モデルの相互リンク機能は、モデル間の相互のハイパーリンクという機能にすぎない。
つまり、モデルの粒度とモデルのトレーサビリティという問題解決に必要なモデリングツールの機能改善は、さほど難しいわけではない。

しかし、そういうちょっとしたUIの機能改善が、モデリングツールを洗練させるし、モデリング作業そのものを効率化させていくものと思っている。

モデリング技術の習得とモデリングツールの習得は表裏一体: プログラマの思索

【6】本勉強会のスコープは、「製品astah」「astahで描けるモデリング技法全般」というかなりマニアックな内容だったので、今後の勉強会の継続を懸念していた。
いくら僕が勉強会をやりたい、と思っても、そもそも人が集まるのだろうか、という不安があった。

しかし、参加者から好意的な感想も多く、また、本勉強会を以前からウォッチしていた、という方もいて、勉強会のニーズはある、と感じ取った。

いつまで続けられるか分からないけど、緩く長く続けられればいいな、と思う。

| | コメント (0)

TRIZ(発明的問題解決理論)のリンク

マーケティング企画業の古典的本「アイデアの作り方」、メーカー技術者が創造的発明する時に使う手法「TRIZ(発明的問題解決理論)」に関する情報のリンク。
結論もなく、自分のアイデアのためのラフなメモ書き。

【参考1】
アイデアのつくり方(ジェームズ・ウェブ・ヤング) - Wikipedia

「アイデアの作り方」 ジェームス・W・ヤング 感想 - 人といる時にスマホを触るな

わずか100ページの薄い本。
率直な感想は、「アイデアとは、古いアイデアを新しい机においたものと同じ」みたいに連想した。

【参考2】
TRIZ(アルトシューラ) - Wikipedia

アルトシュラー『発明的創造の心理学について』(邦訳) | 産業能率大学 総合研究所

アルトシュラー『発明的創造の心理学について』(邦訳)

TRIZが普及していないわけ(歴史的背景) ? アイデアを出すためのコトバとイメージの使い方

TRIZの概要

【1】研修で、プロジェクトマネジメント技法の一つとしてTRIZが挙げられていた。
こんな説明だった。

「(TRIZ)とは、直訳すると発明的問題解決理論。ロシアの特許審議官が膨大な特許情報を分析して「相反する問題を同時に解決すれば発明になる」「現実の問題を一般的な問題に抽象化すれば解決策がいくらでも出る」といった発明の法則をまとめた問題解決の方法論。」

つまり、品質とコストの両立という、互いの解決策が矛盾するような課題であっても、TRIZを使えば、いくらでもアイデアが出てくるよ、という売り文句だった。
それが本当かどうかはよく知らない。

【2】でも、産業能率大学 総合研究所にあるアルトシュラーの原論文「アルトシュラー『発明的創造の心理学について』(邦訳)」を読むと、深い思索があることが何となく感じた。

【2-1】原論文PDFにある自転車の事例が面白い。

最初に発明された自転車には「伝動装置がなく、走行する時は両足で地面を蹴らなければならなかった」。
そして「前輪の軸にペダルを取り付けるという技術進化」が起きた。

次に、「ペダルによって走行速度の増加」による事故障害の課題に対し、ブレーキが発明された。
「その結果、駆動輪の直径を大きくし、これによりペダル 1 回転による自転車の進行距離を増大させるという形で、作業装置をさらに発達」したが、「駆動輪の直径をそれ以上増加させると、自転車走行の危険性が急激に高まる」課題が出てきた。

そこで、「伝動装置の変更(チェーン伝動の採用)」が発明されて、「チェーン伝動により、車輪の直径の大きさではなくて、足踏み回転数を増加させる方法で高速を得ることができるようになった」。

そして「空気入りタイヤが導入」されて、「伝動装置の新たな変更(フリーホイール機構の採用)」が行われ、現在の自転車が完成した。

【2-2】つまり、ある機能の改良は、各要素のバランスを崩すまで劇的に改良できるが、その矛盾が噴出すると、システムの全体的発展のブレーキになり、成長速度が止まる。
なぜなら、ある機能に関する課題があるが、その課題を解決すると、他の技術的課題が現れ、その矛盾は現状のやり方では解決できなくなる段階に到達するから。

しかし、その矛盾の除去が本来の意味での「発見」であり、その発見は、システムの機能の一部を根本的に変更することにつながり、その影響範囲が広いほど、他の部分にも抜本的な変更を施すことになる。

そういうストーリーであると理解した。

【2-3】TRIZの原論文を読んで、「ローバー、火星を駆ける―僕らがスピリットとオポチュニティに託した夢」の一節を思い出した。

「ローバー、火星を駆ける―僕らがスピリットとオポチュニティに託した夢」の感想: プログラマの思索

科学者とエンジニアの間には、宿命的な対立関係がある。

科学者の立場は、真実の探求、自然界の仕組みの探求、制約なしの研究の結果を重視する。
科学者は理想主義者。

一方、エンジニアの立場は、技術的課題の単なる解決ではなく、最も優れた方法で問題解決する。
限られた予算、開発スケジュール、納期の制約の下、「まずまずのところ」で折り合って解決する。
エンジニアはがんこな現実主義者。

つまり、エンジニアは、品質・コスト・納期のバランスという制約条件の中で、「ほどほどの品質」「ほどほどのコスト」「ほどほどの開発期間」で、最大の良い製品を生み出す。

その宿命的対立を乗り越えたら、すごく良い製品が生まれる、という話。
TRIZにも似たような雰囲気を感じる。

【2-4】但し、TRIZはソ連における膨大な特許から、そのアイデア発想方法を理論として生み出した背景があるので、そういう膨大な知識データベースがないと、本来のメリットを活かせない気もした。
課題を解決したい時、その課題に関連する技術情報が即座に収集できなければ、無い知恵をいくら絞っても、解決策は出てこないのでは、と思った。

つまり、「アイデアの作り方」と同じく、既存のアイデアを組み合わせるやり方に近い気もした。

TRIZ――10分以内に「それ、どうやって実現するか」を思いつく方法 (3/3) - ITmedia エンタープライズ

(引用開始)
筆者はTRIZの専門家から詳しいことを教えてもらう機会が幾度かあった。
TRIZを作った人々が分析した特許は非常に膨大であったが、その99%が40のパターンで表現できたと言われている。

逆に考えると「世の中にはパターンでは表現できないものが1%存在する」とも言え、人の知性のロマンチックな可能性をTRIZ創設者らが示唆しているように思えてならない。
真偽は定かではないが、筆者は少なくともこう考えている。目の前の100の課題に対して、この40個のパターンを使えばほとんど(99%)、何かしらの解決コンセプトが発案できる。
解ける問題は効率的にどんどん発案し、人間の知恵を絞るしかないこと(1%)にぜいたくに時間を使いたいものだ。
(引用終了)

【2-5】解決策をそういう組合せの問題に持ち込めるならば、その分野はソフトウェアが強い。
そういうアルゴリズムをプログラムで実装して、ひたすら組合せの結果を評価すればいい。

それは、機械学習、人工知能にも似たような匂いを感じる。
しかし、AIが全ての問題を解決できるわけではない。
たとえば、AIでも人間と同じく、過学習という罠にはまれば、そこから脱出できなくなる。

でも、量子コンピュータなら、トンネル効果を使えば、過学習から脱出できるかもしれない。


| | コメント (0)

WinSCPでトンネリングする方法のリンク

踏み台サーバーを経由してFTP接続する方法がWinSCPで実現できると分かったので、リンクしておく。
自分が後で参考にするためのリンク。
特に主張なし。

【参考】
WinSCPでトンネリングする方法: 小粋空間

踏み台サーバ経由でWinSCPを使ってSCP接続する方法 | 株式会社ビヨンド

WinSCPで多段階接続をする - 時雨に舞う

外部から踏み台サーバ経由の多段SSH接続をWindowsクライアントから行う | Developers.IO


| | コメント (0)

« 2018年8月 | トップページ