読者です 読者をやめる 読者になる 読者になる

ながさわさんのアレグロモデラート

アレグロモデラート(Allegro moderato)は、速さを示す演奏記号で「穏やかに速く」

勝手な思い込み

計算が得意だが数学にはあまり執着がない女性は心理学の方向にいく傾向があるというnさわさんの勝手な思い込み。国語は数学よりも残酷に答えがひとつであるということをわかっているので、英語にもパワーを発揮する。こういったひとたちのユニークな発想や発言を聞くのが面白い。
計算というよりは、数学の概念を活用して、数式を展開し続けることが好きな女性は、心理学というよりは、好き嫌いで生きていて、他人にはあまり関心がない、というのもnさわさんの勝手な思い込み。こういったひとたちは自分で自分の発想や発言がユニークだとわかっていて、あえてミーハーな発想を浴びせて戦わせるのが面白い。
お酒呑んでいるときに話題が唐突に変わり続けるばかりか、いきなり感情的になるひとは芸術系が多い。まったりと時間を過ごしたいぼくにはすこししんどい。ただし、ピアノを弾くひとは、よくしゃべるが、起伏は激しくない。
話題の提供や、価値観を戦わせるということこそ少ないものの、となりでおとなしく聞き役に回り、必要な合いの手を入れてくれるのはたいてい家政系の短大卒、または保育士のひとたち。こういったひとたちは総じておかあさんになることに憧れがある。このようなひとたちを奥さんにすると苦労しないのだろう。勝手な思い込み。
 

YouTube 中継 + chatwork グループチャット+ skype 接続 による勉強会実施の課題整理

やりました。

www.youtube.com

こっちではもう少しリラックスしてしゃべっています。

www.youtube.com

 

さて。今回は、

という試みをしました。会場で7,8人をリアルで対応しつつ、chatwork では8名を対応しながら、Skype では最大3人と会話しながら、進めていきましたので、非常に疲れました。全体の進行にくわえて、1セッション担当しましたので、ヘトヘトです。

順番に反省などしていきます。

1. YouTube

ハングアウトを使います。イベントを作って配信します。

ブランドアカウントを作成してチャンネルを作成すれば、複数のアカウントでイベント作成できます。

support.google.com

 イベントは中断できないので、音声テストなどは別のイベントを作ってテストしました。

カメラはこれ。

www2.elecom.co.jp

このカメラ、マイクついているので、これだけでも配信できますが、一度このマイクで拾って配信したときに声が小さいというご意見をたくさんいただいたので、ワイヤレスピンマイクを用意しました。

Bluetooth のマイクだけって、以外とないので、

www.puraisu.com

これは、送信機と受信機を FM で飛ばす方式のワイヤレスマイクです。

これを、ジャックが 6.3mm の標準ジャックなので、3.5mm のミニプラグに変換するプラグ

www.audio-technica.co.jp

で変換します。最近のパソコンは、イヤホンとマイクがひとつの端子になった、4極なので、これ、

Amazon | 3.5mm4極 イヤホン・マイク分岐ケーブル【85295】3.5mm4極(オス)-3.5mmイヤホン(メス)&3.5mmマイク(メス)/変換名人 | | 変換コネクタ通販

で変換して、マイク側に挿入しましたが、うまくマイクを認識しませんでした。

そこで、

buffalo.jp

を使い、あたらしいサウンドデバイスとして認識させ、マイクを差し込むとうまくいきました。

ピンマイクは、2つ同じものを買いました。周波数は両方とも同じだったようなので、受信機ひとつで、複数のマイクからの送信を試みようと、もうひとつの送信機には、

www.sanwa.co.jp

を接続して、講師の声とギャラリーの声をうまくミックスさせようと思ったのですが、雑音が入ってうまくいきませんでした。うまくミックスさせることが[課題1]。もういちどやってみて、だめならミキサーの購入を検討します。

また、ワイヤレスマイクですが、送信機の電源をオフにすると、FM の電波が途切れるので、ザーッと砂嵐状態になります。イベント中は送信機の電源は切らず、ボリュームを下げることで対応する必要があります。[課題2]

2. chatwork

グループチャットは、右すみにある、グループチャットの招待アドレスと、グループチャットそのもののアドレスが異なるようです。

f:id:lakeside_shinnosuke:20170220123046p:plain

後者は参加申請できるのですが、前者は「メンバーではない」と言われてしまいます。この案内が間違っており、今回は、グループチャットへの参加に手間取ってしまいました。[課題3]

中継開始後、この事実に気づき、中継をご覧の方に周知しようと思ったのですが、

  • YouTube のライブ中のチャットには URL が入れられない
  • YouTube のライブ中はコメント欄がない

などの問題があり、結局、正しい URL を Google の短縮 URL にして、ライブ画面に大きく映し出すことで、伝えることになってしまいました。これは大きな失敗。

また、参加申請は管理者が承認するのですが、このときに、管理者が僕しかいなかったので、承認が遅れてしまいました。

これは chatwork の U/I がちょっと複雑ということになりますが、グループチャットの管理者を追加するには、以下の操作が必要になります。

上のチャットメンバー(+15)をクリック。

f:id:lakeside_shinnosuke:20170220123853p:plain

下の「メンバーの編集」をクリック。

f:id:lakeside_shinnosuke:20170220123944p:plain

 ここのドロップダウンリストで、権限を選択します。

f:id:lakeside_shinnosuke:20170220124040p:plain

この操作がよくわからなかったのが[課題4]

なお、Youtube の配信用PC と chatwork の接続は同じパソコンを使いました。カメラの撮影対象となるプロジェクター投影の正面に、大画面のモニタを用意して、そちらに、配信用PC から D-Sub で別画面として接続し、ライブのウィンドウと、chatwork のウィンドウが見えるようにしました。chatwork はコンタクトウィンドウを最小化できます。

f:id:lakeside_shinnosuke:20170220124539p:plain

この左向きの三角を押せばよい。

3. Skype

chatwork は声ではつながれないので、知人には、Skype のチャットルームを用意して、案内しました。Skype 側は、以下の会議用スピーカーフォン(マイク+スピーカー)

Amazon | 並行輸入品 Plantronics P420 Calisto USBスピーカーフォン | USB充電・データ転送ケーブル オンライン通販

で接続しました。こっちはとくに問題なく。ただ、YouTube はギャラリーの声が拾えないので、こちらでの会話のもようはうまく伝えられなかった。[課題1]を解決する必要がある。

また、Skype 参加のひとは、こちらの雰囲気を知りたがっていたので、プロジェクターでない側のカメラで接続するようにすればよかったというのが[課題5]です。

 

4. サマリー

  1. 講師の声とギャラリーの声をうまくミックスさせる
  2. 送信機の電源をオフにすると、砂嵐状態になるので、送信機の電源は切らない
  3. グループチャットの招待アドレスが間違っていた
  4. グループチャットの管理者追加の操作方法がよくわからなかったのが
  5. Skype は プロジェクターでない側のカメラで接続するようにする

1 は 2 との兼ね合いもあるようなので、もういちどやってみて、必要ならミキサーを購入します。

2 は次回徹底。

3,4 は修正済み。

5 はカメラの購入を検討します。ただそうなるとパソコンがもう一台必要になりますね。なんか用意します。

また[課題6]として配信内容のチェック(いわゆるマスターの役目)というのが必要で、今回は参加者のおひとりの厚意で、チェックをしていただいていました。次回はこちらでやれるようにしたい。

 

ということで、次回への課題整理でした。

ひきつづき、

www.youtube.com

でお楽しみください。今後のご指導ご鞭撻のほど、よろしくお願いいたします。

 

 

 

補助席でお弁当は食べたくない

きのうの北浜での勉強会の帰りも順調に、グリーン車の喫煙コーナーでハイボールを呑みながら、京都で乗り換え。短い編成の普通は混んでいたので、少し待って、長い編成の新快速に。いつも先頭車のすみっこでちっちゃくなるのだが、きのうは若いカップルが並んで座れる座席を探してうろうろとしだして落ち着かなかったので、少し離れて、補助席の正面のスペースに寄り掛かって落ち着く。
 
京都を発車してしばらくして、僕の目の前の補助席で繰り広げられたのは、小学校4年生くらいの細めの男の子が通路側から、補助席に座るお母さんに向かって、身を乗り出すようにけたたましくしゃべりだす、という光景。「僕はこんな席でご飯食べないからね。ちゃんとした席で窓側で景色見ながらお弁当食べるんだ。こんな席で食べないからね。東海道本線で、米原過ぎて、東海道本線で窓際に座って、ご飯食べるんだ。東海道本線で。」母は呆れ気味に「うん、座れたらね。」お母さんの手にはお弁当とUSJのおみやげ袋。
 
なるほど。たぶんこの子は電車好きで小さいながらも、DVDやタモリ倶楽部とかで見た「旅情」をやってみたいと決め、新幹線ではなく在来線でUSJで行きたいとねだり、関西の電車の混み具合にへきえきとし、やっと「それ」が実現できそうな帰りの新快速で確保できたのが、223系の進行方向に背を向ける補助席だったことに、やるせなさを感じているんだろう。何度も何度も「東海道本線」と言っていた。
 
僕は大津で降りたが、親子は岐阜あたりから来てるんだろうと想像。電車を単なる移動手段ととらえがちなお母さんからしてみれば、およそ2時間の大阪からの帰りはつらいものだろうなあと心中察するに余りある。しかも息子に楽しんでもらいたかったのに。確かに都会の電車で旅情を感じるのは難易度が高い。楽しもうとするには、事前の情報や心構えが必要だろうな。
 
岐阜~大阪のルートで「旅情」を感じようとするなら、こだま号をうまく割引を使って安く確保し、可能ならグリーン車にして、ゆっくりと時間を使ってUSJまで行くというのが正解だろうなあ。近い将来、その、男の子のほうが、大きくなった時に、お母さんに「旅情」を感じさせてあげてほしい。



来年へのみちしるべ

ながさわさんは江戸にいます。フェイスブックに書くとみんなが見てしまうのでこちらに書きます。

f:id:lakeside_shinnosuke:20161211025723p:plain

2016 年も終わろうとしていますが、今年は忙しく、充実した1年でした。年始は、昨年のやり残しの仕事でいろいろと消耗しましたが、6月の Japan SharePoint Group への初参加を経て、10月にはピンチヒッターで登壇しました。

www.slideshare.net

 

4月からはオンサイトの仕事をセーブして、場所を問わずに仕事できるように調整し、僕のネットワークプログラミングと方式設計ができることの強みが活かせるような仕事にも従事するようになりました。7月には、昨年からやりたいと言っていた、フリーエンジニアによる2泊3日のプロエンジニア開発合宿が実現でき、これは、仲間とのつながりを確固たるものとしました。

もともとは東京と一線を画して、大阪でできることをやりながら、これまでの経緯をたどるために粉骨砕身しようとしていたのですが、大阪へリソースを集約させようとする過程で、名古屋以西でまとまろうという発想になったプロエンジニアカンファレンスは、その実現のために、福岡、広島、岡山をたずねた秋口の日々を積み重ねます。

そんな中でも、僕に寄せれられる仕事のお話しは日に日に増え、毎日増える仕事の上澄みだけを処理していく日々が続き、プロエンジニアカンファレンスについては、当初考えていたことの半分もできなかったような気がしますが、僕の想定を超えるところであらゆることがすごいスピードで動き、当日はありがたいほどの盛況を見せました。泣きませんでしたが。(笑)

ただし、試験的にやってみたイベントであったのですが、参加された方の期待されていたものは様々で、いくつかの意見があったのも事実であり、これについては、来年への布石というか、フリーエンジニアの成果を発表するイベントとして、様々な形があるのだと思い知らされました。そして、ここで得たことを、来年に向けて、どのように昇華していくべきかを、いま、かんがえているところ。

仕事は確かに忙しかったですが、全体的にプロジェクトの動きが遅く、見積もりばかりやっていたというのが事実で、今年の売上は飛躍的に伸びたというわけではありません。ただし、こちらについては、来年以降への布石は確実に打てたと感じています。テレワークのノウハウも、わずかながら構築できてきた。

そのうえで、これらのいしずえとなっている、毎月の勉強会についても、今年は3Dプリンタが動き、いくつかのメディア展開を見せ、さらに、ライトニングトーク会は隔月開催にも関わらず、毎回着実に参加者が増え、大阪の2大勉強会となりつつある。そんななか、僕のグループウェア勉強会は、年始に一方的な仲間割れということがあったりはしたけれど、僕は、SharePoint および Office 365 ないしは グループウェアというものは、「生きていくための手段」というつまらないものではなく、「システム構築プロジェクト」または「日々の業務」というものを「円滑にまわしていくためのツール」であり、そしてその運用のためには「システムを構築するための知識」ではなくて、「リテラシーに近いなにか」が必要であると問うて、僕は、この姿勢を崩さずに、1年やってみた。(グダグダなことが結構あったが)

カンファレンスでも言ったように、来年、僕のセッションでは、大阪の勉強会全体のことを考えるという時間は、今度新しく立ち上がる、Java 初学者向けにわかるまで教えるという勉強会にシフトさせ、新しい体制において、来年の合宿、カンファレンスを迎えられるようにしていきたいと考えていたりする。また、この「わかるまで教える」勉強会については、リモート参加のためのアイデアをふんだんに盛り込み、こちらも新しい大阪のキラーコンテンツにしていきたいという思いもある。今年、メディア展開をを見せた大阪の勉強会は、来年は、それぞれが、もうひとつ先の目標が実現できるようにいろいろと施策していきたいと思う。たとえば、それは、新しい OSS プロジェクトの立ち上げであったり、何らかの製品化であったり、エンジニアーのタレント化であったり、僕がSharePoint で MVP を取ることであったりする。

そうやって考えたとき、いつも思い出すのは、NCSA Mosaic が、単なる楽しいソフトウェアプロジェクトでなくて、体制が組織化されたことによって、コントリビューターの士気が下がったとか、僕が20代のときの、仲間がお金が絡むようになった途端に、関係がおかしくなっていったという事実などである。おそらく、合宿も「目的を模索していたからこそ楽しかった」という側面があり、カンファレンスについても「試験的であったからこそ、みなが同じ方向を向いているように見えていた」ということであろうと考えると、これらのかじ取りは非常に難しく、いずれ訪れる衝突や棲み分けに対する伏線をどのように張っておくか。

そのうえで、僕は、何を目指しているのか。本来、2013 年から、大阪の勉強会を動かそうとしているのも、僕の動きがまずかったこともあって招いた、リーダーのフェイスブック退会という「セルフスティーブジョブズ」の穴埋めをしているというところがスタートであることもあり、明確な答えが見つからない。きっと彼のゴールは、ビジネス化(おカネ)というところであっただろうし、僕にもそういったところは否定できないが、僕は生涯システムエンジニアーないしは、ソフトウェアディレクターでありたいというところもあって、こういった調整、全体のディレクションについては本分ではない。

本分ではないからこそ、到達点の大義名分は必要であろう。何を目指し、2017 年を過ごすのか。「盛り上げる」以外の具体的ななにかで表現しなければならない時期にきている。そこには、起業はとっくの昔にやる気がない、システムエンジニアーでなければ保育士になっていた、高校のときは学者志望だった、しかし今ではシステムエンジニアー以外の仕事はたぶんできなくて、生涯一システムエンジニアーでありたいという感情は影響していくだろう。

 

Y!mobile の PHS へ、リモートメールからのメール転送が突然されなくなった

f:id:lakeside_shinnosuke:20160507091225p:plain

ながさわさんは仕事用のメールアドレスをいっぱい持っている。どこでも読みたいし、どこでもそのアドレスで返信したいので、Domino サーバーで受信して、iNotes でブラウザからチェックする。

メールボックスがたくさんあるため、いちいち手動巡回もしていられないから、すべてのメールを Y!mobile の PHS に転送している。どのアドレス宛てに来たかは着信音を鳴らし分けたうえで、フォルダに自動振り分けされる。

ちなみに、転送先をひとつに集約しないのは、送信元のアドレスを使い分けたいから。僕は、送信アドレスを選択できるWeb メーラーサービスを知らない。また、PHS を使っているのは、スーパーだれとでも定額(相手が PHS なら通話料は無料。それ以外でも 10分まで無料。)の恩恵もあるが、ケータイと比べて音質が格段によいからです。スマホももっているが、これで電話しようという気にはなれない。かかってきても出ずに PHS からかけなおします。


さて、メールの転送は、リモートメールを使っている。
rmail.jp

PHS から リモートメールを登録し(有料)リモメアドレスというのを取得して、そのアドレスを PHS のメールに転送させる。仕事用アドレスの転送先は、いきなり PHS ではなく、このアドレスを介して転送する。理由は、そのまま転送すると、PHS のほうのメールの容量制限(1M)にひっかかり、相手に送信エラーが飛んでいくことを避けるため。リモートメールを介すれば、添付は削除したうえ、指定した文字数までに内容をカットしてくれる。また、送信元をそのままにして転送するか、受けたアドレスを送信元にして転送するかも選べる。HTML メールも、可能な限りテキストにしてくれる。

こんな感じで非常に重宝しており、PHS が鳴らないと、不安になるくらいなのだが、この連休の中盤、5/2 の 0:00 から、メールが一切転送されなくなった。仕事のメールはたくさん届いていたが、これが生き返らないと、こっちも返信する気になれない。

  • リモートアドレスはPCで確認でき、このアドレスには転送されていることは確認
  • PHS のメールアドレスには届く

ということはリモートメールの着信通知(PHSへの転送)ができていないのではないかと、問い合わせのメールを送ったら、次のような返信。

お問い合わせいただきましてありがとうございます。
 
現在、着信通知機能に不具合は発生しておりません。
以下の手順で着信通知設定をご確認ください。
 
●[アカウントリスト]-アカウント選択-[環境設定]-[着信通知設定]-
 [カスタム設定を行う]-「通知メールの差出人」を確認
 
上記で「通知メールの差出人」 が「元メールのまま」の場合、
ご利用の携帯端末でなりすましメールの規制をしているためにメールが届いていない可能性がございます。
お手数ですが、「通知メールの差出人」を「リモメアドレス」にご設定ください。
 ※アカウントを複数お持ちの場合は、それぞれでご設定いただく必要がございます。
 
また、合わせて端末側のメール設定で「rmail.ne.jp」を受信できるようにご設定ください。
 
何卒宜しくお願いいたします。

なぬ?なりすましメールだと?そんな設定知らないぞ。ググる...

www.ymobile.jp

お知らせ
2015年10月27日にお知らせさせていただいた、ケータイ(PHS)の迷惑メール防止機能の改善作業について開始時期が延期となりました。開始時期は改めて弊社ホームページでお知らせいたしますので、今まで通りオンラインサインアップよりご設定ください。
詳しくは下記お知らせをご確認ください。

だから、まだアナウンスされていないから、迷惑メール防止機能はないんじゃないの?と思いつつ、これまでのウィルコムだと、新規と機種変更のときくらいしか開けない、オンラインサインアップを開けてみる。

f:id:lakeside_shinnosuke:20160507094616p:plain

ホームページでは、迷惑メール防止機能はまだと書いてあるが、ここでは、Y!mobile での受付は延期と書いてある。何が正しいのかわからんが、とにかく、迷惑メール防止機能というのが選べるようになっている。(初めて知った)

そして、
f:id:lakeside_shinnosuke:20160507094858p:plain

この「迷惑メールフィルタ」ってのが「利用する」になっていた。これを「利用しない」にしたら、リモートメールの着信通知がされるようになった。やれやれ、なんてこった。オレこんなところさわってねーし、ノーアナウンスで設定変更かよ。いい加減にしろ。完全に PHS 軽視だな、Y!mobile さん。

ということで、着信転送されるようになりました。

Domino サーバーの認証者 ID ファイルのパスワード忘れ

Domino サーバーの認証者 ID ファイルのパスワード忘れてしまった。
運用して時間が経っていたので、再インストールするのもしゃくだったので、いろいろ調べてみる。

1. OLE か Java API で総当たりでパスワードをハックする

これはできなかった。OLE でアクセスできるのは、サーバーオブジェクトとクライアントだけで、VBA から OLE を呼ぶと、Notes クライアントが起動して、認証ダイアログが出てくる。つまり、ユーザーを切り替えるという API は用意されていない。
Java でも同じようだったのでやめ。

Public Sub hogehoge()

    Dim ss As Object
    Dim db As Object
    
    Set ss = CreateObject("Notes.NotesSession")
    Set db = ss.GETDATABASE("server", "database.nsf")
    Debug.Print db.Title

End Sub

しかし、ぜんぶ Object 型で定義しなければならないのはアレだ。Intelisense がほとんどつかえない。

OLE による Notes のアクセス:
http://www.ibm.com/support/knowledgecenter/SSVRGU_8.5.3/com.ibm.designer.domino.main.doc/H_USING_NOTES_CLASSES_IN_VISUAL_BASIC.html?lang=ja

2. 認証者ID を作り直す

IBM (参考)認証者 ID の盗難、紛失、または漏えいが発生した場合の対処方法 - United States

上記 URL の「補足情報」をもとに、認証者ID を作り直すというのがいちばん手っ取り早い方法のようだ。

もとの認証を削除したあと、新しい「組織」を同じ名前で作り直すと新しい cert.id が作られ、この ID で、サーバー ID と管理者 ID を再認証。新しい サーバー ID でサーバーを再起動後に、全ユーザーを再認証するとよい。

いまのところとくに問題は起きていません。ああ、よかった。

ちなみに、Linux 版 Domino のインストール方法はこちらが詳しいです。
Domino Serverのインストール・セットアップ

Access Web データベースから Oracle のトリガーを呼び出す(問題とその解決編)

さて、アプリケーションページには、Oracle のトリガーを呼び出すコードは書けているので、これを CLR トリガーに移植しようと粛々と作業。コンパイルが通り、DLL をデプロイしようとしたが、次々に起こる問題

1. CLR トリガーそのものから、ODP.NET が呼び出せない

f:id:lakeside_shinnosuke:20160429233536p:plain

SqlAssembly 'Database1' の作成に失敗しました。(Microsoft.SqlServer.Smo)
追加情報:
Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。
(Microsoft.SqlServer.ConnectionInfo)
→このクエリを実行するには、リソースプール 'default' のシステム メモリが不足しています。(Microsoft SQL Server、エラー:701)

うーーーーーむ。
これについては、いろいろ調べてみたのだけれども、DataSet クラスの使用することにコストがかかりすぎるということと、そもそも、SQL ServerCLR トリガーから、ODP.NET は呼び出せないのではないかというところに落ち着いた。DataSet クラスについては、DataReader への書き換えはできるが、ODP.NET が呼び出せないのであれば、CLR トリガーだけで処理はできないということになる。。。

脱力感に支配されながら、代替策を考える。

  • CLR トリガーから、シェルを呼び出して、コマンドとして実行する
  • CLR トリガーから、もともとの アプリケーションページを呼び出す

コマンドを呼び出しは古臭さが否めなかったし、アプリケーションページの呼び出しならば、そのまま使えそうだったので、後者をとる。CLR トリガーを全面的に書き直し、結局、HttpClient を呼び出すだけのコードになった。

    Dim wc As WebClient = New WebClient()
    wc.Credentials = New NetworkCredential(login, pwd)  ' SharePoint の基本認証
    wc.DownloadData(url)

2. CLR トリガーが外部リソースにアクセスするためには設定が必要

さて、生まれ変わった CLR トリガーのアセンブリは問題なくデプロイされた。SSMS から、INSERT 文を実行し、動きを確かめてみる。すると、

メッセージ 6522、レベル 16、状態 1、プロシージャ SqlTrigger1、行 1
ユーザー定義のルーチンまたは集計 "SqlTrigger1" を実行中に .NET Framework エラーが発生しました:
System.Security.SecurityException: 型 'System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' のアクセス許可の要求に失敗しました。
System.Security.SecurityException:
場所 System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
場所 System.Net.WebClient.DownloadData(Uri address)
場所 SalesQuotationTrigger.OrderQuotationTrigger.OnInsertUpdate()

うがっ。WebClient が呼べてない。。。これは少し調べると原因がわかった。
CLR トリガーには、権限の設定があるのだそうだ。
まずは、プロジェクトプロパティの Permission Level 、これを EXTERNAL_ACCESS にする。

f:id:lakeside_shinnosuke:20160430001952p:plain

これでビルドしたうえで、アセンブリの登録時に、権限セットを「外部アクセス」にする。

f:id:lakeside_shinnosuke:20160430002132p:plain

これで、再び実行すると、WebClient が呼べるようになったようだが、応答が返ってくるまでやたらと時間がかかる。うーん、これは明らかに WebClient のタイムアウトと思しき時間だなあ。。。重いのであまりやりたくないが、アプリケーションページをデバッグ起動してみる。すると、わかったのは、

3.CLR トリガーが呼び出されているとき、該当レコードは排他ロックされている

アプリケーションページは呼び出された先で、SQLServer を読みにいって、Oracle トリガーに渡す値を抽出するのだが、このとき、挿入、または更新された行は、排他ロックされており、SELECT ですら、ロックが解放されるまで待機してしまう。うーむ。
では、CLR トリガーで、ワークテーブルに同じ内容をコピーして、その内容を読み取るようにすればどうかと実装してみたところ、そのコピーしたレコードも排他ロックされていた。。。
結局、その実装はとっぱらい、アプリケーションページ側で、リクエストを受信したら、すぐにレスポンスを返すようにし、1秒後に別のスレッドで、これまでのコードを実行するようにしたら、ロックは解放された状態でテーブルを参照することができた。ここまでくると、なんだかアホらしくなってきたが、さあ、あとは削除だけだ。

4.削除トリガーが実行され、1 秒後には、該当レコードは消えている(あたりまえ)

ここまでの方法で削除トリガーを実装してみたら、該当レコードが取得できずにエラーとなってしまった。なんでやろ?と考えると、削除トリガーなのだから、ロックもなにも、1 秒後にはレコード自体が消えていることに気がついた。当たり前だ。
しぶしぶ、さっき実装したワークテーブルへのコピーのコードを復活させ、コピーの行を使って、値をとるようにした。CLR トリガー側でコピーした行は、アプリケーションページで削除するようにした。

やっとできた。Access Web データベースからの呼び出しも、多少の重さは感じるが、実用には問題ないレベルとなった。

いやー。
SQL Server ではリンクサーバーという機能があり、OLE データベースをリンクして、ビューとして見ることができたりするのだが、これで見えるのは、テーブルとビューだけで、さらに、OLE オブジェクトは、SQL Serverアーキテクチャからアクセスできないといけない。つまり、SQL Server が 64bit ならば、Oracle Client は 64bit でなければならない。この件も含めて、広くいろいろなことができるように見えるが、実現までには、たくさんのハードルがあるということがよくわかった。
Oracle のストアドを使って、外部ファイルを出力するとき、UTL_FILE を使えばいいが、SQL Server のストアドでは、ネイティブでファイル出力する機能はないらしく、結局、外部コマンドを呼び出すということになるらしい。だから、CLR トリガーや CLR ストアドが用意されているのだろうけれど、標準 API しか呼び出せないのであれば、ファイル出力とか、メール発信とかまでにとどめておいたほうがいいなあ。今回は、SharePoint があったから助かったし、Java EE のサーバーがあれば、同等のことはできるだろうけど、SQL Server しかない場合は、Oracle トリガーを呼び出すということはできないと言い切ったほうがいいのかもしれない。

たいへん勉強になりました。

おわり。