Amazon S3に乗り換え

雨のち晴れ早朝、大雨が降って高松市に大雨洪水警報が出ていたらしい。 起きたときには雨はほとんど降っていなかったのだけど、警報が出ていたので小学校は休み、中学校は昼前から行くことになったみたい。 オレが子供の頃、警報が出ても休みになった記憶がないのだけどな。

仕事でも今日は大変忙しかった。 残るConoHaの検証は中止になって、Amazon S3で行くことに決定した。 なので、プログラムを全部Amazon S3用に書き換えた。 問題は既存のデータ移行。
さくらのオブジェクトストレージからデータを引っ張ってこないといけないのだけど、オブジェクトストレージが落ちているためデータを引っ張ることができない。
引っ張る手段は、簡単に実装できそうだった、s3fsでサーバーにマウントして、cpコマンドで一気にコピーをかける方法にした。 が、s3fsコマンドでマウントに失敗する。
かなり時間がかかったが、これは結局さくらが落ちているからだった。 たまたま最初にやった時繋げて、次が繋げなかったので、コマンドが間違っているとかなり疑ってしまった。

また、それと同時に会社のインターネットがまた遮断された。 問い合わせ窓口に連絡しても「明日朝の対応になる」とかふざけたことを言われた。 遮断されたのが11時半くらいで、12時には電話をして「すぐ折り返します」とのことだったのに、15時になっても折り返しがないので、こちらからかけたら「今かけようと思ったところです」とか言うし。 「先週も同じような現象で困っている」とクレームを付けたが「工事の手配が行かず明日朝になる」とのことをひたすら主張された。 問い合わせ窓口は第三の会社なので、これは直接不動産屋に文句を言うしかないな。 オレはインターネットの会社とは直接契約してないし「インターネット付き」で物件のウリにしているのは不動産会社で、それが使えないとなるとクレームを入れる先は不動産会社となる。
不動産会社に連絡してクレームを入れたら、17時半くらいにはすぐに業者が修理をしにきた。 そしてインターネットは復旧した。
復旧するまでの5時間半は、ずっとスマホのテザリングでしのいでいた。 が、格安SIMなので、容量制限があり、1日110MBしか使えない。 Wi-Fi利用だとその容量で問題ないのだけど、テザリングするとなると110MBなんて一瞬で消える。 なので「低速モード」という、最高でも200Kbpsしか出ないモードに切り替えてテザリングをする。 が、めちゃめちゃ遅い。 200kbpsはベストエフォートなので、実際は半分程度しか出てないだろう。 アナログが56kbps、ISDNが64kbpsなので、それに近いくらいの速度のインターネットを久々にフル活用した。 閲覧にめちゃめちゃ時間がかかって不便だった。
サーバー接続するコンソールは、その速度でも全く問題なかった。 CUIは最高だなぁ。 が、コマンドを打ち込むために、Google検索するのだけど、それが遅いので、結局作業時間もものすごいかかった。

20時位に一瞬だけさくらのオブジェクトストレージに繋がって、s3fsでマウントすることが出来たので一気にコピーをかける。 全部は無理で途中で切断されてしまった。
が、それでも1サイト分だけの画像は取り出せたので、そのサイトだけAmazon S3化してリリース。 21時半くらいに帰宅。

食事やジョギングをする。 ジョギングは大会に備えて軽く流す程度。 6kmを34分05秒で、キロ5分42秒ペースだった。
24時過ぎに再度チャレンジしたらまた接続できたので、残るサイトの画像をコピーする。 こちらもコピーに成功して、25時過ぎにAmazon S3化してリリース。
今手がけている主要2サイトは対応が完了した。 あと1サイトあるが、これはゴミみたいなやつなので明日やればいいか。 そんなで木曜深夜から続いていた障害がようやく解消された形になる。
一方、本家のさくらのオブジェクトストレージは継続して障害発生中。 もうダメだな、これ。

その後はスプラトゥーン2を遊ぶが、遊び始めた時間がおそすぎてあまりプレイできなかった。 こちらも長期プロジェクトだった、全ブキの塗り10,000ptをようやく達成した。 さて、これから何のブキを練習していこうかなぁ。

S3類似サービス

曇り今日の朝ごはんは「トリッチトラッチ」で本を読みながら食べていた。
モーニング

だが、9時40分くらいに会社の人から電話が。 まだ食事中だったのだが…… 先週から続いているさくらのオブジェクトストレージの障害になんとか対応する方法はないかとのことだった。
まさか不具合が週をまたいで解消されていないとは想定外。 木曜夜から続く不具合は、金曜深夜に瞬直ったような気がしたが、土曜の朝に改めて障害情報に載った。 土曜の朝からの障害が48時間経った今でもまだ直っていない。 障害もサーバーに接続不能という閲覧すらできない、一番まずい障害なのに、それが48時間も…… しかも「障害が発生しました」と書かれているのが48時間前の日時。 それからの続報も一切ない。
土日の間にお客さんから営業の人はクレームを受けまくっていたことが予想されるので、月曜の朝一番で電話してきたのだろう。
会社の方針としては、「さくらのオブジェクトストレージ」は捨てることになったので、代替サービスを探さなくてはならない。
候補としては「Amazon S3」「IDCFオブジェクトストレージ」「ConoHa」の3サービスかな。 他にも「Nifty」とか「NTTcom」とかあるけれど、全ては検証できないので。
とりあえず3サービスのアカウント登録をし、まずはIDCFオブジェクトストレージから試していく。 さくら用に作ったアブジェクトストレージのREST APIにコマンドを投げつけるプログラムを多少改造すればできそうだな。
そう思っていたが目論見が甘かった。 さくらではACLというアクセスさせる権限が、バケット単位で「private」「public-read」「public-read-write」に相当するものに設定ができる。
が、本家のS3ではバケット単位でも、仮想のディレクトリ単位でも、オブジェクト単位でもそれが操作できる。 REST APIでその部分を操作しようとしたが、headerにそれっぽい文言を入れて操作してもできず。
全てデフォルトの「private」になってしまう。 画像オリジンなので、「public-read」にしなくてはならない。
障害が起きているものをなんとかしなくてはならないので、あまり調査に時間もさけないので、Amazonから提供されているAWS SDK for PHPを使うことにした。 基本的にはAmazonのサービスに対して操作するプログラムだけど、類似のオブジェクトストレージはS3互換を謳っているので大抵使うことができる。
バージョンは2と3があり、普通は3なのだけど、さくらもそうだけど3には対応してないかもしれないので、2を選択することに。
一式アップロードして、操作方法を調べて、それを元にプログラムを組んでいく。 で、無事にIDCFオブジェクトストレージと連携することはできた。 文字で書くと簡単だけど、とりかかってから軽く5時間くらいかかっている……

次はAmazon S3。 本家なのでSDKは3を使う。 使い方はほぼ同じだけど、認証部分だけ違うのでそこの手直し。 それとAmazonのサービスはIamというユーザーや権限を管理する部分で操作ユーザーみたいなのを作成して、適切な権限を付与してあげなくてはならないので、その部分で苦労した。 Google検索をしまくってなんとか操作できるようになった。

2サービスを使えるようになった段階でタイムアップ。 ConoHaの調査は明日に持ち越すことに。 だが、お金が許されるのならAmazon S3一択だな。
そんなで21時半くらいに帰宅。 自分でアルゴリズムを考えて使っていくのはいいのだけど、既に用意されているツールをマニュアルや人のブログ記事を見ながら使えこなせるようになっていくのはなかなかしんどい。

今日は昨日の疲れもあるのでジョギングは無し。 今週末はいよいよウルトラマラソンの大会なので、今週はトレーニングも控えめにしなくてはいけない。
スプラトゥーン2で遊んで、26時位に就寝。

WordPress

晴れ仕事で、Wordpressの案件がある。 Wordpress案件自体がほとんどなく、あまりノウハウがない。 今回の案件はWordpressMEから最新の3.9にアップグレードしつつ、カスタマイズする案件。
MEの頃の導入は自分でやったのだが、もう6年くらい前の話だと思う。 正直どんな処理をしたのか、どんな風に構築したのか全く覚えてないが、ソースコードを見ると、WPのテーブルに対して、直接SQLを投げるような処理が多数。

ME→3.9のアップグレードは、WPのアップグレードシステムが素晴らしく、全くトラブルが起こらず成功した。
ついでにMySQL4だったのを、5.6にアップグレードも行う。
だが、テーブル構造が変わっているらしく
wp_categories,wp_post2catというテーブルが廃止されていたりして、べた書きのSQLはエラー出まくり。 一時しのぎとして、全てSQLを書き直し、表示はできたのだが、やはりこのままじゃいけないなぁ。
WP標準の関数で全てできるはずなので、書き直さないといけない……

だが、今までWPのテーマを作ったこともカスタマイズしたことも一度も無く、まずはそのあたりの知識を入れるところから……
そんなで、ここ2日くらいWPに没頭していて、だいぶ形になった感じ。 標準で用意されている関数・クラス群は素晴らしく、たいていの要望には、答えられる感じがする。
ただ、使いかたがわからないものが多かったり、そもそも存在を探すのにだいぶ時間がかかってしまった。
知れば知るほど、WPの魅力がわかってくる感じがする。

モーニングとグラッチェ

雨のち曇り今日は金曜日、いつもより早起きし、8時半くらいに家を出る。 子供達を幼稚園と保育園に送っていき、喫茶店に行ってきたのだが、今日は道がめちゃめちゃ混んでおり、喫茶店に着いたのが9時10分くらいになってしまっていた。
あまり長い時間は滞在できなかった……

昼はグラッチェへ。 ペペロンチーノと、ドリンクバーで600円弱だった。 オレはこの量で夜まで持つが、普通の人だったら全然足りないかもしれないな。

今日の仕事は結構忙しく、月曜締め切りの仕事があるのだが、それの組み込みで22時過ぎまでかかってしまった。 うちの会社の仕事は、企画→デザイン→コーディング→システム→手直し→完成、というように進んでいく。 今回の企画は1ヶ月以上前に始まって、21日完成予定。 デザインが3/20くらいまでには終わって、システムも4/14くらいに終わって、ラスト一週間は手直しの時間だったのだが、実際にデザインが終わったのが4/16、残り2日で2週間かかる予定だった仕事をやる事になる。
もちろん手直しの時間など無し。 多くのプロジェクトがそのような状況になることが多いのだが、締め日は動かないので、完成した後に手直しがものすごい発生する。
この辺のプロジェクト管理はもう少し上手くやってもらえないものだろうか。
160kmのボールを投げるけど、コントロールは針の穴を通すようなピッチングは出来ない。 どちらかを秀でるには、どちらかが犠牲になる。 両方とも上げようとすると、どちらも中途半端になってしまう。

GoogleMap

晴れ今日はメチャメチャ寒い。 雪が降るんではないかというくらい冷え込んでいる。 そんな中、会社に向かう。
今日いつも通りの仕事。 夜はJSのGoogleMapV2で作られたサイトが動かなくなったからなんとかしてくれ、と依頼があり、V3への書き換え作業を行っていた。 11月中旬くらいにV2が完全廃止になったんだね。
GoogleMap関連のJSファイルだけで1000行くらいあり、4時間くらい作業したが、全部は直しきれなかった。 続きは明日やろう……
V2からV3へは、関数型になった以外にも、廃止された関数が大量にあった。
なぜかV2では、XMLをパースする関数が組み込まれていたり。 当然GoogleMapとは関係ないのでV3では廃止になっていた。

ひさびさにGoogleMapをがっつり触ると面白いな。 知らない書き方がけっこうあった。
最近、同じような内容の仕事ばかりだったので、やはり多少の変化は必要かも。
ただ、明日からもまた同じような仕事が続くのだけど。

グラッチェへ

晴れ今日はお弁当を作ってもらったのに、家に忘れてしまい、お昼ご飯はグラッチェに行ってきた。
最近お弁当作ってもらっているので、グラッチェにくる頻度も減ってきたな。 だいぶお昼ご飯代が浮いて助かってる。
お昼ご飯は「ローマ風ピッツァ ビアンケッティ」というのを食べた。 ピザの上にしらす干しのっているピザらしい。
運ばれてきて食べたが……美味しくないなこれ…… やっぱピザはもっとチーズっぽいやつがいいなぁ。 ツナは美味しそうだけど、この和風ピザみたいなのは失敗だった……

いつものようにアッサムティーを飲んで会社に戻る。 仕事は最近メチャメチャ忙しい。
水曜までにやらないといけない仕事が、突然降ってきててんやわんや。 作成しているCMSのほぼ全箇所に、特定の店舗のみ特定のURLにデータをPOSTする仕組みを作ってるのだけど、量が多すぎて確認がすっごい大変。 POSTした結果は返り値として受け取る必要がないので、投げっぱなしにできる仕組みを探したりした。 結局単品じゃできず、投げる用のスクリプトを作成して、Linuxコマンドでそのスクリプトを起動し、投げっぱなしの処理を実行する方針になった。
まぁめんどい。 確認処理を入れて放っておくと、ログが一気に1万以上溜まるし……

夜は22時過ぎくらいになって、お腹がすきすぎて手が震えてきた…… もう無理だな、帰ろう……
水曜と、週末を乗り切れば、12月なのだが、12月から販売する商材の修正や変更が大量に来そうな予感……

負の遺産、EUC-JP

晴れ連休明け2日目。
やりたい仕事はあるのだけど、新人教育のために使用していて、直接手を付けることができない。 やってしまってもいいのだけど、これをやらせないと、経験にもならないし、他に振れる仕事も少ないので…… だが、その仕事のタスクは迫る。
やってもらう新人君は水曜まで休みなので、木曜出社。
まぁ他にも仕事があるので、そちらを処理しよう。

やらなければならない仕事とは別に、やっておきたい仕事がある。
古いシステムの文字コードの統一だ。 古いシステムはデータベースもファイルもEUC-JPで作成してあり、常に機能拡張を続ける中、ここ2年ほどに追加した者はUTF-8で追加してある。 データベースの文字コードがごちゃごちゃになってしまっていて、今はちゃんと文字コードを判別し、適切なものにエンコードしてから処理しているのでいいのだが、やはり全て統一させたい。 その方が楽だし。
ということで、半期の目標でそれを挙げている。
だが、システムの半分以上がEUC-JPなので、既存システムを動かしながら全てを入れかえるのは相当手間。
やり方としては、既存EUC-JPに追加・変更を加えた際は、別途用意したUTF-8の項目も同時に追加・変更を行う。 まずはその部分をしっかりと作りこむ。
次に表麺で、EUC-JPを参照しているところを、UTF-8参照に変更する。
その後、追加・変更処理の部分を、参照含め、UTF-8に統一する。

そうやって一つ一つ地道に入れ替えていくのが、止められないシステムでの定石だろうか。
とりあえず項目が多すぎるので、長い目で見て、ゆっくりと処理していこう。

入院前日

晴れいよいよ明日から入院。 入院前日だというけれど、まだ何も準備をしてないや。 まぁ一泊入院だし、特に必要なものはないかな。

今日は仕事のことで重大な決断をした日だった。 上司に退職する旨を正式に伝えた。
引き止められたり、今後の仕事のことを期待されたりしてすごい嬉しかったが、一度決断したことを簡単に撤回することはしたくないし、決意の上での決断なので……
夕方から結構ブルーになりながら仕事をしていた。 いざ辞めるってなると寂しいものだな…… 仕事が嫌いになったり、人間関係が問題で辞めるならそういうこともないだろうけれど、仕事も会社も人間も好きなのが辛い。 まぁそういうことを一歩一歩乗り越えて進んで行かなくては。

6年半ほど在籍しているけれど、中学高校の3年間とか、前職でも2年間しかいなかったので、一緒に時間を共有した仲間では最長かもしれない。
やっぱり悲しいね。

まぁまだ一か月働くのでよろしくお願いします。
そして、明日の入院に備えなくては。