雑記ログ(2017年1月〜6月)

概ね足は・・・治ったかな?

1週間前に足を怪我してから整骨院が開いている日は毎日通って足を冷却とチェックを行ってもらい、できるだけ早く回復出来るように心がけていましたがその甲斐あってか概ね痛みは無くなりました。今後は固定を外し、3週間ほど経過して痛みが再発しなければ完治したという認識で良いらしいです。

一時はどうなるかと思いましたがちゃんと直るようで良かったです。

足怪我した

捻挫しました。昨日の夜足を挫いてしまい翌朝には痛みが増して普通の歩き方が出来ない状態だったので「これは放っておいたらダメだ」と判断して整骨院で診てもらうと捻挫していたとのこと。冷却と固定をしてもらい、しばらく様子見をすることに。来れる限り毎日整骨院に行って冷却や状態のチェックを行い、1週間経過して痛みがなくなれば固定を外し、1ヶ月経過して痛みが再発しなければ完治したと考えて良いとのこと。しばらくは足を固定した状態で生活しなければならないのはしんどいですがこればっかりはどうにもならんのでどうにか耐え忍ぶことにします。

スパロボVやってる

今スパロボVやってます。ゲーム機でゲームするの久々だったり。第3次Zは買ってはいたのですが結局積んだままという。どれくらい積みっぱなしかというと早いうちに買って特典を入手可能だったにもかかわらずそのまま特典を獲得せず期限切れを迎えたくらい。なもんで古いスパロボしかやってなかった自分にとっては色々システム違いすぎて正直戸惑ってます。ほぼいつでも精神コマンドが使えるというのは新鮮でした。

現時点では20話付近。1日1話時々2話くらいのペースで進めてます。来月には1週目は終わると思います。ただ現状問題があってPSVita本体の右側のアナログスティックが壊れ気味でMapの回転は出来るんだけれども拡大縮小が効かないという。かと思えば勝手にMapが縮小されて最終的にはユニットが非常に小さくて操作しづらいところまで行ってしまうので新しくしてしまうか考え中。

早解きはやりませんよ?最新作なんだからやる人なんてそれなりにいるでしょうし。万が一やったとしてもギリギリまで詰める様のはやらないです。どれだけ時間かかるか分かったものではないですし。

1日1話時々2話くらいのペースで進めてます。来月には1週目は終わると思います。ただ現状問題があってPSVita本体の右側のアナログスティックが壊れ気味でMapの回転は出来るんだけれども拡大縮小が効かないという。かと思えば勝手にMapが縮小されて最終的にはユニットが非常に小さくて操作しづらいところまで行ってしまうので新しくしてしまうか考え中。

Ryzen来ましたわー!

ついにAMDの新CPUのRyzenが登場しました。といってももう2週間近く経っているのですがここ最近風邪で家にいるとき何かする気力が湧かなかったものであまり情報収集が出来ていませんでした。

今月3日に発売されたのは8コア16スレッドの上位のRyzen7の3種となっています。下位となるRyzen5については来月11日らしいです。おそらくアメリカ時間なので日本時間だと12日になると思われます。既に発売されているRyzen7と来月出るRyzen5のラインナップは次の通りです。

モデルナンバー コア/
スレッド数
周波数
(GHz)
付属クーラー TDP 価格
(USD)
価格(税込)
(JPY)
Ryzen 7 1800X 8/16 3.6-4.0 なし 95W $499 64500
Ryzen 7 1700X 8/16 3.4-3.8 なし 95W $399 50000
Ryzen 7 1700 8/16 3.0-3.7 Wraith Spire 65W $329 42000
Ryzen 5 1600X 6/12 3.6-4.0 なし 95W $249 33000
Ryzen 5 1600 6/12 3.2-3.6 Wraith Spire 65W $219 30000
Ryzen 5 1500X 4/8 3.5-3.7 Wraith Spire 65W $189 26000
Ryzen 5 1400 4/8 3.2-3.4 Wraith Stealth 65W $169 23000

TDP95Wの1800X,1700X,1600Xはクーラーが付属しないので別売りのクーラーが必要になります。ただRyzenで使用されるソケットのAM4は既存のクーラーが使えない場合があるので別売りのクーラーを使用する場合、AM4に対応しているか調べる必要があります。

性能については従来のAMDの弱点だったシングルスレッド性能がほぼ解消され、マルチスレッドは最上位の1800XがCore i7 6900Kと良い勝負が出来るくらいの性能はあるようです。もちろん設計の違いがあるので処理によっては大きく差を付けられてしまうものもありますが非常に強力なCPUであることは間違いありません。マルチコアが生きる動画のエンコードとかソースコードのコンパイルを頻繁に行う人であれば大きな恩恵があるでしょう。シングルスレッド性能については流石に最大で4Ghzを大きく上回るi7 7700Kには及びませんが。

IntelのCPUと比較した場合のメリットは何と言ってもコストパフォーマンスでしょう。現行のIntelのCPUは6コア以上だとCPUの価格もそうですがマザーボードの価格も跳ね上がるためIntelで6コア以上のCPUとなるとトータルのコストはかなりのものになりますがRyzenだと安いものだと1万円台前半のマザーボードも使えるためあまり色々付けたりしないのであれば低コストで8コア16スレッドの恩恵を受けることが可能です。上で1800Xとの比較で出てきた6900KはCPUだけで現在12万円台後半から13万円台前半くらいの価格なんでコストパフォーマンスが抜群であることが判るでしょう。また、もちろんメモリ沢山積みたいとかグラボ沢山積んだりとかNVMeのSSDを複数使いたいとかだとIntelのLGA2011環境が優位ではありますが。

現状での欠点はマザーボード含めて入手性に難があること、そのマザーボード絡みで大きなトラブルが報告されていること、能力を生かせないソフトがあることでしょうか。現在出ているRyzen7のラインナップでは1700、1800X、1700Xの順で人気なようで特に1700と1800Xは品切れになっていることが多いみたいです。1700はこの中で一番安価でクーラーも付いているので一番お手軽に8コア16スレッドの恩恵を受けられる上にオーバークロックをすれば上位を食うことも可能なため非常に人気なようです。なので買おうとしてもそれなりに待つことになる模様。マザーボードについてはそもそもモデルに関係なく数が少なくマザーボードを妥協するか欲しいのが入荷されるのを待つか選ばなければならないという状況です。また、出始めということも有りBIOSが発展途上でやや安定性に欠けるところがあるので人柱上等という人以外は現状は様子見が正解だろうとは思います。こういったトラブルもありましたし。まあ、1,2ヶ月くらいすれば安定してくるのではないでしょうかね。

対応ソフトについては最適化に関しては近年あまり大きく構造が変わっていないIntelのCPUと違ってこれまでの構造を捨てたRyzenは最適化の面で不利なのは仕方ないことです。ゲームに関してはSMT(IntelCPUのHyperThreadingの様な機能)を無効にした方がパフォーマンスが出ることもあるようです。これに関してはIntelのCPUでもかつてHyperThreadingを無効にした方がパフォーマンスが出るということがよくあったので今後も更新されるようなソフトであればそのうち対応されるのではないですかね。古いコンパイラを使っているとかインテルのコンパイラを使っているとかでなければ。

正直性能面は予想以上に良好だったので現在のメインマシンのCPUがFX-8350の自分にとっては非常に魅力的な一品なので遠くないうちに移行を考えています。現状ではVega待ちといったところです。

WebPを使いこなしてみたいと思った

今年からうちのサイトの一部画像にWebPの導入を始めました。導入するに当たってはこれまではWebPconvを使っておりました。一度に多数の画像を変換できますしファイルサイズがどれだけ変わったかも判るんで便利です。便利なのですが変換に使用しているwebpのバージョンが0.4.3と先日出たばかりの最新版の0.6.0と比べると幾分古く、また作者ブログによると今後の更新も見込めそうにないのでどうしようか考えた結果最新版を使えるGoogle公式ツールを使うことにした。まあ、無理して最新版使うこともないんですがね。バージョンアップでwebpのファイルサイズが劇的に減らせるならともかくそれはないでしょう。多少は減ってくれるかも知れないですが多少減ったところで通常は使いやすいソフトを捨ててまでやることではないです。それに画像ファイルのサイズを限界まで減らす事に拘りだしたら今度はHTMLファイルのサイズも減らさずにはいられなくなってしまいそうだし。今のHTMLファイルは改行とかタブによるサイズ増加が結構ありますし。まあ、改行タブを取り除くよりgzip圧縮した方がサイズは遥かに減るのでその方が良いでしょう。

話が逸れました。WebPの話に戻ります。最新版のWebP関連ツールはこのページからダウンロードします。今回はPrecompiled WebP utilities and libraryの中にあるcwebpを使って画像ファイルの変換をします。cwebpはコマンドラインツールなのでコマンドプロンプトやらターミナルやらに拒否反応示す人には向きませんがね。使う場合、cd /dと入力した後半角スペース入れてプロンプトのウインドウにcwebpが入っているフォルダをドラッグ&ドロップして決定、cwebp -longhelpと入力して長々と使い方っぽいメッセージが出ればうまくいってます。

大まかなオプションについては以下のようになりますがすべては説明しません。自分も「どういうことなの・・・」なオプションが多いし画像を変換するだけなら不要なのも多い(情報表示系統とか)ので。

-h/-help/-H/-longhelp
使い方を表示。前二つは簡単な使い方を、後ろ2つは詳細な使い方が表示されます。もちろん英語です。
-o
後ろに出力するWebPファイルのファイル名を指定します。これを指定しないとファイルの圧縮作業は行われますがファイルへの出力が行われないため事実上必須です。
-preset
後ろに"default","photo","picture","drawing","icon","text"のいずれかを指定します。これを指定すると指定に応じて適切な設定がされるらしい。ただ、これを指定すると後述する画像変換設定の多くが無視される模様。ただ-qは指定できるので後述の-qと合わせて指定すれば大体事足りるみたいです。それにしても、photoとtextはなんとなく分かるものの他はどう使い分ければ良いんだろうか。
-lossless
変換後の画像をJPEGの様な非可逆圧縮ではなくPNGの様な可逆圧縮で変換します。変換前の画像がJPEGの様な非可逆圧縮だと返還後の画像のファイルサイズは大きく増大するようなのでPNGの様な可逆圧縮の画像ファイルに対し画質を劣化させたくない場合のみ指定すべきです。ただし画像で使用している色の数が少ないならばWEBPを使用するよりもOptimizillaの様なPNGの減色ツールを使った方がファイルサイズの減少には役立つと思います。これを使うのは写真の様な使用される色の数が非常に多くかつJPEGにして画質を劣化させたくなくさらにファイルサイズを減らしたいという場合くらいですかね。フルカラー同士であればPNGよりはファイルサイズを減らせるみたいですので。
-q
後ろに変換後の画質を0以上100以下で指定します。指定しない場合は75が使われるようです。小数点も使用できるようですが通常は整数だけで問題無いと思います。画質を高めようとすると当然ファイルサイズも大きくなります。画質とファイルサイズを決定するもっとも大きな要素です。通常はこれと前述の-presetさえ指定すれば十分だと思われます。-losslessオプションを使用した場合は数字が大きいほどファイルサイズを減らせるようになるみたいですが処理に時間がかかるようになります。
-alpha_q
画像の透過部分の品質を0以上100以下の整数で指定します。指定しない場合は100(ロスレス圧縮)が使われるようです。JPEG画像は画像の透過情報を持てないので指定する意味はありません。透過情報を持つPNGを変換する場合のみ指定する意味があります。通常は指定する必要は無いと思いますが。
-noalpha
これを使用すると画像の透過情報は失われます。普通は変換前が透過情報を持つ画像の場合、透過情報を持っていることが重要である場合が殆どだと思うので使うことはまず無いだろうとは思います。
-m
後ろに0以上6以下の整数を指定して画像圧縮の方法を選択します。指定しない場合は4が使われるようです。指定する数字が大きいほどサイズと画質の面では有利になりますが圧縮に時間がかかります。
-resize
後ろに画像の横幅と高さを指定して画像の大きさを変更します。どちらか一方の数字を0にした場合は画像のアスペクト比は維持されます。
-crop
画像の一部を切り取ってから変換を行います。後ろに切り取る部分の左上の座標のX座標、Y座標、幅、高さを指定します(例えば-crop 40 20 200 100と指定した場合、変換前の画像の一番左上から右に40ピクセル、下に20ピクセルの位置を基準として幅200ピクセル、高さ100ピクセルの範囲を切り取りその切り取った部分をWebPに変換します)。通常は使わないんじゃないかな~、数字だけではどの範囲が切り取られたかなんて分かりにくいし。
-size
後ろにバイト数の数字を指定し、そのファイルサイズに近づけるように圧縮を試みます。例えば100000を指定すれば100KBに近づけるようにします。
-psnr
後ろに目標とするPSNRを指定します。PSNRとは画像の非可逆圧縮においてどの程度元の画質を維持しているかを示す指標の一つです。多くの場合30から50程度の間に収まり、40あたり以上だと個人差にもよりますが元画質を十分維持しているというレベル・・・らしい。逆に30切るようだと元の画像と比較して明らかな劣化が見られるとか。あくまでも圧縮前の画像との相対的な比較なので数字が高いからといっても元の画像の画質が悪いと画質は悪いままです。数字が高いからといって元の画像より画質が良くなったりするわけではありません。-sizeと一緒に指定した場合は無視されるみたいです。
-pass
指定して圧縮を何回試みるか1以上10以下の整数を指定します。指定しない場合は6になるようですが-sizeと-psnrのどちらかを指定した場合のみ有効でどちらも指定しない場合は圧縮は1回のみです。複数回の圧縮を行うことで前述の-size及び-psnrの数字により近づけるようにします。
-sns
SNS(spatial noise shaping)機能をどの程度使用するか0以上100以下の整数を指定します。spatial noise shapingは画像の圧縮が簡単な部分と困難な部分をセグメントに分け、それぞれの圧縮率を最適化する機能らしいです。0の場合はこの機能を使用しません。指定しない場合は50になるようです。
-f
デブロッキングフィルターの強さを0以上100以下の整数で指定します。0の場合はフィルターを使用しません。指定しない場合は60として扱われるようです。数字が高いほど画像がなめらかになるらしいです。典型的な値は20から50とのこと。
-sharpness
0以上7以下の整数を指定します。フィルターを使用する場合のみ指定が有効となります。指定しない場合は0として扱われるようです。数値が小さいほどシャープになるとのことなんだけども・・・どういう風に違いが出るのか判らん。
-af
フィルタリングの強度の最適化を行います。使用するとより圧縮に時間がかかるようになります。
-metadata
後ろに"all","none","exif","icc","xmp"のいずれかを指定して画像の記録されているメタデータのうち何を残すかを指定します。省略した場合は"none"(全てのメタデータを削除)を指定されたものとして扱われるようです。全て残す場合は"all"を指定し、複数残す場合は半角カンマ「,」を使用して複数を指定します(例:-metadata icc,xmp)。基本的に削除しても画像本体のデータには影響しないのでネット上に上げる場合は全て削除した方がファイルサイズの軽減には役立ちます。Exifなんかは残っていると撮影時間や撮影場所のGPS情報が残っていたりするので尚のこと削除しておくべきです。記述しなければメタデータは削除されることになるのでこの指定は忘れても構わないですね。

慣れれば一応使えるようにはなりますが変換の度にコマンド入力するのはかったるいわけで、バッチファイルでも作ってそこに画像ファイルをドラッグ&ドロップで変換できるようにすればそこそこ楽になるでしょう。次のコードはバッチファイルの一例になります

cd /d "D:\tool\libwebp-0.6.0-windows-x64\bin"
cwebp -preset picture -q 70 %1 -o %~dpn1.webp

上のように書いたテキストファイルを用意して拡張子を.batにすれば準備完了で出来上がったbatファイルに変換したい変換に対応した画像ファイルをドラッグ&ドロップすれば同じフォルダにwebpファイルが出来上がります。1行目で作業フォルダの移動をします。上記の例ではcwebp.exeはD:\tool\libwebp-0.6.0-windows-x64\binの中にあるのでそのように指定していますが解凍したフォルダの場所が違えばそれに合わせる必要があります。次の行はcwebp.exeにコマンドを渡して変換作業を行う記述です。上記の例では-preset pictureと-q 70を指定してドラッグ&ドロップした画像ファイルをwebpに変換して変換前のファイルと同じ場所に出来上がったwebpファイルを出力します。変換の設定を変えたい場合、バッチファイルの中身を書き換えるよりも複数のバッチファイルを用意してそれぞれ異なる変換設定を記述しておけば使い分けが出来て良いと思います。例えばロスレス圧縮したい場合は次のようなバッチファイルを用意しましょう。

cd /d "D:\tool\libwebp-0.6.0-windows-x64\bin"
cwebp -lossless -q 100 %1 -o %~dpn1.webp

上記のバッチファイルの欠点は複数のファイルのドラッグ&ドロップには対応してないことです。ちょっとまだバッチファイル関連の知識が足りてないもので。もうちょっと調べてみることにします。

そして実際にWebPをサイトで使う場合、WebPは対応ブラウザが限られているので対策をする必要があります。自分のサイトで採用しているのはpicture要素を使用する方法です。picture要素を次の様に記述することでWebPに対応しているブラウザにはWebP画像、そうでないブラウザに対してはJPEGなりPNGなりを表示させるようにすることができます。

<picture>
<source type="image/webp" srcset="sample.webp">
<img src="sample.jpg">
</picture>

これはHTMLソースにちょっとだけ手を加えるだけで良いので簡単です。HTMLソースファイルのサイズは大きくなるのであまり小さすぎる画像に対してはWebPを使う必要も無いとは思いますが。

Ryzenには期待してる

今のデスクトップPCは今のパーツにしてから既に4年が経過しているのでそろそろ新しいのにしたいなとぼんやりと思っていたりします。まあ、それほどゲームとか重い処理をやっているわけではないので性能面で不満があるというわけではないのですが情報あさっているうちに欲しくなってきた次第。そんなわけで自分は最新のパーツ情報を追っているのですが現在自分は注目しているのはAMDのRyzenですね。現行のCPUとグラボの構成はFX-8350とRadeon HD 7750なので次もAMD構成にしようと考えてます。なんでIntel+NVにしないかって?定番過ぎて面白みがないからだよ!

RyzenはこれまではZenというコードネームで呼ばれていたAMDの次世代のCPUの製品名のようです。Zenは近年のAMDCPU(APU含む)の大きな弱点だったシングルスレッド性能を大幅に引き上げ、IntelのCPUと戦える(勝てるとは言ってない)程度にはなるようです。まあ、これまではAMDの2コアはIntelの1コア相当なんて言われてたんでそこから脱却できるくらいになるらしいと言うだけでも十分であるとは思ってますが果たしてどうなりますかね。

あけおめ&やっと終わった・・・

明けましておめでとうございます。今年もよろしくお願いします。よーーーーうやく、スパロボαの早解き記事群を完結させることが出来ました。長かったです。正直動画でのシリーズよりかかるとは思わなかった。もうちょっとで終わるのにモチベーションが全く上がらなくて正直辛かったです。2016年内に完成できなかったのが残念。年末のスケジュールが・・・え?それ以前の問題だって?はい。

あとスパロボとは関係ないですがうちのサイトにある画像の一部にWebPを導入してみた。まあ、元々PNGは減色ツール使ってかなりサイズ落としてるので恩恵あるのはJPEGくらいですがそのJPEGもそこまで大きな画像はあまりないんで効果はさほどでもないですね。それでもファイルサイズはJPEGの5割強から7割くらいにはなっていて画質もぱっと見ではほとんど違いがわからないので全く無意味ってことはないです。恩恵受けるにはChromeをはじめとしたBlinkレンダリングエンジンのブラウザでなければなりませんがChromeのシェアは現在ではかなり大きいのでそれなりに恩恵を受ける人は多いでしょう。恩恵と言っても読み込みがちょっと早くなる程度の微々たるものですが。webpに対応していないブラウザではJPEG画像が表示されるのでChrome等以外のブラウザだと画像が見えないということもないです。