Category Archives: 未分類

Windows8タブレットを買って再会した二次元の「幼なじみ」たち

僕はモバイル機器を買うと必ず「幼なじみに再会」できるかどうかを試すという儀式的なことを行います。ツッコミはご自由にしてください。何を言われても屈しません。

先日、Windowsタブレットを買いました。
数ある中から僕はLenovo IdeaPad Miix2 8を選びました、

今回はWindowsということで、取り立てて苦労することなくゲームが動くだろうと思ったら結構動きませんでした。せっかくなので結果を報告します。

ところで、このブログはGoogleアドセンス広告を掲載させて頂いているため、いわゆる18禁はNGと思われます。なので、メイドロボットが出てくる昔の葉っ(ryとかいうことを書くことは許されないと思いますので、諦めて全年齢向けの作品のみの情報を扱わせていただきます。

(キャプチャ載せようともしましたが、めんどくさいし、著作権的な問題もあるので省略します。タイトル覚えてる人は脳内補完をよろしくお願いします)

Kanon全年齢版

言わずもがな。定番ギャルゲブランドKeyの代表作、ヒロインの名雪さんが最初のシーンで「再会のお祝い」っていうんですね。状況的にバッチリですね!ちなみに、いきなり文字化けしましたが、フォントを変更することで、文字化けはあっさり直りました。

Air全年齢版

状況はKanonと同じ感じでした。エンジンのバージョン的にも近いのでしょう。

CLANNAD

ストレスなく動きました。いわゆる「クラナドは人生」とか。僕はごめんなさい。最後までやっていないので、せっかくなのでそのうち、攻略しようと思います。

センチメンタルグラフティ

全国に散らばるえっと13人でしたっけ、女の子に会うためにバイトでお金を稼いでヒッチハイクの旅をするという、どうしてこうなったのかよくわからない迷作ですね。僕はえみりゅんが好きりゅん。

これはXPのころから、オープニングは見れないから、初期データをでっち上げるという技で起動はしたのですが、なんだかフォントサイズがずれてしまって見るに耐えない状況でした。

エーベルージュ2

このシリーズがなければ僕はこの世界を知らないまま学生時代を過ごしたに違いない。その二作目、前作よりもストーリーがキビキビしてて良かったです。メルさんが好きでした。起動することは確認しましたが、キーボードがないと、ゲームを終わらせる手段がなさそうです。これでは困ってしまうので二度と起動することはないでしょう。

ファンタスティックフォーチュン

僕がやった唯一の乙女ゲー、乙女ゲーといえど主人公の姫さんが可愛いくて、声優の茶山莉子さんの名前まで覚えてしまった程に、大変満足できた作品でした。が、動きませんねー (T_T)

Zweii

ギャルゲじゃないけど、Falcomが作ったキャラがかわいいアクションRPGゲーム。
主人公兄妹に会えたら嬉しかったんですが、いきなり起動しませんでした><

他にも、いくつかのゲームを動かそうとしてみましたが、どうも動かないことが多かったです。寂しいというかなんというか。まあ、そんなものでしょう。どうせ、外に持ちだしていって、公衆の前でにやにやしながらプレイするわけにはいかないので、容量ももったいないし消しちゃいました。

結論

幼なじみにいつまでも逢えるってものじゃないのです。きっと、みんなそれぞれの人生を歩んでいったのでしょう。

Let’s Go! #Golang勉強会 Vol.1に参加してきました

勉強会と Co-Edo について

コワーキングスペース茅場町 Co-Edoで行われたGo言語の勉強会Let's Go! #Golang勉強会 Vol.1に参加してきました。Co-Edoは去年はじめてのgit勉強会&もくもく会 に参加させていただいたのが初めてでその後利用していませんでしたが、オーナーの田中さんににはその後Facebookでつながっていただいていたので、もう一度利用したいと思って思っていました。

今日の勉強会は、コワーキングスペースの片隅机1,2卓を囲んで参加者4,5人の小さな勉強会でした。僕以外の人はGo言語経験者みたいです。僕は今日はじめてインストールしました。

Go言語について

Go言語といえば、Googleが作っている新しいプログラミング言語です。コンパイル式でバイナリを出力できるのが特長で、C++をより開発しやすくしたような立ち位置です。そのため、速度を求められる領域での利用が多く、事例としては、Dockerなどがあります。Gunosyのインフラで使用されていることも有名です。僕のTwitterのTimelineの中でもやっている人をちょくちょく見かけるようになりました。

初めて触ったGolangの印象

半日触ってみた印象としては、今からC++を勉強するよりは学びやすい印象を受けました。文法はCやJavaのようでpythonのようなLLの影響も受けている少し独特な記述の言語ですが、使っていればすぐに馴れそうです。

Webフレームワークもありますが、まだ企業で利用するほどには安定していないようです。

しかしライブラリが充実しているので、その気になれば結構良いWebフレームワークやテンプレートエンジンが作れるんじゃないかなと思います。

作ったプログラム(しょぼいので注意)

ひとまず、今回僕はGoを使って簡単なWebアプリを作ってみましたw

URLのパラメータにfrom, toを指定して、任意の範囲でグラフィカルなFizzBuzzができるアプリです。誰の役にもたちません(笑)

普通にやると

$ go run web.go

のようにして、localhost:4000にアクセスして動作を確認できますが、GCE上のDebian(つまり、このブログを動かしているインスタンス)でテストしていたので、4000ポートにアクセスできません。

curlならできますがつまらないですね。

susumuis@instance-4:~$ curl http://localhost:4000/?from=1&to=10
[1] 27781
susumuis@instance-4:~$ <!DOCTYPE html>
<html>
<head>
<title>hello, golang</title>

<style>
    .fizz { color: red; }
    .buzz { color: blue; }
    .fizzbuzz { size: 1.5rem; color: purple; font-weight: bold; }
</style>
</head>
<body>

to value must be integer
</body></html>

なので、一時的にこのブログを配信しているnginxに曲がりをしてインターネットに配信しちゃいましたwww「おまえ、いきなり本番環境に反映する気か!」などのツッコミには屈しません。(もう落としてます)

    location /goweb/ {
        proxy_pass   http://127.0.0.1:4000;
    }

golang - web - fizzbuzz

一応jQueryも入っているのでデバッガで画面いじるのが醍醐味ですw

Goの使いどころ

まだ事例は少ないですが、静的型付け・コンパイルというのがGoの最大の特長でしょう。それでいてpythonなどのライトウェイト言語の特長を取り込んでいるので、非常に良い言語だと思いました。次のような事例では有効でしょう。

  • インフラなどのリソースを極限まで活用したい
  • go言語がインストールされていない環境にアプリケーションを配布したい

ちなみに、

$ go build web.go

のようにしたらバイナリを出力できます。出力されたバイナリはgoがインストールされていない環境でも動作するようです。

susumuis@instance-4:~/godev$ go build web.go
susumuis@instance-4:~/godev$ ls -la | grep web
-rwxr-xr-x 1 susumuis susumuis 5703384  7月 27 21:42 web
-rw-r--r-- 1 susumuis susumuis    1466  7月 27 17:43 web.go

1.4KBのソースコードから吐き出されたバイナリは5.5MBですかwライブラリを含んでるのか大きいですね。フロッピーに入らない。

GoはWebがまだ弱いので、実質的に、静的型付けが欲しいWeb言語という用途ではまだでしょう。その用途ではFacebookが開発したHackが良いと思います。HackはPHPに型を載せたようなシロモノなので、普通にPHPのエコシステムが使えます。パフォーマンスはFacebookがHHVMを開発して頑張っています。さらに極限までチューニングしたい場合は素直にJavaを使うのが現状一番良いでしょう。ただし、Javaを使えば一律に速くなるというわけではなく、JVMという怪獣を手懐ける必要があります。

僕はその必要性を感じませんが、「サーバーもフロントも同じ言語を使いたい」という場合は、現状はNode一択なのでしょう。Dartがどこまで来るのか興味が湧いています。

実はこのブログを動かしているWordPressにHackで書いた独自プラグインを載せています。そんなことも簡単にできちゃいますが、それについては後日書きます。

はてなブログからWordPressに移行するためにしたこと

ほっとくと忘れてしまいそうなので、忘れないうちに、記録残そうと思います。

はてなブログから、WordPressへ結構苦労して移行しました。その時やったことをざっと書きたいと思います。

記事の移行

はてなブログ用ツールで記事データの取得

定番ですが、下記のツールを利用しました。
はてなブログ用ツール

.NETで作られているのでWindowsかMonoの環境が必要です。MacもMono環境を整えればできるかもしれないと書いてましたが、Windowsマシン持ってきてやってしまいました。

はてなのAPIを使用しているらしいので、それなら、自分もAPI使ってもいいんですが、せっかくあるツールが使えるなら、やっぱ楽さには叶いません。

このツールでデータをエクスポートしたものは、完全ではありません。次の問題点があります。

  • コメントが含まれない
  • 画像などがはてなフォトライフのままである
  • シンタックスハイライトなどの装飾が一部崩れている

はてなダイアリーのエクスポート機能を使用

はてなブログにはエクスポート機能がありませんが、はてなダイアリーにはあります。はてなブログに移行する前ははてなダイアリーを使っていて、はてなダイアリー時代が大半だったので、はてなダイアリーにログインすることではてなダイアリー時代のデータを抜くことは出来ました。

方法は下記の記事と同じです。

はてなダイアリーからWordPressへ全記事を移行した件 | ツインズパパの徒然日記 Ver.2

上記記事にも書いてあるとおり、次の問題点があります。

  • はてなキーワードのリンクもそのまま持ってきてしまう
  • 一部の記事の日付が1970年になってしまう

    • →これは、時刻 00時代のAMがうまく取り込めないという問題。リンク先や、その方が参考にされたサイトでは01時に変更することで対処されていましたが、僕の場合はAM自体を取り除いたらうまくいきました。
  • シンタックスハイライトがガタガタ
  • 画像がはてなフォトラ(ry
  • なぜか一部の記事がうまく移行できないで画面が真っ白になった(すごい大昔の記事)

RSSからインポート

はてなブログはRSSも配信しています。そしてWordPressは公式でRSSからインポートすることができます。しかし、これは、.NETのツールの下位互換でした。

  • 新着7件しか取ってこれない
  • コメントデータを取ってこれない

結局どうしたか

  • はてなダイアリー時代の記事のうち、真っ白にならなかったものは、はてなダイアリーで移行
  • はてなブログ時代の記事ははてなブログで移行
  • はてなブログ時代のコメントは、3件しかなかったので手でSQLを発行して移行:
insert into
    wp_comments (
        comment_post_ID,
        comment_author,
        comment_author_url,
        comment_date,
        comment_date_gmt,
        comment_content,
        comment_karma,
        comment_approved,
        comment_parent,
        user_id

    ) values (
        614,
        'susumuis',
        'http://www.susumuis.info/',
        '2014-03-30',
        '2014-03-30',
        'id:faith_and_braveさん コメントありがとうございます。 共感いただいて本当に嬉しいです。 自分は開発(省略)',
        0, 1, 0, 1
    )

こんな感じです。コマンドラインツールでのSQLの発行はキツイし、phpMyAdminのような「クラックしてください」と言ってるようなツールは使いたくなかったので、このツールを使いました。SSHトンネルの設定もやってくれるので便利でした。

Sequel Pro

はてなキーワード持ってきてしまった件についてはSQLに正規表現書いて変換しようとしましたが、MySQLは正規表現を使った置換ができないそうなので、PHPなどの言語で外から変換するしかないようです。まだ出来ていませんので後日できたら報告します。

検索結果のindexとか「いいね」カウントとか

検索エンジンのインデックスについては、301リダイレクトで対処するのが王道ですが、これは、

はてなダイアリー → はてなブログ → 独自ドメイン(はてなブログPro)

を公式移行ツールで移行してきたのでシームレスにやってくれていました。なので、あとは、はてなブログProで使っていた独自ドメインのURLそのままで記事のURLを移行するだけです。

WordPressにはパーマリンク機能というのがあって、記事のURLを

http://www.example.jp/?p=123
のようにクエリーパラメータにするのではなく、
http://www.example.jp/2014/06/28/sample-post/
のような任意のURLにすることができます。

ここで、移行前のURLは次の形式になっていました。

はてなブログ時代

http://ドメイン/entry/yyyy/mm/dd/数字6桁
例:
http://www.susumuis.info/entry/2014/06/11/222935

はてなダイアリー時代

http://ドメイン/entry/yyyymmdd/p数字
http://ドメイン/entry/yyyymmdd/数字10桁
http://ドメイン/entry/yyyymmdd/任意の単語
例:
http://www.susumuis.info/entry/20110728/p1
http://www.susumuis.info/entry/20090822/1252377609

見事に分かれています。それなら、共通する、「/entry/2014」の部分 + 投稿名として「06/11/XXXXXX」を書くようにしようとしましたがこれはできません。

"/"という文字が投稿名に使用できなかったためです。

結局どうしたかというと、 Enhanced Custom Permalinksというプラグインのお世話になりました。これを使えば記事ごとにパーマリンクを設定できます。

さて、記事の数は90くらいありますので、全部手でやってたら大変ですから、こいつは、SQLで一括で設定してしまいました。

当時のクエリを残していなかったので、正確なものを紹介できませんが、wp_postmetaテーブルをinsertしていく形になります。

単なる301ではなく、URLを同一にしたため、はてなスター、Facebookいいねまでそのまま引き継ぐことが出来ました!

はてなブックマーク、はてブコメント

ところが、はてなブックマークについてはうまく行きませんでした。はてなブックマークもURLに紐づく情報なので、てっきりブログをそのまま移行すれば、独自ドメインでブックマークが引き継がれると思っていました。確かに移行直後はそうだったのですが、移行後数時間後、はてなブックマークカウントが0になっていました。

なんでかなあと思ってみたところ、はてなブログProの管理画面を見たら理由がわかりました。

独自ドメインは解除されている!

はてなブログは、定期的にドメインが有効かどうかクロールしているようです。ドメインがきちんとはてなのDNSに向いていることがわかった時点で、元のはてなブログのURLから独自ドメインのURLにリダイレクトしているようです。

ドメインが無効、または別のサーバーを向いていると判断されると、はてなブログのドメインから独自ドメインへの転送がストップします。それと同時に、はてなブックマークのデータも、元のはてなブログのドメインのものに変換され、独自ドメインのカウントは、0になります。はてなブログとして独自ドメインで受けたはてなブックマークカウントも、一緒にはてなブログドメインに持って行かれてしまいます。

はてなブックマークははてなのものだから仕方がないですね。

人気エントリー一覧

人気エントリーの一覧は、元のはてなブログドメインのものをはてなブックマークブログパーツを使用すれば作成できます。このままだとリンク先がはてなブログになってしまうので、リンク先をJavaScriptで強引に書き換えてしまいました。右サイドバーの「以前反響を頂いた記事」という部分です。具体的にはこんな感じです。

jQuery('div#hatena_hotentry').on('DOMNodeInserted', function() {
  $links = jQuery('div#hatena_hotentry .hatena-bookmark-entrytitle');
  $links.each(function() {
    jQuery(this).attr('href', jQuery(this).attr('href').replace('susumuis.hateblo.jp', 'www.susumuis.info'))
  });
});

こんなことして怒られたらやめます。wwもう、この段階で欲しいのは過去のはてなブックマークじゃなくて、この記事がオススメだよっていうことなので、僕の方で勝手にレコメンドしちゃえばいいんです。

ブックマークコメント

はてなブックマークコメントはどうしましょう。最近はブログのコメント機能を使ってのコメントより、はてなブックマークコメントで暑いコメントをもらったりします。

はてブコメントがないと、過去盛り上がった記事もなんか寂しい感じですね。ただ、個人的には、はてなブックマークに対しては歓迎的でない部分もあって、何かと炎上しやすいなど、攻撃的なこと書く人がたまにいます。

コメントなのか、個人のメモなのかわからないしろものですから、今後、ブログの雰囲気的を良くしていくためにはない方が良いかもしれません。

ということで、過去の記事まで追跡して、はてブコメントを画面に出すのはやめました。ただ、僕のブログのなかで、はてブ2桁頂いた記事が6件だけあったのでそれらについては記事の下に手動で旧ドメインでのブックマークリンクを記載しました。こんなかんじです。

この記事は以前多くのブックマーク・コメントを頂きました。
<a href="http://b.hatena.ne.jp/entry/http://susumuis.hateblo.jp/entry/20110728/p1" class="hatena-bookmark-button" data-hatena-bookmark-layout="simple-balloon" title="以前のURLでのブックマーク件数"></a>
これからブックマークされる方はこちら↓

Markdown記法を使えるようにする

WordPressにはMarkdownを使えるようにするプラグインが複数存在します。いろいろ試しましたが僕はこのプラグインが使いやすいと思いました。

WP Markdown Live

コードのインデントとシンタックスハイライト

はてなダイアリーやはてなブログから記事をインポートした結果、残念なこととして、ソースコードのインデントやシンタックスハイライトがガタガタになってしまったことがありました。

これについては、幸いWP Markdown LiveプラグインがGitHub風のプログラムコード記法を持っているので、テキスト化されたコードからもう一度自前でインデントしてMarkdownに貼り直すことにしました。全部だと大変だから一部だけです。

これだとシンタックスハイライトがつきませんがWP Markdown Liveで出力したコードは

<pre class=" language-css">
<code class=" language-css" data-language="css">

コード

</code>
</pre>

(*うまくコードをテキスト化してくれないので、最初のpだけ全角文字にしています)
のように出力されます。これはそのまま prism.jsが使用できます。

テーマのスタイルシートにダウンロードしてきたprism.cssとjsを配置するだけで、綺麗にシンタックスハイライトすることができました。

SEOとかOGPとかTwitter連携とか

まだまだやらなきゃいけないことはたくさんありますが、だんだん面倒くさくなってきてしまったので、これらはプラグインでお茶をにごしました。
余力があったらプラグインを使わずに自力で連携したいです。

使ったプラグイン
* Jetpack by WordPress.com
* WP Open Graph
* WP Social Bookmarking Light

Jetpack使ってるあたりが負けてる感がするので、早急に自力でなんとかしたいです。

SEOのメタタグの部分はしっくり来るプラグインが見つからなかったので自分でheader.phpにスクリプト書きました。