give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

【書評】チェリー本の筆者が「かんたんRuby」を読んでみた

はじめに

すがわらまさのりさんが執筆された「かんたんRuby」というRubyの入門書があります。

僕も「プロを目指す人のためのRuby入門」(通称チェリー本)という本を執筆しているので、「かんたんRuby」の存在や内容はちょっと気になっていました。
発売からひと月ほど経っているのですが、僕が調べる限りネット上の書評やレビューがまだ少ないようです。
そこで、どんな本になっているのか知りたくて自分で買って読んでみました。

ちなみに僕が購入したのは技術評論社さんのサイトから購入できるEPUB/PDF版です。

このエントリでは「かんたんRuby」を読んでみた感想を書いていきます。

「かんたんRuby」の感想

非常にまじめで、きっちり書かれた本だなあと思いました。
Ruby初心者の方がRubyプログラミングを学ぶために必要な知識が、適切な粒度でバランス良く、なおかつ丁寧に説明されています。

そして、ポジション的には「プロを目指す人のためのRuby入門」よりも「たのしいRuby」の対抗馬になるのかな、という印象を受けました。

たのしいRuby 第5版

たのしいRuby 第5版

「かんたんRuby」も「たのしいRuby」も、「プログラミングは初めての人」でもウェルカムで、なおかつ文法的には一通り網羅している点が似ているように感じました。
初心者さんが書店で立ち読みすると、どっちを買えばいいのか結構迷うのではないでしょうか。
(ただし、どちらの本も「完全なプログラミング未経験者さん」にはちょっと難しい内容がところどころに含まれている気もします。)

さくっとRubyを学ぶにはちょうどいい「深さ」

前述のとおり、「かんたんRuby」ではRubyプログラミングに必要な文法やライブラリの使い方が一通り網羅されています。
それでいて、各トピックがそこまで深いところまで潜っていかないので、サクサクと新しい知識を取り入れることができると思います。

「かんたんRuby」に比べると、僕が書いた「プロを目指す人のためのRuby入門」は「プロの現場で必要となるちょっとマニアックな知識」にちょくちょく寄り道するため、やや重厚長大で最後まで読むのに時間がかかります。
なので、「そこまで時間をかけずにとりあえずRubyを一通り把握したい」という読者さんにとっては、「プロを目指す人のためのRuby入門」よりも「かんたんRuby」の方が向いている気がします。

こうすればもっとベターだったかも?と感じた点

その一方で、同じく技術書を1冊書いた人間から見て「ここはこうした方が良かったのでは?」と思った点もいくつかありました。
以下ではそうした点をいくつか挙げてみます。

対象読者を明記してほしかった

「かんたんRuby」には対象読者が明記されていません。
冒頭の「はじめに」でそれらしき内容がちらっと言及されていますが、これだけでは本を買おうとしている読者が「自分に向いている本なのか」を判断するのが少し難しいと思います。
実際、僕自身も本を読みながら「この部分のこの説明は、対象読者のレベル感的に適切なのかどうか」が判断しづらい(基準をどこに置けばいいのかわからない)と感じることがときどきありました。

クラスのコード例はもっと実用的なものにしてほしかった

本書のサンプルコードは全体的に違和感を感じなかったのですが、9章の「クラスの基本」に出てきたサンプルコードだけは「う〜ん・・・」と思ってしまいました。
たとえば、9章にはこんなサンプルコードが出てきます。

class ClassMethodSample01
  def ClassMethodSample01.method_a
    puts 'Class Method called.'
  end
end

ClassMethodSample01.method_a

僕に言わせると、こういったサンプルコードは文法を説明することしかできず、読み手は「これができると何が嬉しいのか」「どんなときに使えばいいのか」をイメージできません。
9章のサンプルコードはこんな調子で無味乾燥なサンプルコードが続くので、せっかく丁寧かつまじめに書かれた入門書なのに非常に惜しいなと思いました。

ちなみに僕は、技術記事を書くときに重視すべきことのひとつとして、技術の「おいしさ」を伝えることを挙げています。

わかりやすい技術記事を書くための心構えとテクニック / #railsdm 20171206 - Speaker Deck

プログラムを作って動かす楽しさも載っていればさらに良かった

「かんたんRuby」には文法を説明するためのサンプルコードは豊富に載っていますが、その一方で、学んだ知識を組み合わせて何かまとまったプログラムを作るセクションがありません。
プログラミングや新しい言語を学ぶときは、作って、動かして、「うわー、おもしろい!」と感じるところまでをセットにしてほしいなー、というのが個人的な思いです。
なので、この「かんたんRuby」でも何か動かして遊べるプログラムを作るセクションがあればもっと良かったのにな、と思いました。

まとめ

というわけで、このエントリでは「かんたんRuby」というRubyの入門書について書評を書いてみました。
最後はちょっと厳しい評価も書きましたが、これはあくまで僕個人の感想なので、人によってはあまり気にならない問題かもしれません。
ぜひ書店で手に取ってみて、ご自身の目で内容をチェックしてみてください!

かんたん Ruby (プログラミングの教科書)

かんたん Ruby (プログラミングの教科書)

いちおう自分の本も宣伝:「プロを目指す人のためのRuby入門」も好評発売中!

僕が執筆したRubyの入門書、「プロを目指す人のためのRuby入門」(通称チェリー本)も好評発売中です。
「かんたんRuby」と比較すると、自分では以下のような点が異なるんじゃないかと思っています。

  • ある程度プログラミング経験があることが前提
  • 仕事でがっつりRuby(特にRails)を使いたい人(そのために時間をかけてじっくり学びたい人)向け

そうそう、「かんたんRuby」でも「おわりに」のページで「プロを目指す人のためのRuby入門」を紹介してもらっていました。(すがわらさん、どうもありがとうございます!)

「プロを目指す人のためのRuby入門」の詳しい内容については、こちらのエントリをご覧ください。

「プロを目指す人のためのRuby入門」もぜひぜひ、よろしくお願いします😄

家族で5泊7日の初めてのハワイ旅行に行ってきました🌴

2018年7月19日から25日までの7日間、家族でハワイ旅行に行ってきました。

以前から「ハワイはいいよ」という噂はよく聞くものの、ハワイに行ったことのない僕は、何がそんなによいのかよくわかりませんでした。

が!

実際に行ってみると、本当に良かったです!!

「あー、もう一回行きたいね〜」と家族みんなで話しております。
というわけで、このエントリではハワイ旅行の感想や、これから旅行を計画している人の参考になりそうな情報をあれこれ書いていきます。

- もくじ -

滞在中にホテルで撮った写真

僕らはヒルトン ハワイアン ビレッジというホテルに宿泊していました。
このホテルにいるだけで、いろいろエンジョイできます。

f:id:JunichiIto:20180727073641j:plain
ワイキキビーチとダイアモンドヘッド(左手奥)です。

f:id:JunichiIto:20180727073723j:plain
ホテルにはラグーンと呼ばれる浅瀬もありました。

f:id:JunichiIto:20180727145618j:plain
このラグーンで泳いだり遊んだりすることもできます。

f:id:JunichiIto:20180727073859j:plain
プールもすごく綺麗です。

f:id:JunichiIto:20180727074124j:plain
レインボータワーと名付けられたこの棟の23階に泊まっていました

実際に行ってみたハワイの感想

ここからは僕が感じたハワイの感想(日本とハワイの違い等)をあれこれ書いていきます。

気候について
  • 日本よりもずっと南、緯度的には台湾と同じぐらいの場所にあるのに、日本よりも涼しくて過ごしやすいことにビックリ!(ハワイの最高気温は30度前後)
  • 蚊が飛んでないので快適。
  • セミも鳴いてないので、耳から入ってくる暑苦しさもない。

f:id:JunichiIto:20180726133733p:plain
日本より南にあるのに、なぜか日本より涼しいハワイ(本当に不思議)。

食事について
  • アメリカの料理は雑な印象があったので、正直言って食事については期待していなかったが、ガイドブックに載っていたレストランやカフェはどこも予想以上に美味しかった!いい意味で裏切られた!
  • 値段は日本の1.5倍〜2倍ぐらいするが、そのぶん量も同じく1.5倍〜2倍ぐらいあるし、味付けや調理も美味しいので満足感は高い。
  • 特にハンバーガーの美味しさが際立っていた。日本では「ハンバーガー = ファストフード = 味もそこそこ」なイメージがあるが、ハワイのハンバーガーは肉やソースが格段に美味しくて、さすが本場だなと思った。
  • 一番印象に残っているのは「チーズケーキファクトリー」というレストラン(スイーツ店みたいな名前だけどレストラン)。たくさんメニューがあってどれも美味しいのでオススメ!
  • アメリカに比べると日本の外食のメリットは安さだけで、味に関しては中途半端な感があるなと思った。
  • 公共のスペースは禁煙なので、食事中にタバコの煙を心配する必要がない点もポイントが高い。

f:id:JunichiIto:20180727080451j:plain
ハワイの料理はどれも予想以上に美味しかった!

ショッピングについて
  • ハワイは南のリゾート地でありながら、アメリカの都市の一部でもある。なので、「アメリカの豊かさやスケールの大きさ」に触れることもできる。
  • 特にホノルルはアラモアナセンターやロイヤルハワイアンセンターなど、大きなショッピングモールがいくつもあるので、いろんな店でショッピングを楽しむことができる(主に妻が)。
  • ハワイで売っているものはちょっとした小物や日用品でもオシャレでかわいい(妻いわく)。
  • スーパーマーケットにも新鮮で様々な種類の食材が並んでいて、料理好きにはたまらない環境になっている(妻いわく)。

f:id:JunichiIto:20180727122150j:plain
f:id:JunichiIto:20180727122206j:plain
f:id:JunichiIto:20180727145900j:plain

物価について
  • 食事と同様、日本に比べると物価は全体的に高め。「これいいな〜」と思って値札を見ると「高っ!」と口走ってしまうことがしばしば。
  • ただ、この点についてはアメリカの物価が高いというよりも、日本のデフレが進んで相対的に貧しくなったせいなのではないか?という気がしなくもない。
現地の人々の雰囲気や接客について
  • みんな明るくてフレンドリー。テレビや映画でよく見る「陽気なアメリカ人」のイメージ通り。
  • エレベーターの中で突然話しかけられることもしばしば。明らかに初対面のアメリカ人同士が仲良く話始める光景もよく見かけた。
  • フードコートやコンビニの店員は無愛想な人もいたが、ホテルやレストランのスタッフはみんなノリノリで仕事を楽しんでる印象を受けた。
  • アメリカの接客と比較すると、日本は悪い意味で「平均的で凡庸」な印象を受ける。無愛想な店員はいないが、一方で「私、仕事を楽しんでます!」という感情を全面に押し出す人も見かけない。
英語と日本語について
  • 日本人の観光客が多い&日系人が多い(聞くところによると、ハワイの人口の4割ぐらいが日系人なんだとか)せいか、日本語の対応率は結構高い。
  • レストランに日本語のメニューがあったり、「ご注文」「お支払い」のような日本語の表示が店内に載っていることもしばしば。
  • 観光客相手の仕事をしている人は片言の日本語をしゃべってきたりもする。
  • とはいえ、日本語が通じるのはハワイ全体からすればごく一部。公用語が英語であることは間違いない。なので、英語ができればできるほどハワイ旅行が楽しめるはず。
  • 僕はまあまあ英語は得意なので、自分が言いたいことはだいたい英語で表現できた。ただ、聞き取りはかなり難しい。一発で聞き取れた内容はたぶん半分以下。会話の流れからつい、適当に"yes"と答えてしまって訳の分からない結果になったことも2-3回あった(反省・・・😓)。
ハワイの風景や街並みについて
  • 冒頭の写真で見てもらったとおり、海と空がすごく綺麗!これだけ人がいるのに、海が汚れていないのは素晴らしい。今回は一番メジャーなワイキキビーチしか行かなかったが、人が少ないビーチはもっと綺麗らしい。
  • 世界東京化計画」などで前からわかっていたけど、看板やネオンサインが日本に比べてずっと少ない。シンプルでスッキリして見えるので、僕は看板やネオンサインが少ない街並みの方が好き。というか、なんで日本人は「これでもか」というぐらいに看板やネオンサインを掲げまくるの??

f:id:JunichiIto:20180727075408g:plain
参考:「世界東京化計画」に出ていた東京化されたニューヨークの街並み(画像の引用元はこちら

f:id:JunichiIto:20180727075840j:plain:w580
ワイキキ中心部もやはり看板やネオンサインがほとんどない。シンプル!

治安について
  • 滞在中は特に怖い思いをしたことはない。ワイキキ中心部やホテルの周辺は人通りが多いので、夜の買い物でも不安を感じることはなかった。
  • ただし、低価格スーパーのウォルマートに行ったときは、店の周りに現地の低所得層っぽい人たち(?)がちらほらいて、若干の不安を感じた(単なる偏見だったら申し訳ない🙏)。

実用的なノウハウやTips等々

ここからは今後ハワイ旅行を検討している方に役立ちそうな、実用的なノウハウやTipsを書いていきます。

現金とカードの使い分けやチップについて
  • 現地の買い物はほぼクレジットカードで事足りる。
  • 現金が必要になるのはホテルのクリーニングスタッフに払う(=外出時に部屋に置いておく)チップぐらい。
  • 飲食店でのチップもカード払いできる(=精算時にチップのパーセンテージを選択する)ので、現金で渡す必要がない。
  • 旅行中にカードの上限額に達して支払いができなくなると結構焦ると思うので、渡航前に上限額を増やしておく方がよい。また、渡航前にカードで大きな買い物をすると上限額を増やした意味がなくなるので要注意。
  • とりあえず日本で3万円ほどドルに両替してからハワイに行ったが、3万円でも多いぐらいだった。
  • 海外は何かに付けてチップを払う印象があったが、実際にチップを払ったのはホテルのクリーニングスタッフと飲食店のウェイター/ウェイトレスぐらい。予想していたよりもチップを払う機会は少なかった(チップを払うべきシチュエーションに僕が気づいていないだけかもしれないが)。
  • ちなみに、レストランやカフェではウェイター/ウェイトレスに直接会計を依頼するスタイルになっている。日本の飲食店のように店の出入口に会計用のレジがあるわけではない。
  • チップの文化があるせいか、飲食店ではテーブルごとに担当のウェイター/ウェイトレスが決まっている印象だった。「あなたたちの注文やリクエストは全部私が担当します。がんばるからチップをよろしくね」みたいな感じ(というシステムに最初気づかなくて、いろいろ戸惑った)。
現地の交通手段について
  • JTBのツアーパックに付いていた「オリオリウォーカー」という無料周回バスが非常に便利で、ワイキキ周辺の移動はほぼこれを使っていた。あとは徒歩。
  • 今回の旅行では現地の有料バスやタクシーは使わなかった。「タクシーよりもUberの方がいろいろ便利で安心」と聞いていたので、日本でUberにアカウント登録して行ったが、結局使わずじまいだった。
  • 現地でのレンタカードライブ(右側通行!)にもチャレンジしたかったので国際免許を取って行ったが、今回はまとまった時間が取れなくて断念。次回はチャレンジしてみたい。
  • ちなみに国際免許は免許更新センターに必要書類を持っていって2350円を払うだけで取得できる。何か特別な試験があるのかと思ってたのに簡単すぎて拍子抜けした。
ネット環境について
  • とりあえずポケットWifiをレンタルして持っていった。
  • ポケットWifiはいっぱい種類がありすぎてどれを選んでいいか分からなかったので、会社のメンバーに相談した結果、グローバルWifiか、イモトのWifiのどちらかを選ぶことにした。
  • 最初はグローバルWifiにする予定だったが、イモトのWifiの方が安かったので、イモトのWifiを選んだ。
  • 会社のメンバーからは他にも「アメリカだったらフリーWifiが充実してるから手ぶらでも大丈夫なのでは?」という意見があったが、外出先で実際に施設のフリーWifiに接続しようとするとログイン画面に飛ばされて「え?パスワードは何?」となることが多かった。なので、ポケットWifiは持っていって正解だった。
  • とはいえ、イモトのWifiはそこまで速いわけではない。「使えなくはないが、もうちょっと速い方が快適」というレベル。
  • とりあえず上限が500MB/日のプランを申し込んだが、日本にいる感覚で僕と妻と息子の3人が使い続けると上限オーバーしそうでちょっと危なかった。余裕を持たせるなら1GB/日の方が良かったかも。
  • 他にもSIMフリーにして現地のSIMを入れたり、携帯キャリアの海外データ定額プランを利用したりする方法もあるみたいだが、試していないので良し悪しの比較はできない。
時差ぼけについて
  • 日本とハワイの時差は19時間。日本時間に5時間足して日付を1日前に戻すと分かりやすい。たとえば「日本が朝の8時だったらハワイは前日の13時」みたいな感じ。
  • 僕は普段、規則正しい生活をしてる人なので時差ぼけで体調を崩すんじゃないかと心配していたが、意外と大丈夫だった(ハワイ滞在中と帰国後のどちらも)。
  • ただし、ハワイ時間の夜12時ぐらいに突然目が覚めて1〜2時間眠れない日が続いた(かといって、日中に眠くなるわけではない)。
その他
  • 基本中の基本だけど、ハワイ最大の都市、ホノルルがある島は「オアフ島」。間違って「ハワイ島」のガイドブックを買ってきたりすると使い物にならないので注意。
  • ローソンのような日本のコンビニもたまにあるが、ハワイではABCストアというコンビニが圧倒的に多い。そして何でも揃ってるのでめっちゃ便利。毎日何度も利用した。
  • コンセントの形状は日本と同じ。電圧は110Vだが、iPhoneやMacのACアダプタは100Vから240Vまで対応しているので電圧変換器は不要。実際、日本から持っていた電化製品はiPhoneとMacだけだったので、電圧変換器はいらなかった。
  • 重さの単位が"lb"や"oz"と書かれていて、何グラムなのかよくわからない。"lb"は「ポンド」で約0.45キログラム。"oz"は「オンス」で約28.3グラム。ちなみに16オンスで1ポンドらしい。ややこしすぎる。日本人には暗算不能。
  • アメリカ入国時&日本帰国時の審査や税関・検疫はいろいろ身構えていたものの、意外とさらっと終わった。とはいえ、食品(肉類や果物、etc)の持ち込み制限はどちらも結構厳しいので、事前にちゃんとチェックしておいた方が良いと思う(制限されている食品が見つかるとたぶん没収される)。
  • ハワイ滞在中はほとんど日本のネット(Twitter、はてなブックマーク、Yahoo!ニュース等)を見なかった。たまに開いてみたものの、暗いニュースやネガティブな話題ばかりが目に飛び込んで来たので、すぐにページを閉じた。

「ハワイって楽しそうですね。でも、お高いんでしょう?」

ええ、決して安いとは言えません(苦笑)。
旅行会社に払ったのが100万ちょっとで(=主に家族4人の飛行機代とホテル代)、現地で使った食費やおみやげ代、細々した買い物等が20万弱、といった感じです。

とはいえ、すごく楽しくて良い経験がたくさんできたので、お金を払っただけの価値はあったなーと思います。
家族みんなで「また行きたいねー」と話しています。

ちなみに、ご存じだと思いますが、旅行会社に払う費用は出発する時期によって大きく上下します。
僕らは夏休み直前のやや価格が安い時期に出発しました。
また、僕らが申し込んだのは4か月前ぐらいで、結構早めに予約したので結構大きな割引が受けられたりしました。

まとめ

というわけで、今回は初めてのハワイ旅行についてあれこれ書いてみました。

異文化体験というのは非常に面白いですね。
これまでなんとなく「日本はいいところ」「日本のご飯はどこでも美味しい」みたいに感じていたところがありましたが、今回の旅行で「いやいや、別に日本だけが特別っていうわけでもないんやで?」ということを身をもって体験できた気がします。

また、仕事に対する前向きさや積極性なんかは日本人の方が見習うべきところなんじゃないかなーと思いました。
楽しそうにハキハキと接客される方が、サービスを受ける側も楽しい気持ちになります。

ハワイでやり残したことはまだまだたくさんあるので、何年かしたらまた行ってみたいと思います。
とても面白いところなので、みなさんもぜひ!

f:id:JunichiIto:20180727074053j:plain

参考にしたガイドブック等

美味しいものを食べたり、買い物をしたりする目的で妻が買ってきたガイドブックです。
ホテルの中で「明日はどこ食べに行こうかな〜」と調べ物をするときに使ったりしていました。

ハワイ完全版2019 (JTBのムック)

ハワイ完全版2019 (JTBのムック)

ハワイ 朝から夜までおいしいもの250 (JTBのムック)

ハワイ 朝から夜までおいしいもの250 (JTBのムック)

&TRAVEL ハワイ 2019【ハンディ版】 (アサヒオリジナル)

&TRAVEL ハワイ 2019【ハンディ版】 (アサヒオリジナル)

自分のブログ(独自ドメインのはてなブログ)をHTTPS配信に切り替えました

はじめに

このブログ(give IT a try)をHTTPSで配信できるようにしました。
ブラウザのアドレスバーを見ると、鍵マーク🔒が見えているはずです。

f:id:JunichiIto:20180716082031p:plain:w400
f:id:JunichiIto:20180716082023j:plain:w400

2018年6月13日に、はてなブログが独自ドメインのHTTPS配信に対応したので(参考)、「そろそろこのブログもHTTPS化したいな〜」と思っていたのですが、ようやく対応できました。

今回のエントリでは僕がやったHTTPS化の手順をまとめてみます。

Padlock

大まかな流れ

HTTPS配信するまでの大まかな流れはこんな感じです。

  1. 過去のエントリに含まれる混在コンテンツ(mixed content)を洗い出す
  2. タイトルや内容は変えずに、各エントリの「更新」だけを実行する
  3. まだ残っている混在コンテンツを洗い出す
  4. 手作業で残った混在コンテンツ問題を解消する
  5. ヘッダやサイドバーなど、本文以外の混在コンテンツをなくす
  6. テスト用のブログを作って、問題なくHTTPS配信できることを確認する
  7. HTTPS配信に切り替える
  8. 動作確認と見つかった問題の修正

ちなみに、僕のブログは独自ドメインで運用していますが、hateblo.jpやhatenablog.comなど、はてなのドメインを使っている場合もステップ6以外は同じになるはずです。

各手順についてはそれぞれ以下で詳しく説明していきます。

1. 過去のエントリに含まれる混在コンテンツ(mixed content)を洗い出す

はてなブログをHTTPS配信する手順や注意点は以下のページにまとめられています。

help.hatenablog.com

この手順の中で一番面倒なのが、混在コンテンツの確認と解消です。

混在コンテンツとは簡単にいうと、HTTPS配信してるページ内で、HTTPで読み込もうとしている画像やiframeといったコンテンツのことです。
混在コンテンツが含まれると、ブラウザがそのコンテンツの読み込みを拒否したり、警告を出したりします。
なので、何らかの方法で混在コンテンツをHTTPSで読み込むように過去の記事を修正する必要があります。

・・・と、理屈と解決策はわかるのですが、問題はそれをどうやって見つけ、どうやって修正するか、です。
これまでに書いてきたブログエントリを数えたところ、僕は733件のブログを書いてきました。
これをいちいち手作業と目視で確認&修正していくのは、あまりにも非現実的です。

とりあえず、修正をどうするかはおいといて、いったい自分のブログにどれくらい混在コンテンツが含まれるのかを把握しようと考えました。

混在コンテンツを洗い出すスクリプトを作った

僕はプログラマなので、手作業でやるよりも何でも自動化する方が好きです。
というわけでまず、世の中に混在コンテンツを洗い出してくれるプログラムがないか調査してみました。

調べてみるといくつかそれっぽいツールは見つけたのですが、どうも自分のニーズと微妙に合致しません。
なので、自分でスクリプトを書くことにしました。

それがこちらです。

github.com

といっても、これはあくまで自分用に作った、使い捨ての雑なRubyスクリプトです。
いちおう使い方はREADMEファイルに書いていますが、問題が起きても責任は取れません。
もし利用する場合は自己責任でお願いします。

混在コンテンツが含まれるエントリは733件中、約400件!

さて、このスクリプトを使って混在コンテンツを洗い出したところ、全733件中、約400件のエントリで混在コンテンツが見つかりました。ひえ〜、半分以上・・・😂

f:id:JunichiIto:20180716054204p:plain

とりあえず、この一覧を見ながら「傾向と対策」を考えました。

2. タイトルや内容は変えずに、各エントリの「更新」だけを実行する

混在コンテンツの一覧を見ていると、大半が以下のようなコンテンツでした。

  • ブログに貼り付けたオリジナルの画像
  • Amazonの商品リンクに含まれる画像
  • 下の画像のような埋め込み(embed)タイプの過去記事のリンク(iframeが使われている)

f:id:JunichiIto:20180716054616p:plain:w400

ですが、こうしたコンテンツは最近のエントリでは混在コンテンツになっていません。
どうも2017年6月頃からはてなブログの仕様が変わったらしく、最近投稿したエントリでは全部自動的にHTTPS扱いになるみたいです。

過去記事の混在コンテンツも更新を実行すればHTTPSに切り替わる

この問題については以下のページで解決策が載っています。

編集画面を「はてな記法モード」や「Markdownモード」でご利用で、[f:id:sample:20180308000000j:plain]というような記載で画像を貼り付けている方は、記事を再度「更新する」ことで解消します。
 

【よくある質問】HTTPS配信時の混在コンテンツ(Mixed Content)対応について - はてなブログ ヘルプ

実際に手元で試したところ、画像だけでなく、Amazonの商品リンクや過去記事のリンクも「更新する」を実行すれば、HTTPSに切り替わることを確認しました。

過去記事に対して無変更で「更新」だけを実行するスクリプトを作った

さて、「更新する」を実行すれば修正可能であることがわかったものの、問題はそれを400件の過去記事にどうやって適用するかです。

400件をプチプチと手作業で更新していく?
いや、無理でしょう!!

というわけで、今回も自分でスクリプトを作ることにしました。
前述のGitHubページの中にあるupdate_allというタスクがそれです。
このタスクは、指定されたページのタイトルや本文を変更することなく、純粋に「記事の更新」だけを実行してくれます。

念のため、過去記事のバックアップを取ってから、このスクリプトを使って混在コンテンツが含まれる400件のエントリを更新していきました。

3. まだ残っている混在コンテンツを洗い出す

さあ、これで大半の混在コンテンツ問題が解消されたはず!!・・・と思ったのですが、前述のスクリプトを使って再度確認したところ、まだ69件のエントリで混在コンテンツが残っていることがわかりました💧

f:id:JunichiIto:20180716070213p:plain

4. 手作業で残った混在コンテンツ問題を解消する

記事の更新だけでは解消されなかった混在コンテンツは、だいたい以下のようなケースです。

  • HTMLタグを使って埋め込んだSlideShareのスライドやFlickrの画像
  • はてなダイアリー時代に、はてな記法で埋め込んだYouTubeの動画やTwitterのツイート

これらはどうしようもないので、手作業で修正していきます。
僕の場合は69件のエントリを修正するのに、約2時間かかりました。

もっと大量に残っている人は、これまた専用の自動修正スクリプトを作った方がいいかもしれません。

5. ヘッダやサイドバーなど、本文以外の混在コンテンツをなくす

ここまで修正してきたのは記事本文の混在コンテンツです。
ヘッダやサイドバーなど、ブログのデザインに関連する部分にも混在コンテンツが残っているかもしれないので、それも確認します。

これはサイト共通の設定なので手作業や目視で確認してもそこまで手間ではないと思います。
ですが、せっかくなので僕は本文用に作った確認スクリプトを拡張して、機械的にチェックできるようにしました。

すると、サイドバーで使用している一部のJavaScriptやロゴ画像に混在コンテンツが見つかりました。
見つかった混在コンテンツについては、手作業で修正していきました。

修正が終わったら再度確認スクリプトを流して、全ページにおいて混在コンテンツがなくなったことを確認します。

6. テスト用のブログを作って、問題なくHTTPS配信できることを確認する

さて、これでほぼ準備は整ったのですが、万一予期しない問題(自分のブログに誰もアクセスできなくなる等)が起きると怖いので、テスト用のはてなブログを独自ドメインで立ち上げ、問題なくHTTPS配信できることを確認しました。

テスト用ブログで確認する限り、独自ドメインを使っても特に問題なくHTTPS配信できました。

ちなみに、新しくはてなブログを立ち上げると最初からHTTPS配信になるため、テスト用ブログではHTTPとHTTPSの比較はできません。

7. HTTPS配信に切り替える

さあ、準備が整いました。いよいよHTTPS配信に切り替えます!

HTTPS配信の切り替えは、「設定画面 > 詳細設定 > HTTPS配信」で設定を切り替えるだけです(参考)。

一度HTTPS配信に変更するとHTTPには戻せないため、ちょっとドキドキしながら切り替えを実行しました!!

さあ、どうかな?ちゃんとHTTPSでアクセスできるかな??

・・・あれ、エラーが出てる(ガーン😱)。

と思ったのですが、実はヘルプページに「切り替え直後には一時的なエラーが起きる場合がある」と書いてあります。

独自ドメインで運用しているブログをHTTPS配信に変更した後、ごく一部のブログで「この接続ではプライバシーが保護されません」といったエラーが表示され、アクセスできないことがあります。


その場合は、設定画面から、HTTPS配信の状況をご確認ください。無効(移行中)と表示されている場合は、数分程度でエラーが解消されます。
 

HTTPSで配信する - はてなブログ ヘルプ

このヘルプに書いてあるとおり、数十秒待ってから再読み込みすると、無事にHTTPSでアクセスできるようになりました。

ちょっとビックリしましたが、これでいったんめでたしめでたしです。

8. 動作確認と見つかった問題の修正

さて、混在コンテンツ問題が解消し、全く何も問題がない状態になっていれば、Chromeのアドレスバーにグリーンの鍵マークが出ているはずです。
ですが、最初に開いたときはグリーンになっていませんでした(あれあれ?)。

原因を調べてみると、サイドバーで読み込んでいた一部のJavaScriptが内部でHTTPの画像やCSSを読み込むようになっており、混在コンテンツ問題が完全に解決していませんでした。

そこでHTTPではなく、HTTPSで画像やCSSを読み込むようにJavaScriptを修正したところ、混在コンテンツ問題が解消し、めでたくグリーンの鍵マークが表示されました💚

f:id:JunichiIto:20180716051026p:plain:w400

また、ヘルプページにも書いてあるとおり、過去のエントリに付いていた、はてなブックマークやはてなスターもちゃんと移行されていました。
ヘルプには「移行に時間がかかる場合がある」と書いてありましたが、上の混在コンテンツ問題を解決した頃にははてなブックマークやはてなスターの移行は全部完了していました。

これで移行作業は一通り完了です。
最後にTwitterでHTTPSに移行したことを完了しておきました。


トータルの作業時間

移行にかかった作業時間は正確に記録したわけではありませんが、たぶん全部で10時間ぐらいだと思います。
そのうちの半分以上はスクリプトを作っていた時間です。

10時間というとかなりの重労働っぽく見えるかもしれませんが、混在コンテンツの対応はもっと大変なのかと思っていたので、予想よりも早く終わりました。
(でもスクリプトなしで全部手作業でやってたら、本当に大変だったでしょうね・・・)

まとめ

というわけで、このエントリでは自分のブログをHTTPS配信する一連の作業を紹介してみました。

今回は自分でスクリプトを作成しましたが、混在コンテンツの洗い出しや、混在コンテンツ問題を解消するための機械的な更新作業は多くの人が必要とする機能だと思います。
なので、こうした機能はできればはてなブログの公式ツールとして事前に用意してもらえると嬉しいなあと思います。

とはいえ、技術的には独自ドメインのHTTPS配信に対応するだけでも大変だったと思います。
はてなブログの中のみなさんはどうもお疲れ様でした。

まだご自分のはてなブログをHTTPS配信していない人はこのエントリを参考にして、HTTPS配信にチャレンジしてみてください!

謝辞

このツール自体は利用していませんが、「混在コンテンツ洗い出しスクリプト」を作成する際に、「--fix-mixed-contentの動作」の項で説明されている内容を参考にさせてもらいました。
smdn.jp

「無変更で過去記事の更新だけを実行するスクリプト」では、こちらのhatenablog gemを利用させてもらいました。
Rubyから手軽にはてなブログAPIを操作できたので非常に助かりました。
github.com