TOPに戻る
鬱るんです
躁鬱病のITエンジニア「はまー」が心と体の模様を記した雑記帳。 大手IT企業で心身ともにぼろぼろになり退職した後、ほそぼそと働いたり事業を立ち上げようとして頓挫したり、作業所に通ったり障害者雇用で働いたりと紆余曲折したが、今は無職な毎日。

カテゴリー:IT関連

昨日は23時前に就寝。もっと早く寝ないといかんのだが、プログラミングが止まらなくて、ついつい遅くなってしまう。昨日の日記に書いた、外部プログラムを起動してその標準入力と標準出力をリダイレクトするのは、日記を書いた後もトライしていたら、コーディングのケアレスミスがあったのと、書き込む方をスレッドにせずに読み込む方だけ別スレッドにしたらうまくいった。うまくいって喜んだところで寝たのだった。夜はぐっすり眠れて、朝は6時40分くらいに起床。

ああ、そして今日もプログラミングをしているうちに夜遅くなってしまった。今日はちょっといろいろ作り込んだぞ。メインのプログラムをちょっと一休みして、中から呼び出す外部プログラムを一本作ったり、昨日はハードコーディングしていた外部プログラム情報をINIファイルから読み書きできるようにしたり、そのためにINIファイルの仕様をまた修正したら文字化けしたりしてうんうん唸ったり(これはINIファイルへ書き込む部分を書き直したときにエンコーディングの指定を忘れたのが原因だが、これに気がつくまでしばらくかかった。Shift_JISで読み込んだファイルをUTF-8で書き込んでしまったのだが、秀丸で開くと自動的に文字コードを判別してちゃんと表示してくれるので気がつかなかった。そのINIファイルをSJISだと思ってアプリで読み込むとおかしなことになるのだ。以上、注釈終わり)、それらの外部プログラムを画面から登録したり修正したり削除したりする機能を作ったり、いや、画面を作っただけで中のロジックはまだまだで、まあそんな一日だった。

その他にやったこと…。あ、横浜へ行った。履歴書を買いに行ったのだ。履歴書くらいちょっと歩いたところの商店街に行けば文房具屋で売っているが、ニンテンドーDSがまだ品薄で入手困難なのか、もう普通に買えるのかちょっくら偵察にいった。姪がクリスマスプレゼントにニンテンドーDSがほしいらしく、サンタさんである義姉が「手にはいるかしら〜」と言っていたので、ヨドバシに行って偵察してみたのだが、5色あるうちの1色だけ在庫があるだけであとは品切れ。やはり品薄状態は変わらないようだ。これからクリスマスに向けてますます入手困難になるかもしれない。横浜に行ったときはチェックして、売っていればとりあえず代わりに買ってキープしておいてあげることにした。本体だけあってもしかたがないから、うちからはソフトをプレゼントしよう。

そして夕方、明後日の面接に向けて履歴書を書いた。いつまで履歴書は手書きなのだろうか。ハローワークのお姉様(と一応書いておこう)は「絶対手書き」と仰るのでそれに従っている。履歴書の書き方の手引きには「書き損じたら修正ペンや修正テープを使わず、一から書き直しましょう」などと書いているのだが、見事に間違えたら履歴書の在庫がなくなった。ああ、それで履歴書を買いに行ったんだった。

どっぷりとプログラム作成にはまっている。いい気候だからもう少し外に出なくては。明日は通院、明後日は飯田橋まで面接。まあ、外出する用事があるから外には出るだろう。当たり前と思うかもしれないが、それが突然当たり前にならなくなるのがこの病気の恐ろしいところである。

昨日は寝るのが0時近くなってしまった。いかんいかん。妻の実家から帰ってくるのも遅かったが、その後もなんかだらだらしていた。何をしていたっけなあ。でも寝つきはよくて、朝は6時に目が覚めた。でもまだ早いからいいや、と思ってもう一度寝て、7時に起床。

PCを起動すると、スローダウンの現象は起きない。いったいなんだったんだろう。まあいいや、再現待ちだな。「再現待ち」SEだった頃によく使った言葉で懐かしい。とにかくさくさく動くように戻ったので、プログラミングの続きをすることにする。

ちょいとここでヘルプを作ってみることにした。と言ってもヘルプファイルの内容はまだダミーで、とりあえずヘルプ画面を表示させるようにだけ。ヘルプはHTMLファイルにして、既定のブラウザでそのファイルを開けばいいや、と思った。

しかし、「既定のブラウザにURLを指定して開く」のをVBの中から実行する方法がわからない。わからないから検索したが、WebBrowserクラスの説明とかばかり出てくる。ここで「WebBrowserクラス」というのがあるので、せっかくだから自前のフォームにブラウザのオブジェクトをを貼り付けて、左にツリービューを配置したオリジナルのヘルプ画面を作ってみようとした。

それで、なんだかんだオンラインヘルプで調べつつ、なかなかうまくいかないが、試行錯誤の末、ようやくヘルプファイルがWebBrowserオブジェクトに表示された。しかし、ツリービューの方を作るのも大変である。

さらにHELP関連について検索していたら、なんとまあ、Helpというグローバルオブジェクトで簡単にできることが後になってわかった。

Help.ShowHelp(Me, "help/index.html")

という一行で、最初にやろうとしていた「既定のブラウザでHTMLファイルを開く」のが簡単にできてしまった。それならこれでいいや。ヘルプ自体はHTMLでがりがり作ればいい。とりあえずヘルプの中身は後回し。今度は検索機能を追加しようと決め、とりあえず画面を作る。

しかし、検索のダイアログを作っただけで、内部の実装は後回しにした。今作っているアプリではあまり重要ではないのだ。それよりも、最初からの構想にある、ユーザが自分でプラグインというか、外部プログラムを登録して拡張できるような機能の基本的な部分を実装しようとした。

これがなかなか難しい。子プロセスを起動するだけだったらShell()関数で十分なのだが、ちょっとややこしいことをしようとしている。実行しているプログラムの内部で生成された文字列を、起動する子プロセスの標準入力として読み込ませ、その標準出力を取得しようとしているのだ。要はCで言うところのpopen()のような、まあ要するに外部プログラムをパイプとして使いたいのだ。

VBでそういうことができるのか、いろいろ調べてみた。昔はVBでは標準入出力を使うこともできず、コンソールアプリもろくに作れなかったらしいが、今はVBも進歩していて、他のプロセスをオープンしてその標準出力や標準入力をリダイレクトしてストリームとして扱うこともできるし、マルチスレッドで動かすこともできる。

しかし、これがうまくいかない。子プロセスを実行し、スレッドを2つ立ち上げて片方で標準入力にストリームでリダイレクト、もう片方で標準出力からストリームにリダイレクトし、WaitForExit()でプロセスの終了を待つ。しかし、うまくいかない。出力がうまく拾えないのだ。Sleepを入れたり非同期モードにしてみようとしたりしたが、やはりうまくいかない。ReadとWrite、片方ずつならできるのだ。そもそも片方だけならスレッドなんかいらないし。もう少し調べてわからなかったら、悔しいけどテンポラリファイルを使うことにしようかな。実際、その方が確実だろう。

15時ごろ皮膚科に行って薬だけもらった。皮膚科はいつも混んでいるが、薬だけだと割と早い。院外処方なので処方箋を持って薬局に行き、薬を待っていたら、おばあさんと薬剤師の人がえんえんと平行線な話をしている。そばで聞いていたのだが、こっちが疲れてしまった。自分の薬ができているみたいなのに、そのおばあさんと薬剤師がずっと話をしているので待たされてしまった。

なんでも、おばあさんはたくさん病院に行っているのだが、病院ごとにお薬手帳を作っているらしいのだ。話を途中から聞いたからどういう経緯でその話になったのかわからないが、薬剤師の人が、他にどんな薬を飲んでいるか薬局がわからないと困るし、それではあまり意味がないから、と何度も説明しても「いやだから」とおばあさんは譲らない。

どうもそのおばあさんにとってお薬手帳とは「どの病院で自分がどの薬をもらったかすぐにわかる手帳」らしい。それなら一緒にくれる薬の説明書でもファイリングしておけばいいのに。多分この人は一生お薬手帳を病院の数だけ持っていくんだろうなあ。それにしても人の話を聞かない人だ。話を聞いているだけで疲れてしまった。

夜、昨日に妻が録画していたドラマ「僕の歩く道」を観た。自閉症の青年が動物園の飼育係で働くという設定のドラマだが、難しい役どころをつよぽんが見事にこなしている。司会とかさせたらいつもぐだぐだなのに、演技はとてもうまい。それにしてもこのドラマはいい。この話では自閉症だが、身体障害でも知的障害でも精神障害でも、障害者が働くということは、その職場の人たちにその人の障害がどういう特徴を持っているのか、どう接したらいいのか、ということを理解しなければならない。そういうことを改めて痛感させられるドラマである。

最近は割と調子がいい。これをキープできたらいいのだが。そろそろ今週の土曜日に受ける面接の履歴書を書かなくては。

昨日は22時半に就寝。ちょっと寝つきは悪かったのだが、多分1時間以内で眠れたとは思う。夜中には何度か目が覚めた。雨音が激しく聞こえたのを覚えている。朝は6時に目が覚めたが、まだいいやと思って寝た。結局7時半に起きたが、少ししんどい。雨のせいだろうか。

朝からPCをいじっているうちにいきなりPCがフリーズ。いや、フリーズではない。マウスは動くし、デスクトップアイコンを選択したりもできる。待っていたらしばらくしてアプリが起動。なぜか突然にPCがスローダウンしてしまった。何かやったっけ?朝起きてからしばらく普通に使っていたが、特に何にもやった記憶はない。

よくわからないが、昨日体験版のアプリをインストールしたり削除したりしていたので、その前の時点にシステムの復元をしてみた。しかし、現象変わらず。わからんからとりあえず復元を取り消した。

その後、ウイルスやスパイウェアを検索したり何度もリブートしたが、何も変わらず。そもそもスローダウンしている状態でのスキャンだからえらく時間がかかった。しかし、いきなり元に戻っていつも通り快適に動くようになった。なんだったんだ?いったい。

そしてプログラミングの続きをする。自分がほしかった機能はだいたい実装して細かいところを作り込んでいるのだが、まだまだエラーハンドリングなども荒い。人に提供できるものができるようだったらフリーウェアとして公開してみようかとも思っているが、それにはもっと細かいエラーハンドリングとテストが必要だ。あと、アイコンやヘルプも作らないといけない。それからもっと拡張性を持たせたい。まだまだやることはたくさんある。別にやらないといけないことでもないのだが。

ところで、今まではアプリの終了時にINIファイルに設定を保存するようにしていた。それを、オプションメニューで「終了時に設定を保存する」というのを追加して、デフォルトでは保存するのだが、「保存しない」をチェックするとINIファイルに設定を保存しないようにしてみた。そして起動し、適当に設定をいじってから「設定を保存しない」ようにして終了。INIファイルを開いてみると、よしよし元のままだ。そしてもう一度アプリを起動する。オプションを見てみると「終了時に設定を保存する」にチェックが入っている。ありゃ?と思ったが、そらそうだ。「終了時に設定を保存しない」という設定が保存されないからデフォルトのままなのだ。これはどうすればいいのやら?仕様がかたまればコーディングは簡単だが、仕様をどうしよう。

昼過ぎに妻と買い物に出かけ、妻の実家へ行ってお義姉さんとお話する。晩ご飯に誘われて、一緒に妻の実家で食べることになった。いったん家へ帰って買い物したものを置いてから、また妻の実家へ。一緒にキムチうどんを食べて、私が作った運動会のDVDを観たりした。姪の好きな曲をメニューシーンに挿入したりしてちょいと工夫を凝らしてみたのだが、それを気に入ってくれたようだ。恥ずかしがってきゃーきゃー言いながら、でも喜んで観ていた。

21時頃においとまして家に帰ってくると、またPCがスローダウンしている。なんでなんだ。なんなんだ。明日またいろいろいじくってだめならサポートに電話してみよう。朝はさくさく動いていたのに急にスローダウンした、というのはハード的にどこかがおかしいのかもしれない。

昨日は夜もプログラミングをしていたら止まらなくなってしまい、仕様を変えたINIファイルに設定情報を保存する部分を実装し、23時半に寝た。すぐに寝つけて、朝まで眠れた。6時頃目が覚めたが、まだいいやと思ってもう一度寝て、7時半に起床。

そして今日も朝からせっせとプログラミング。フォントとか色の設定も保存できるように修正。そんなこんなであっという間にお昼過ぎ。プログラムはちょっとしか進んでないのに、えらく時間が経つのが早い。やっぱりフォントにしろ色にしろ、FontクラスやColorクラスのメンバを一から調べているからだろう。色の設定を保存して読み込むのに、ちょいと苦労した。

そういえば昨日せっせと作った運動会の動画を編集したプロジェクトファイルがおかしくなってしまうことが気になり、ユーリードのHPを見たところ、パッチが出ていて、

保存したプロジェクトファイルを開いたときにメニューのカスタマイズ情報がなくなってしまう問題を修正

とちゃんとあるではないか。うう、これからは事前にしっかり確認しよう。消費者金融みたいだ。それにしても、これってかなり致命的なバグなのに、こんなの見逃してリリースしたのか、このソフト?

そしてパッチを当てて、昨日のプロジェクトファイルを開いてみた。おお、昨日設定したメニューがちゃんと出てきた。消えたわけではなかったのだな。バグで設定が反映されてなかっただけのようだ。

またまたプログラミングに戻る。OpenFileDialog を RestoreDirectory=True にしているのに、「ファイルを開く」のたびにEXEがあるディレクトリに戻ってしまうというところでつまってしまった。なんでかな?なんでかな?サンプルコードを少しいじっただけなのに。よくわからんから取得したファイル名からディレクトリ名を取り出しておき、直接オブジェクトにセットした。その後、ウィンドウのサイズや最大化の状態なども保存できるようにしたら、だいぶアプリっぽくなってきた。

今日も調子は悪くないが、雨だしプログラミングに没頭していたし、ずっと家にいた。ちょっとは外に出ないといけないなあ。明日はまた妻もバイトが休みだし、義姉も休みだし、お昼に運動会のDVDを持っておじゃましようかと思っている。でも明日も雨らしい。水曜日くらいまではちょっと天気は悪いみたいだ。こっちの調子も悪くならなければいいが。

昨日は姪の運動会の後、焼肉に行ってカラオケに行ってすっかり遅くなってしまった。寝たのは23時を過ぎてからだっただろう。妻にマッサージをしてもらうと吸い込まれるように寝てしまった。そして朝6時に自然に起床。よしよし、今日も大丈夫だ。

そしてとりあえず昨日の分の日記を書いてから、さっそく昨日撮ったビデオの編集にかかる。今まで宝の持ち腐れだったソフトその37(適当)を使うときがきた。まじめに動画編集ソフトを使って編集をするのははじめてである。

やってみたら、これはけっこうしんどい。実はかなり地道な作業だ。無駄な部分をフレーム単位で指定してカットしたり、チャプターをつけたり、凝り出すときりがない。場面が切り替わるときの画面効果なんかもいっぱいあって、いちいち試してはどれにしようか悩んでしまう。午前中いっぱいかかってようやくDVDに焼く元のプロジェクトファイルができた。

そして午後は再びプログラミング。コンテキストメニューを作ったり、いろいろと細かいところを作り込んでいく。ここに来てちょっと困ったことになった。設定項目を増やしているうちに、現在のINIファイルのフォーマットでは設定が困難になってきた。思い切ってフォーマットの仕様変更をし、INIファイルを読み込む部分を全面的に書き直した。これで夕方までかかった。

夕方になってから妻がバイトから帰ってきた。実家に寄って昨日の運動会のプログラムを手に入れてきてくれた。昨日うちに持って帰らなかったので、チャプターリストを作るのに競技名がわからずに困っていたのだ。さっそくそれを入力しようと、お昼に保存したプロジェクトファイルを開くと、なぜかタイトル画面のフォントとか背景画像とかメニューのBGMなどが全部消えて、デフォルトになっていた。なんでなんでなんで?

幸いにも編集した動画などは無事だったので、しかたがないからレイアウトやフォントなどの設定をやり直して、DVDに焼いた。しかも焼いた後に一度アプリを閉じて、もう一度開くとまたタイトル画面が初期状態に戻っていた。なんで〜?アプリのバグだろうか。

夜はまたプログラミングの続き。INIファイルから設定情報を読み込む部分を作り直したのはいいが、今までは全ての項目されていることが前提だった。INIファイルに書かれていない項目は設定されない。それを、INIファイルになかったらデフォルト値をセットするように変更した。設定項目が増えてもできるだけ修正箇所が少なくて済むように、より汎用的な書き方に変更するとソースがすっきりした。そんなもんだろう。

と言うわけで今日は一日中PCの前にいた。朝ちょっと疲れが残っていたが、だんだん元気になっていた。明日は雨らしいし、またプログラムの続きを書くことにしよう。