ほとラボ

It works!

さらば Firefox

約 10 年使った Mozilla Firefox をやめて、Vivaldi に乗り換えた。

Firefox の思い出とか、Vivaldi にした理由とか、そのあたりについて。

10 年前の Firefox

Lunascape というブラウザを使っていた当時高校生の自分は、きっかけは覚えていないが何かの拍子で Firefox を使い始めた。

10 年前の Firefox はバージョン 2.0 で、まだ Google Chrome も登場しておらずアドオンという概念も一般的でなかった時代に「カスタマイズするブラウザ」としての地位を確立していた。

f:id:hoto17296:20171103200044p:plain
一世を風靡した伝説のアドオン「中止ボタンがしいたけに見えて困る」

ユーザーコミュニティによるアドオンという文化は本当に面白くて、いくつものアドオンを入れては消してを繰り返して楽しんでいたし、いくつか自分で作ってみたりもした。

2大最強アドオン

数多あるアドオンの中でも「これがないと生きていけない」レベルだったのが以下のふたつ。

Tree Style Tabs はタブバーを横に表示してタブをツリー構造のように並べられるアドオンで、 Vimperator は vim ライクなキーバインドでブラウザを操作できるアドオン。

人よりも多くタブを開き、人よりも多くブラウザを触る機会が多い Web ブラウザヘビーユーザーな自分にとって、ブラウジングの効率を高める上でこれらのプラグインは欠かせないものだった。

IT 業界で働き始めてからは、周囲に Web ブラウザのヘビーユーザーが多くなったからか 「Firefox + この2つのプラグイン」を使ってる人にかなり出会うようになった。 効率を突き詰めるとやはりここに行き着くんだなー、という感覚があった。

WebExtension への移行

そんな Firefox は、今月 Firefox 57 (別名 Firefox Quantum) がリリースされる。 このリリースでは従来の XUL ベースののアドオンが利用できなくなり、WebExtensions に完全移行される。

従来アドオンの WebExtensions 移行は、ほとんど1から書き直すことを意味する。

Tree Style Tab は既に WebExtensions 対応版がリリースされているが、作者の Piro さんのブログを読むとそれがいかに想像を絶する労力が必要かわかる。

piro.sakura.ne.jp

Vimperator は今もなお方向性を模索中1で、その他のアドオンも WebExtensions に移行されないものも数多くあると思われる。

Firefox のアドオンというエコシステムは、完全に一からやり直しになってしまった。

他ブラウザへの乗り換え検討

窮地に立たされた Firefox ユーザは一体どうしたらいいか。

大雑把には、自分で Firefox のエコシステム作りに関わりに行くか、他ブラウザに乗り換えるか、の二択しか無い。

本当は「自分が新しい Vimperator を作るんや」と言えたらカッコよかったが、 そもそも自分が Firefox を使う理由は魅力的なアドオンがあるからで、 そのアドオンが使えなくなってしまった時点で Firefox を使い続ける理由は特になかった。

じゃあ他のブラウザに乗り換えてやっていけるか。

多少操作性は変わっても、タブが横に表示できてキーボードでブラウジングができれば良くて、 そんな都合のいいブラウザがあるものかと探していたら、Vivaldi という選択肢があった。

vivaldi.com

Vivaldi の所感

f:id:hoto17296:20171103214943p:plain

まず最高なのは Tree Style Tab や Vimperator でやりたかったことが拡張機能無しでできる 点。 タブを横に並べられるし、キーボードショートカットも柔軟にカスタマイズ出来る。

とはいえ横タブ表示はツリー型に表示することはできないし、Vimperator で出来たすべての操作を Vivaldi でもできるわけではない。やはり Firefox のアドオンの方が便利だったと思う点も少なくない。

それ以外の点で言うと、ベースが Chromium なのでレンダリングや開発者ツールなどは他の主要ブラウザと比較しても遜色ない、というか Google Chrome と全く同じ。

最大の不満点を上げるとすると「複数の端末で設定やブックマークを共有できない」ことだが、現在 Sync 機能を開発中とのことなのでこれは気長に待ちたい。

総じて、これならなんとか乗り換えてもやっていけそう、と思った。

まとめ

別に Firefox が死んでしまったわけではないが、XUL ベースのアドオンの廃止は自分にとっての Firefox が死んだようなものだった。

さらば Firefox、最高の Web ブラウザだった。

これからは Vivaldi という新時代のブラウザで次の 10 年を生きていきたい。

ISUCON 7 予選落ちを支えた技術

去年に引き続き id:arata3da4 id:jp_taku2 と ISUCON に出場した。

今年の最終スコアは 26,772 点で、決勝進出することはできなかった。

しかし昨年の最終スコア 0 点と比較すると +Infinity 倍のスコアを記録できたことになる。

圧倒的成長!!!

blog.hotolab.net

(昨年の人権を失っていた頃の様子)

開始時間の遅延

気合い入れて7時に起床して8時半には準備完了して集中力を高めていたら、まさかの開始時間が3時間もの遅延。

時間が空いたからといって何か作業をするべきではない。

競技中の8時間にすべての集中力を注ぎ込むことが重要であり、今はリラックスして集中力を温存することが勝利への鍵であることは間違いない。

カバンから Nintendo Switch が取り出されたのはもはや必然であったと言える。

事前にやったこと

  • 使用言語を決める
    • 今年は PHP でやることにした
  • プロファイリングの素振り
    • アクセスログ: alp
    • アプリケーションコード: Blackfire
    • スロークエリ: pt-query-digest
  • 当日使うリポジトリなどの準備
  • 開始直後にやる作業の整理・スクリプトを書いて自動化

特に変わったことはしていない。

当日にやったこと

f:id:hoto17296:20171022225830j:plain

開始直後

  • ルールを把握する
    • 当日マニュアルを読む
    • アプリケーションを動かす
    • 構成を把握する
  • 作業環境を整える
    • アプリケーションをバージョン管理する
    • 言語実装を切り替える
    • 各種プロファイラを入れる

ここまでで1時間。

もっと早く出来たような気がしなくもない。

戦略を立てる

  • とりあえず /icons/* をなんとかしないと話にならない
  • /fetch は扱いが特殊っぽいので試行錯誤
  • Nginx, MySQL のパラメータチューニング
  • スロークエリを潰していく

あたりをやっていくことに。

/icons/* を倒しきれず死亡

/icons/* を倒す戦略としては主に以下の3つを試みた。

  1. データを返さない
    • 画像がデカいのでそもそも毎回データを返したくない
    • 304 Not Modified を返してよろしくやりたい
    • この時点で Cache-Control を思いつかなかったのが悔しい
  2. Varnish を立ててキャッシュする
    • 画像リクエストは Nginx と php-fpm の間に Varnish を挟む
    • サーバ再起動時にキャッシュデータを配置してから Varnish を起動する
  3. MySQL のリードレプリカを作って負荷分散させる
    • Master DB サーバ以外の2台を Slave サーバにした
    • 画像はすべて Slave から読むようにアプリケーションを修正

結果的には Varnish のキャッシュしか効果がなかった。

304 を返すのは、クライアントから If-Modified-Since ヘッダが送られてきてなかったので不可。

MySQL のリードレプリカは、ベンチマークのアクセス速度に対してレプリケーションが追いつかずに fail 連発してボツ。

Varnish + その他チューニング色々積み重ね で 20,000 点を超えたあたりで時間切れで終了。

まとめ

決勝行ったチームを見ていると「/icons/* を倒したあとに見えてくるボトルネックをどう倒すか」で争っているようなので /icons/* を倒せなかった時点で決勝進出争いの土俵にも上がれなかった模様。

キャッシュまわりの知見が足りなさすぎたのが敗因と言える。

ぐぬぬ・・・。

圧倒的感謝

今年も良い問題でした運営の皆さんありがとうございます 🙏 🙏 🙏

おまけ

終了1時間前から「スプラトゥーン2で残り1分になったときのBGM」を流していたけど、だいぶ焦燥感があってよかった。 オススメ。

f:id:hoto17296:20171023010821j:plain

機械学習用の GPU マシンを組んだ

4ヶ月前にこんな Qiita を書いた。

qiita.com

しかし自宅に GPU マシンを組んだとしても四六時中計算し続けるわけでもないからもったいないし、ここはクラウドサービスを活用して安く済ませたい。

とは言ったものの普通に学習回すと月1,2万は飛んでいくし、これもう普通に GPU マシン組んだほうが良いのでは、となったのでやっていくことにした。

結論からいうとベアボーンキットを買ってメモリと SSD を挿しただけなので「組んだ」というのはちょっと微妙なんだけども、自作 PC とか全然慣れてないなりにあれこれ悩んだログとして書いておく。

GPU はどれがいいか

Tesla V100 欲しい!

GPU がメインなのでまずは GPU から選ぶ。

候補としてはこのへん。

GPU 種類 価格帯 CUDA コア数 メモリ メモリバス SLI
GTX 1080 Ti 10 万くらい 3584 GDDR5X 11GB 352bit
GTX 1080 8 万くらい 2560 GDDR5X 8GB 256bit
GTX 1070 5 万くらい 1920 GDDR5 8GB 256bit
GTX 1060 4 万くらい 1280 GDDR5 6GB 192bit

GTX 1080 Ti は高いけど手が届かない価格帯ではない。

でも機械学習する場合は計算リソースよりもメモリのほうがすぐキツキツになるので、1080 Ti 買うよりは 1070 を二枚挿して SLI 構成1にしたほうがメモリを増やせて良い。 だたし二枚挿すと消費電力がかなりいくので、あらかじめ容量大きめの電源を買っておく必要がある・・・。

そういう意味だと 1060 は SLI 対応していないので選択肢からは外れる。

まぁ 1070 が無難っぽい。 一枚買っておいて足りなければもう一枚追加すればいい。

マザーボードとかケースとか

休日に秋葉原行ってマザボとかケースとかを見て回った。

え、デカくない?

自作 PC 勢ってみんなあんな巨大なやつ自宅に置いてるの? 正気???

MicroATX サイズのケースでもだいぶデカい。
できれば MiniITX サイズで組みたいけど、それだと GPU 二枚積むのは無理ぽい。

もはや GPU 二枚積めなくていいから Intel NUC くらいコンパクトなやつねーかなー、と無茶なことを考えながらググってたら、ZBOX EN1070K という GPU 積んでるコンパクトなやつを発見した。

GTX 1070 + Core i5 積んでるし、もうこれでええやんけ。

「拡張性ゼロ」という強烈なデメリットがある けど、「コンパクトなやつが欲しい」という欲求の方が勝ったのでこれを購入した。

米 Amazon.com から輸入

日本で買うと ZBOX 単体で18万円くらいで、さらにベアボーンキットなので SSD とメモリを買う必要があって、そうするとどうあがいても20万円は超える。

Amazon.com 見たら $1,100 くらいで売ってたのでこっちから購入。

SSD とメモリも一緒に買って、送料と関税込みでトータル 18万円くらいで済んだ。

ただしアメリカ版を買うと電源プラグがアメリカ仕様 (3ピン) なので注意。2

SSD とメモリ

ZBOX EN1070K は m.2 と SATA の SSD をそれぞれひとつずつ挿せる。

今回はとりあえず m.2 買って OS 入れておいてデータ保存場所が足りなくなったら SATA のやつ買って追加すればいいか、と考えてとりあえず m.2 SSD 250 GB だけ買った。

メモリスロットは DDR4 2400/2133 S.O.DIMM x 2 で、最大 32 GB とのこと。

とりあえず MAX 積んでおくか、という雑な感じで 16GB x 2 を買った。

届いた

ちゃんと届くか不安だったけど、二週間くらいで普通に届いた。

f:id:hoto17296:20171012211941j:plain

テンション上がる。

組み立てる

以下の記事がすげー詳細に書いてあって参考になった。

手の平にハイエンドPCを! 「MAGNUS EN1070 / EN1060」を比較レビュー : 自作とゲームと趣味の日々

最初メモリの取り付け方をミスって起動できなくて焦った。

ちゃんと斜め45度から挿してから倒す、ってやらないとダメなんだな・・・。

Ubuntu 16.04 を入れる

「BIOS はもう古い、時代は UEFI !!!」

みたいなのを耳にしてたので「ちゃんとインストールできるだろうか...」と震えていたけど、普通に minimal の ISO を USB に焼いて挿したらインストールできた。

ちなみにデスクトップ版も試したけど、むしろこっちのほうが面倒だった。 NVIDIA の GPU が載ってると GUI が起動できないので、カーネルオプションで nomodeset を指定する必要がある。

qiita.com

機械学習するのに GUI は要らないので、何も考えずに minimal をインストールするのがいい。

Wake on LAN の設定をする

機械学習用マシンは常時使っているわけではないので、使ってないときは電源落としておきたい。

自宅に要るときは電源ボタンを押せばいいけど、外出中にリモートで自宅のマシンを起動したいという場合には Wake on LAN を使うとできる。

ZBOX は Wake on LAN に対応していて、UEFI の設定画面から Wake on LAN の設定を切り替えるだけで有効にできた。

あとは電源が落ちている ZBOX に対して Wake on LAN パケットを投げつけると起動してくれるのだけど、VPN 経由でリモートからパケットを投げるときにちょっと苦労した。

qiita.com

学習環境を作る

あとは冒頭の Qiita に書いたのとほとんど同じ。

qiita.com

P2 インスタンスを使っていたときは Tesla K80 だったのでドライバは nvidia-375 を入れたけど、今回は GTX 1070 なので nvidia-367 を入れる、という点だけ違う。

Mackerel で GPU 温度を監視する

コンパクトさが欲しくて ZBOX にしたとはいえ、排熱効率が悪くて GPU 温度が上がりまくったらどうしよう...という不安はある。

なので、とりあえず Mackerel で監視することにした。

mackerel.io

GPU の温度を Mackerel に飛ばすのどうやってやるんだろう、と思ったら公式のプラグインに NVIDIA GPU を監視するやつがあったので楽勝だった。

mackerel-agent-plugins/mackerel-plugin-nvidia-smi · GitHub

あとは、Mackerel の監視設定で GPU 温度が一定以上になったら自宅の Slack に通知が飛ぶようにする。

雑にググったところ 80℃ くらいまでは問題ないっぽいことがわかったので

  • 80℃ で Warning
  • 100℃ で Critical

に設定してみた。

これで一安心。

ベンチマーク

Qiita の記事と同じく、NVIDIA Docker のコンテナ上で Keras の MNIST CNN のサンプルを実行した。

root@(container):/# python3 mnist_cnn.py
Using TensorFlow backend.
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11255808/11490434 [============================>.] - ETA: 0sx_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-10-09 09:23:35.248521: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-09 09:23:35.248540: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-09 09:23:35.248546: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-10-09 09:23:35.248565: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-10-09 09:23:35.248570: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
2017-10-09 09:23:35.405920: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-10-09 09:23:35.406452: I tensorflow/core/common_runtime/gpu/gpu_device.cc:955] Found device 0 with properties:
name: GeForce GTX 1070
major: 6 minor: 1 memoryClockRate (GHz) 1.645
pciBusID 0000:01:00.0
Total memory: 7.92GiB
Free memory: 7.83GiB
2017-10-09 09:23:35.406466: I tensorflow/core/common_runtime/gpu/gpu_device.cc:976] DMA: 0
2017-10-09 09:23:35.406471: I tensorflow/core/common_runtime/gpu/gpu_device.cc:986] 0:   Y
2017-10-09 09:23:35.406477: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
60000/60000 [==============================] - 7s - loss: 0.3325 - acc: 0.9000 - val_loss: 0.0779 - val_acc: 0.9755
Epoch 2/12
60000/60000 [==============================] - 5s - loss: 0.1147 - acc: 0.9661 - val_loss: 0.0542 - val_acc: 0.9830
Epoch 3/12
60000/60000 [==============================] - 5s - loss: 0.0872 - acc: 0.9741 - val_loss: 0.0433 - val_acc: 0.9858
Epoch 4/12
60000/60000 [==============================] - 5s - loss: 0.0742 - acc: 0.9778 - val_loss: 0.0383 - val_acc: 0.9870
Epoch 5/12
60000/60000 [==============================] - 5s - loss: 0.0628 - acc: 0.9814 - val_loss: 0.0361 - val_acc: 0.9878
Epoch 6/12
60000/60000 [==============================] - 5s - loss: 0.0585 - acc: 0.9828 - val_loss: 0.0352 - val_acc: 0.9882
Epoch 7/12
60000/60000 [==============================] - 5s - loss: 0.0517 - acc: 0.9847 - val_loss: 0.0355 - val_acc: 0.9883
Epoch 8/12
60000/60000 [==============================] - 5s - loss: 0.0480 - acc: 0.9855 - val_loss: 0.0312 - val_acc: 0.9892
Epoch 9/12
60000/60000 [==============================] - 5s - loss: 0.0432 - acc: 0.9871 - val_loss: 0.0314 - val_acc: 0.9901
Epoch 10/12
60000/60000 [==============================] - 5s - loss: 0.0423 - acc: 0.9872 - val_loss: 0.0323 - val_acc: 0.9893
Epoch 11/12
60000/60000 [==============================] - 5s - loss: 0.0390 - acc: 0.9880 - val_loss: 0.0284 - val_acc: 0.9905
Epoch 12/12
60000/60000 [==============================] - 5s - loss: 0.0398 - acc: 0.9883 - val_loss: 0.0294 - val_acc: 0.9900
Test loss: 0.0294402698388
Test accuracy: 0.99

あれっ AWS P2 インスタンスより速くない???

P2 インスタンスだと 1 epoch あたり 9 秒だったのが 5 秒で終わる。

Tesla K80 のほうが良い GPU なのになぜ・・・?
クラウドサーバだと GPU との I/O が遅かったりするんだろうか。

謎だけどまぁ速くなったのでよし。

f:id:hoto17296:20171014132309p:plain

ベンチマーク回してたときの GPU 温度はこんな感じ。
最大 67℃ だったのでこの程度なら楽勝。

あとは長時間回したときにどこまで上がるかなーというところが気になるけど、未検証。

まとめ

  • 機械学習するために自宅に GPU マシンを買った
  • ベアボーンキットだと拡張性を失う代わりにコンパクトさを手に入れられる
  • GTX 1070 でもなぜか AWS P2 インスタンスの Tesla K80 より学習が速い

自宅に機械学習環境を作りたい人にとって割とアリな選択肢だと思うので、パーツ選びを始める前にこっちも検討してみてはいかが。


  1. 複数枚の GPU を繋げられるやつ。SLI ブリッジと SLI 対応のマザーボードを使う必要がある。

  2. 我が家は電源タップが3ピン対応だったので特に問題はなかった。愛三電機の電源タップは良いぞ。

BeatsX を半年使った感想

もともと Beats というブランドはあまり好きではなかったんだけども、正直 BeatsX は買って良かった。

Beats by Dr.Dre BeatsX Bluetoothイヤホン ブラック MLYE2PA/A 【国内正規品】

Beats by Dr.Dre BeatsX Bluetoothイヤホン ブラック MLYE2PA/A 【国内正規品】

BeatsX 超ざっくり概要

  • Beats は、デザイン重視な高価格帯ヘッドホンなどを展開しているオーディオ機器ブランド
  • 2014年、Apple が Beats を買収
  • 2016年9月、Apple が完全ワイヤレスイヤホン AirPods (通称"うどん") を発表
    • 同時にワイヤレスオーディオ用チップ W1 が搭載されていることを発表
  • 2017年2月、Beats から Apple W1 チップを搭載したワイヤレスイヤホン BeatsX が発売
    • W1 チップ以外にも今までのイヤホンに無い真新しい要素が多かった (後述)

完全ワイヤレスじゃない方がいいこともある

同時期に発売されたうどんも検討したけどやめた。

APPLE AirPods  MMEF2J/A

APPLE AirPods MMEF2J/A

「充電の持ちが悪い」とか「音が途切れる」とかはそれほど問題ではなくて、サッと外して首にかけておくことが出来ないのが不便。

イヤホンは仕事中によく使うので、話しかけられる度に外して机に置くなり仕舞うなりするのが面倒そうで、完全ワイヤレスは躊躇してしまった。

巷では「これからは完全ワイヤレス」みたいに持て囃されているけども、ヒモがあるからこそのメリットもある。

ところで「完全ワイヤレス (英語圏だと True Wireless)」という呼称、本当にダサいと思うので誰かもっとマシなやつ考えてくれないかな。

ハウジング同士が磁石でくっつくの便利

普通のイヤホンは首にかけて歩くとブラブラ揺れて鬱陶しいけど、BeatsX はハウジング同士が磁石でくっつくので驚くほど揺れない。

揺れないだけでこんなに快適だとは思わなかった。

なんで今までこういう製品なかったのか。

Lightning ケーブルの恩恵はデカい

充電めちゃ早い。 本当に5分の充電で1時間以上保つので、残り少なくてもサッと充電して持ち出せる。

あと、イヤホンのためだけに MicroUSB ケーブルを持ち歩く必要がなくなったのも地味に嬉しい。 スマホが Android の人だとケーブルが増えるのでそういう意味ではデメリットになってしまけども。

音質はまぁ良いのでは (?)

そんなに耳が良くないので音質が良いか悪いかは知らん。

少なくとも BeatsX を買う前に使っていた Backbeat Go 2 よりは間違いなく良い。 価格帯が全然違うので比べるのもおかしいのだけど。

ちなみに Backbeat Go 2 は 5000 円以下のワイヤレスイヤホンの中では最強のコスパを誇るので、これはこれで良いイヤホン。

その他メリデメ

  • [○] iPhone とのペアリングが簡単
    • 確かに一瞬でペアリングできた
    • 最初の1回だけのことだしそんなに恩恵受けてない
    • Mac との切り替えも楽らしいけどやったことない
  • [△] 専用ケースへ収納するのに慣れが必要
    • 箱に書いてある収納方法でいいんだけども、これが最初は難しい
    • 慣れるとむしろ他のイヤホンケースよりも便利
  • [×] 電源ボタンが固い
    • ちゃんと押せてるのかどうかわかりづらい
    • 電源オンオフが「長押し」なので、3秒押してから「あれ、押せてなかった???」ってなるのストレス

まとめ

「イヤホンって音質以外にもこんなに改善できる余地があったんだなぁ」 というのが一番の感想。

少なくとも iPhone 使ってる人にはかなりオススメできる。

「良いイヤホンには1万円以上出してもいいぞ」という人は是非どうぞ。

Beats by Dr.Dre BeatsX Bluetoothイヤホン ブラック MLYE2PA/A 【国内正規品】

Beats by Dr.Dre BeatsX Bluetoothイヤホン ブラック MLYE2PA/A 【国内正規品】

クラウドソーシングでアイコンを描いてもらった

もう一ヶ月も前のことだけど、クラウドソーシングでアイコンを描いてもらって各種 SNS のアイコンを変えた。

f:id:hoto17296:20170815032629p:plain

アイコンを変えたいと思った理由はふたつあって、

ひとつは Twitter が丸アイコンになったこと。
もともと「アイコンは四角いもの」という想定で作ったアイコンだったのに、 何故か去年くらいから丸アイコンが流行りはじめ、とうとう Twitter まで丸アイコンになってしまった。 四角に最適化されたアイコンが丸くクロップされた様子ほどダサいものはない。つらい。

もうひとつは版権的にグレーだったこと。 前のアイコンは某アニメの公式が「SNS アイコンとして使っていいよ」と配布していたもの1 (を改変したもの) で、 SNS アイコンとして使うならまだしも、イベントでトークするときとかにそのアイコンで自己紹介するのはなんとなく気が引ける思いがあった。

なんでクラウドソーシングにしたか

SNS アイコンって自分は割とこだわりがあって、 自分自身を表現するものとして自分がしっくりくるものしか使いたくないという気持ちがある。

依頼したら描いてくれそうな知人とかも思い当たらないことはなかったけど、 もしイメージと違う感じだった場合に何度も修正してもらうのも気が引けるし、 「イメージと違うから使わんとくわ」というのも申し訳ない。

どんな凄腕クリエイターの人でも自分の納得いくイラストを描いてくれるとは限らないし、 誰か特定の人に依頼するよりも色々な人に提案してもらえるコンペ形式が良いなと思ってクラウドソーシングを使うことにした。

自分で作れないものを依頼するのは難しい

そんなわけでクラウドワークスで 3 万円のコンペを出した。

金額設定は割とテキトーだったんだけど、 長期的に自分のアイデンティティとして使える良いアイコンを描いてもらえるなら 3 万円くらい出せるでしょ、という気持ちで決めた。2

依頼内容はだいぶ考えて書いた。

だって、自分で描けないからこそ依頼しているわけで、 自分でもイメージしきれていないものを文章で表現して依頼するというのは本当に難しい。

だからこそ「どういう用途で使いたい」とか「どういう雰囲気が好き/好きではないか」とかは誤解のないようによく考えて丁寧に書いたし、「こういう雰囲気は好き」「こういうのは違う」という参考例をいくつも挙げたりもした。

それが実際に功を奏したのかどうかはよくわからん。

結果

一週間で 50 件の提案をいただけた。

いや、50 件って。

コンペ募集したのはこれが初めてではないので予想はしていたけど、やっぱ実際にこれだけ集まると驚く。 クラウドソーシングすごいしインターネットはヤバい。

選定に悩むかと思っていたけど「え、いやもうコレでしょ」というレベルの提案がひとつだけあったので、全く悩むことはなかった。

crowdworks.jp

ちなみに描いていただいたのはこの方です。ありがとうございました 🙇

まとめ

結果的に良いアイコンに変えることができたのでよかったよかった。

個人でクラウドソーシング発注する人ってまだあまり見たこと無いけど、もっと活用していくと面白いんじゃないかと思う。


  1. 前のアイコン、あれ実はカエルじゃなくてタヌキだよ

  2. 最悪、良い案が出なかったとしても「俺は Nintendo Switch を盗まれて買い直して3万失ったんだ…」と自分に言い聞かせよう、くらいの覚悟はあった。

AWS の認定資格 (SAA) を取得した

AWS の認定資格を取ったら会社が受験料出してくれると言うので、ソリューションアーキテクト - アソシエイト (SAA) を受験して、合格した。

問題内容については書いちゃダメらしいので、それ以外のことについて書く。

AWS 認定資格 とは

取得すると「ワタシ AWS チョットデキル」と名乗れる AWS 公式の資格。

2017年7月時点だと

  • ソリューションアーキテクト
  • 開発者
  • SysOps アドミニストレーター

の三種類があり、それぞれについて

  • アソシエイト
  • プロフェッショナル

の二段階のレベルがあるので、全部で 6 つある。

AWS 認定 – 認定の種類

種類の違いはよくわからなかったので、とりあえず「ソリューションアーキテクト」の簡単な方 (アソシエイト) を受験することにした。

申し込み

アソシエイトレベルの受験料は 16,000 円くらいする。 そんなに安くはないし、合格できなかったらヘコむ金額。

申込みは AWS 認定のサイト から行う。 日本での認定試験は Kryterion という会社が行っているらしく、申込みを進めると Kryterion 社のサイトに飛ばされるのだが、このサイトがまぁわかりづらい。

f:id:hoto17296:20170711190525p:plain

「試験のお申込み」リンクが右上にあることに気づくまでかなり探し回った。 絶対にクリックされるリンクなのにこんなわかりづらいとこに配置するとかなんの嫌がらせだ。

試験会場は全国にあり、さらに東京は会場が多いのでかなり選べる。 テストセンターみたいなところで受験するので、都合のいい日時に予約すればよい。 いつでも好きなタイミングで受験できるのは便利。

勉強方法

もし勉強方法が知りたくてこのエントリを読んでいる人がいたら申し訳ない。 後述する模擬試験を1回受けただけで、ほとんど勉強していない。 「AWS に慣れてる人なら勉強しなくても受かる」みたいな話を耳にして高をくくっていた。

ちなみに、良い参考書は無いらしい。 出題対象 (AWS のサービス群) は更新が激しいので、参考書があったとしても情報が古くなっていて使いものにならないとのこと。

公式ドキュメントを読んだり公式のトレーニングをやるのが良いと思う。

模擬試験

模擬試験は一回やった。

  • 本試験と同じところから申し込める
  • オンラインで受けられる
  • 一回につき 2000 円くらいかかる
  • 本試験の3分の1くらいのボリュームの問題が出題される
  • 結果は総合得点と問題カテゴリごとの得点が表示されるのみ
    • どの問題が正解だったか等は知ることはできない

自分の苦手カテゴリを知るとか、試験の雰囲気を感じるためだけの模擬試験だと思ったほうが良さそう。

本試験

80分はそれなりに疲れたけど、プロフェッショナルレベルは180分らしいのでそれに比べたら全然大したことはない。

終わったあとにアンケートみたいなのにポチポチ答えていたら突然結果の画面が表示されてビビった。 風情がない。 せめて「次のページで結果発表です!」くらい溜めてくれてもええんやで・・・。

得点率は 70% で、合格ラインが 65% くらいと言われているので全然余裕ではなかった。

まとめ

AWS 認定資格のアソシエイトレベルは、AWS で本番サービスの構築・運用をやったことがある人であればそんなに難しくない。

取得してドヤっていきましょう。

YAPC::Fukuoka に参加した

YAPC::Fukuoka に行ってついでに福岡観光してきた。

yapcjapan.org

九州初上陸

どうやら福岡が暑いわけじゃなくたまたま全国的に猛暑だっただけらしいが、とにかくアホほど暑かった。 死ぬかと思った。

※ 福岡空港駅 → 東比恵駅 → 博多駅

「福岡は空港から博多まで一駅だから便利」 って僕に吹き込んだ人誰ですか!!

怒らないから名乗り出てください!!!!! (怒)

ギリギリ朝10時に間に合う飛行機で行ったので、これをやらかして普通に遅刻した。

本編

面白いトークはいくつもあったけど、個人的に一番学びがあったのは id:udzura さんのコンテナの話だった。

speakerdeck.com

最近 Docker をいたるところで使っていて便利だなーーーと思いつつもコンテナという技術の仕組みをそれほど理解していなかったので、Perl でコンテナを実装しながら理解するという内容はとてもタメになった。

自分でもコンテナを実装してみたくなったので、懇親会で id:udzura さんをつかまえてあれこれ質問しまくってしまった。 id:udzura さんありがとうございました 🙇

観光

いろいろ食べたけど、特にこの「元祖博多めんたい重」はめちゃくちゃ美味しかった。

この ごはん+明太子 オンリーで約 1,800 円と決して安くはないんだけども、次に福岡来たらまた食べてしまう気がする。

博多から1時間くらいで行ける相島というところに行った。

「猫の島」と聞いていたが、それほどうじゃうじゃいるわけではなかった。 それなりにたくさんはいる。

猫も暑さでひからびていた。

島の猫は人間に慣れていてすぐ寄ってくるので にゃーん したい人にはオススメ。

まとめ

YAPC::Kansai に引き続き YAPC::Fukuoka もおもしろかった。

id:papix ならびにスタッフの皆さんおつかれさまでした!!

YAPC::Okinawa も行くぞ!!!