KAYAC engineers' blogのリニューアルですよ、皆さんっ!!!!1

いつもKAYAC engineers' blogをご愛読いただき、誠にありがとうございます。

ブログ初登場、社内インフラや管理系を担当しているやましんこと山田でございます。

この度は皆様のご期待に応えるため、本ブログをリニューアルいたしました!!!(パチパチパチパチ)

長らくご愛好いただいておりました本ブログも時代の移り変わりとともに変化し、新しいカタチとするべく、ドメインを一新し techblog.kayac.comとしてはてなブログで新たな出発をすることにしました!

こうした貴重なご意見をいただけるのは本当にありがたいことであるとともに、今まで以上によいものを提供していくために日々精進してまいりますので、これからもご声援のほどよろしくお願いいたします。

今回はリニューアル第1弾の記事として、今まで運用していたブログからはてなブログに移行したあれこれを書いてみたいと思います。少し長くなりますがお付き合いいただけますと幸いです。

メンバー

今回のブログ移行にあたって、一大プロジェクト(?)として数名で進めてきました。ここでは主な担当者を紹介したいと思います。

  • デニール (ブログ移行プロジェクトを進めてくれた立役者、最近はデニッシュって呼ばれてる)
  • fujiwaraさん (最後の砦としていろいろチェックしていただきました)
  • れもんちゃん (全体的な監修と渾身のヘッダ画像を作っていただきました)
  • やましん (前ブログからの移行作業全般)

ここには書ききれませんが、他にも各方面で社員に協力してもらいながらみんなで新しいブログが用意でき、私自身とてもいいものになったなと感じております。

移行においての要件

KAYAC engineers' blogは今までMovableTypeで運用しており、そこから記事をエクスポートして別のブログ媒体に移行するというのがミッションとしてありました。

そこで、移行においての要件を整理してブログ媒体を選定するところから始まりました。

  • 自社運用はやめてブログサービスを利用する(管理とメンテのコストを減らしたい)
  • ドメインおよびパーマリンクは維持したまま移行したい(結果としては維持できなかった、後述のパーマリンクの項を参照)
  • MovableTypeの記事がインポートできる
  • 記事の書きやすさ(使いたくなるサービスじゃないと記事を書くモチベーションが上がらない)
  • 複数ブログをまとめて管理できるか(KAYAC engineers' blog以外のカヤックのブログも今後移行予定)
  • アカウント管理

調べてみるとブログを扱っているサービスはかなりの数がありましたが、要件と照らし合わせるといくつかに絞られました。

はてなブログは個人的に使っているエンジニアも多いことから、候補の1つではあったものの(要件整理のタイミングでは)パーマリンクが維持できない仕様であったため、どのブログにするかでかなり悩みました。

しかしながら、我々の願いが通じたのか、記事を配信するディレクトリを変更する機能が2016年9月にリリースされ、候補ははてなブログに絞られました。

移行の検証

移行先のブログを絞ったところで、次は要件を満たせるのかを検証しました。なお今回は必要な機能がいくつかあったため、はてなブログProを契約して検証を進めました。

複数ブログの管理

1つのアカウントで複数のブログを管理できるという仕様があるようなので、こちらは問題なさそうです。 会社で運用するブログなので管理用アカウントが別れていないと困るようなこともないので条件クリアです。

アカウント管理

アカウント管理は

  • ロールが明確に分かれている
  • 複数ブログにした時にブログ毎にアカウント管理ができること

が要件でしたが、こちらもクリアしており特に問題ではなかったです。

ただ、他のブログやサービスでも同じことが言えると思いますが、organizationとしてアカウントを発行・管理できるものがそこまでないので、どのアカウントが誰なのかを別で管理する必要があるのはやむなしか...というところではあると思います。

GoogleAnalytics

こちらでGoogleAnalyticsのコードを発行して管理画面から設定してあげればよいのでお手軽でよいです。

予約投稿

今となっては必須機能である予約投稿も用意されているのでクリア。アドベントカレンダー記事の公開など大変重宝しますね。

独自ドメイン

はてなブログProであれば独自ドメインが設定できるので条件はクリア。

独自ドメインのテストをしようとサブドメインに「hatena」という文字列を入れていたのですが、それだと設定できなかったので意外なところでハマってしまいました(検証のタイミングでは新しいサブドメインが決まっていなかったので、このようなハマり方をしてしまいました)。

インポート機能

MovableTypeでエクスポートした記事をインポートできるので問題なし。

ブログ内に置いていた画像ファイルは相対パスで記事内に埋め込まれていたが、そのままだと画像ファイルが取り込まれないためimgタグのsrcをURLに置き換えた上でインポートするとはてなブログの画像ファイル移行機能を使って画像ファイルを移行できました。

画像ファイル

インポートした記事はブログに掲載していた画像を移行する機能を利用すると画像ファイルを元ブログから収集してはてなフォトライフに取り込んでくれます。

インポート機能のところでも書きましたが、相対パスだと画像ファイルが取り込まれなかったので、URLに置換してからインポート作業を行うのがよいです。

タグ

MovableTypeでも使用していた記事のタグはインポート後も引き継がれることがわかったのでそのまま継続して使用することとしました。

パーマリンク

ブログの移行で一番ネックになっていたのがパーマリンクでした。ここが引き継げないと今までの記事のURLが維持できず、

  • はてブが維持できない
  • 記事を移行してもリダイレクトが別途必要になる

という別の問題が出てくるからです。

しかしながら冒頭でも書いたとおり、記事を配信するディレクトリを変更する機能がリリースされたということで、移行先ははてなブログで確定しました。

このときまでは希望に満ち溢れていました.........

さっそく検証に入ったのですが、あることに気づきました。MovableTypeはパーマリンクの構成で各記事が

http://[domain]/archive/[post].html

となっており、記事を配信するディレクトリを変更する機能の注記をみると

※ディレクトリとして、はてなブログで使用しているaboutやarchiveなどを設定することはできません

となっており、パーマリンクを維持したままはてなブログに移行することができず、ここでドメインを維持することを断念しました...(はてブの維持も諦めました...)

リダイレクト

パーマリンクが維持できないということで、以下の方針で移行することにしました。

  • MovableTypeの記事ははてなブログに全て移行
  • 移行した記事にリダイレクトを掛ける
  • MovableTypeのブログは閉鎖

リダイレクトはAWS S3のRedirection Rulesでリダイレクトをするようにしました。

<RoutingRules>
    <RoutingRule>
        <Condition>
            <KeyPrefixEquals>archive/</KeyPrefixEquals>
        </Condition>
        <Redirect>
            <HostName>techblog.kayac.com</HostName>
            <ReplaceKeyPrefixWith/>
        </Redirect>
    </RoutingRule>
    <RoutingRule>
        <Condition>
            <KeyPrefixEquals>tag/</KeyPrefixEquals>
        </Condition>
        <Redirect>
            <HostName>techblog.kayac.com</HostName>
            <ReplaceKeyPrefixWith>archive/category/</ReplaceKeyPrefixWith>
        </Redirect>
    </RoutingRule>
    <RoutingRule>
        <Redirect>
            <HostName>techblog.kayac.com</HostName>
            <ReplaceKeyPrefixWith/>
        </Redirect>
    </RoutingRule>
</RoutingRules>

対象は各記事とタグとしました。しかしここで各記事のリダイレクトの検証をしている時にあることに気づいたのです。

「MovableTypeの記事に.htmlついてるけど、はてなブログでインポートした記事には.htmlが付かない...?」

そしてS3のRedirection Rulesではsuffixをどうにかできる手立てがなさそう、ということでここでもまたアイディアが出ずに深刻化していると

f:id:jigyakkuma:20161031144002p:plain

ということで、インポートする記事ファイルのBASENAMEに.htmlを付けることで事なきを得ました。相談したらシュッとアイディアが出てくるエンジニアに囲まれて、こういう時に幸せを感じますね。

振り返り

移行においての懸念事項や苦悩についてを書き綴ってみましたが、いかがでしたでしょうか。

会社運用のブログということもあり、移行には入念な検証や準備を行ってきました。振り返ってみると多岐に渡って検証してたなーというのと、パーマリンクの件で検証を一時中断していた経緯もあるので期間としては割と長く、やっとリニューアルできたということで一段落できました。

また今回はMovableTypeからはてなブログへの移行というケースでどういったところがポイントになったのかが少しでも参考になったのであれば幸いです。

最後に

ヘッダ画像でうっすらと写っているのはカヤックのエンジニアなのですが、誰なのかお分かりになりますでしょうか?

これがわかる人はかなりのKAYAC通ですね!

答えがわかる人もわからない人も一緒にわいわいしていただけるエンジニアを絶賛募集中です!

気軽にオフィスに来ていただいて話をするだけでもOKですのでお待ちしております!!