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

月別アーカイブ: 2020年5月

今作っているプログラムはまだまだ未完成なので、細かい仕様とテスト内容を考えていた。Excelにはいろいろ制限があって、1つのセルに入力できる文字数は32,767文字まで、扱える行数は1,048,586行まで、そして表示できるセルの高さが409ポイントまで。この辺りのハンドリングをしないと、行数が死ぬほど大きかったり1つのトークがめちゃくちゃ長いようなファイルを読み込んだ時にオーバーフローしてエラーになったりちゃんと表示されなかったりする。

まだいろいろ制約や例外はあると思うが、上に書いた中で一番むずかしいのが、セルの高さの制御。この処理をする上でネックなのは、「結合したセルは高さの自動調整ができない」というExcelの仕様である。このプログラムではトーク内容を2つのセルを横に結合したセルに書き込んでいるのだが、それでは自動調整ができないため、結合したセルと同じ幅に設定したダミーのセルにトーク内容をいったん書き込み、そこで高さの自動調整をしてからその高さを取得し、そのセルは削除してから改めて本物の結合セルにトーク内容を書き込んで、先ほど取得した高さを設定するというトリッキーなことをやっている。

ただ、プログラム内ではトーク内で改行した場合、次の行に移って別セルとして出力しているため、改行が多くて縦に長いトークが途中で切れることはない。あくまでも改行なしで打ち込んだトークがいっぱい過ぎてあふれる場合である。1回のトークで改行なしにそんなにたくさん打ち込むやついるのか?と思うが、最近兄や私はPCでLINEをやっており、テキストファイルに打ち込んだ内容やウェブサイトに載っているテキストをコピペして入力することがある。そうすると手打ちではまず入力しないような長い文章が入ることはあり得る。それからPCからコピペした場合、スマホやPCのLINEの入力欄で直接入力できないタブ文字が入ったりする。このタブ文字はトーク履歴ファイルで項目の区切りとなっていおり、本文中にタブが入るとイレギュラーな行になってしまう。これが厄介で、その例外にはできる限り対処したのだが、これのせいでプログラムが必要以上にややこしくなってしまった。

話がそれたが、トーク内容が長すぎてセルの高さが409ポイントを超える(一部隠れてしまう)ときの対処方法としては、

1.トークの内容を分割して複数の行に書き込む
2.複数の行を結合して1つのトークを書き込む

が考えられる。似たような感じだがちょっと違う。トークをダミーのセルに入力して自動調整して得た高さは、入力した内容がオーバーする場合はMAX値409と返ってくる。それ以上広げられないからだ。そこで高さが409と返ってきた場合、

1の場合
トークを半分に分割し、2つのセルに分けて出力する。しかし、あまりにも長くて半分にしてもまだオーバーしたり、その半分にしてもまだオーバーしたり、ということがあり得るので再帰的な処理が必要。ちょっとややこしい処理をしないといけない。

2の場合
セルを縦に結合した場合、それぞれのセルの高さ制限は409ポイントだが、2つのセルだとその倍になる。要は結合しても1つずつのセルの高さ制限は変わらないということ。となると、トーク内容を全部1セルに入れたら本来は高さ何ポイントなのか、その高さがわかったら、全部で何セル分必要かわかるのでその分セルを結合してから書き込めばいい。

と、2の方が簡単そうに思えるのだが、肝心の「トーク内容を全部1セルに入れたら本来は何ポイントなのか」がわからない。あくまでも自動調整して返ってくるのは制限のMAX値409で、どれだけはみ出してるのかわからない。それならもう1つセルを縦に結合して自動調整して高さを取得しては・・・というところで「結合したセルは自動調整できない」という制約に引っかかる。

ということで、久しぶりだが1の処理にチャレンジしてみた。再帰的な処理というのはばしっとはまると驚くほどシンプルなコードで全体のロジックが完成することが多い。数時間かかって、試行錯誤した結果、うん、シンプルに処理することができた。かなり嬉しいのだ。再帰処理を書いたのは久しぶりだな。頭の中ではネストが深くなるとなかなかイメージしにくかったが、こういうときはビジュアル化するに限る。と言うことで絵を書いてみてようやく難所を越えた。こういうのを書いたのも久しぶりだ。

再帰処理のイメージ図

と言うわけで、一歩野望に近づいた。

次はセル内の文字数が32,767を超えた場合の処理をするだが、上の処理だけで十分な気がする。32,767文字もあったら、高さはとっくに409ポイントを超えるよな。

行数が1,048,586を超える場合はどうしよう。見やすくするためトークとトークの間に細い行を挿入しているので、実際にはトーク履歴が50万行以上を超える場合、というようなケースだが、もうそれは「書き込めるところまでしか書き込みません」という仕様でいいか・・・。全部取り込めなかったら自分でテキストファイルを分割してくれ、でもいいような気がするが、実際に50万行のテキストファイルをエディタで開いて半分ずつに保存、とかできるものなのかな(メモリが・・・)。そもそもそんなにLINEするか?私が今年の1月に機種変更してから4ヶ月間に友達とやりとりした履歴ファイルを見ると、5,700行。う~んそんなにあるか。もっとヘビーにLINEをやっててそれが2~3年分とか溜まってたら50万行くらいいくかもしれんな。ただ、そんなでかいファイル処理してたらExcelがハングすると思う。読み込み自体はストリームで1行ずつなのだが、どうだろう。

昨日寝たのは23時半。また遅くなってしまった。

遅くなったのはまだいい。いや、よくないがそれよりもっとよくないのが寝る前にコーンフレークを食べてしまったこと。寝る前に食べちゃいかんっつーのに。本当は22時半に寝るつもりだったのに、例のごとくプログラミングをやっていたら止まらなくなって、23時15分くらいになってようやく寝ようとPCを落としたのだが、眠剤でふらふらになっていたので、つい食べてしまった。

眠剤でふらふらになっている状態の自分をコントロールするのは難しいことがわかっているから、そうなる前に寝ないといけない自分が悪い。でもやっていたら楽しいので止まらない。昔も同様に、仕事でプログラミングしていて明日に響くから切り上げないといけないのに止まらない、とブログに書いたら「楽しみは明日にとっておけばいいんですよ」とコメントをもらったことがある。名言だな。明日にとっておくことにしよう。できるかな。

と言うわけで今日もプログラミングの続き。基本的なロジックをそのままに、プログラムの構造を作り変えるという作業を昨日やっていたのだが、なんとかそのデバッグも終わり、とりあえず「前と同じ動作」をするところまでできた。これからいろんな例外処理を入れていかないといけない。それにしてもExcelのVBEは使いにくいなあ・・・。行番号ぐらい表示してほしいのだ。

今日は色々用事があったので午前中に動くことにした。11時くらいに家を出て、まずは郵便局へ。高知県から取り寄せた父の戸籍謄本や、父の共済金の請求に必要な相続人全員の署名と捺印が必要な紙、それから印鑑証明書を兄に送った。戸籍謄本の紙が分厚くて、もう全部束ねて折ってA4用の封筒に入れるのはちょっと難しいと思い、角封筒に入れて出したら料金は140円。高知県から強引に普通の封筒に束ねて返ってきたときも140円だったので、そうか50グラムを超えたら封筒の大きさに関係なく定形外郵便になるのだね、と当たり前のような新発見をした。

46円料金不足のハガキに50円の切手を貼って出したところ、「50円分貼ってますけど」と言われたので「細かいのないのでそれでいいです」と言ったらそのまま受け取ってくれたけど、「おつり4円分の切手ください」と言ったらどうなったのかな。あとは高知県の役所から送られてきたお釣りの分の定額小為替を換金したのだが、なんの控えもくれなかった。あらら、今回の相続関連でかかった費用を全部記録して領収書も全部とってるのにな。

それから第1作業所によって、去年の工賃支払証明書をもらった。昨日電話して頼んでおいたものだ。県営住宅は収入によって家賃が変わる(4段階ある)ので、毎年収入を証明するものを出さないといけない。去年までは障害年金の振込通知書をコピーして出すだけで良かったけど、ちょっとめんどくさくなったな。その書類も昼から書いたのだが、最近書類ばっかり書いている。ところでコロナの影響で収入が減った人の救済措置があるらしい。家賃の減免を受けられる場合があるとのこと。民間はどうなんだろうな。大家さんもそれで飯食ってるから、と言っても追い出すわけにもいかず、他の飲食店などと同じく頭が痛いところなのか。

コロナで家賃減免

帰りにセブンに寄ってお買い物。スマホのセブンアプリにセブンプレミアムのお惣菜無料クーポンが来ていたので、お惣菜の1つはそれを使った。それからおいしいおにぎり屋さんでおにぎりと豆大福をお買い上げ。ここのおにぎりはとてもおいしいのだが、お昼には売り切れて閉まってしまう。午前中に動いたときだけ買えるので、今日は早くに出かけてよかった。

おにぎり屋さん

そしてドラッグストアによってちょっとだけお買い物をして帰ってきた。LINE Payに対象のドラッグストアで使える100円引きクーポンが来ていたのでそれを利用。あと残っているクーポンは、ローソンのLチキ無料と、ファミマで使える100円引きクーポンか。ファミマは近くにないなあ。

帰ってきてお昼ごはん。なんだか昔話を思い出す。ひとりでこんなに食べるわけではない。二人分である。

おいしいおにぎり

その後はまたずっとプログロミング。Excelの制約をどう回避するか頭を悩ませていたが、一番苦しいところがなんとかなりそうだ。かなり錆びついていた頭が少しだけど戻ってきたような気がする。ガンバレ自分。

昨日は23時に寝た。22時半近くまで友達とLINEをやっていたのだが、「もう時間だから寝るね」と送ってから30分くらいなんだかんだやってた。だめだなこりゃ。しかも23時に寝てから30分くらい眠れず、いったん起きてきて牛乳を飲んでチーズを食べて、今日のおやつのチョコまで食べてしまった。そしてPCを立ち上げて何かやろうとした。ますますだめだこりゃ。そこで眠気が来たので寝た。朝は8時半起床。こんな生活リズムになって、作業所に復帰した時にちゃんと通えるだろうか。まあ寝る時間を早めるけどね。

今日は朝からプログラミングの続き。もうできたと思ったのだが、よく考えると最初は自分だけが使うためだけに作ったので、まともにエラー処理も入れてないし、いろんなイレギュラーな場合を想定したテストもやってない。これはいかん、こんなものは公開することはできない。いろいろなケースを想定してエラーハンドリングを入れてちゃんとテストをしないと。Excelはいろいろ制限があるのでそれを超えた場合どうするかとか、あとはテキストファイルのフォーマットがイレギュラーな場合とかいろいろある。これはテスト項目一覧表を作らなければ。う~ん、これは更にプログラムが複雑になる。

と思ってとりかかったのだが、根本的にメイン処理の構造を変えないとだめだな。ちょっと作り直そう。と言うことでがりがりプログラムを書き換えていた。基本的なロジックは変えてないのだが、大きく構造を変えた。ちゃんとした構造じゃないとロジックが追いにくい。プログラムを公開しようと思ったら、変に下手くそなプログラムでは恥ずかしい。

ずっとその作業をやっていたが、今日もちょっとだけローソンへ行ってマルチコピー機で印鑑証明書を取って、Twitterのリツイートキャンペーンで当たったLチキを引き換えて帰ってきた。ローソンの前にポストがあるのを見て、しまった料金不足の切手を貼ったハガキを持ってきて出せばよかった、と思った。このハガキ出さなかったらどうなるんだろう。「配達した郵便物返せ」とか言ってくるのだろうか。さすがにそれはないだろうが、郵便局が損するの?

コンビニのマルチコピー機で公的書類を取ったことのある人が少ないかと思ったので、ちょっとどんな感じか写真を撮ってきたので、紙芝居を載っけてみる。

はじまりはじまり~。まずは「行政サービス」をタッチ。

コンビニでで印鑑証明書

「証明書交付サービス(コンビニ交付)」を選択。もう1つ「戸籍証明書交付の利用登録申請」というのもあるが、これは本籍地以外の市区町村に住んでいて戸籍証明書を取りたいときは、利用登録申請が必要だということだ。私は本籍も住民票も横浜にあるからいいが、異なっていると普通は本籍のある役所へ行くか、郵送で取り寄せないといけない。この利用登録申請をしたらどこにいても取れるのだろう。これは便利だ。

コンビニでで印鑑証明書

なんか出てきたけど、こういうのは全く読まずに反射的に「同意する」を押してしまう。本当はいかんのだが。

コンビニでで印鑑証明書

マイナンバーカードをそこに置けとのこと。

コンビニでで印鑑証明書

置いてみました。

コンビニでで印鑑証明書

置いたら自動的にこの画面に。「お住いの市区町村の証明書」をタッチ。もう1つのは「住所地と本籍違が異なる方が「戸籍証明書」「戸籍の附票の写し」を必要とされる場合に選択してください」とある。

コンビニでで印鑑証明書

暗証番号を入力。特別定額給付金のオンライン申請をしようとして、これを忘れてしまった人が役所に殺到してるとか。

コンビニでで印鑑証明書

カードを取り外すと次の画面に続く。と言うか取り外さないと進まない。忘れにくいような仕組みになっている。

コンビニでで印鑑証明書

必要な書類を選択。今回は印鑑証明書。

コンビニでで印鑑証明書

必要な部数を入力。

コンビニでで印鑑証明書

必要書類と自分の名前が出てくるので確認。手数料は役所で取るより50円安い。

コンビニでで印鑑証明書

これで準備完了。スタートボタンを押すべし。

コンビニでで印鑑証明書

あ、お金入れるの忘れてた。う~ん現金しか使えなかった。電子マネーとかQRコード決済が使えないのはちょっと惜しいな。

コンビニでで印鑑証明書

プリント中で~す。

コンビニでで印鑑証明書

領収書もちゃんと印刷される。

コンビニでで印鑑証明書

終わったら「お忘れものに注意ください」の画面。けっこう大きな音で「印刷物、カード類、釣り銭、領収書をお忘れにならないようご注意ください」というアナウンスがいつまでもいつまでも流れる。「終了する(音声停止)」ボタンを押さないと永久に鳴り続けるという仕様っぽい。これでも忘れる人は忘れるだろう。

コンビニでで印鑑証明書

そんなこんなで今日は終わった。プログラムの改造はまだまだ続くから、当分遊べそうだ。その後はこのブログとは別に、もうひとつ新しいウェブページを作ろう。前に公開したCSVファイルをMicrosoft Moneyに取り込むプログラムも合わせて、自分が作ったプログラムを公開する新しいサイトを作るのだ。いや、サイト自体はこのサイトだけどね。もう1つWordPressをインストールして固定ページで作ろう。

今日もまたリモート収録シリーズの動画を。藤井フミヤ ♪「TRUE LOVE ~ Sound Inn S @HOME Ver. ~」。

またまたまたまた

またまたまたまた

またまたまたまた

当たったー!!!

ローソンLチキ当たり

ローソンのリツイートキャンペーン。10日連続のこのキャンペーンで当たったのが既に3回目、てどういうことよ。

嘘じゃないよ。同じ画像の使い回しじゃないよ。上に「05月19日」て書いてるでしょ。

自分がローソンでけっこう買い物しているからかなあと思ったが、ローソンアプリでの抽選ならPontaカードと紐付いているから購買情報がわかるけど、TwitterのアカウントとPontaは何も関係ないしなあ。

まあ、神がかっているということで。

高知県N市から父の戸籍謄本が送られてきた。「出生から死亡までの戸籍謄本ってどんなもんじゃい」と思っていたら、なんと3部ある。父と祖父と、そして曽祖父の除籍謄本まで送られてきた。こ、これが戸籍というやつか。正直なめてた。こんな制度、日本以外にあるのか?正直曽祖父や高祖父(ひいひいじいちゃん)の名前なんてはじめて知った。難解で達筆(笑)な昔の戸籍を読んで、確証がなかったので友達に電話して聞いたりしてやっとわかったのだが、父は神戸で生まれたのでさらにこの前の戸籍が神戸にあると思っていたが、どうやらそれはなくて高知県がスタートのようだ。ということは出生から死亡までの連続した戸籍謄本はこれで揃った。万歳。

そう言えば昔父親は疎開していたと聞いたが、疎開と言えば田舎へだと思っていたので「神戸から高知に疎開していた」と思い込んでいたのだが、古い戸籍を読んでいたらはまー一族は代々高知だったようで、どうやら神戸に疎開していたらしい。神戸って高知よりも田舎だったのかな。

除籍謄本が1通750円、それが3種類、それを2部ずつ取り寄せたから全部で4,500円。けっこうかかったではないか。今度兄弟になんか奢ってもらわなければ。8枚ずつなので全部で16枚。封筒も分厚くて、返信用封筒には一応94円切手を貼っていたのだが、「46円足りませんから切手を貼って出せ」というハガキ付き。切手代140円かよ!46円なんかないので50円切手を貼った。

切手料金不足

あとはとりあえず必要なのは自分の印鑑証明書が1通なので、それをとって兄に送らなきゃ。しまった今日ローソンに行ったからマイナンバーカードを持っていって取ればよかった。まあ明日もLチキをもらいにローソンへ行こう。