青竹雑記帖(6代目)

テキスト処理をメインとしたIT解説をします。

「そこそこ」の選択肢

物事を「全部やる」か「全くやらない」かを考えたくなったとき、判断対象をもう少し細分化して判断し、総体として「そこそこやる」という選択肢を今一度ご検討ください。

昨日私がふとツイートしたものですが、少々言い換えると「おはようの挨拶はタダなので、遠慮なく積極的に挨拶をしておけ。常日頃おはようと挨拶をしていただけで記憶されて、一大事において物事が通じることもある」という感じのことを言いました。ひとくちに挨拶と言ってもいろいろあり、このような軽い一声のこともあれば、ちょっとした立ち話のこともあるでしょうし、重要な挨拶ともなれば、正装をして手土産を持参し、丁寧に言葉を述べることになります。この「そこそこやる」というのを再認識したのは、先日(といいますか完全復旧宣言は今日でしたが)のKDDI通信障害の件についてのSNSでの反応でした。

KDDI通信障害の件で、「作業にあたっている人に感謝すべきだ」「いや、契約上の義務を果たしているだけだからその必要はない」「会社を甘やかすな」など、SNSでは言葉の応酬が繰り広げられています。もともと何を対象として見ているか、何に対して論評しているかという点のすり合わせができていないのが最大の問題ですが、それに加えて考えると良いのが、判断対象をもっと細分化して考えるということです。たとえば私は、次のように考えています。

  • 会社組織としては、当然通信障害を積極的に引き起こしたくて作業をしたわけではないが、結果に対しては責任を負い、体制に改善すべき点がないか批判的に検証する必要がある。
  • 組織内各担当者は、おのおのの作業フローを再点検して改善可能な点を明らかにする必要がある。
  • それはそれとして、足かけ3日に渡り必死に作業した方々に「や、お疲れさん」と労いの言葉をかける。

これらは互いに矛盾なく成立する姿勢だと思っています。

ちなみに「批判」という言葉も最近では否定的文脈で使われ、とりわけネット上ではしばしば相手をとにかくボコるみたいなことをしがちですが、本来の意味は「物事に検討を加えて、判定・評価すること。」(『デジタル大辞泉』より)ですから、物事をよく検討し、それについて良かった点は良かったとし、改善すべき点は改善すべき点として示すことが重要です。これらも合わせると、全肯定か全否定に限ることなく、さまざまな選択肢が広がります。

全肯定か全否定かという状態を指すときに「0か1か」や、「0か100か」という表現をすることがあります。私は情報系の人間なので、これを2進法的にたとえています。全肯定か全否定かで物事を判断するのは2通りですから、これは2進法では1ビットで表せます。問題を細分化して、これは良い、これは悪いと判断していくと、その細分化した数に応じて桁数が増えていきます。2つの部分ごとに判断すれば4通り、3つに分けて判断すれば8通り、次いで16通り、32通り、64通りと増えていきます。全肯定か全否定か以外の判断をしていくと、真ん中あたりに「そこそこ」という範囲が生まれてきます。この「そこそこ」という部分を自分は大事にしたいと考えています。どのくらい細分化すると良いかは経験則によるところが大きいですが、4つくらいの判断水準で最終的に16通りくらいの結果にするのが上出来かもしれません。

ちなみに最近のコンピュータは64ビットアーキテクチャですから、最大64ビット幅で各種データを処理できます。ちなみに64の判断水準で物事を細分化して考えますと、18,446,744,073,709,551,616(1844京6744兆737億955万1616)通りの結果が得られます。全肯定・全否定以外に1844京6744兆737億955万1614通りありますから、じっくり考えて判断する必要があります。この数は、昨今のTwitterで大変大きな数を意味するときにしばしば使われる「5000兆」よりはるかに多いです。……今の日本円の価値のまま2の64乗円くらい銀行口座に入金されませんかね。

コホン、判断水準が多いとその分頭が痛くなりますが、頭が錆びつかない程度に判断して選択していきましょう。

困ったときの通信確保指南(公衆電話の説明がクソナガイ)

週末の KDDI (au) の通信障害においては、各方面実に大変だったことと存じます。我が家は全員 docomo でしたが、親戚の多くが au 利用だったので大変だっただろうなと思います。 とても気合の入ったタイトルから始めましたが、大したことは言いません。ネット上にあふれるアドバイスよりも、少しばかりは大多数の人のあり方に近い感じにします。できるかな?

ちなみに通信障害の概要は次の通りです。

  1. 障害継続時間 7月2日午前1時35分 ~ 継続中(5日午前2時現在ほぼ回復したものの、本格再開との発表はなされていない)
  2. 影響利用者数 全国3915万回線

要約

  • 人生諦めが肝心。茶を飲んで飯食って寝るしかねえ。
  • とはいえ命や暮らしが懸かるとそうも言っていられない。なんとかするならば……
    • Wi-Fiスポットを見つけて世話になる。
    • 公衆電話を探しておく(ただし受信はできない(正確にはできるけど公衆電話の電話番号は非公開))。
    • 安いスマートフォンを買い足して安いプランを契約しておく(もちろん追加費用がかかる)。
  • ネット上のアドバイスの問題点
    • 「デュアルSIMって、何?」という人の持つスマートフォンのほとんどは、SIMを1枚しか挿せないし、eSIMへの対応が困難。
    • 安いとはいえ回線を増やせば金はかかる。

人生諦めが肝心

各種インフラは日々多くの人やシステムの不断の努力によって維持されています。とりわけ日本ではめったに障害を起こしません。 少し古い情報になりますが、総務省の電気通信事故検証会議がまとめた「平成30年度電気通信事故に関する検証報告」では、 今回のKDDIの件のように継続時間24時間以上、および影響利用者数100万以上の事故は0件であったと報告されています。

なかなか起きない事態に対処するときの方針としては「自分の命に危険がないなら、諦めて、寝る」が良かろうと思います。怒ると寿命が縮みます。

とはいえ命や暮らしが懸かるとそうも言っていられない

いかんせん命が懸かると諦めるわけにはいきません。山奥や海で病気やケガなどをすると、数時間の差で命が失われる危険があります。 今回も海の事故で、事故発生から通報が届くまでに5時間を要してしまった事例が報告されています。 あるいは、この暑さで倒れてしまったら、スマートフォンが唯一の生命線になることだってあり得ます。 自分がそうなるだけでなく、相手がそうなってこちら側に助けを求めてくることもあるわけで、その際にこちら側で受信ができなければ一巻の終わりです。 ある程度は自分達の側でも対応策を考えておく必要があります。

Wi-Fiスポットを見つけて世話になる

通信を確保する有力な策は近所の公衆無線LAN (Wi-Fi) スポットです。主要な駅や大型ショッピングモールだと整備してくれているところも多かろうと思います。 コンビニにもスポットが整備されています。ただ、セブンイレブンは昨年度末頃までにほとんどの店舗でWi-Fiサービス(7SPOTや各携帯電話会社のキャリアWi-Fi)を廃止してしまいました。 こうした公衆無線LANではセキュリティ面が心配な面もありますので、クレジットカード決済など、盗まれると危ない情報のやり取りが発生する処理は避けた方が無難です。

公衆電話を探しておく(ただし受信はできない(正確にはできるけど公衆電話の電話番号は非公開))

参考ウェブサイト : NTT西日本の公衆電話に関する案内

www.ntt-west.co.jp

最近は携帯電話番号や電子メールアドレス情報を交換しないので、LINEのようなメッセージングアプリや、その他のSNSしか連絡を取る手段が無い相手も多いかと思います。 とはいえ、家族の携帯電話番号や家の固定電話番号(最近は設置しない家も多いですかね?)などは携帯電話の連絡先アプリに登録しているはずですので、公衆電話から掛ければつながります。 うちのあたりだと中高生を中心に公衆電話を使う姿が今も見られます。都会の人には信じがたいかもしれませんが、携帯電話等持ち込み禁止の学校がまだあるのかもしれません。

一応使用方法をご紹介します。

  1. 受話器を取ります。
  2. テレホンカードまたは硬貨(10円または100円)を入れます。10円玉の場合、電話代より投入額が多かったら余りは返ってきます。100円玉だとお釣りは出ません。
  3. 受話口(耳につける方)から発信音(ツー、という音)が鳴ることを確認します。
  4. 電話番号を入力します。プッシュボタン式であれば数字をそのまま打ち込んでください。ダイヤル式(最近はほとんどありませんが、ごくまれに設置されています)の場合は、数字に対応する穴のところに指先を入れ、指がストッパーに当たるところまで右に回し、指を離してください。ダイヤルが元の位置に戻ることで番号が1ケタ送信されます。これを電話番号のケタ数分繰り返します。
  5. 相手が出たら話します。電話料金が不足すると警告音が聞こえますので、硬貨やテレホンカードを追加投入してください。追加投入しなかった場合は通話可能時間終了とともに電話が切れます。
  6. 通話が終了したら、受話器を元の位置に戻してください。テレホンカードや電話代に使われなかった硬貨が返ってきます。

公衆電話は削減傾向が続いており、総務省が設置義務の基準を緩和したことから、最低設置基準を満たしつつもさらに削減されることになっています。設置箇所は2012年からウェブサイトで検索できるようになりました。NTT西日本管内(九州・沖縄・中国・四国・近畿・東海・北陸)とNTT東日本管内(甲信越・関東・東北・北海道)でページが分かれています。いずれも屋外・屋内の別、終日利用可能か利用不可能時間帯があるか、車椅子での利用が可能かを基準に地図上にアイコンで表示されます。それ以上の設置箇所説明はありませんので、たとえば設置箇所がどの建物の前か、あるいは中かという情報は地図を見て判別するしかありません。……これってテキスト読み上げによるアクセシビリティはどうなっているんでしょう。

www.ntt-west.co.jp

publictelephone.ntt-east.co.jp

駅名やランドマーク名でも検索できますが、これは単に地図上でその駅やランドマークの位置に飛ぶというだけで、検索で出てきた駅やランドマークに公衆電話が設置されているとは限らないという罠があります。たとえば秘境駅として名高いJR日豊本線宗太郎駅大分県佐伯市)は、検索結果に現れてその駅の位置まで飛べますが、ここには公衆電話はありません。また、わが地元小郡市で、終日利用可能とされている屋外設置の公衆電話のうち、ひとつは陸上自衛隊小郡駐屯地のど真ん中に点が打たれています。申し出れば入れてくれるとは思いますが、公衆電話を使う人が少ない昨今、どうみても怪しい奴にしか見えません。

あと当然ですが、公衆電話から電話を掛けることはできますが、特殊簡易公衆電話(通称ピンク電話。でも新しい機種は白い)の一部を除いて、相手方からかけることはできません。公衆電話にも電話番号はありますが、非公開とされています。

安いスマートフォンを買い足して安いプランを契約しておく(もちろん追加費用がかかる)

そしてこれです。予備回線の確保するのも有力な策です。もし普段使わないなら思いきり割り切って、格安中の格安なスマホを選んで用意するのもいいかもしれません。スマートフォン本体は中古調達し、格安SIM (MVNO) は超絶安いものを選択して契約するというものです。この時重要なのが、メイン回線で持っている会社とは違う系統の会社の回線を使うことです。初めての人は混乱すると思いますが、格安SIMの会社は自前の回線を持たず、回線を持っている会社 (MNO)(NTTドコモKDDIソフトバンク楽天)から借り受けて通信サービスを提供しています。(ちなみに楽天モバイルは自社以外に回線を提供していません。ちなみに自社回線エリアを増やしてきていますが、まだKDDI回線へローミングするエリアも多いです)格安SIMの会社で「プランA」(KDDI)、「プランD」(NTTドコモ)、「プランS」(ソフトバンク)と分かれていたり、「docomo回線」や「Softbank回線」などと書かれている場合は、それぞれ書かれた会社の回線を利用して実際の通信を行います。ですから、メイン回線としてKDDI系統の回線を使っている場合は、予備回線にはNTTドコモ系統やソフトバンク系統を選択すべきです。

ただ、この方法は後述するように、多少は金がかかりますし、それ以前に条件により契約自体ができない場合があります。

ネット上のアドバイスの問題点

今回の件を受け、Twitter等では「予備回線を確保しておけ、デュアルSIMだ」という声が多く聞かれましたが、彼らは大変な問題を見落としています。

「デュアルSIMって、何?」という人の持つスマートフォンの多くは、SIMを1枚しか挿せないし、eSIMへの対応が困難

通信関係に詳しい人は、SIMフリーのデュアルSIMに対応するスマートフォンを調達して、実際に2社の回線を契約して運用していると思います。そうした人達が見落とすのは、「世の多くの人は各携帯電話のキャリアショップや家電量販店の店頭で携帯電話を購入契約し、しかも長期間利用する」という点です。日本でシェアが高いiPhoneがデュアルSIMに対応したのは2018年発売の「iPhone XS」「iPhone XR」からです。それ以前のiPhoneや、Android系端末のうち各キャリアが出すモデルは、そもそもシングルSIMか、あるいはグローバルモデルでもデュアルSIM機能を削除してあるか、どちらかです。また、iPhoneのデュアルSIM対応は、2つのうち1つはeSIMでなければなりません。MVNOがよく分からない人が、eSIM対応の会社やプランを探し出して利用するのは難しかろうと思われます。

安いとはいえ回線を増やせば金はかかる

私の友人知人が話していましたが、「格安スマホを使っている人は、その格安な回線1本を維持するだけで大変なのではないか」という懸念です。確かに探せば維持費が年間660円(povo2.0で回線維持に必要な最低限のトッピングを購入した場合)であったり、donedone (ドネドネ) エントリープランという年間0円で維持可能な回線プランがあったりします。しかし、これらはどちらもKDDI系統の回線ですので、もしメイン回線がKDDIならこれらを予備にする意味がありません。ちなみにNTTドコモ系統やソフトバンク系統の回線プランですと、最安で年間約2400円 (HISモバイルのdocomo回線プラン・Softbank回線プラン 段階型料金のうち0.1GBまで)です。年額2400円くらい大丈夫だとする向きは多いでしょうが、困窮とまでは行かないまでも低賃金ですと、正直アップアップな状態になる人もいるかもしれません(信じがたいでしょうが)。最大の問題として、MVNOのほとんどは料金支払手段としてクレジットカード決済しか認めていません*1ので、そもそもクレジットカードを持たない人はお呼びでないということになります。

まとめ

めったにない事象なので腹をくくって諦め、公衆電話などを探しておくか、公衆無線LAN (Wi-Fiスポット) に頼るか、金があれば予備回線を持っておくか、お選びください。

良いスマートフォンライフを!

*1:QTmobileは、QTnet光回線BBIQ」を契約して口座引き落としにしている場合に限り、同じ口座からの引き落としで契約可能

Vim9.0を入れてみました

forest.watch.impress.co.jp

Vimがメジャーバージョンアップされ、9.0になりました。早速Ubuntuマシン上でビルドしました。 新しい要素、Vim9 Scriptはこれから試します。

ひとまず、一から環境を用意してビルドする時のコマンドを載せます。vim-jpさんの「Linuxでのビルド方法」のページ (https://vim-jp.org/docs/build_linux.html) を参考に、コマンドを新しくしました。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install build-essential git gettext libtinfo-dev libacl1-dev libgpm-dev
$ sudo apt install libxmu-dev libgtk-3-dev libxpm-dev
$ sudo apt install libperl-dev python3-dev ruby-dev
$ sudo apt install lua5.3 liblua5.3-dev luajit libluajit-5.1-dev
$ git clone https://github.com/vim/vim.git
$ cd vim/src
$ ./configure --with-features=huge --enable-gui=gtk3 \
  --enable-fail-if-missing --enable-perlinterp=dynamic \
  --enable-python3interp=dynamic --enable-rubyinterp=dynamic \
  --enable-luainterp=dynamic --with-luajit
$ make
$ sudo make install

プログラミング遍歴自慢(この記事中にポートフォリオはないのでGitHubを見てください)

突然ですが、私はプログラミングを完全に理解しました。

……この言明は、IT界隈特有の言い回しで「製品を利用するためのチュートリアルを完了できた」と言う意味です。下記をご参照ください。

togetter.com

ITについて何かしら一流の技術や成果物を持ち、「チョットデキル」存在になりたいものです。

さて、もののついでに人生で17回目の記述になりますが、私のプログラミング遍歴を喋っておきましょう(隙あらば自分語り)。この遍歴と私のGitHubのリポジトリ群 を見て、私への仕事依頼の参考になさってください。昼寝時間が削られない程度にお待ちしております。ちなみに最も得意なプログラミング言語Rubyです。ただしRailsは未習得です。それ以外だとシェルスクリプトAWKはすぐに行けます。Pythonは滅ぼします。JavaScriptを持ってきたらローラーでのします。

  • 2000年頃 (9歳) N88-BASIC(86)
    • 市立図書館から「F-BASIC」の本を借り、数値を入出力してキャッキャ遊んだ。
    • 言語規格の違いにより本に書かれたプログラムは動かせなかった。
  • 2001年頃 (10歳) Visual Basic 6.0
    • 父親が自作のソフトウェア資産の移植を目的としてProfessional Editionを購入していた模様。
    • 適当に遊んだものの、自らの用に役立つプログラムは鉄道運転シミュレーションゲームBVE」 (現・BVE trainsim) の路線ファイル構文生成支援プログラムのみ。
  • 2004年頃 (14歳) C++
    • 詳しい時期は忘れた。もしかしたらもう少し前かもしれない。
    • BVE 4.0 が公開され、保安装置をDLLとして自作できるようになり、西鉄ATSを再現したくて飛び込んだ。
    • 当時、ほとんどなかった無料のC++処理系である「Borland C++ Compiler」を利用。しかしあえなく挫折。C++を操れるようになるまでに数年を要し、その頃は別の方に興味が向いていたため、未だ西鉄ATSのプラグインは作っていない。
    • C言語については、父親が持っていた「Microsoft Quick C」の参考書を横から読むなどして少し知っていたものの、実際に動かした経験はないままだった。
  • 2005年頃 (14歳) Visual Basic .NET
    • 新しい Visual Basic と聞いて飛びついてみた。
    • この頃から、個人利用の開発環境がより広く無料で提供されるようになってだいぶ助かったような気がする。
  • 2006年頃 (15歳) ROBOLAB (LabVIEW)
    • 高校の部活でロボット (LEGO MINDSTORMS) を扱うために習得。
    • ……アイコンつなぐのめんどくね?
  • 2010年 (19歳) Ruby
    • 大学の研究入門プログラムで触れる。スクリプト言語への入門。
    • 今のプログラミング活動は実質ここから始まっている。
    • ただ、RailsRubyフレームワークはちんぷんかんぷん。要望があれば学んで実践します。
  • 2010年 (19歳) Scheme
    • わが大学の情報系学科ではLisp系言語としてこれを学ぶことになっていた。
    • カレンダーをGUIで表示(7セグメントLED風数字表示プログラム)するという超大作を作り上げた。
  • 2010年 (19歳) JavaScript
    • お試しで使ってみた。
    • 今やサーバサイドでもクライアントサイドでも広く使われるようになったけど、これ面倒じゃね?
  • 2012年 (21歳) Java
    • 大学の科目で習得。
    • ただし、実用的なプログラムは書いたことはない。
  • 2012年 (21歳) Verilog HDL
    • 大学のハードウェア実験科目で習得。
    • もう忘れた。
  • 2013年 (22歳) C#
    • Windows GUIプログラムを作るために習得。
    • 実用的プログラムを少し作ったものの、その後Windows GUIプログラムを作らなくなったため使っていない。
  • 2013年 (22歳) R
    • データ解析を行うために少し触れてみた。
    • 今でもぼちぼち扱っているけど、だいたいがPythonのライブラリ群を操る方に変わった。
  • 2013年 (22歳) Scala
    • 研究で、センサデータを取り扱うためのシステムを構築するのに利用。
    • 当時はセンサユニットも、データ蓄積システムもろくになかった。今は鼻歌交じりで外部サービスやモジュールを活用して用意できるからいい時代になった。
  • 2015年 (24歳) Perl
    • 自然言語処理系の大学講義の中で扱った。
    • 2022年現在、アルバイト先の基幹システム保守管理の場面でようやく実務に生かされた。
  • 2015年 (24歳) シェルスクリプト
    • 今重用しているプログラミング言語のひとつ。
    • 初手でこれを使いたがるため、チームからはPython等の言語で書き直すよう毎回要求を受ける。
  • 2015年頃 (24歳) AWK
    • お前何歳だ、絶対25歳サバ読んでるだろと言われる諸悪の根源(?)
    • 初手でこれを使いたがるため、チームからはPython等の言語で書き直すよう毎回要求を受ける。(その2)
    • Markdown to HTML簡易変換JSON簡易パーサ を作った。
  • 2015年頃 (24歳) LaTeX / TeX
    • 研究論文執筆のために学んだ。
    • これを用いて西鉄電車の車両運用関係資料や時刻表を組版している。
  • 2016年 (25歳) Crystal
    • Ruby類似の文法で書けるということで興味を持った。
    • 実用プログラムはまだ書いていない。
  • 2018年 (27歳) Rust
  • 2019年 (28歳) Go
    • 大学に舞い戻ったあと、研究用データ処理やアルバイト先のデータ処理で使ってみた。
    • 適当に作ったプログラムはすべてお蔵入りしており、ホコリをかぶっている。
  • 2019年 (28歳) Python
    • こんな言語3フェムト秒で滅ぼしてやりたいが、科学技術系や機械学習系のライブラリ群を呼び出すのに一番使われているので使わざるを得ない。
    • チームの他メンバーとプログラムを共有するために、自分が他の言語で書いたものをPythonに翻訳して渡すことは日常茶飯事。
    • 苦虫を噛み潰しながら今日もPythonでプログラムを書いている。
  • 時期不詳 (2005年以降)
  • 挫折したもの

6代目雑記帖開設

半月前の6月10日、私が初めてブログ「青竹雑記帖」を開設してから12年が経ちました。それを機に、ブログを書きやすい環境に変えようと6代目に移りました。

先代のブログは手作業が多く、更新作業が煩雑だったため、なかなか記事を積極的に書けていない状況でした。その結果、先代の10日付ブログ記事でぼちぼちブログ更新を再開しようと書いてから今日まで、書くネタはそれなりにあったのに、書くのがひたすら後回しになっていました。先代ブログは自作の静的サイトジェネレータでHTMLを生成してしまってから、手作業で個人サイトのスペースに配置するというもので*1、完全自作のこの方式はすべてを自分のしたいように設計構築できる反面、どうしても公開までに手間がかかってしまい、書いて投稿するまでのハードルが高くなってしまっていました。

ブログを書きやすくするためには、各種デザインや公開発信、SNS共有をプロの手に任せるのが最良です。自分はデザインを細かくチューニングしたいわけではなく、読む人にとって読みやすくあれば問題ありません。自分のWebデザイン能力は全くの不足であるため、下手に独善的なデザインにするよりは、プロによるデザインを活用したほうが良いと考えました。

プロに任せるには、個人サイトのサーバにWordPressなどのCMSを設置する方法や、はてなブログなどのブログホスティングサービスを利用する方法があります。過去の雑記帖では両方の方法を試していました。初代ははてなダイアリーを利用し、2代目はWordPress、3代目ははてなブログを用いて発信していました。今回は、自分が保守管理する手間を少しでも省くことと、昔からよく利用していたという点ではてなブログを採用しました。これで自分のシステムに自ら引導を渡すことができます。グッバイ!

とはいえ、先代のブログのためのシステムは決して無駄ではありませんでした。プログラミング能力の向上はもとより、HTML / CSSを手書きして自分だけのデザインを作り上げる体験を積み増しすることができました。もしかしたら、7代目の雑記帖だったり、あるいは私のサークル活動における成果を投稿するCMSに活用されるかもしれません。もちろんGitHubからクローンしてもらって、他の人の研究材料や実活用に供してもらうのもうれしいです。

ちなみに、先代のブログはサブドメインを少し変えました。こちらからアクセスください。 → http://5th-blog.aotake91.net/(2022.06.25 13:00現在、HTTPS化作業がうまくいっていないみたいなので、HTTPでしたらアクセスできます)

どうしてもSSL/TLS証明書の適用が出来ないため、先代ブログのアドレスを元に戻しました。https://blog.aotake91.net/ (2022.06.30 23:30追記)

それではどうぞよろしくお願いいたします。

*1:ちなみに、そのためのシステムは私のGitHubリポジトリ https://github.com/mugi-grainp に公開しています。