なかなかのPCIでした

6/26金曜日の夜は、下関医師会での講演を行いました 講演会が終了したのは 8:20PMぐらいであり、急いで JR下関駅に移動し、そこから電車で二駅の小倉駅に移動しました

そして、小倉駅から新幹線で新大阪駅に到着したのは 11:00PM過ぎとなっていました この金曜日には新大阪駅の中にある REMというホテルで一泊したのです

27日土曜日には岐阜県の可児市にある東可児病院でライブデモンストレーションが開催されました この東可児ライブデモンストレーションももう数回の歴史があり、年々参加者が増えてきています

新大阪から新幹線で名古屋駅に移動し、そこで名鉄線に乗り換え、犬山駅に、ここは既に愛知県から岐阜県になっているのです 犬山駅からさらに名鉄線を乗り換え終点の東可児駅に移動しました この時点で11:00AMぐらいだったのです

午後の13:00からの術者になっていましたので、東可児駅と東可児病院の中間当たりに位置する有名な鰻屋さん「康生」に行き、吉町くん、舛谷くん、松陰くんと共に美味しい鰻重を早めに食べました

そして僕に割り当てられた症例は左冠動脈前下行枝の入口部からの慢性完全閉塞であり、シネを見ると「これは難しい、成功確率 50%か」というような症例でした

両側橈骨動脈7Frで入りましたが、7Frのガイディング・カテーテルに十分な在庫が無く、不本意なガイディング・カテーテルで開始せざるを得ませんでした

右冠動脈は非常に蛇行し、mid portionに既に薬剤溶出性ステントが植え込まれていましたが、入口部から近位部にかけても 50%程度の病変があり、逆行性アプローチを行う場合には、この病変が問題となることは明らかでした このため、まず右冠動脈近位部にステントを植え込み、不確実性を排除する方針で臨みましたが、前に植えこまれたステントが邪魔をするのとガイディング・カテーテルの形状が良くなく、右冠動脈近位部をステントで治療するのに 30分ぐらいかかってしまいました 僕の助手は愛媛県の済生会西条病院の金子くんが務めてくれました 彼に助手をして頂くのは、これまで各地のライブデモンストレーションで既に行って頂き、今回が三回目でした 気心知れた感じでとてもヤりやすく手技をすることができました

右冠動脈近位部をようやく処理し、それからCorsair + Sion-Blueを用いて中隔枝を狙い、Sionに変更して、ガイドワイヤーを中隔枝から左冠動脈前下行枝遠位に持ち込むことに成功しました Corsairは相変わらず中隔枝を通過できず、Finecross-GTに交換し、中隔枝を超えることができました そこでワイヤーを左冠動脈前下行枝近位に向け、それからワイヤーを Ultimateに変更し慢性完全閉塞を逆行性に狙いましたが、ワイヤーは近位部の枝に入るのみで慢性完全閉塞部分には全く進みませんでした そこで、Gaia-Thirdに交換したところ、近位部に進みそのまま左冠動脈前下行枝近位部から左主幹部にかけて subintimal spaceに進んで行きました

ここで順行性ワイヤリングを開始し、色々なワイヤーを用い最終的に Conquest-Pro9により一瞬の隙をついてワイヤーを左冠動脈前下行枝近位部の subintimal spaceに持ち込むことができたのです ここで 3.0mm balloonにより Reverse CARTを行いついに RG-3により Externalizationに成功しました

この後出来の悪いガイディング・カテーテルのせいで(いやいや自分のテクの下手のためですよ)、一旦システムがバラけてしまいましたが、立て直し、結局 3.0 x 28mm, 3.5 x 2mmの薬剤溶出性ステントを左主幹部入口部から植え込み、KBTを行って良い結果となりました

とてもむずかしい慢性完全閉塞でしたが、何とか成功することが出来、とても嬉しく思いました また、この症例をやりながらも自分の技術が進化しつつあることを実感できたこと、それが一番嬉しかったのです

手技を終え、再び東可児駅より名鉄電車に乗り、名古屋駅から新幹線で新横浜駅に到着したのは 6:30PMでした

次の勉強に着手

色々な Web Siteを創っています 本来 Web Pageは静的な HTML言語を用いてもともと作られてきました しかし何時の頃からか時代の要求に応じて動的なものに変化してきました

その動きを実現する要素技術として、サーバー側では Perl, PHP, Ruby, JAVAなどに代表される言語があり、またデータ格納のための、SQL言語を扱うシステムがあり、そしてクライアント側では CSS, Javascriptがあります

Javascriptは時代と共に進化し、Web pageで動きをつけるためには無くてはならないものとなっています その文法は分かりやすくもありますが、落とし穴が多く、Javascriptそのものを用いて少し大きなシステムを創ろうとすると途端にはまってしまいます

これを解決するために昔から Javascriptの上に上位言語を創るという試みが行われてきて、それに成功した代表例が jQueryなのです

しかし、jQueryでも不十分な要求がどんどんあふれ、それを解決するために、TypeScipt, AngularJS, CoffeeScriptなどが創られてきました 要するに新たに勉強しても次々と新たなことが生まれてくるのです

そんなにこちらもついていけません

でもね、心の中で要求が生まれ、それが次第に大きくなっていくのです 挑戦です 今そんなで挑戦しているのが D3というものです これは、基本的に Web Page上でダイナミックにグラフを描く、そのための言語なのです Javascriptによって組み立てられたメタ言語なのです そして、html5になって普通に使用できるようになった SVG (Scalable Vector Graphics)という素晴らしいシステムを使いこなすための言語なのです

とは言っても難しいです でもチャレンジです 楽しくて楽しくて仕方ありません

新しい時代の始まりか

昨日はある治療を二例で行いました ここでは詳しくその内容について記載することはできません

新しい治療を新しい医療器具を用いて行ったのです これはとてもストレスのかかることです 何故ならば

  1. 何しろ未経験なことなのでそれ自体リスクを伴う
  2. 新しいことを行う、ということはこれまでの治療よりも少しでも良い結果がもたらされることを要求される
  3. 新しいことを行った結果、これまでの治療よりも少しでも悪い結果がでてはいけない
  4. もしもうまく進まなければ、それは術者としての私自身の大きな責任となり得るばかりでなく、私自身を否定するものとなり得る
  5. もしもうまく進まなければ、その本来は有効である可能性が高い治療器具・治療概念そのものが否定されかねない

などなど色々なことを考えてしまいます それは巨大な重圧となって僕の心に振りかかるのです これをどのように乗り越えて前に進むか? それには人生のコツが必要なのです それについては何れ機会があれば述べましょう

そして、その後は横浜で講演会があり、講演を行いました そして、昨夜は羽田東急エクセル・ホテルに宿泊し、今 6:30AM発の千歳行きの便に乗るため羽田空港ラウンジにいるのです

圧倒的に睡眠時間が少く制約され、体力的に辛いです そんな中でも頭脳は冴え渡り、今も つい今使用した「制約」という言葉から、「制約理論」という言葉につながりました 「制約理論」と言えば堅苦しい言葉に聞こえますが、世間一般では TOCという言葉で使われることが多いようです TOC = Theory of Constraint のことであり、この混乱した社会の中で生きていくためには、色々な制約の中で最善の結果をもたらす必要がありますが、それをいかに一定の方法論に従って効率的に行っていくか? という方法論の集大成なのです

いやこの表現が正しいかどうか、そこまで僕は未だ勉強していませんが、大筋では正しいと思います そろそろ出発時刻でしょうか

すっかり忘れて

まったくすっかり忘れてしまいました 何を? それは これまで作成・運用している Web Siteのことです

この背後では大掛かりなプログラムが走っています その多くは PHPと JavaScript/jQueryで書かれたものなのです そのプログラムのバグを潰そうとようやくとりかかったのですが、この間実に2ヶ月間が空いていたのです

その結果、プログラムのロジック把握ができにくくなっているのです これまでの変更履歴は Gitでトレースしているので何処をどう変更したか明らかであり、また何時でも戻すことができます しかし、肝腎の頭の中をついていかすには少し時間がかかりそうです あああ

実は今

実は今 Orland空港のラウンジにいます このフロリダ州オーランドの学会から今回、Meet the Legendというセッションに招待されました

要するに僕が Legendとして認められ、表彰されました まあ、EuroPCR meetingの時の、Ethica Awardみたいなものですが、それよりは重みは少ないと思います さらに、今回はオーランドから自動車で 1.5時間の距離にある病院からライブデモンストレーションを飛ばす予定だったのですが、その病院のマシンが故障してしまい、残念ながらできませんでした

そんな訳で現在はラウンジにいて、ワシントンDC行きの飛行機を待っています そのまま成田に帰国します

HDへのバックアップ-続き2

さて大分目標に近づいてきました 次はいよいよ command.shの中身を書くことです そもそもなんで .shという拡張子をつけたのでしょうか? それは .shという拡張子は、そのファイルが shell scriptであるということが予約されているからなのです つまり シェルがこのファイルをスクリプトと認識できるのです さてその中身ですが、

#!/bin/sh
rsync -av Documents/backup-source1/ /Volumes/TOSHIBA1TB/backup-source1/
rsync -av Documents/backup-source2/ /Volumes/TOSHIBA1TB/backup-source2/
echo "Backup procedures were finished!"

などとするのです 今簡単に、中身をこのようにすると書きましたが、実はこれも Unix初心者には困難な作業です これには vimなどのエディタを使用せねばならないのですが、このエディタというのが初心者には敷居が高いのです まあ今回はそこについては解説しませんね

ちなみに、rsyncのパラメーターである -avといのはおまじないのようなものですが、要するにバックアップの途中経過を表示する、という意味です

また、ここで非常に重要なのは、

rsync -av Documents/backup-source1/

の部分の

backup-source1/

のところの最後に

/

というスラッシュがついていることです これが無いと、rsyncはこのバックアップ元がフォルダであることを認識しなくなります 非常に重要です さて、ここまでして command.sh という実行ファイルを作成しましたが、これを実行するためには 今自分が /Users/username/というディレクトリにいるとすれば、

$ /Volumes/TOSHIBA1TB/command.sh

このように打てば良いだけです 後は、バックアップを実行してくれます これで便利な日常の回復です

HDへのバックアップ-続き

さて、シェル・スクリプトを用いてバックアップを自動化するためにはどうすれば良いか?

方針としては、その該当するシェル・スクリプト、これを仮に command.shと名付けることにしましたが、このスクリプトの置き場所は、その該当する HDに置くことにしました

まずは HDに内容の無い command.shというファイルを作成します その前に、OSXから見て、該当の HDがどのような名前で認識されているか知らねばなりませんが、これには

$ df -k

と打ちます

そうすると僕の場合

Filesystem                        1K-blocks      Used Available Use% Mounted on
/dev/disk1                        975912960 719561052 256095908  74% /
localhost:/YGd**************4DJF2 975912960 975912960         0 100% /Volumes/MobileBackups
/dev/disk3                        976076800 947381836  28694964  98% /Volumes/TOSHIBA1TB

というものが戻ってきました 既に 1TBの内の 74%を使用していると書いてありますね この /dev/disk1 というのが僕の 1TB SSDということになります

そして、最後の /dev/disk3というのが MacBook Proに USB接続した portable HDであり、その名前は /Volumes/TOSHIBA1TB であることが狩りました おっと、こちらも 1TBの内の既に 98%を消費している、ということが分かりますね さて、この HDに command.shというファイルを作成するには

$ touch /Volumes/TOSHIBA1TB/command.sh

とすれば良いのです つまり、意味する所は、/Volumes/TOSHIBA1TB/command.sh というファイルを作成する、ということなのですが、実はこのままでは permission errorというエラーが出て叱られてしまいます

$ sudo touch /Volumes/TOSHIBA1TB/command.sh

このように頭に sudoというコマンドを付け、最高権限でコマンド touchを実行せねばなりません 当然この時には passwordを聞かれます

ここからが Unixである OSXはややこしいのです このままでは command.shを実行することはできません、それは僕が root権限でこのファイルを作成したからでなのです 実際にそうであることは以下のコマンドで分かります

$ ls -l /Volumes/TOSHIBA1TB

これに対して OS側が次のようなものを戻します

-rw-r--r--    1 root        wheel      0  6 17 18:28 command.sh

これが意味するところは、このファイルは rootのものであり、僕のものではない、ということです ですからまずはこのファイルの所有権を僕のもの、ここでは username  というユーザーということにしておますね、その僕のものにせねばなりません このためには所有者変更コマンドを発行します

$ sudo chown username /Volumes/TOSHIBA1TB/command.sh

これで再び

$ ls -l /Volumes/TOSHIBA1TB

とするとあらあら不思議

-rw-r--r--    1 username        wheel      0  6 17 18:28 command.sh

となり、このファイルの所有者が見事に username  に変更されました

Portable HDへのバックアップ

1TBの SSDを搭載しているMacBook Proを持ち歩いているので、その中にあるデータは僕にとって過去の自分の歴史25年間ぐらいが詰まったとても貴重なものです
パソコンは機械ですので何時障害が起こるかも知れません そんな時にはSSDの中の貴重なデータも消失してしまいます 実際過去にそのようなことが何回か僕の身にも降りかかりました 一番良く覚えているのは、15年ぐらい昔のことです その当時、Sonyの VAIOを持ち歩いていたのですが、タイのバンコクで突然変な音がすると共に VAIOが立ち上がらなくなったのです
記憶ではあの時は Spencer King III先生とご一緒していました 僕は正直真っ青になったのです 当時は未だ Portable HDと真に呼べるような小型のHDはとても高価であり、持ち歩いていなかったのです
ただ幸いなことに、その当時から OS boot領域は HDへのアクセスが頻回なので破壊される危険性が他の領域よりも高いことを知っていまし そして、新しいパソコンを入手すれば、まずは必ず HDの partitionを切り、Drive C:に対して OSを Clean Installしていました そして、Programは C:¥Programに、データは全て D:に入れていました
このバンコクで起こったことは、多分当地の湿気も絡んでいたのでしょうが、C: driveがクラッシュしたのです
仕事を早々に切り上げ、成田に戻り、知人の会社にそのパソコンを運び込み、HDを VAIOより取り出し、そのHDを直接他のマシンに接続し、D: drive dataを安全な他の HDに完全にバックアップしました
これでその時までの僕の人生のかなりがリカバーされました
この事件以来、僕は必ず portable HDにデータはバックアップすることにしました

さて、MacBook Proですが もともとHDは存在せず、SSDしかありません そんな訳で HDシステムよりは安全ですが、それでも何時障害が起こるかも知れません これに備えて常に複数の Portabld HD (1TB – 2TB)にバックアップしていますが、もともと OSXには TimeMachineという簡単で優秀なバックアップ・ツールが存在します これを用いれば簡単なのであり、実際にそのようにしています
しかし、時に個々のファイルや個々のフォルダをBack Upする必要もあります
これには

$ rsync

という bash shellのコマンドを使用します 実際先の TimeMachineも内部的にはこのコマンドを用いている、という話です

ところが、いちいちこのコマンドを打つのは結構面倒です そこで、僕はその Portable HD上に、command.shというシェル・スクリプトを書き込み、このスクリプトを走らせれば目標のフォルダをバックアップすることができるようにしたいと思いました

まあ小さな小さな Unix Programmingということになりますね

この続きはまたね

 

one linerの例

前回にも述べた awkの話です

$ seq 1 20 | xargs -n 5

これで出力は

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20

となります 要するに seqにより 1 から 20の連続する整数を出力し、それを pipeで xargsに流し込み、オプションにより 5列に整形した結果です

これに awkを用いると

$ seq 1 20 | xargs -n 5 | awk '{print $1 $3 $5}'

のようにすれば、その5列の表の 一列目、三列目、五列目が出力されます その結果は

135
6810
111315
161820

となり列と列が隙間なくうまり分かりにくくなります これに対して

$ seq 1 20 | xargs -n 5 | awk '{print $1"\t"$3"\t"$5}'

とすれば 列の間に tabが挿入され

1	3	5
6	8	10
11	13	15
16	18	20

のように非常に分かりやすくなります こんなことをワシントンDCのラウンジで行っています

やったね 難問解決

今、プログラミングをもっと効率的に行える自分になれるように Shellプログラミングの勉強をゆっくりと初めています

これを使いこなせるようになれば、自動で色々な変換をしたりできるようになる筈です

とはいうものの、なかなか厳しい世界です 簡単なことでもすぐに挫折してしまいます 実際昨日から今日にかけてぶち当たったのが

username$ brew install coreutils

このように homebrewを用いて coreutilsをインストールしたにもかかわらず symlinkができていない、というエラーが homebrewからはかれたのです

用いたいコマンドは sedとawkなのです そして、色々調べたところ以下のようにして解決しました

usename$ brew link coreutils

さてこのように symlinkを作成したところ、検証のために以下のコマンド入れると

username$ which awk
/usr/local/bin/awk
username$ ls -l /usr/local/bin/awk
lrwxr-xr-x 1 username admin 28  6  9 13:27 /usr/local/bin/awk -> ../Cellar/gawk/4.1.3/bin/awk*

とこのようにawkがgawkにリンクされたことが分かります

実際に以下のようにawkが正しく日本語を処理できる gawkにリンクされたことは検証できました

username$ echo 山田 | awk '{gsub(/^./,"上",$1);print}'
上田

このように”山田”という文字列が、正しく日本語として判定され、その第一文字目が”上”に変換され、その結果 “上田”がコンソールに出力されています

これは「小さな一歩であるが、未来に続く一歩である」なんてねね