しばらく燃え尽きる

  金曜日。連携テストの事前の確認として、プログラムが相手先のデータベースにつながるのか確認しに行った。すると、WEBアプリの方はつながるのに、コンソールアプリがつながらない。両方とも同じように接続文字列を書いて、同じOracleClientのドライバを使い、tnsnames.oraの識別子を使っているにもかかわらず。タイムアウトのエラーになってしまう。12170で検索すると、理由としてはDBサーバに届かない場合に多いエラーとある。しかし、SQL*Plusはもちろん、WEBアプリの方はつながるので、そんな理由は考えられない。

 

  事務所に戻って24時まで調べたけどいっこうにわからない。社内の仮想の環境はつながるのに、客先がつながらない。サーバのセキュリティが厳しいのかと思ったけど、ファイアウォールは無効。ローカルだけど管理者権限で動かしてる。Oracleのインストール時に自動で作られたディレクトリの権限が厳しく、自由にファイルとか作れない配下のディレクトリがあった。セキュリティ権限を編集することができないので、先に手でフォルダを作り、そこにOracle Clientを再インストールしたけどだめ。ADOじゃなく、ODBCにしてみたけど同じエラー。ODBCマネージャでは全く問題ない。とにかくVisual Studioで作ったコンソールアプリは絶対につながらない。

 

  力尽きて帰る。凍えそうな夜道の自転車でずっとどうしようか考え続ける。いやでも思い出してしまう。涙は出ないけど心はずっと泣いている。来週の連携テストまで残された時間がほとんどない。休日も出ないと無理。しかし、時間の問題じゃない。できるかできないのか全く見通しが経ってない。誰も助けてくれない。自分でなんとかしないといけない。でもわからない。

 

  家についても悩む。奥さんが起きてたけど、まともに会話できない。土曜日も出勤だ。2:00。もう寝よう。布団に入っても考えてる。目覚ましは8:20にした。休日は3日もあるし。ところが6:00に勝手に目が覚める。もう少し寝ていたい。なのに、布団の中でまた頭の中でぐるぐると考えが巡る。結局、余計にストレスを感じたので、起き出してコーヒーとバナナだけで朝食をすまし、平日とほとんど同じ時間に出勤。上司が居た。勝手に休日出勤すると何か言われかねないけど、どうでもいい。実際、何も言われなかった。

 

  来たけど、事態は変わってない。時間が経ったらつながってくれるような甘い世界じゃない。少し、調べて試してみたけど、何の変化もない。昨日会社から帰るとき、少しずつ今の方法を諦めて、別の方法を考えてた。つながる実績があるのはWEBアプリの方。理由はわからないけど、WEB方式でなんとかできないか。しかし、問題は目的のプログラムが分単位で定期的に起動しないといけないこと。WEBアプリで実装しても、それをどうやって定期起動したらいいのか?

 

  このWEBアプリのシステムの中にWEBサービスがあるのを思い出した。クライアント側のブラウザで入力チェックとかするためらしいが、よくわかってない。しかし、WEBサービスを別のアプリケーションから呼び出すことができれば、定期的に処理できるのではないかと思った。

 

  インターネットで調べるとそれなりにわかりやすい説明が見つかった。できるようだ。しかし、自分一人で本当にできるのか不安でしょうがない。HelloWorldが返されるWEBサービスを適当に作り、それを呼び出すために別のWindowsアプリを作ってみる。参照の追加でWEBサービスを追加するのがポイントのようだ。ライブラリのようにWEBサービスのメソッドが呼べるようになった。しかし、実行してみるとWEBメソッドを呼ぶところで権限がないというエラー。目の前真っ暗。http経由で何かをする権限がないらしい。けど、具体的にどうしたらいいのかわからない。さくっと答えが欲しい。誰かにさっさとやってもらいたい。技術者にあるまじき思いに支配される。

 

  http://msdn.microsoft.com/ja-jp/library/scf355x6(v=vs.90).aspx

  「Web メソッドを呼び出すには、WebPermission クラスによって特権レベルが付与されている必要があります。」の意味がわからない。だから何?どうしろと?しかし、偶然見つけたあるページで、メソッド呼び出し前になんとかcredというプロパティをtrueにすると通ることがわかった。Hello Worldと返値が表示された。WEBアプリと呼び出しアプリを問題の環境にコピーしてみると、同じように動作した。大きな一歩だ。これでDBに接続できることがわかった。

 

  あとは、WEBサービスの中に目的の処理をコピーして、あとはコードをきれいにしたり、エラー処理、ログの出力を調整して終わった。結局、DB接続がタイムアウトになる理由はわかってない。もしかしたら、潜在的な問題が後から発覚するかもしれない。でも、今できることは終わった。

 

  15時過ぎ、会社を出た。休みなしかと覚悟してたが、初日の夕方前に終わった。放心、ふらふらと歩く俺。近くの釣具屋により、いろいろ見てる打ちに少し元気が出たが、心の中はもう空っぽ。昨日から悩み続けた分、もう空っぽ。家に着いても、ただすわってるだけで時間が過ぎていく。

 

  プログラム一つ動かすのにここまで消耗してしまう俺。こんなことでこの先やっていけるのか。