Thought about system by Hiroyasu Ishikawa

We are uncovering better ways of developing system.

ROSで使う新旧のビルドツール

ROSのCatkin向けツールについて、新旧の2つのツールがあるようだ。古い記事だけでなく、最近も古い方で記述されている記事もあるため、どちらも知らないと読み替えで混乱しそう。

catkin-tools.readthedocs.io

ROS/Tutorials/catkin/CreatingPackage - ROS Wiki

Network configuration for ubuntu linux

Ubuntu Linuxでネットワークを設定

Ubuntu LinuxIPアドレスを静的に割り振ろうとしてネットワークの設定を変更した。
以前Linuxで設定した時の方法と異なる記憶であるため、記録しておく。
環境は、以下の通り。

設定する方法

下記のドキュメントに従って設定した。
help.ubuntu.com

f:id:hiro211:20190602192710p:plain
netplanの設定ファイル

設定結果

f:id:hiro211:20190602192326p:plain
ipコマンドによる設定後の表示

Systems Thinking の講座を受けてきた

3/9(土)10(日)に、慶応SDMで開講されていたSystems Thinkingの講座に参加してきました。講師はOckie先生で、もちろん全て英語での講義。なかなかハードな2日間でした。

www.sdm.keio.ac.jp


なぜ参加したかというと、システム思考の基礎をより強くしたかった。システム思考やそれに近い考え方を、色々と適用していているのですが、より実践に活用していきたい、そんな思いから参加しました。

講義は、先生の適用した実例を交えながら、システム思考の説明があり、先生が用意した課題に対して、グループで取り組む、というスタイルでした。このスタイルは、とてもシステム思考の講義にはまっていたと思います。「実践して学ぶ」「やってみる」「失敗から学ぶ」ということが学びに重要な分野は多いですが、特にシステム思考はそれが重要な分野の1つだと実感しました。先生も途中まででも良いから、間違えても良いから、どんどんやってみよう、という雰囲気を、大切にされていたような感触を受けました。

途中の休憩では、業務に新しいシステム(ソフトウェア)が近く導入される同じグループのメンバーの不安のお話から、ソフトウェアのアジャイル開発の話に花が咲きました。システム思考では、解決方法の実践の前に「人」を含めた大きなシステムを描いて分析する、というようなことをやります。この「人」を含めて考えるあたりが、お客さんが本当に欲しいシステム、お客さんが幸せになれるシステムを開発するというような考えが潮流にある、アジャイル開発ととても似ていると思っています。まだちょっと体系化して説明できる状態になっていませんが今後もう少しうまく説明できるように研鑽したい。

何れにしても、システム思考という考え方は、ソフトウェアや電子システムのようなシステムを設計する時に役立つと考えています。設計対象にフォーカスして、枠の外にある物や事、特に人、を忘れ去らない、そんな一助となると考えた2日間でした。

講師のOckie先生、五百木先生、はもちろん、グループ・ワークショップ形式のセッションであったため、参加者の皆様にもお世話になりました。色々な分野の人とシステムについて考えることは非常に有意義な時間を過ごせたと感じています。ありがとうございました。

MacOSにYeomanをインストールした時に発生したエラーへの対応

VS Codeのエクステンションを開発しようと、Yeomanをインストールしていた時にパーミッションで怒られた。

Step 1: Set up your dev environment | Yeoman

パーミッションというとなんとなくsudoコマンドで管理権限を実行し、解決してしまいそうだが、上記のドキュメントをよく読むと、sudoを使うのは悪手のような記述があり、リンク先の方法で解決した。

guides/npm-global-without-sudo.md at master · sindresorhus/guides · GitHub

ホームディレクトリ配下に.npm-packagesというパッケージ格納ディレクトリを作って、ここで管理するようだ。グローバルな環境に影響を与えないので、この方が良いということなのだろう、ということは想像できる。

ボリューム名が重複したディスクのLVMボリュームをマウントする

どんな問題だったか

メンテナンスしようとしてpvscan、lvscanしてみると、名前が重複していた。

PV /dev/sdb  VG tank lvm [5.46TiB / 0 free]
PV /dev/sda  VG tank lvm [5.46TiB / 0 free]

lvscan

inactive /dev/tank/tv
ACTIVE /dev/tank/tv

どうしたか

vgdisplayでVG UUIDを調べる

(略)
VG UUID               tHyFVt-lnWm-19Gu-Bhea-29lv-6Xf6-xxxxxx

vgrename でUUIDを指定して名前を変える

vgrename tHyFVt-lnWm-19Gu-Bhea-29lv-6Xf6-xxxxxx VolGroupHoge

(successfullyと表示されればOK)

vgchangeでActivateしてマウントして解決した。

私の批判に対する心の保ち方

ソニックガーデンの倉貫さんの記事を受け、私が感じたことと、私なりの安寧の保ち方を少し書きたいと思った。

倉貫さんの心の保ち方

倉貫さんの記事は以下より。
medium.com

なかでも今まで知らなくて、なるほど、と思ったのがゲニウスのくだり。

外在するゲニウスによってもたらされるものとすることで、作品と作者の結びつきを弱くできる。

さらに、よく考えると今自分が考えていること「アウトプット」の源泉は、他人もしくは他人の著作のインプットによるものであることは事実だと思う。例えば、物心ついたころには親から、学校に行くようになれば先生・友人から、社会に出れば同僚から、識字できる以上の年齢なら本から、インプットをもらって新たにアウトプットさせて頂いている、とも思える。そこからインスピレーション(発想)しているのは自分ではあるものの、考えまくって、悩んだあげく、なんちゃらが下りてくる、なんていう言葉があるように、ゲニウスがポロっと取り付いて、発想できているというのは、ストンと納得できる。

私の心の保ち方

上のゲニウスが加わりそうではあるものの、今日までの考え方の一部を紹介してみようと思う。

私は、まだまだ、多くの批判を受けたことがないと思っている。他人と比較しても仕方がないが、インプットを得ている人たちを見ているとそう思ってしまう。それは、転じて自分のアウトプットが世に広く出せていない証左だと思っている。だからこそ、批判をたくさん受けるほど、アウトプットを出せていることを少々うらやましくも思ったりする。であるから、これから多くの批判を受ける立場になったとき、それは成長し、自分のアウトプットが世に出る、「出世」したと考えることができるような気がする。

次に、少ないながらも、何かしら作っている職業柄、時折、ポジティブ・ネガティブ含めた反応をいただくことがある。
そんな時に思うことは、まず、
「人間は、言葉で意思を正確に伝えることはできない」
という確からしいことだ。
詳細は哲学書に譲るが、ウィトゲンシュタイン氏の言語ゲームあたりで探すと出てくる。
「言語は厳密に定義なんてできない」(ゲームと同じようなものだ)
で、あるからして、
自分の記事が「わかりにくい」とか「伝わらなかった」とか「曲解された」とか、そういう批判はそもそも、「完璧にわかる」文章を書くこと自体が不可能であるから、気にしなくて良い、と考えるのは私の心の保ち方だ。この、偉大な先人が、考えに考えを重ねて、明らかにしてくれた確からし*1事実をもとに私は心を保っている。

ただし、唯一気を付けたいと思うのは、批判というか、有用な指摘である。アウトプットに対する反応で学ぶこともあるため、この辺のバランスが非常に難しいな、と感じる。

ソフトウェアを作ること、というのは人間の「認知」という能力に基づいているところがあるため、自分の思想がアウトプットに反映されやすいと思う。私も倉貫さんや先人の考え方に学び、批判を過度に恐れることより、アウトプットできなくなることを恐れるように行動していきたい。

と書きながら、この記事の反応を恐れつつも公開しよう

恐れながらも、公開していただいた倉貫さんに拍手を送り、私もこの乱文を公開しよう。

*1:そもそもそれも文章で読んでいるのだから私が完全に理解したとは言えないはずなので、確からしい、となると考えている

Sprottyのサンプルをビルドする

SprottyというEclipseのプロジェクトがある。サイトの解説の一文を直訳すると、Webベースの作図フレームワークである。

はじめに

Eclipseのプロジェクトサイトは以下にある。
Eclipse Sprotty | projects.eclipse.org

ソースはGitHubから取得できる。
github.com

サンプルをビルドする

GitHubからgit cloneする。

Node.js, Yarnをインストールしていない場合はそれらをインストールしておく。
レポジトリのREADME.mdにあるように、clientのディレクトリで以下を実行すれば良い。

yarn
yarn  examples:build

Proxyがある場合は、yarnのコンフィグを設定してから実行するか、yarnのコマンドに`--proxy`と`--https-proxy`あたりを指定すれば良いらしい。

サンプルを実行する

`client/examples/index.html`をブラウザで開くと幾つかあるサンプルページへのリンクが表示される。
例えば、Class Diagram(クラス図)のサンプルであれば以下のようなダイアグラムが表示される。

Sprotty - sample class diagram