12月21日の記事

カテゴリー

test



AMP対応諦めた話

カテゴリー │IT

スマホで検索するとたまに検索結果と一緒に出てくるこのマークを見た人は結構居るかと思います。


AMPはAcceleratedMobilePagesの略で、モバイルのWebページ高速化のために作られた規格です。これに対応したページにこのマークが付く形になります。
国内メディアだと既に大手新聞社サイトや大手ブログサイトは結構な割合でAMPに対応してる印象があります。

高速化だけでなくSEO的な部分もあって、AMPに対応させてJSON-LD形式のサイトの構造化データも一緒に持たせたらGoogleの検索結果にカルーセル表示もしてくれるみたいです。
はてなブログはProユーザに対してAMP設定できるようになってるみたいなんですが、「AMP対応したらPV伸びた」みたいなエントリはちょくちょく見られます。


それで今回自前で持ってるサイトをAMPに対応させようとしたんですが諦めました。

というのも、対応させようと思うとAMPの規格にそったHTML(AMP HTML)にしないといけないんですが、AMP HTMLだと結構制約が厳しいです。

適当に検索すると分かりますが、諸々追加しないといけないタグがあったり使えないタグがあります。そういった制限の中でも一番の導入の障壁はJSが使えないという点です。
JSは全く使えません。CSSでがんばる形になります。つらい。
僕はCSS力が低すぎて適当なCSSフレームワークにかなり依存した形でサイト作ってたのでまぁ無理でした。
別にPVとか意識するようなサイトではないのでどうでもいいと言えばいいんですが、できないとなると何かくやしい。

他のAMPに対応したページを見るとやっぱりCSSでがんばってる感じでした。それでもCSSのみではできないことはやっぱりあるので普通のWebページに加えてサブディレクトリなりサブドメインで切ってAMPページを用意してる形です。

自前サイトのAMP対応は無理でしたがはまぞうの方とかでできたりしないかな。
PVアップも目指してどうにか…






SHA-1が死んだ

カテゴリー │IT

GoogleからSHA-1の対衝突性を高速に破る手法のアナウンスがあったらしいです。
https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html

これだと110GPU/年で破れるとか。

SSLあたりは前々から非推奨になってブラウザ側で警告出してたりもしたみたいなので影響はあんまりなさそうですが、Gitあたりは結構影響ありそうな感じですね。
Gitだとコミットとか諸々がSHA−1で一意に管理されてるので根本的な部分から多分死んでる。
OSSのリポジトリとかでコミットとかを区別できなくなると一気に挙動が怪しくなるんじゃないかな。今一具体的にどうなるか想像つきにくいけど。
(気に入らないOSSを破壊するチャンスなのでは)



rails_template書いた

カテゴリー │IT

リポジトリは以下
https://github.com/taigak/rails-template

ハッカソンとかRailsで開発するときに時間かけたくない時用。
rails new app_name -d postgresql -m https://raw.githubusercontent.com/taigak/rails-template/master/template.rbで使える。

できるのは以下

  • テストフレームワークをrspecに変更

  • deviseでログイン追加

  • rails_adminで管理機能

  • cancancanでアクセス制御

  • devise、rails_admin、cancancan連携

  • TravisCIでCI回す

  • TravisCIのbuild結果をSlackに通知

  • TravisCIからHerokuにデプロイ設定


対話シェルで以上の機能を付けるか聞いていってyesのものだけ追加していく形。

全部機能付けるとheroku上で以下みたいな感じになる。


ログイン画面


管理画面
Userモデル内のis_adminフラグがtrueのユーザのみ遷移可


TravisでCIが回ってmasterブランチでテスト全部通ったものだけHerokuに自動でデプロイされる

大体ここらへんが共通でいつもやるような部分なので全部自動にしておいた。
ソーシャルログインのあたりとログインあたりのAPI追加をやってないのでそのうちomniauthあたり使ってやっとく。

Deviseとrails_admin使っちゃってるのでとりあえずの構成という感じ。
Deviseのレールは狭いってのはよくぼやかれているし使うたびに実感するのでできれば捨てたい。
rails_adminも同じ理由で捨てたい。そのうち…

あと.rbの書き換えもメタプロめいたことをやるのがダルかったのでリポジトリにファイル用意してcurlで差し替えるだけにしてある。
どっちでも良さそうだけど何かかっこ悪いのでこれもそのうち…

最初Dockerで適当にDockerfile作ってガッとやって適当なPaaSに上げる形でやろうと思ったけど、Dockerだとどの機能を使う/使わないを選択させながらimageビルドしていくのがめんどくさそうだったので対話シェルにした。

作りが結構適当なので自分以外の人間が使えるかは怪しいけどとりあえずGithubのリポジトリに置いとく。




Self-Reference ENGINE読んだ

カテゴリー │IT

Self-Reference ENGINE読んだ。
とにかく突飛な話で、靴下が権利を主張してきたり床下からフロイトが22体発見されたりする。
意味が分からない話ばかりで笑えたけど、意味が分からない話ばかりでとにかくしんどかった。

内容はオムニバス形式。短編の中では床下からフロイトが大量に出て来るFreudと人間やめて巨大知性体になるechoが好きでした。

円城塔の小説はまだこれと死者の帝国くらいしか読んだことないので何かおすすめがあればもうちょい何か読もうかな。





Raspberry Pi Zero販売開始

カテゴリー

今週の金曜日からRaspberry Pi Zeroが日本でも販売開始になるみたいです。
価格は702円で1人1点までだとか。

702円で1GHzのCPUと512MBのRAMが載ってると思うとメチャすごいですね。
幾つか買って並列化したら安価にそれなりのものができたりしないかな。EthernetとWi-Fi接続が無いみたいなのは残念だけど。

適当に買ってみて遊んでみようかとも思うけど特にこれといってやりたいことも今ないしどうしようかな。



わたあめのデータ…

カテゴリー │IT

かなり今更な話なんですが、昨年11月の大学祭でとったわたあめの販売データの扱いに困ってる…


特に使うようなこともないし、これ使ってなにをやろうというわけでもなし。
でも何か捨てるのもったいないし…(今年静大祭でわたあめ売りたい人には多少使えるかも?)

俺は一体わたあめのデータとどう向き合えばいいんだ??



虐殺器官を見てきた

カテゴリー │SF

映画やってたのでららぽーと磐田まで虐殺器官を見に行ってきました。
前の2つが微妙だったのであんまり期待はしてなかったんですが、やっぱり微妙でした…

銃火器が出まくる内容なので絵自体は良かったです。
でも改変が結構あって母親のくだりが全部無くなってたのが残念だった…。
母親のくだりが無いと主人公が女を探して戦場に行く下半身人間にしか映らなかった(ひどい)。

ただ、最後のスタッフロールで「マングローブ破産したけど俺たちがんばったよな」みたいなメッセージが出てきたのはかなり笑ったのでそれだけでも見に行く価値はありました。

http://project-itoh.com/



最近はいろいろ落ち着いてきた

カテゴリー

大学の方も最近は色々落ち着いてきたんですが何か気持ち的には全く落ち着いた感じがないです。

微妙にまだやることは残ってるけどどっか行こうかな…



テストは書いとけ

カテゴリー

最近FacebookとかTwitterの公式PHPライブラリ触る機会がありました。
Ruby(というかRails)で触る機会はちょくちょくありましたがPHPでは初めてです。

そんな難しいことでも無いので書きたい処理もすぐ終わるだろうと思っていましたがちょっと悩ましい事情がありました。

実はFacebookとTwitterの出してる公式PHPライブラリだと今使ってるPHP(5.3)のサポートが切れてました。

まぁそこら辺はどうにかなりましたが、使ってる言語とかライブラリのバージョンが古いってのはわりとどうしたものか困る問題ですよね。
もちろん言語なりライブラリなりのバージョンはセキュリティ的にも速度的にも新しい方が恩恵が多いです。
でもだからってすぐにリプレースしていけるようなものでもないし…。

まぁ更新しまくるような運用は厳しいですが、あまりに古くなったものを残すのも良くないですよね。
ある程度古くなった言語バージョン、ライブラリ、フレームワークは適切に退場させていくべきです。

ただサービスがデカくなってくると変更が波及するプログラムが多すぎて人間だけだと管理しきれません。
それを考えるとやっぱりテストは書いとくべきですね。
少なくとも全Controllerが200を返してくることだけでも自動で確認できるようにしておくべきです。

個人的にはWebサービス作るなら考える余地もなくテストの自動化はやっとくべきだと思ってます。
あとCI/CDも大体考えずに導入していいと思ってます。
システムが古かったりするとそれも難しかったりしてなかなか上手く行かないものではあるんでしょうけどね。

テストは書いとけ。