Archive for the ‘PC・技術’ Category

(2017/3/6 22:06 追記)

その後、僕は大間抜けだったことに気付いた。使っていたブラウザのフォント(Noto Sans CJK JP)の漢字がプロポーショナルじゃなかったのだ(英字がプロポーショナルだから、漢字もそうだと思い込んでいた)。それで、試しにIPA Pゴシックに変えたら、次のように理想的な表示になった。(行間が狭いのは、フォントのせいかブラウザのせいか、CSSのせいか ← フォントのせいのようなので、Noto Sansをベースにしている、源真ゴシックPというのにしてみた。もちろん、僕のPCでしか有効でない。)

 

確かに、昔(概ね1990年代前半まで)はプロポーショナルな日本語フォントは一般的でなかったけど、近年は改善されたということだろう。いろいろ考えたが、今回も事前の検討や確認が不足していた。

なので、以下は余り意味がなくなった。

(3/7 6:31 追記) 特に、美意識を疑うのは、業界の中でも(フォント作りで手を抜いていた)PC関連の一部であって、印刷関連はちゃんとしていたのだろうと思う。


あとで文章を書きますが、とりあえずこれを。

何のことか(何を言いたいか)分かった方は、僕と同類ですw (もし、そのような方がいらっしゃったら、この後に書かれるであろう文章を書いてくださると、大変助かります^^)

[3/4 18:32 本文を追記]

上の左側を見ると分かるが、(日本語の)"、"などには、右側に空白が付いている。一方、右側の(英語の)","などにはない。個人的には、日本語フォントのそういう余計な空白(お節介?)が嫌いだ。が、これはそれ程単純な問題ではない気がするので、少し考えた。

高校生(あるいは中学生?)の頃、タイプライターを買ってもらった時、それに付いていたと思われる、打ち方(タイプでの文章の書き方)の冊子を読んだ。それには、「.や,などの後には空白を入れること」とあった。僕は今でもそれにならっていて、常識のように思っているが、普通の人はどうしているのだろうか? それはともかく、そういう伝統があるので、英語のフォントには余計な空白は付いていないのだろう。

一方、印刷された日本語の文字は等間隔が基本になっている。その経緯を想像すると、大昔使われていた漢文は漢字だけなので、全部等間隔で良かった(複雑な字は大きく書きたいが、見栄えが悪い)。それで、その後に出来た、漢字かな交じりの日本語もそれにならった(日本のお家芸?)のではないだろうか。しかも、当時の縦書きだと、必然的に"、"などの狭い文字の横(おそらく左)には空白が入る。その空白は、実際には存在しないものなので、削除することは、どうしたってできない。

それを(表面だけ)引き継いで、横書きになった今でも、プロポーショナルでない普通のフォントは等間隔になっているのだろう。だから、"、"などの右には(ないものをあると誤解して生じた)空白が入っているのだろう。

ということは(今、上を書いていて気付いたのだが)、実は、あの余白は意図されたものでも必要なものでもなかったのだ。単に、縦書き用と横書き用のフォントを区別しないために生じていたのだ。

もちろん、長い歴史を持つ、組版の伝統はあるのだろうが、やっぱり、そんな余計な空白はなくした方がいいと思う。余談だが、これは、「おもてなし」とか言って余計な世話をし過ぎる日本人の性格が出ているというのは、言い過ぎか?

まあ、実際にそういうちゃんとしたフォントを作ると、(見た目は変わらないにも関わらず)英語のように、"、"などの後に自分で空白を入れる必要が出て来てちょっと面倒になるが、(西洋かぶれの)僕はそれでいいと思う。それに、タイプじゃないんだから、処理システムが自動で入れることだって可能だ。

いや、そもそも、"、"は","じゃないから、というのは、日本語は英語と違って、空白で単語を区切る必要がないので、その後に空白は入れる必要はない気もする。でも、入れないと詰まり過ぎて見にくいかも知れない。結構深い問題の気がする。

だから、naokiさんにならって、","や"."(この場合は半角)を使うのもいいかも知れない。

PS. 今気付いたが、縦書きの場合には、"、"の上の余白も気になって来る。漢字かな交じり文を手書きしていた時代は、上下はプロポーショナルに書いていたから、その余白は、昔はなかったものだろう。でも、今の普通のフォントを縦書き用にしたら、下に出来る。日本の近代のコンピュータ技術の闇(というか、いい加減さ)かも知れない。

PS2. とても些細なことだが、"、"に空白が付いていると、もう一つ良くないことがある。行の最後が"、"の場合、行末の文字の領域に、(両端揃えの場合、)普通の漢字だったら付かない余分な空白が付くことだ(下図参照)。この空白は全く意味がない。

これも、日本語フォントができてから、ずっと看過されてきたようだ。プロもそうしてきたようだから、日本の業界の美意識を疑う。(3/5 6:27)

PS3. 朝、(実際にやるかは別として)自分でフォントを修整する(例: "、"の余白を削る)のはそれ程難しくないと思ったのだが、良く考えたら、ものすごく大きな落とし穴があった。自分のPCで綺麗になっても、他の人が見たら全く関係ないのだ。それでは逆効果だ。改良したフォントを全世界(少なくとも日本中)に広めなければ、目的は達成されない。PDFならフォントを埋め込めばいいし、今はwebフォントとかいうのはあるけど、問題はそれだけじゃないから、実現不可能な話だ。。。(3/6 19:33)

  •   0
  •   0

Impress Watchの「ユーザーの声が届いた? 「ひどいCSV」の象徴、内閣府の「国民の祝日」CSVデータが劇的に改善」を読んで、何がそんなにひどかったのか、リンク先のtwitterを見た。

「プログラマが一斉に罵声を上げる」とあるが、何が悪いのか分からなかった。全く普通の、「良くあるCSV」じゃないかと思った。よくよく見てみると、2016年から2018年の3年分が横に並んでいるのが気に入らないらしい。あと、日付の書式とかそもそもCSVがどうのこうの。そんなことで「ゴミ」かい。

アホかバカかと。プログラマを馬鹿にするなって言いたい。自分たちのレベルの低さ(=意識高さ?)を棚に上げて、何をほざいているという感じだ。

そんなにいろいろ意見があるなら、自分ですごいサービスでも立ち上げればいいじゃないか! 例えば、政府広報やニュースなどを読んで、自動で祝日一覧を更新するとか。今の技術なら全く簡単だろう。でも、祝日が変わることなんて滅多にないので、やる(経済的な)価値は全くないだろう。けど、そういうのを「ちょっと作ってみた」という人が居たら、感心する。そういう人が、「あのCSVはちょっと使いづらいから作った」と書くのなら、納得する。

だいたい、政府にマトモなことを期待しているところからして、最初から寝ぼけているんじゃないか? 口を開けてれば、おいしいものが入ってくるとでも??

PS. 彼らのtweetは、さぞかし、ものすごく有益なものばかりで、目から鱗が落ちまくるのだろうと興味津々だが、まあ、面倒だから見るのは止めておこうw

PS2. ひどいと言えば、元記事の題はひどい。全角スペースに全角の"?"か。インプレスも意識低いな。僕はそっちに罵声を浴びせたい。

  •   1
  •   0

懸案だった、サーバのOS更新が無事終わった。更新後に再起動する時は、果たしてちゃんと立ち上がるか、少しドキドキしていた。結構大きいヤマが片付いて、一安心だ。あと4-5年は、こういった作業は不要だろう。

大きな問題はなかったのだが、いくつか気付いた点があったので、書いておく。

  • サーバには、なぜかdo-release-upgrade(OS更新スクリプト)がなかったが、パッケージupdate-manager-coreをインストールするだけで解決した。
  • テスト環境で起こった、do-release-upgradeの実行時に(Python(プログラミング言語)が)エラーになる問題は、なぜか起こらなかった。不思議だ。← 上に書いたように、do-release-upgradeを後からインストールしたからか?
  • なぜか、更新時にaptitude(ちょっと便利なパッケージ管理コマンド)が削除されたので、再度入れた。
  • テスト環境同様、更新後にrunlevel(OSの動作モードのようなもの)が5になっていたので、systemctlコマンドで2相当にしようとしたのだが、runlevelで見ると3になってしまった。でも、プロセス一覧を見ると、余計なものは動いていなかったので良しとした。おそらく、もうrunlevelも/etc/rc*.dの起動スクリプトも意味がないのだろう。だったら削除してほしい。。。
  • 作業で一番時間が掛かったのはバックアップで、圧縮後のサイズが9GBくらいになるせいか、1回80分くらい掛かった。更新自体は、最初は40分、2回目は20分くらいで終わった(それも結構長い気はする)。

そして、やっぱり、何をするにしても、特に、リスクのあることだったら、充分な準備をする価値はあると思った。

(23:47 若干加筆)

 

PS. みんなやっていることかも知れないけど、僕がコマンドライン(ターミナル)で作業をする時は、以下のようにしている。

  1. 実行するコマンドや順序を考えて(あるいは、どこかのページからコピーして)、どこか(例: Dropbox PaperやEvernote)に書く。
  2. それをターミナルにコピー・ペーストして実行する。

コマンドの例(PHPのバージョンを5から7に):
sudo aptitude remove php5
sudo aptitude install php php-cgi php-cli php-curl php-fpm php-gd php-intl php-mysql php-sqlite3 php-ftp php-net-socket php-sockets php-mbstring php-zip php-pdo-mysql php-exif php-apcu

こうすると、後で同じことや同様なことをするのが楽だし、何を実行するかあらかじめ考えるから、間違いが起こる可能性が減る。それに、上のような長大なコマンドだって、タイプミスせずに一発で打てる。更に、何をしたかの記録が残るから、後で何か問題が起こった場合にも、その時実行した処理に問題がなかったかを検討することができる。

また、トラブル対処などで、その場で(アドリブで?)コマンドを実行してしまった場合でも、なるべく、実行したコマンド文字列をコピーして、「**したら動いた」のように残すようにしている。

上のように書くと、「コマンドラインなんて古臭くて面倒だな」と思う人が多いかも知れないが、逆に便利だと思う。もし、GUIで上のPHPの例と同様な作業を記録するとしたら、「*を起動して、*を検索して、*と*と(中略)と*にチェックを入れて、インストールボタンを押す」なんて書くか、スクリーンショットを撮るしかないだろう。

前者の場合、オプションが多いと書くだけでも面倒なうえに、後日再実行しようとしてもコピー・ペーストは無理だから手間が多くなるし、後者の場合、手間に加えて、画像中の文字の検索は無理だから、後で調べるのが困難になるだろう(Evernoteは文字認識するから、検索できるかも知れない)。

  •   0
  •   0

髭剃り(パナソニック ES8232)の交換用電池は火曜日に届いていた。しかし、もし交換に失敗して壊したら、次の日に髭が剃れなくなってしまうので、今日まで延期していた(若い頃だったら、そんなリスクなんてもろともせずに実行していたものだがw)。しかし、今日も今日でいろいろ疲れたので、日曜の夜に延期しようと思った。

が、食事の後少ししたら急にやる気が出たので、始めてみた。作業は予想以上に簡単で、約30分で終わった。分解も組み立ても細い+ドライバー(2種類)だけででき、それぞれの部品がスパっと外れた(良くある爪は使われていなかった)ので分解は簡単だったし、防水性の確保が容易な構造(中核部の灰色のケースのパッキンにだけ注意すればいい)になっていたので、結構感心した。

注意すべきことは、電池の極性(黒い帯のある方が+で、この機種では下向きに付ける)を間違えないことと、分解した後に、ヘッドの動く硬さを変えるボタンを動かすと、組み立てた後で動かなってしまうことだ。それで、一度組み直した。

参考にしたページでは、中はかなり汚れているとのことだったが、僕のは結構きれいだった。ネジが少しだけ錆びていたのと、髭のカスが少し付いていた程度だ。この違いは何だろう? 風呂場で使わないとか、余り濡らさないとか、洗ったらよく乾かすとかが重要なのかも知れない。

テスターで新しい電池の電圧を測ったら4V近く出ていたのだが、電源スイッチを押しても動かなかった。充電不足で電流が取れないないのだろう。それで、今は充電待ちだ。これで問題なく動けば、あと数年間は使えそうだ。

1時間くらいで充電がほぼ終わり、無事動いた。しばらくは様子を見よう。(22:44)

近頃は、こうやって古い物の修理ばかりしている。近頃の物は、意外に修理しやすくできているのかも知れないな。

電池を交換の効果はあり、見事に使用可能時間が増えた。交換するまでは1週間で充電だったが、交換後は2週間半(実質13日)使ってもまだ大丈夫だ(残量目盛りは1/3なので、そろそろ充電ではある)。 (3/15 19:42)

 

PS. なくなったと思っていた、マウスの壊れた左ボタンのスイッチが出て来た。タンスの影で心細くしていたのではなく、ドライバーのケースに入っていた。なぜ気にしていたかというと、使うあてがあったのではなく、間違って使わないように、確実に処分したかったのだ。

実はこのスイッチ、今日も行方不明になったのだが、今回は見つかった。作業の時に下に敷いていた新聞紙を捨てる時に、くっついていたのだ。もちろん、おかしくもなく、涙も出そうにならなかったw

  •   0
  •   2

ブログサーバーのOSを更新するため、2/26(日)に本サーバーを停めます。作業終了までは、断続的な動作になる可能性があります。

その日のうちに復帰する予定ですが、予期せぬ問題が起こった場合は、しばらく停まる可能性があります。

作業が終わりましたら、この投稿に追記してお知らせします。

よろしくお願いします。

2/26 10:56: 無事、OSの(2段階)更新が終わり、動作確認中です。ここまでの所要時間は約3時間でした。大きな問題はなかったです。

2/26 13時 動作確認が終わりました。正常運用に戻りました。

  •   0
  •   0

久し振りに、(仕方なく、)「最先端」を標榜する林檎機を使ったのだが、また呆れてしまった。蓋を閉じるとスリープするのすら解除できないのだ。そのためには、非純正のアプリを入れる必要があるらしい。信者一般ユーザーは、メーカーの素晴らしい決定に盲従しろってことか。

アホかバカかと思う。意識高い人たちは痩せ我慢も得意なようで、全く感心する限りだ。あんなの、必要がない限り絶対に使いたくない! タダだって欲しくない。

という訳で、僕はいつものように、「低みの見物」を決めこむのであるw 実際、PCのような道具に主義主張を持ち込むなんて、愚の骨頂だ。

  •   2
  •   0

10年くらい使っている髭剃り(パナソニック ES8232)の電池が寿命になったようで、去年の終わりくらいから、以前に比べて持ちが悪くなった感じがしている。大体、1週間でなくなる感じだ。

それで、少し前から代わりを探していたのだが、なかなかいいものがない。同じパナを探したのだが、新製品で手頃なのはAC(充電ケーブル)を繫いだままでは使えないことが分かって、却下した。というのは、僕は電池残量なんて見ずに使うので、いつも剃っている時に電池がなくなるからだ。朝に、たとえ10分でも充電を待つなんてことはできない。

そして、今日の昼ご飯の帰りに散歩していたら、ふと、家電の量販店に寄ってみようと思い立って、行ってみた。初めて行く店だったのだが、店内は昔の秋葉原のようなけたたましさだった。蛍光色の服を着た、携帯各社の女性販売員がずらっと並んでいるのもアキバを思わせた。店内のうるささは、客が間違えて鳴らした防犯ブザーに、10分くらい店員が誰も(横を通っても)気付かない程だった。店員はさぞ毎日疲れることだろうが、僕はもっと疲れた。

いろいろなメーカーのがあって参考になった。が、結局、ロータリー式で気になっていた日立はかなり高く、あとは毎日血が出るブラウンと、何時間掛けても剃れないフィリップスしかない(個人の体験に基づく感想)ので、パナしか残らなかった。ダメモトで探すと、ACを繫いだまま使えるものもあった。ありがたいことに、価格カードに「充電・交流」のように書いてあって分かりやすかった。それで、上に挙げた各社のカタログをもらって帰って来た。

実際には、物が多過ぎて、ちょっと見てもどれが希望に合う物なのか分からず、おまけにうるさいので諦め気分になって、もう帰ろうと思った時に、ワゴンに積まれていたフィリップスの箱(何となく、安そうだった)に、ACを繫いだまま使えるというようなことが書いてあったので、もしやと思って再度探したら、上のような結果が得られた。

部屋で、落ち着いてカタログやAmazonを調べると、日立は使い方も面倒だし、替刃も高いようなので却下となった。更に、あの量販店の価格は、Amazonから千〜1万円くらい高いことが分かった(上のフィリップスの見切り品を衝動買いしなくて、本当に良かった)。これじゃあ、あそこで買う意味は全くない! 余程の理由がない限り、行くことはない(というか、頼まれても行きたくない)だろう。

それで、比較的手頃なパナの2機種(1万円と6千円程度)に絞ったものの、完全には納得できなかったので、「本当に駄目になったら買おう」と保留にした。そうこうしているうちに、候補のうちどちらの機能・仕様が今のに近いか比べるため、今のの値段を調べようと検索したら、さすがに値段は分からなかったのだが、その機種の「電池を取り出す」というページが見つかり、「電池の交換」という選択肢に気付いてしまった。

さっそくAmazonで電池を探すと、1200円くらいで売っていた。が、偽物というレビューも多かったので、やっぱり駄目かなと思った。が、「ヨドバシなら信用できるかも?」と思って探したら、ネットの最安値付近であった。なんと、650円くらいだった。

もちろん、交換する時に壊したり、交換しても直らなかったり、すぐ壊れたりする可能性も考えたが、この安さなら許せるので、注文した。ポイントを使って550円くらいになった。メール便なので、配達を待つ必要もない。来たら、適当な時に試してみよう。

ちなみに、親切なことに、マニュアルに分解方法が載っている。捨てる時に電池を取り出すためとのことだった。だから、開けるのはそんなに難しくないのだろう。

(19:15 わずかに修正)

PS. マニュアルには電池寿命は「3年」と書いてあったので、随分長持ちしたようだ。おそらく、充電スタンドに立てておかず、常に充電状態にはならないようにし、残量がなくなってから必要なだけ充電するようにしていたからではないだろうか。

そういう気配りはリチウム電池には必要ないと言われているが、やっぱり意味があるのではないだろうか。直感だが、常に充電していると、(ほんの少しだろうが、)常に化学反応しているので、その分劣化が速いのではないだろうか?

PS2. その店、Wi-Fiルーターは高くなかった。僕が買ったバッファローの物が、Amazonと同じくらい(3千円台)で売っていた。他に、珍しいメーカーの製品もいろいろあった。一方で、マウスやキーボードなどの品揃えはありきたり以下だったし、CD-Rメディアはバカ高(ヨドバシの2倍くらい)だった。買う物や価格を厳選すればいいのだろう。が、無駄足を踏む可能性が限りなく高いので、疲れてまでそんなことはしたくない。

  •   1
  •   0

先日の出張の帰り、一緒に行った方から、こんな質問をされた:

**(僕の名前)さんは、何が得意なんですか?

少し考え込んでしまった。その時は考え込んだ理由が今一つ分からなかったのだが、いろいろ考えたら、何となく分かった気がする。

仕事の場合、その案件に必要なプログラムなりシステムを作る(作らなくてはならない)のであって、芸術や趣味とは違い、得意だから作る、得意でないから作らない、という選択肢はない(実際には、どうにかして回避する努力はするしw、やるにしても、できるだけ得意な方面に繋がるようにする)からだろう。

だから、ちょっと偉そうに書けば、「何だってできる(やる)から、特に得意な分野はないです」と言うのが正しかったのだろう。そんなことを言ったら、大変イヤミになるので、もちろん言わないが。単に、「特に得意な分野はないです」の方が日本的だろう。でも、それも謙遜し過ぎていると取られそうだ。

結局その時は、十数秒考えてから、希望も含めて「LinuxとかUnix関係ですかねえ」と答えておいた(実際には、僕はLinuxやUnixのエキスパートではない。いろいろ調べながら、とりあえず不便なく使えて開発できる程度だ)。

「希望」というのは、上とは矛盾するが、小さ過ぎるシステム(例えば、手のひらサイズ)は疲れるのでやりたくないから、避けたいのだ。でも、その時は、今後そういう仕事が回されて来そうな雰囲気が別の人の話から漂って来て、そのたびにスルーしていたのだが、少し重い気分になった。でも、どうにかして回避したいものだw

PS. 冗談で答えるとすれば、以下かな。

  • 楽な仕事が得意です。
  • **が得意なので、そこら辺の仕事だけ頂けますか?
  • 仕事は苦手です。
  •   0
  •   0

洗濯用洗剤。僕は、以前ふぇーどるさんに教えてもらった、無香料のファーファを愛用している。だが、いつも同じなのもおもしろくないので、たまには変えてみようかと他の製品を探したが、同等なものはサラヤのヤシノミ洗たく用洗剤コンパクト程度だった。

コンパクト洗剤には昔から疑問があった。果たして経済的なのかと。というのは、仮に普通のと単価が同じだとしても、計量誤差の影響が大きくなって(使用量が少なくなるほど、簡易なカップで量を正確に測るのは難しくなるから、大抵は多目に入れるだろう)、損なのではないかと思っていた。だが、単価が大幅に安ければ、それでも問題はないだろう。

それで、2製品の詰め替え用の単価を比較してみた。

  • ファーファ 無香料
    • 使用量: 25g/30L
    • 価格: 239円/900g (ヨドバシ)
    • 使用回数・単価: 30Lの洗濯なら36回分、6.6円/回
  • ヤシノミ コンパクト
    • 使用量: 10mL/30L
    • 価格: 349円/360mL (ヨドバシ)
    • 使用回数・単価: 30Lの洗濯なら36回分、9.7円/回

よって、コンパクト洗剤は1回の洗濯辺り数円程度割高なようだ。ただ、全く別の製品なので、ヤシノミ コンパクトにはすごい技術が使われていて、それで高いのかも知れない(が、普通は洗剤にそこまでの違いや進化は期待しないだろう)。あと、コンパクト洗剤はすすぎが1回で済むそうなので、その分の水道と電気料金は安くなるだろう。保管するにも、場所を取らなくていいだろう。

ちょっと、水道料金も考慮してみる。

宇都宮市の13mm契約では10m3まで1,684.80円なので、1L(1/1000m3)では約0.169円となり、すすぎ1回分のコストは、ためすすぎ(水量は30L)とすると、約5円となる。

すると、コストは逆転する。洗濯とすすぎを全部同じ水量(30L/回)として、その費用を加えると、以下のようになる。

  • ファーファ: 6.6 + 5x3= 21.6円/回
  • ヤシノミ コンパクト: 9.7 + 5x2= 19.7円/回

1回2円程度の差となる。

余談: 意外なことだったが、水は結構高価なようで、この例では洗剤よりも高く付いている。まあ、確かに、砂漠の地域ではものすごく貴重な物だし、日本でだって、さまざまな処理を施されて生産(?)されているのだし、地域によっては不足していることもあるのだから、納得できる。

それでも、やっぱり普通の無香料ファーファを注文した。(僕の思い込みかも知れないが、)計量誤差で儲けようとする姑息な考えが気に入らないのだ。(実は、昔は普通のヤシノミ洗剤があったのだが、なくなってしまった。それでファーファにしたのだ。)

ちなみに、前回まではAmazonで買っていたが、今回はヨドバシにした。不思議なことに、そっちの方が価格が安かったのだ。しかも、日時指定が無料でポイントも使えて、いいことずくめだった。しばらくは愛用するだろう。

(2/14 19:27 少し加筆)

PS. このコスト比較、ちょっと考えただけで、他にもいろいろな要素があって、おもしろい。例えば以下のようなものだ。

  • 洗濯機の電気代
  • 服の傷み (すすぎ1回分、違うはず)
  • 洗濯機の損耗度 (同上)
  • 待ち時間の人件費
  • 持ち運びの労力
  • 保管の場所代
  • 運送のトラックの環境負荷 (ユーザーには直接は関係ないが)

そういうのを全部考慮すれば、理論的にはコンパクト洗剤の方が優れているのだろうと思う。でも、その場合は、メスシリンダーなどで洗剤を計量することを推奨するw

理想的には、洗濯機が洗剤を自動計量してくれればいいと思う。洗濯機の洗剤タンクに入れる時にボトルのバーコードなどを読ませておいて、洗濯のたびに(自動判定した)洗う物の量から適量を判別すればいいのだから、難しいけど決して不可能ではない。これは結構便利だと思う。これだったら、コンパクト洗剤でいい。昔、近い製品があったと思う。(2/14 19:15, 20:23)

  •   1
  •   2

想定外のことがあって、しばらく休みになった。自宅謹慎とかではなくて、インフルエンザである。それで、懸案のブログサーバーのOS更新を試してみた。KUSANAGIを使わないのであれば、確認・移行用に新たなサーバー(VPS)を借りなくても、自分のPCに仮想環境を作って、無料でいくらでも試せることに気付いたのだ(KUSANAGIも仮想マシンを配布しているのかも知れないけど、使う気がないので、パスした)。

試した結果は、いくつか気になる点や注意事項はあるものの、現行のサーバーをインプレースで(「上書き」)更新しても大丈夫そうだった。今日1日(実質半日)で、仮想環境で、古かったOSを最新版に更新でき、テスト用ブログサーバーが動いた。しかも、PHPを7.0にしたせいか、何もしなくても4倍くらい速くなった。

最も気になるのは、「ゴミ」である。今使っているOSは古いため、最新版に更新するには、2回(2段階で)更新する必要がある。その過程でゴミが残って(あるいは、不足が生じて)動作に悪影響がないかと、今までの数年間の運用や試行錯誤でさまざまなゴミが溜まっているだろうから、その影響も気になる。

もしゴミをなくしたいなら、新しいサーバを借りて、最初からセットアップするべきだが、それはかなりの手間だ。

まあ、趣味だし、とりあえず動いたから、上書き更新でもいいような気がする(が、今までの経験上、そうやって手を抜くと、あとで思わぬトラブルが勃発して慌てるのだが)。それならほとんど時間が掛からないでできるし、トラブル対処の勘所も分かったので、もう少し考えてみよう。

以下は、更新に当たって起こったできごとや注意事項などのメモである。OS名を明記しないので、余り参考にならないかも知れない(が、よく読めば、自明なはずである)。

  • OSの更新は、基本的に、do-release-upgradeコマンドでできる(これは、ご丁寧にも、古い版のOSにログインした時に表示されたので、何も調べなくても分かった)。ただし、更新が失敗する場合やパッケージがあった。
    • 1つ前の版から最新にする時、do-release-upgradeが実行できなかった。これは、pythonが古くてaptというモジュールがなかったからのようで、一旦削除してインストールしなおしたら、動くするようになった。
    • mysqlのDBのディレクトリ名(/var/lib/mysql/*)に異常なものがあって、更新に失敗した。使っていないものだったので、そのディレクトリを削除したら成功した。
  • 現行サーバーの環境をコピーするため、ディスクの内容を新しい仮想環境に上書きしたのだが、ファイルの選択がいい加減だったので、/etc/fstabまで上書きしてしまい、ディスクのマウントがおかしくなってしまった。まあ、当たり前のことであるが、/が読み出しのみでマウントされて、fstabの修正もできなかったので、手で読み書き可にマウントしなおして編集できるようにした。
  • PHPはパッケージ版を使ってみた。すると、php-fpmはなぜか/etc/rc?.dから起動できず、プログラムの場所も分からず、再起動するにはOSを再起動しないといけなくて、面倒だった。良く調べたら、場所は/usr/sbin/php-fpm7.0だった。また、なぜか、/etc/init.d/php7.0-fpm startなら起動した。起動スクリプトの仕様が変わったようだが、他にも同様なことがあるので、要調査だ。
  • パッケージ版のPHPは、現在ビルド時に指定している、さまざまなモジュールをapt-getに"php-curl"のように指定して追加すれば、今使っているものと同等の機能のものがインストールできた。
  • 当然ながら、パッケージ版のPHPに移行するには、元々の(自分でビルドした)PHP関連コマンドを削除しないと、誤動作する。
  • ブログ(WordPress)を正しく動作させるためには、仮想環境にドメイン名を付け、それに合わせて、webサーバの設定とWordPressの設定(設定ファイルと「サイトアドレス」)を変える必要があった。webサーバの設定はもう少し綺麗にしたいが、仕様が難解で難しい。。。
  • ブログでは、以前PHP 7を試した時に生じた問題(ウィジェットの設定画面がおかしい)が再発した。しかし、検索しても同様の問題はないので、更に調べたら、自作のウィジェットが原因だった。一部の標準ウィジェットをカスタマイズするため、コピー・変更して使っていたのだが、その使い方がPHP 7に互換でなかったようだ。これはフックにできないだろうか。
  • PHP 7.0にしたら、ブログの表示は約4倍速になった。ただし、正規表現での検索は10倍くらい遅くなった。自作したものなので、効率の悪い点がありそうだ。また、ページを最初に表示する時は遅い。これは、PHP 7.0の動作(JITやキャッシュ?)に関係しているのかも知れない。
  • もう一つのブログや他のwebサービスも、問題なく動いている感じだ。
  • カレンダー・アドレス帳サーバーは、最初は予想外のエラー(HTTP 400)が出て動かず、ちょっと苦労したが、何とかなった。設定の、「信頼するドメイン」に、サーバー自身のドメインを追加する必要があるようだ。それがどういう意味なのか(自分すら信頼できないのか??)、今ひとつ分からない。
  • パッケージ版のwebサーバーも試したが、ログやSSL証明書の場所の設定を若干修正する程度で問題なく動いた。僕の用途では、最小構成で充分なようなので、得した気分だ。(20:47)
  • パッケージ版のPHPのバージョンは最新ではなく、約3か月遅れで、辛うじて許せるレベルだ。一方、webサーバーは、約10か月遅れなので、ちょっと古い感じだ。今までwebサーバーの問題を見たことがないから古くてもいいが、心配なのは、セキュリティ面だ。
  • https(SSL)の証明書は、現行サーバからコピーしたものではブラウザに文句を言われたが、sshの鍵は、コピーしたものがそのまま使えた。確かにそういうものだが、本当にそれでいいのかと思う・・・
  • OSを仮想環境にインストールしたせいか、runlevelが5(デスクトップ用らしい)になっていて、時々文句を言われた。直し方は不明だが、とりあえず動いたし、実環境は2なので、問題ない。

(2/16 17:21追記) その後、準備や調査をした結果を書く。

  • php-fpmが/etc/rc?.dから起動できなかった問題は、Linuxの起動時のプログラム起動システムが(、さまざまなものを経て、)今は、systemdというものに変わっているためだった。ただ、昔ながらの起動スクリプト(/etc/init.d/*や/etc/rc?.d/*)も残っているので、それを使ったら騙され失敗した。何とも中途半端だ。だから、php-fpmは、正しくはsystemctlコマンドで起動するべきだったのだ。だが、これもいつまで続くか分からないし、手で自作のサーバープログラムを追加するのは面倒そうなので、なかなか覚える気がしない。
  • ランレベルも同様で、昔は設定ファイル(/etc/inittab)があったのに、今はなくなっていて、"systemctl set-default multi-user"などのようにして変更するそうなので、分かる訳がなかった。
  • なかなか苦労して、webサーバの設定をかなり綺麗に簡素にでき、行数を半分以下にできた。今までは、文法が難解なので、いろいろなサイトのコピーをベースにして、おそるおそるいじっていたため、ゴミが多かったのだが、今回は観念して腰を据えて、気合を入れて文法を理解しつつ抜本的に作りなおしたので、「どうしてこうなんだろう?」という箇所はなくなり、ゴミもほぼ0になった。また、非推奨の処理もなくせた。でも、これがサーバの高速化に繋がるかと言えばそうでもない。だが、保守性の向上とかセキュリティホールができにくくなることには繋がる。以下に新旧の行数の比較を載せる。
    • 現行: 705行 (2ファイル)
    • 改良後: 310行 (4ファイル)
  • 自作のウィジェットがPHP 7.0でエラーになる問題も対処できた。どういう訳か、作成当時にエラーになったので止めていた方法(元になるウィジェットのサブクラスを作る)がすんなり通ったので、PHP 7.0でのエラーは起こらなくなり、コピーの部分もほとんどなくなった。不思議なことに、それが今のPHP 5でも通ったので、当時のPHP 5にバグがあったのか、僕の思い込みだったのか不明だ。

そんな訳で、OS更新までに残る作業は、作り直したwebサーバの設定の動作確認程度である。これが、(手でやる場合には)拒否・通過設定しているURLをブラウザで1個1個開いていくという、なかなか手間が掛かるうえに間違いやすい作業なのだが、設定修正のたびに繰り返すのは嫌なので、確認用スクリプトを作って自動化したいと思っている。

(2/18 17:02追記) その後、サーバのセキュリティ関連設定確認用スクリプトを作って確認し、問題を見付けて修正して、問題なくなったことが分かったのだが、その後でブログを見たら、みごとに崩れていて、とても参った。「完璧な設定」に見えたのは、どうも、サーバの各種プログラムの不思議な動作(いちいち停めないと駄目だったり、OSの再起動すら要る場合がある)やブラウザのキャッシュによって作られた「幻」だったようだ。

今でも、「修正できたと思ったら、実は駄目だった」の繰り返しである。このwebサーバは、なかなか一筋縄に行かないようだ。

それから、その設定確認用スクリプトを作っている時にも、大いにはまった。スクリプトは、準備として、外部(web)からアクセスできない場所にファイルを作る(それをアクセスしても、サーバの設定でブロックされることを確認する)のだが、2回目に実行すると、必ずサーバにssh接続ができなくなってしまう。いろいろな原因を疑って一つずつ潰して行ったのだが、原因が分からなかった。そして、試してみたら、現行のサーバでも同じ現象が起こった。それで、かなり悩んで、ふと、(自分で設定した)IPフィルタ(簡易なファイアウォール)かも知れないと思って調べたら、本当にそうだった。

ブログサーバを立ち上げた頃に、sshを頻繁に繰り返す攻撃を無効化する設定を、どこからか見付けて入れていたのだ。その後、そんな設定をしたなんてことはすっかり忘れていたのだが、今回の設定確認用スクリプトは、確認用ファイルを作るために、まさに頻繁にssh接続するので、すぐに限界(例: N回/時間)に達してしまっていた。OS更新テスト用の仮想環境も、ブログサーバの内容をほぼまるごとコピーしたので、設定が有効になっていたのだ。全くあてにしていなかったのにちゃんと動いてくれてうれしかった反面、思わぬ落とし穴にどうしたものかと思った。

一時的に無効にすることは可能だが、何度もやるうちに戻し忘れるのが嫌だ。それで、いろいろ考えて、確認用ファイルの作成と削除は、1ファイルごとにssh接続せず、まとめて1回のsshで実行するようにした。その(長々とした)コマンドを作るのがかなりの手間だったが、とりあえず動いて、問題は起こりにくくなった。めでたし、なのか??

(2/19 8:30追記) 大変な苦労の末、サーバの設定の改良が終わった。仮想環境では再起動しても壊れなかったので、おそらく大丈夫だろう。そして、今朝、実サーバにも適用した。いくつか問題が見つかったので、修正した。今のこれが幻でないことを祈るばかりである。

ちょっと残念なのは、いくつか、例外的な「汚い」処理が必要だったことだ。まあ、今の僕の技量ではそこまでってことだ。でも、今までの設定に比べたら、随分まともになったと思う。そんな訳で、設定の行数は361行に増えた。

  •   0
  •   0