overnight

昨夜は、滝のような下痢を繰り返す。1回あたり尿量とは比べ物にならないくらいはるかに大量の水分だけの排泄。トイレにこもるたびに、シャーーーーーって。人体にこんなにも水分があるんだってことに驚愕し、このままでは俺干からびて骨皮筋衛門になってしまうのではないかっておののく。脱水症状を起こさないように水分を摂取するものの、飲んだらすぐ下から出てんじゃないかって。そういう感じで、結局寝ることもままならず徹夜になってしまった。俺何喰った?

徹夜明けデバッグ作業は、ろくなことにならない。たびたび意識が遠のいてしまい、どんどんコードを破壊してしまう。怖い怖い。

ハノイの塔

我が彼氏Rは今現在ハノイに滞在しているのであるが、そういえばプログラミングの学習で「ハノイの塔」という課題があったなぁと思い出す。

再帰(recursive)アルゴリズムを習った後に応用課題として必ず出てくる問題「ハノイの塔」。まぁ問題を見れば子ども向け課題でよくあるやつなんだけれども、これをプログラムで解決してみましょうって課題(こうすればいいっていうのをアルゴリズムとして言語化して書けますか?)。再帰(recurisive)っていうのは非常に重要な考え方でプログラマとしては絶対に押さえておかなければならない初歩。ただし、再帰はわかりやすい反面、ヘタするとものすごく時間のかかるアルゴリズムで、うっかりすると永遠に返ってこなくなったりすることもあるのだけれども(無限ループに陥る)、プログラマとしてやっていくにはこれをおさえておかないと致命的。

初級から一歩上を目指すプログラマの場合は、これを理解したうえで、「ハノイの塔」を再帰を使わないアルゴリズムで解くのが次のステップ。

wikipediaの「ハノイの塔」の項

そしてまた1つ秋の年中行事がやってきたのだが、「はい消えた……」

本日は、秋の年中行事、情報処理技術者試験でございますよ。今年はコロナ禍で、春の情報処理試験が実施されなかったため、春の試験区分が秋に回ってきた次第。で、秋に実施する予定だった試験区分は、1か月ほど遅らせて11月ごろに実施するかもしれませんとアナウンスがあったけれども、結局会場の手配とかいろいろあって秋の試験区分は実施されないことが先ごろ確定。半年に1度実施されている基本情報技術者とセキュリティマネージャの試験はついに今年は春も秋も実施されずなんて事態になっているし。今年の情報処理技術者試験はもうぐちゃぐちゃになっておりますよ。今度の春の試験もどの試験区分が実施されるのかわからない状態になってます。自分が受けようとしている試験区分がいつ試験実施になるかがわからないという状況なので受験と試験勉強の計画(割と年間スケジュールで検討していく)もどうしようか困惑する事態が続いております。

で、昨年ようやく情報処理安全確保支援士に受かって、今年は秋のシステムアーキテクトを受ける予定だったんだけれども、春の試験が秋に回ってきたので、急遽春のみ実施だったデータベーススペシャリストを受けることに(システムアーキテクトは次回に)。実は春の試験というのは毎年4月の第3日曜日なのですが、ここ数年はずっとS吹奏楽団の定期演奏会が同じ日に重なっていて春の試験を受けていなかったのですよ。本当は機会があればデータベーススペシャリストは受けたいと思っていた試験区分だったので、これはチャンスだと思ったのですよ。データベーススペシャリストの試験範囲は割と実務でもやってきた分野なので、情報処理安全確保支援士よりかは自分にとってはずっとずっと敷居が低い。目指せ一発合格!!

過去問も5年分片付けて、とりあえずまったく想像もつかない問題は少ない、強いて言うなら試験時間内に全問解くのはきついなぁというくらいのところまでは準備したんだけれども……。本日受験したら、午後試験が過去問での手ごたえと比べたらびっくりするくらいできなかったのだ。問題の日本語が頭に入ってこなくて、手が付けられなかったのだ。解答欄をろくに埋めることすらできなかった。(実はデータベーススペシャリスト試験はちょっと他の試験とは変わっていて解答欄がすべてうまるとは限らないという場合がある。つまり何も書かないのが正解ということがありうる試験なのだ。でもそれは根拠があって書かないという意思表示でなければならない。)う~ん、例年より難しくなっているのか?それとも自分が選んだ問題がむつかしい問題だったのか?(午後試験は、午後Iが3問中から2問選択して90分試験、午後IIが2問中から1問選択して120分試験)

もうね、試験が終わった瞬間俺は真っ白な灰になっていたよ。あまりのもの出来てなさ加減に意気消沈。「はい消えた……」

体調悪いのに次々やってくる雑用仕事に翻弄される在宅勤務の一日

今日も在宅作業だったんだけれども、今日はとりわけ恐ろしく忙しかった。まず朝からおなかの調子が悪くて、1時間ごとにトイレにこもりに行くくらい腹下し状態がひどくて。

朝会(Zoom会議)もやばかったんだけれども(終わったら速攻でトイレに駆け込む)、午後には別の人と別件のZoom打ち合わせ。これも打ち合わせ直前にやっぱりトイレから出られなくて、延期してもらおうか悩んだくらい。結局やったけど。そんな状態のところにメールとかSkypeとかチャットとか電話とかでひっきりなしにいろんな人から五月雨式雑用が次々舞い込む。自分がやるべきタスクは他にもあってそっちに集中しているときに、こういう横やりが続々来られて困った。

メールとかチャットとかなら返事は後回しにできるからいいけれども、直接電話かけられると出るに出られなくて困ることこの上ない。トイレに社用スマホ持って入るのはさすがに嫌だ。ラフはトイレでは心置きなく気が済むまで落ち着きたいタイプなのだ。しかも腹下しの時って、トイレをさっと済ますことができないじゃない。幸いにして急に依頼された件はどれも比較的小物なんだけれども、急いでほしいというものが多くて(本当に急いでほしい内容か?と思うものもあったが)、トイレから出てきたら今やっている作業は中断してその雑用を優先事項に回さざるをえない。それを終えないうちに次の急用タスクが飛び込んでくる。なんとか片付いたと思ったら、すかさずトイレに駆け込む。しばらく籠らざるをえない。で、這う這うの体でデスクに戻ってきて先ほどほったらかしてしまった、本来やるべきだったタスクに戻ろうとするんだけれども、何をどこまでやっていたのかを思い出すのに今度は一苦労。「俺、何やってたんだっけ?」。で、そのタスクを始めると、すかさずまた狙いすましたかのように急用(を名乗る)タスク依頼が入って来る。

というわけで、もうトイレにラップトップを持ち込んで今日はそこで作業をしようかとも思ったりなんかもしてさ(さすがに嫌だけど)。「体調悪いから今日は休む!!」とか朝一で宣言しておけばよかったと思い至ったのは定刻前の夕方だった。あぁ、今日という日が終わっていく。

読了:Javaによる関数型プログラミング[ヴェンカット・サブラマニアム/プログラミングシステム社]

Javaによる関数型プログラミング

Javaによる関数型プログラミング

  • 作者:ヴェンカット・サブラマニアム/プログラミングシステム社
  • 出版社:オライリー・ジャパン
  • 発売日: 2014年10月

Java 8新機能のラムダ式や、Stream APIの特徴を、コンパクトに解説!考え方、API、設計、そして遅延評価や再帰を詳述。

1章 Hello、ラムダ式!/2章 コレクションの使用/3章 文字列、コンパレータ、フィルタ/4章 ラムダ式で設計する/5章 外部リソースを扱う/6章 「遅延させる」ということ/7章 再帰の最適化/8章 ラムダ式で合成/9章 すべてをまとめて/付録

あんまり仕事関係の本は記録に残していないんだけれども。プログラミング言語としてJavaを使う開発現場から遠ざかってかなりたつ(たまにちょい使い程度はあったけど)。ちょっと自分の中の情報をアップデートしておかなければならないと思って、Javaの勉強を。現場から離れる直前にリリースされたのがJava5だった。そこから今やJava13だって?すっかり置いていかれちまっているぜ。この間でもっとも変わったのはJava8なんだろうな。Java8で導入されたラムダ式を見て、そうかJavaも関数型を使えるようになっていたのかとは思ったものの、「なんとなくこんなもんか」程度ですませていた。ところが、どうやらラムダ式はStreamと一緒に使うとステキなことが多いらしくて、それなのに自分にはこのStreamというものがいったい何者なのかが全く分からない。コードを見ても何をするものなのかが今一つよくわからない。というわけで、そのものずばりが副題に付いている分かりやすそうな本を見つけたので読んでみた。

本自体は薄いんだけれども、実際にどれだけ強力な武器をJavaは手に入れていたのかがよくわかった。ある課題をこれまでの(Java7までの)手続き型で組むとこうなるよねというコードがまず示される(自分もこう実装するはずだ)。で、そこからラムダ式とStreamを使ってリファクタリングをしていく過程をコードとともに示していく。おぉ、なるほど、活用できればシンプルでエレガントに表現できるかも。確かにこれはJavaに対する世界観が変わるな。何年も前から世の中そんなことになっていたとは……(この本が2014年だもんね)。

Javaによる関数型プログラミング[ヴェンカット・サブラマニアム/プログラミングシステム社]

技術用語としての「レガシー」と「枯れた」もの

 東京オリンピックは延期されましたが、競技場だのなんだのを作る口実として盛んに「レガシー」という言葉が使われておりましたね。次の世代、未来へ残すに値する将来も活用できる「遺産」としての建造物を作ろうという狙いで(実際にそういう意図が本当なのかお題目なのかは知りませんが)。

 IT業界には「レガシーシステム」という言葉があります。これは概してネガティブな印象を受ける言葉で、むしろ時代遅れの「負の遺産」という感じです。昔々のメインフレーム時代に構築された基幹システムであることが多く、今でも銀行系のシステムはこれで動いているとか動いていないとか(ラフはへなちょこなので、シビアなお金と命がかかわるシステムには怖くて関わりたくない)。レガシーシステムをモダンな技術に移行する legacy migration というのがそういう企業のIT命題だったりもするわけです。でも、何とかしたいと思っても不用意に手のつけようがなくて手をこまねいてしまうものでもあったりして、うかつに移行プロジェクトに関わるとデスマーチに巻き込まれたりひどい目に遭う場合があります。

レガシーシステムとは – 意味の解説|ITトレンドのIT用語集

 IT業界では「枯れた技術」という言葉もよく使われます。これはどちらかというとポジティブな言葉です。一般的には「オワコン(終わっているコンテンツ)」みたいな印象を受けるかもしれませんが。「枯れた技術」とは、「広く使われてきたので、その知識や活用法のノウハウが十分に蓄積されているため、安心して使える技術」という感じなのです。

枯れた技術 – Enpedia
枯れた技術こそ、安定する。 | 情報を見極める力がつく30の方法 | HAPPY LIFESTYLE

ボタン逆じゃね?

家の卓上にあるBluetoothスピーカーに曲送りと音量調整のボタンが付いている。いや、付いているのは当たり前なんだろうけれども、ちょっと違和感があるのだ。

   ●    ●   

こんな風に2つのボタンが向かって左右に並んでいるのだが、軽く1回押す場合は、左側のボタンが前の曲に戻る、右側のボタンが次の曲に進むなので、まぁ普通だろう。長押しする場合は音量の調整ができるんだけれども、なんと左側のボタン長押しが音量大、右側のボタン長押しが音量小なのだ。この音量の調整の役割逆じゃね?左が音量小、右が音量大っていうのが感覚的にわかりやすいインターフェースなのではなかろうか?これって設計ミスでは?どうも違和感を感じて仕方がない。慣れれば問題ないんだろうけれども。

読了:ネットワーク超入門講座 第4版[三上 信男]

幅広い知識がやさしく学べる入門書のベストセラー!図解と丁寧解説で企業ネットワークの重要事項と全体像を理解しよう。最新事情に対応。写真も多数掲載。

1 ネットワークの全体像/2 LAN超入門/3 WAN超入門/4 スイッチ超入門/5 ルータ超入門/6 セキュリティ超入門/7 VoIP超入門/8 無線LAN超入門

自分は基本的にはソフトウェアエンジニアだと思っていて、ITインフラの知識が決定的に欠けていることは昔から認識していた(ITインフラって何?それっておいしいの?レベル)。いやソフトウェアエンジニアであろうと、IT業界の片隅に籍を置かせてもらっている以上は、ITインフラであるネットワークの基本を知らないのは由々しき問題であるとはうすうす感づいてはいた。そこでようやく重い腰を上げて取り上げたのが本書。「入門」と銘打っているからには本当に基本的なことしか書いていないんだけれども、ふわっとしかわかっていなかったラフのITインフラに関する怪しげな知識を具体的に整理できたので、読んでよかった。そもそも、ネットワークというものがどのように組まれているのか全く知らずにセキュリティとか議論するって、基盤工事がちゃんとされていないうえに家を建てるようなものだしね。

情報処理の試験でネットワーク図によく出てくるL2スイッチとかルータとかファイアウォールとか、まぁ機器をつないでいるハブみたいなもんで、それぞれ何となくこんなことやっているんだろうなぁというくらいの認識でこれまで挑んでいたのだ。つまり、なんでそういう風なネットワーク構成になっているのだとかいうその意図や背景となるものについては詳しくは分かっていなかったのだ。そういうわけで、本書の第2章から第5章は本当にすごく役に立った。あ、そういう機械だったんだなと。マシンルームとは縁遠く本物を見たこともないラフには、具体的にそれぞれの機器の写真も掲載されていて(どの機械も平べったい四角でケーブルを差し込む穴が側面にいっぱいあるだけの似たようなものばかりではあったものの)、現実に存在していたんだという衝撃もあった(まぁそういう物理的な装置の存在を知らなくても使えるというのがネットワークのすごさとも言えるが)。

とりわけ役に立ったのは、それぞれの機器がOSI基本モデル(覚えるのが面倒くさくてラフがずっと苦手意識を持っていてなんとなくしか理解していない代表)のどの層担当の機器なのかが整理されていたこと。これがわかってくると、俄然おもしろくなった。また、時代はIPv6に移ろうとしているとはいえ、まだまだ現役のIPv4のIPアドレスのルールも詳しく説明されていて、自分で計算しながらどうやって決まるのか説明できるようになったよ。今までのラフの知識はIPv4のIPアドレスにはクラスA~Cくらいがあって(意味はよく分かっていないし、実際はEまであるということを知った)、プライベートアドレスの最初は192とか172とかが多いんだなぁ、サブネットマスクって何?とかいうレベルだったのだ。

あと、第7章のVoIPはこれまでまったく手つかずの分野だった。いわゆるIP電話の話。音声データと通常のデータが同じネットワーク上を流れていること(実は流す仕組みは同じだけれども、ネットワーク回線は物理的に分けるものだと思っていた)、そして音声データは通常データよりもシビアに優先されなければならないということが絶対的に重要であるとは!!今までの認識を覆されたよ。たかだか「音声」じゃんとか思っていた自分を強く恥じた。

本当に「超入門」だけれども、新しい知識を得るというよりも、苦手意識を持っていたから今までふわっとあやふやでしかなかったITインフラ知識を具体的に整理して理解することができたという点で、最近読んだ仕事関係の実用書の中では断トツに役に立った一冊だった。

ネットワーク超入門講座 第4版[三上 信男]
ネットワーク超入門講座 第4版[三上 信男]【電子書籍】

物騒なドキュメント

プログラムの実行結果、すなわち出力情報のことを「返値」(あるいは「戻り値」、英語ではreturn value)というが、これは「かえりち」と読む。「かえりち」はIMEの変換ではまず最初に「返り血」が出てくることが多く、そのまま提出された物騒なドキュメントをまれに見かける。

やったやった!旗立てちゃお。

みなさま、どうもご無沙汰しております。

さて、昨年の今頃こんなエントリーをした。

パトラッシュ、僕はもう疲れたよ

というわけで、今年もこのシーズンがやってまいりました(年中行事にすることは褒められたことではないのだが)。そして今年、ようやくにして情報処理安全確保支援士試験受かりました。

令和元年秋期SC合格

いや、ギリギリ滑り込んだという成績ですが。結局かれこれこの試験を5年間受け続けてしまったよ。だからといってこの分野に詳しくなったかというとそんなことはなくって……。合格した喜びよりも、もう来年はこの試験を受けなくてもいいという開放感のほうが大きいことは内緒(だったらちゃんと勉強してさっさと受かってくればよかっただけなのにさ)。

本日のエントリータイトルは、もちろん橋本治の桃尻娘に影響を受けている。