はてなブログからWordPressに移行した

はてなダイアリーでブログを始めて(2005年11月が最初の記事なので14年前)、ずっと不満なく使っていたけれど、はてなの都合ではてなブログに移行しなければならなくなった。はてなブログもよくできていると思うけれどサードパーティCookie問題でログイン維持できないとかpro版高いとかどうも細かい不満があったのでWordPressに移行してしまうことにした。

はてなブログからの移行

はてなブログからはMovable Type形式のデータをエクスポートできるので、それをWordPressにインポート。画像は一部を除いてフォト蔵だとかはてなフォトライフだとか外部サイトの参照がほとんどなので移行作業はなし。ファイルがあったら面倒だろうなと思う。

はてなブログからのリダイレクトは無理やりJSで。元のURLから移行後のURLを組み立てられるようなパーマリンク形式を選択した。はてなブログは<head>内に自由な<script>を入れられるようなので活用した。これできるのはすごい親切だなと思った。

WordPressの構築

仕事でもWordPressは使うことがあるので大体コツはわかっていて、とにかく決して改造しないこと。本体もプラグインもテーマもボタン押してアップデートできる状態を維持することが大切。

プラグイン

インストールしたプラグイン。

  • All In One SEO Pack
  • Head and Footer Scripts Inserter
  • Sassy Social Share
  • Wordfence Security
  • WP Fastest Cache

個別の需要がある場合はその限りではないけれど、安定して長く使えるブログにしたいので、メジャーである / WordPressのアップデートにすぐ追従している / プラグイン以外で解決しにくい、という基準で選定。

Google Analytics / Google Adsenseのタグやコードのシンタックスハイライト(highlight.js)は Head and Footer Scripts Inserter を使ってヘッダとフッタにコード入れるだけにした。タグを入れたら解決するレベルのものはプラグインに頼らない。

Wordfence Security で2FAを設定しつつログイン試行回数の制限を設定。WP Fastest CacheでHTMLキャッシュを生成するように。

あとはあまり変わったことはしていない。テーマも若干上書きCSSを書いたけど、ほとんどそのまま。ただ気に入るテーマを探すのにすごい時間がかかった。これに一番時間使ったかも。普通にきれいなテーマがあまりない。

まとめ

移行してからほどなくして攻撃リクエストが来るようになった。量は多くないけれど本当に感心する。こんな特段PVがあるわけでもないブログによくも早々にと思う。WordPressを攻撃したくてたまらないbotたちを実感する。人間も歓迎しているので気が向いたら読みに来てください。コメントはスパム対策どうしようというのがあってひとまず閉鎖中。

DEATH STRANDINGをクリアした感想

DEATH STRANDINGをクリアした。The Witcher 3以来の心に残るゲームだったので感想を書く。

【PS4】DEATH STRANDING

【PS4】DEATH STRANDING

ゲームプレイを始めた当初はクリアまで到達しなさそうに思えた。元々告知されていた有名俳優が全て何かしらの形で早々に登場してしまい世界観の狭さを感じてしまったのと、ゲームプレイのコアが「物を配達すること」の繰り返しだと感じたから。僕はいわゆる「お使いクエスト」がとても嫌いなのでやや失望した。

小島監督の作品でなければ早々に辞めていたかもしれないけれど、そんな単調で面白くないゲームであるはずがないと思ってプレイを進めた。そしたら全然違った。

繋がり

最初にこのゲームの見え方が変わったのは建設ができるようになったとき。オンラインの繋がりを明確に感じるようになった。小島監督自身が #デスストでつながれハッシュタグをつけてよくツイートしているけれど、まさに繋がった。他人が置いたものを活用し、自分が置いたものは活用される。一切のデメリットがなく完全な協力関係にあるオンライン。自分のゲームプレイのためなのに「誰かが使うかも」と考えるようになる。無意識に繋がりを意識する。

配達の意義

お使いクエストと心配していた配達はプレイを進めていくとその意義が明確になり、これこそが自分の仕事だと認識するようになった。もはや配達クエストではなくストーリーを支える根幹作業。レベルデザインが素晴らしいこともあり、まんまと配達員になってしまった。

SF?ミステリー?あるいは詩?

一見するとSFなストーリーだけど体感としてはミステリー小説に近かった。大量の謎が徐々に解明され、解明されたと思ったら実は違って、もっと本質的な真相があり、といった展開が魅力的だった。でも振り返ってみると詩に感じる。全ての言葉に意味が込められて作られた世界だったことに気付く。クリア前とクリア後でここまで印象が変わるストーリーも珍しいと思う。

ちょっと辛いと思ったこと

ノーマンの疲れ顔が辛いし配達体験がリアルすぎるので「なんでゲームで仕事してるんだろ」って本気で思った。BTに襲われるのが辛すぎた。なんとか工夫してやろう、とは思えずひたすら苦痛だった。辛かったので難易度をeasyに落とした。操作が難しかった。クリア寸前でやっと慣れた感じ。

クリア後

クリアは達成感よりも、自分がプレイしていたあれはなんだったのか、と思いふけることになった。ストーリーの序盤から記憶を辿ってあれはこうだったのかと頭の中でパーツを埋めていく。心に残る不思議なゲーム。

「正義の教室」を読んだ

正義の教室 善く生きるための哲学入門

正義の教室 善く生きるための哲学入門

飲茶著の本を連続で4冊読んだ後にちょうど新刊が発表されていた。もちろん買って読んだ。この本はアマゾンのランキングにも入っているし売れているみたい。

小説なんだけど登場人物は数人で舞台のほとんどが学校の教室というとても小さな世界。でもそこで語られる話は人類が数千年かけても結論を出せずに悩み続けていること。

SAWというスリラー?映画があるけれどあれの第1作目は1つの部屋だけで話が終始して登場人物も非常に少ない低予算映画だったにも関わらず、話の展開や演出が完璧で観終わった後はしばらく呆然とした。この本も読み終えた後は同じような感覚になった。

善悪に関する価値観を提示するストーリーはよくあるけれど、天才的な哲学者たちが考え抜いた話を土台に展開する本書は一線を画する超良書。大変おすすめの一冊。

「史上最強の哲学入門」を読んだ

史上最強の哲学入門 (河出文庫)

史上最強の哲学入門 (河出文庫)

先日読んだ「哲学的な何か、あと科学とか (二見文庫)」と「哲学的な何か、あと数学とか (二見文庫)」と同じ著者。赤い表紙が西洋哲学者で、青は東洋哲学者。

作風はどちらも同じで、ある時代で超偉大な哲学者の論を時代背景を交えて解説した後、次世代の哲学者がダメ出しして新しい論を打ち出し、そしてさらなる次世代の哲学者が…という流れ。

時系列ではあるけれど突然数百年飛ぶこともあるし歴史としてみると大雑把だけど、うまく前世代と次世代の論を比較しているのですごく面白い。

2冊とも作風は同じだけど読み応えはだいぶ違う。西洋哲学は論理構築の歴史といった感じでひたすらどうすれば真実と言えるか探求が続く感じだけど、東洋哲学は中国哲学(思想?)と仏教が主な内容で、深く内容を追いかける感じだった。

全体を通して最も良かったのは仏教の部分。ちゃんと釈迦の時代、というより釈迦以前のインドから始まっているし、悟りは体験によってしか起き得ないということをびっくりするくらい丁寧にあの手この手で説明している。知識だけでは悟りにならないこと自体は知っていたのだけど、なるほどこう説明するのかわかりやすい!と頷きながら読んでいた。

哲学、というとポエムっぽいというか浮世離れというか思想的というかそいういうイメージも世間一般にはありそうだけど、哲学がいかにガチ論理であるかをわかりやすく伝えていると思う。最高。特に西洋哲学は勉強不足で知らないことも多かったのでまた読み返すと思う。

「哲学的な何か、あと科学とか」を読んだ

哲学的な何か、あと科学とか (二見文庫)

哲学的な何か、あと科学とか (二見文庫)

「哲学的な何か、あと数学とか」を読んだ – cloned.log に続いて読んだ。この「哲学的な何か、あと科学とか」の方が哲学と科学のバランスが良くタイトルによく馴染む感じになっている。前回読んだ「哲学的な何か、あと数学とか」はフェルマーの最終定理にまつわる数学と数学者に交えて哲学、という感じで、やや哲学がサブな感じになっている。書籍の時系列としても「科学とか」が先で「数学とか」が後みたい。

どちらの書籍にも言えるけれど、とにかく文章が読みやすいしわかりやすい。実際の哲学や科学の話なのにファンタジー小説の一部であるかのような面白さがあった。

特に良かったのは量子力学の章。2重スリット実験を十二分に解説した上で(その理解を助ける波動と粒子の話が前段にある)、コペンハーゲン解釈シュレディンガーの猫を繋げていく説明はお見事。シュレディンガーの猫はその話自体は超有名だけど、どうしてこれが解決困難な思考実験であるかということがよくわかる説明になっていた。

2冊とも良かったけれど特にこの「哲学的な何か、あと科学とか」は良かった。

「哲学的な何か、あと数学とか」を読んだ

哲学的な何か、あと数学とか (二見文庫)

哲学的な何か、あと数学とか (二見文庫)

フェルマーの最終定理をテーマに歴代の数学者による情熱的な戦いを描いた本。フェルマーの最終定理については12年前にサイモン・シンの本を読んでおり大体の知識があったけれど、忘れていることも多かったし、サイモン・シンの本とは文体や視点がかなり異なるので新鮮に楽しむことができた。

ノーゲーム・ノーライフの著者 榎宮先生の絶賛を見て買ったら当然の大当たり。

僕たちは(特に初等教育で)数学を計算ツールとして教わるけれど、解を求めるのは数学の一部でしかなくて、むしろ式が成り立つことを考えるのが数学だろうし、そういう視点を持ったこの本は数学嫌いをマシにする一歩に感じる。

「データの見えざる手」を読んだ

結構前に買って第1章までは読んでいたのだけど、その後そのままになっていた。最近KindleiOSのスピーチに読ませることで本を読む(聞く)時間が取れるようになったので第2章から最後まで一気に読んだ。

本のタイトルだけ見ても何の本かわかりにくいけれど、センサで人間を細かく測定したデータから人間の心や行動を判定し、どのような行動が業績に影響を与えるか、さらにはどのような施策を打つべきかAIに示させるといった内容になっている。

具体的で応用的な内容が素晴らしい

ただの仮説や理論の提示ではなく、著者らが実験してきた内容が具体的に記されているので読み応えがある。考察も十分あり単なる事例紹介にとどまらない。

前半はウェアラブルセンサでどのような測定ができて何がわかるのか解説されている。どの人と会話したかといった粒度のものから会話中に(物理的に)よく動いているかといった細かな人間行動まで、粒の大きさが異なる様々なデータから人間の行動を解き明かしていくのが面白かったし、最終的にAIにより導かれた施策で効果を出すところにも未来を感じる(実際には現在起きていることだけれど)。

コンピューター将棋のように人間だとまず考えつかないような施策で普通に考えると全く効果が期待できなさそうなのにきっちり効果があったところもいかにもAIらしい。どういう施策だったのかはぜひ本を読んでもらえればと思う。

文章として読みづらいところもあった

一方で読みづらいと感じるところもいくつかあった。一つは説明の重複が多いこと。言葉を変えてわかりやすく説明しているのだと思うけれど、何度も似通った説明を聞いている感じになり話が進まないと感じることが度々あった。

次に細かい脱線が多かった。著名な経営学、経済学者、物理学者などの主張がデータからも正しいと考えられるという説明がたくさん入るけれど、これが分脈を切ってしまい読みにくかった。また日本の現状はこれが原因ではないかといったかなりスケールの大きい推測が断定に近い口調で入ったりするのもやや読むのに障壁だった。著者にとっては確信があるのかもしれないけれど本書の説明内容だけでは言い過ぎに感じる。

著者が考える過去と未来については章を分けて書いてある方が良かったように思う。

ビッグデータの応用事例として欠かせない一冊

とはいえ、やはり内容は良かった。ビッグデータがあってディープラーニングのような手法があってもそれを使って解析するのは結局データサイエンティストによる人力、という状況を変える試みについて良い学びを得たと思う。

FACTFULNESSを読んだ

FACTFULNESS(ファクトフルネス) 10の思い込みを乗り越え、データを基に世界を正しく見る習慣

FACTFULNESS(ファクトフルネス) 10の思い込みを乗り越え、データを基に世界を正しく見る習慣

KindleでページがNo.5237までと表示されていたのにNo.3974に「おわりに」が登場して不意打ちを受けたように読み終えてしまった。最後に付録がたくさんあるからだけど、No.5237まで文章が続いていたとしてもすぐに読み切ったと思う。

読み終えたら感想を書こうと思っていたけれど、読み終えてみるとどこかの文章をつまみ出して感想を書く気はなってしまった。自分なりに要約したり良かったところを紹介したりはできると思うけれど、この本には必要ないと思う。将来の自分がこの本はどんな内容だったかなと思ったらまた最初から読み直せばいいと思う。

よく編集されており読みやすく重複もないスッキリした本だった。日本語訳も良かった。読み終えた後にハンスのTEDの映像を観てみたけど、日本語訳はハンスの人柄を捉えた語調をうまく選んでいると思うし、英語の原著を無料で読める数ページ見てみたけど違和感はなかった。

世界で起きていることを偏見なく認識するために。素晴らしい一冊。

他人がすぐに気付く問題を先に自分で気付くための方法

よく考えたコードや設計であっても他人が見るとすぐに問題が見つかることがある。知識差が原因のこともあるけれど他人だからこそ気付けたという場合も多い。

これは客観的に見ると気付く、というよりも視点を変えると見え方が変わる(よって問題に気付く)ということだと思う。他人は自分と少なからず違う視点(思考)になるので手っ取り早いというだけ。自分の視点を変えられれば問題に気付きやすくなる。

僕が普段無自覚にやっている方法を整理すると次の2つをやっているみたいだった。

ロール(役割・役職)を変えて考える

プログラムの設計やコーディングは基本的にプログラマーとして作業してしまう。例えばDBAになりきるとプログラム上は楽でもパフォーマンスなどで問題のある部分が見えてくるし、仕様を考えた人になりきるとプログラムの都合で元の仕様設計の意図を歪曲したり複雑化していないかが見えてくる。インフラエンジニアになりきると本番デプロイ時に問題になることなどが見えてくる。

こうやって違うロールになりきって考えると結構色々問題が見えてくる。ただ経験したこともないロールになりきるのは無理があり(単に机上の空論となる)経験に左右されるから、色々なことをやってみるのは大切だと改めて思う。

脳内の一時メモリをリセットする

これはライフハック的に言われてることだと思うけど、今やっている作業状態を一旦忘れてから再度考えることで強制的に違う視点にする方法がある。お風呂に入る、散歩する、一晩寝かすなど。僕の場合、だいたい数回自転車に乗ると「あー、そうじゃないや、こうだな」と違う視点のアイデアが出てきたりすることが多い(子供の送り迎えや買い物で毎日何回か自転車に乗る)。

奥の手として潔く信頼できる人に見てもらうというのがある。ブログタイトルと明らかに矛盾するけれどコードレビューやテストなどの決まったサイクルを待たずに自主的に第三者視点を求めるのは良いと思う。自分で気付ける方法を書いてみたもののどうしてもカバーできない部分はあると思うので。

SymfonyはなぜTwigを採用したのか ~ Jinjaとの関係

Symfony Advent Calendar 2018 10日目の記事です。

SymfonyはテンプレートエンジンにTwigを採用しています。TwigはPython製のJinjaにシンタックスが似ていることで知られています。SymfonyがなぜTwigを採用したのか、なぜJinjaと似ているのかについて日本語の情報が少なそうなので書いてみようと思います。

ただ、内容としてはほとんどSymfonyの作者であるFabien Potencierのブログ記事で触れられているものです。

Templating Engines in PHP | Articles – Fabien Potencier

この記事は2009年10月にポストされたものです。この時のSymfony(当時はsymfony)のバージョンは1.3で11月に1系最後である1.4がリリースされています。彼がこの時期にどのようなテンプレートが望ましいか考え悩んだ結果が吐露されています。

記事の最初に「私と意見が合わなくて殺したい人がいるかも」という注意が書いてあることから当時のテンプレートエンジンに対する議論の白熱?具合が伺えます。

記事に書かれていること

PHP自体が良いテンプレートとは思えない

この記事の前半ではDjangoPythonのウェブフレームワーク)のテンプレートと比較して次のようなことが書かれています。

  • PHP自体がテンプレートだという主張があるが…
    • PHPは(言語としては進化してるが)テンプレートとして進化していない
      • 短く書けない
      • ありがちな処理をサポートしていない(例えばfor-else)
      • 再利用性がない(継承など)
        • 注: クラス継承ではなくテンプレート継承の意です
      • エスケープが大変(DjangoRailsは自動エスケープなのに)
      • サンドボックス化できない

PHPの既存テンプレートに良いものがない

中盤では既存のPHP製テンプレートエンジンを探してみたけどいいのがない、ということが書かれています。Smarty、PHPTAL、eZ Components Templates、Dwoo、Calypsoを取り上げています。

Twigとの出会い

後半ではTwigにたどり着いた経緯が書かれています。

  • Djangoのテンプレートっぽいものを探したところTwigを見つけた
  • TwigはJinja作者であるArmin Ronacherによって書かれたもの
    • 注: JinjaはPython製のテンプレートエンジンでDjangoのテンプレートと似ているけど別もの
  • 2008年にとあるサービス向けにTwigが作られたがArminはPythonで仕事してる
  • 彼にTwigを発展させてもいいか聞いたら乗り気になってくれた

その後

Symfony 2がリリースされたのは約2年後の2011年7月です。この時にデフォルトのテンプレートエンジンとしてTwigが採用されています。

Twigの最初のgitコミットを確認すると2009年10月7日となっています。そして先に紹介したFabienの記事の日付は同じく2009年10月7日です。この日のコミットは開発ではなくgit-svnを使ったSVNリポジトリ(おそらくArminが使っていたものと思われます)からのポーティングですが、これからやっていくぞという意気込みを感じるコミットです。

現在のTwigはSensioLabs(FabienがCEOの会社)やSymfony開発者によってメンテされ、9年間経った今でもSymfonyを支える重要なパーツとして生き続けています。