風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

BIGLOBE光ネクストのv6プラス利用による通信速度改善について

furyu.hatenablog.com

で書いた通り、BIGLOBE光ネクスト ファミリー・スーパーハイスピードタイプ隼(NTT西日本エリア・最大1Gbps)にて、v6プラスを利用した際に速度改善効果が見られた。
これを IPv4 over IPv6 IPoE接続と、旧来のIPv4 PPPoE接続との、一日の通信速度変化を比較することで示す。

結果

2016/10/07 分

f:id:furyu-tei:20161008025125p:plain

IPv4 PPPoEでは、一日の間で通信速度の変動が激しく、特に00:00~01:30頃と18:30~24:00頃には数百Kbps~10Mbps程度にまで低下している。
一方で、v6プラスで提供されているIPv4 over IPv6 IPoEについては、一日を通して50~90Mbps程度の間であり、PPPoEと比較すると安定な水準にある。

[2016/10/15 追記] 2016/10/07~10/13 一週間分の結果

下記の記事参照。
furyu.hatenablog.com

[2016/11/29 追記] 平日と土日祝日の比較など

下記の記事参照。
furyu.hatenablog.com

測定条件など

環境

f:id:furyu-tei:20161010003054p:plain

条件
  • さくらのレンタルサーバ(スタンダード)上に、20MBのファイルを設置
  • Web サーバ(CentOS 6.x)上から、wget コマンドにて上記ファイルを10分間隔でダウンロードし、転送速度を記録
    IPv4 over IPv6 IPoE(eth1側)とIPv4 PPPoE(eth0側)とをrouteコマンドでGatewayを変更することにより切り替えている。また、それぞれの測定タイミングは5分ずつずらしている。
注意事項
  • さくらのレンタルサーバにおける帯域制限の影響については考慮していない。
    以前のデータ(2015/08/05~112015/08/12~18)と比較すると、PPPoEにおいても速度の上限はあがっている(~50Mbps→~90Mbps)ように見えるが、これが、さくら側の帯域制限緩和によるのか、それとも、ISP側の改善結果なのかは不明。

v6プラス関連の覚え書き

前の記事
furyu.hatenablog.com
がらみで調べたことなどをメモ書き。
あちこち間違っていると思われるので、識者の突っ込み歓迎。



フレッツ光ネクストの接続環境例

VNE(Virtual Network Enabler) 接続事業者のひとつであるJPNE(日本ネットワークイネイブラー株式会社)は、ISP向けに、NTT東西のフレッツ光ネクスト網(NGN)を利用するIPv6インターネット接続サービス及びv6プラス2014/07/01より提供している

これを使用した接続環境例を示す。

環境 1. IPv4 PPPoE 2. IPv6インターネット接続サービス 3. v6プラス
IPv6伝送方式 - IPv6 IPoE IPv6 IPoE
IPv6アドレス割当 - JPNEが保持するアドレスをNTT東西が割当 JPNEが保持するアドレスをNTT東西が割当
フレッツ・v6オプション加入
(NTT東西)
-
ホームゲートウェイ(HGW)によるMAP-E終端 - -
※IPv4 PPPoE関連機能は無効化される
IPv4伝送方式 IPv4 PPPoE IPv4 PPPoE IPv4 over IPv6(MAP-E)
IPv4アドレス管理 ISP
※エンドユーザ単位
ISP
※エンドユーザ単位
JPNE
※共有アドレス

なお、IPv6インターネット接続サービスおよびv6プラスは、BIGLOBE・@nifty等のISPからは、初期費用・利用料共に無料でエンドユーザ向けに提供されている。

1. IPv4 PPPoE接続時(IPv6インターネット接続サービス/v6プラス非加入時)

f:id:furyu-tei:20161007233703p:plain

  • グローバルIPv4アドレスはエンドユーザ(ルータ)毎に割当
  • ボトルネックがNGN~ISP間の相互接続点POI(Point Of Interface)にあり、ISPやサポート地域・時間帯等によって左右され、エンドユーザ毎のサービス品質に差異が出やすい
2. IPv6インターネット接続サービス加入時(BIGLOBE:『フレッツ光 IPv6接続』@nifty:『IPv6接続オプション』等)

f:id:furyu-tei:20161008001612p:plain

  • IPv4 に関しては、1. と同様の伝送形式(PPPoE)であり、同様のメリット/デメリットあり
  • IPv6関連の機能が、フレッツ・ジョイントにより HGW へと自動配信される
  • IPv4(ISP経由)とIPv6(JPNE経由)で経路は別
  • IPv6のグローバルアドレスは、PC等の端末単位で割当(HGWにはNGNよりDHCPv6-PDによりJPNEが所有するプレフィックスを持つIPv6アドレスが割り当たり、さらにHGWからのRAにより各端末にIPv6アドレスが割り当てられる(再分配))

3. の v6プラスと異なるのは IPv4 over IPv6接続関連のみであり、これは、HGWに対するMAP-E終端機能とIPv4関連機能の無効化が実施されるかどうかによると思われる。
実際、MAP-E(とDS-Lite)の終端機能があるバッファローのWi-Fiルータを使用する場合には、

※ BUFFALO製 WXR-1750DHP/WXR-1900DHP/WXR-1900DHP2/WXR-2533DHP/WXR-2533DHP2をご利用の方へ
本機器をご利用の場合は、「フレッツ光IPv6接続」をお申し込みいただくことで、v6プラスが利用できます。以下のサイトより手順通りにお申し込みください。
本ページでv6プラスのお申し込み手続きを行った場合、エラーメール(ErrorCode:E0009)が届き、v6プラス機能はご利用いただけません。

https://support.biglobe.ne.jp/ipv6/

という注意書きが見られる。
ただ、この推測が正しいとすると、HGWに設定されているIPv4 PPPoEの設定を手動でOFFにする必要がある気がするが、実際のところどうなのだろうか?

[2016/10/09追記]
考えてみると、ひかり電話に契約していない場合、そもそもHGWが無い場合が大半なのかな。
そうすると、ONUにサードパーティ製のMAP-E対応ルータを直結する形なので、

  • HGWそのものが存在しないため、v6プラス設定時のフレッツ・ジョイントによるHGWへの設定は失敗する(→エラーメールが返る)
  • 「IPv6インターネット接続サービス」の場合、MAP-E終端はサードパーティ製のMAP-E対応ルータが行うことで、結果的にv6プラス相当機能となる

ということなのかも知れない。
ただ、MAP-Eの場合には、CPE(ルータ)側でNAPTを実施するので、CPEに予めグローバルIPv4アドレス(共有)+NAPT利用可能なポート番号のセットを割り当てておく必要があると思うのだけれど、これをフレッツ・ジョイントでやっているとすると、つじつまが合わなくなってしまう……うーん、今一つよくわからない……。
→違った、NTT東西がNGNからJPNEの持つIPv6プレフィックスをDHCPv6-PDでCPEに割り当てるので、フレッツ・ジョイントは関係ないのか。このIPv6プレフィックスから、IPv4アドレス(共有)+NAPT利用可能なポート番号のセットを取り出していると考えると、つじつまが合いそうかな。

逆に、ひかり電話に契約している等してHGWを設置している場合、サードパーティ製ルータを使用していても、v6プラス設定時にエラーメールは返らないはず(ただしその場合、HGWの下にサードパーティ製ルータが設置されることになるので、MAP-E終端は HGW となるはずで、サードパーティ製ルータを MAP-E終端にする場合には、HGWのIPv4 over IPv6 IPoE機能を手動でオフにする必要があると思われる)。

3. v6プラス加入時

f:id:furyu-tei:20161010003322p:plain

  • IPv6 に関しては、2. と同様の伝送形式(IPoE)
  • IPv4 over IPv6接続(MAP-E)のために、HGWに対して自動的にMAP-E終端機能が配布され、またIPv4 PPPoE関連機能は無効化される(フレッツ・ジョイント機能による)
  • NGN~ISP間(POI)のボトルネックには左右されない

IPv4接続に関して、以下のような制限がある。
参考:BIGLOBE@nifty

■ 使用できないサービス
 ・ISPが提供するIP電話サービス(BIGLOBEフォン等)
 ・固定IPサービス

■ 制限のあるサービス
 ・IPv4グローバルアドレスを複数人で共有使用できないサービス
 ・特定プロトコル(PPTP,SCTP等)を使用するサービス
 ・特定ポート番号を使用するサービス(オンラインゲーム、サーバの公開など)

これらは主として

  • JPNE側グローバルIPv4アドレスを複数のエンドーユーザで共有
  • 利用可能なポート番号/数に制限

ことに伴う制限と考えられる。

[2016/10/09 追記]
v6プラスに加入すると、フレッツ・ジョイントにより、HGWに「IPv4設定(Setting IPv4)」というソフトウェアが配信される。
これは、HGWに対して

http://ntt.setup:8888/t

にアクセスすると表示される、「配信済み事業者ソフトウェア一覧」にて確認できる(参考:v6プラスの通信速度が振るわない件&PPPoEに簡単に切り替える方法 | 今日の気分はバリいくつ?)。

この設定内では、NAPTに使用される

  • HGWに割り当てられたIPv4グローバルアドレス(複数のエンドユーザで共有)
  • 利用可能ポート番号(Port-set:16ポート×15ブロックで、計240ポート)

が確認でき、この利用可能ポート番号の範囲であれば、静的NAPT設定も可能ではある。

トピックス

BIGLOBEの高速Wi-Fi × ギガ対応回線 プレミアムサービスに加入するメリットはあるか?
  1. 高速 Wi-Fi ルータ(NEC Aterm WG1810(JE)・無線LAN 1300Mbps(11ac/5MHz)・MAP-E機能搭載)レンタル
    「解約から1カ月を過ぎてもWi-Fiルータが返却されない場合、端末代金相当額として16,000円(税別)を請求」する旨記載あり
  2. ギガ対応・次世代ネットワーク接続
  3. 新しいメールアドレスの追加(希望者のみ)

で、月額800円(税別)(2016/10/3~2016/11/302016/12/01~2017/04/02の期間、最大2ヵ月分無料のキャンペーン中。ただし、無料期間中に解約したとしても、Wi-Fi-ルータ返却手数料1,300円(税別)は別途徴収されるので注意)。
……という内容の、BIGLOBEの高速Wi-Fi × ギガ対応回線 プレミアムサービス
フレッツ光 IPv6接続(無料)や、v6プラス(無料)との違いが気になるところ。

プレミアムサービスでは次世代のネットワーク(IPoE接続)をご利用いただきます。
(中略)
また、すでにギガ対応回線の方でも、混雑している一般道路(PPPoE接続)から混雑していない高速道路(IPoE接続)に切り替えるため、速くなるのです。
(中略)
動画サービスの広がりなどにより、インターネットに流れる通信量が爆発的に増加しています。日本のインターネット全体で現在よく使われているネットワーク(PPPoE接続)での混雑がより顕著になっており、特に通信量が増える22:30頃には通信速度が低下する地域が出てきています。

しかし、プレミアムサービスなら次世代ネットワーク(IPoE接続)により、地域や時間帯の影響が少なく、快適にネットができます。

高速Wi-Fi × ギガ対応回線 プレミアムサービス:BIGLOBE会員サポート

といった記述を見る限り、v6プラスとの違いがわからない。

ただ、

  • v6プラスをご利用中のお客さまは本サービスをお申し込みすることができません。v6プラスを解約後、お申し込みください。
高速Wi-Fi × ギガ対応回線 プレミアムサービス:BIGLOBE会員サポート

ということで、どうやらv6プラスとは排他的なサービスらしい。
また、v6プラスでは特に要求されない、Wi-Fi ルータ(MAP-E対応)のレンタルも気になる。

これはあくまで推測であるが、

『高速Wi-Fi × ギガ対応回線 プレミアムサービス』≒『IPv6インターネット接続サービス』(『フレッツ光 IPv6接続』相当)+『MAP-E対応 Wi-Fi ルータ』+『希望者への新メールアドレス提供』

のような感じになっているのではなかろうか。
上記「2. IPv6インターネット接続サービス加入時」参照。

NEC Aterm WG1810(JE)とスペック的に遜色の無いと思われるMAP-E対応ルータWXR-1750DHPであれば1万円強で手に入るようなので、無料の『フレッツ光 IPv6接続』に加入したうえでこれを使うようにすればほぼ同等の機能となり、かつ1年程で元が取れるような気もする。
あとの違いは、『希望者への新メールアドレス提供』のみなので。
さて、真相は如何に……?

【2016/10/08 追記】
BIGLOBEの『高速Wi-Fi × ギガ対応回線 プレミアムサービス』と同じようなサービスが、GMOとくとくBBでも提供されていた。
gmobb.jp
こちらは堂々と『v6プラス』としての提供で、「v6プラス」+「Wi-Fiルーターレンタルサービス」がサービス内容。
Wi-Fiルータはまさに、WXR-1750DHPである。
月額991円(税抜)フレッツ光の回線利用料は別に発生)。

ただし、BIGLOBE の場合は、もともとの契約(ビッグローブ光等)に加えて上記の値段が必要なので、それを考えると、GMOとくとくBBの方が新規で契約する分にはお得、なのかも知れない。

なお、GMOとくとくBBの方では、速度の公開もされている
これは、速度測定システム Radish Network Speed Testing Ver. 5.2.2.4 βで実測されたデータの平均値らしい。
ちなみに、試しに自分の環境(BIGLOBE光ネクスト+v6プラス)で測定してみると、

===== Radish Network Speed Testing Ver.4.0.4β - Test Report =====
測定条件
 精度:高 データタイプ:圧縮効率低
下り回線
 速度:289.8Mbps (36.23MByte/sec) 測定品質:91.6 接続数:2
上り回線
 速度:355.1Mbps (44.39MByte/sec) 測定品質:95.6 接続数:3
測定者ホスト:*************.v*.enabler.ne.jp
測定時刻:2016/10/8(Sat) 8:49
==================================================================

こんな感じである。
マルチセッションで測定されることもあり、比較的高めの速度が出ている。

[2016/10/15 追記] v6プラスのIPv4アドレス/ポートセット割り当て方法の推測

IPv6インターネット接続サービス/v6プラス加入時に、ホームゲートウェイ(HGW・ひかり電話ルータ)やv6プラス対応ルータに対して、DHCPv6-PDにより通知されるIPv6プレフィックス(/56)は、現状以下のような構成になっている模様。

240b:XXXX:QQRR:SS00::/56
 240b:XXXX::/32 → IPv4プレフィックス(アドレス上位16ビット)へのマッピング
 QQRR → IPv4アドレス下位16ビット
 SS → ポートセットID

なお、このマッピングルールは、ひかり電話ルータに割り当てられている情報やネット上の情報等から推測したものであり、実際には、JPNEが用意するマップ配信サーバとHGWとの通信によって配信されることに注意。
ここに記述したものだけだと、IPv4アドレスは最大でも6*256*256=393,216個。IPv4アドレス辺りのポートセットが256であるため、約1000万ユーザーにしか対応できないが、マップ配信サーバから配信されるルールを変更することで拡張していくものだと思われる。
マップ配信サーバ~HGW/ルータ間のマップ配信手順の仕様は見つけられなかった(非公開?)。

■ IPv6プレフィックス→IPv4プレフィックスマッピング(例)

IPv6プレフィックス IPv4プレフィックス
240b:0012::/32 14.8.0.0/16
240b:0013::/32 14.9.0.0/16
240b:0250::/32 14.10.0.0/16
240b:0251::/32 14.11.0.0/16
240b:0252::/32 14.12.0.0/16
240b:0253::/32 14.13.0.0/16

■ ポートセットIDによる利用可能ポート割当(例)
現状、

  • 1ポートセットあたりの利用可能ポートは 240 個
  • 1つのIPv4アドレスを、256ユーザで共有(61440個(4096~65535)のポート番号→ 61440/240 = 256)

となるように割り当てられている模様。

ポートセットIDを SS とすると、利用可能ポート範囲は、

mSSn (16進数)
  SS: 00~FF
  m: 1~F
  n: 0~F

で表される。

例えば、SS = 00 の場合、

16進 1000-100F 2000-200F 3000-300F 4000-400F 5000-500F
10進 4096-4111 8192-8207 12288-12303 16384-16399 20480-20495
16進 6000-600F 7000-700F 8000-800F 9000-900F A000-A00F
10進 24576-24591 28672-28687 32768-32783 36864-36879 40960-40975
16進 B000-B00F C000-C00F D000-D00F E000-E00F F000-F00F
10進 45056-45071 49152-49167 53248-53263 57344-57359 61440-61455

となる。

◆ 参考

関連

IPv6 IPoE サービス提供 VNE 接続事業者

国内において、JPNEと同等のVNE接続事業者としては、他にBBIX株式会社インターネットマルチフィード株式会社があり、それぞれがIPv6 IPoEを用いたIPv6インターネット接続サービスを ISP 向けに提供している。以下に簡単にまとめる。

VNE接続事業者 日本ネットワークイネイブラー(JPNE) BBIX インターネットマルチフィード
IPv6サービス名 v6プラス IPv6 IPoE + IPv4 ハイブリッドサービス transix
IPv4 over IPv6 技術 MAP-E 4rd/SAM DS-Lite
専用ルータ要否 基本不要
NTT東西のHGWを使用していれば自動更新で対応可能
※ひかり電話未加入かつHGWもない(ONU/VDSLのみの)場合、対応ルータが必要

BBIX(ソフトバンク)より専用ルータ(光BBユニット)提供

対応ルータをエンドユーザが用意
ポート開放
(静的NAPT)
×?
割り当てられた範囲のポートであれば開放可能かも?
○? ×
ISP例 BIGLOBE、@nifty、その他 ソフトバンク・Yahoo! BB 光 with フレッツ IIJmio:FiberAccess/NF

v6プラス利用で輻輳時間帯(夜間等)の通信速度が劇的に改善した




承前と結論

以前、ビッグローブ光で、特に夜間(21時~25時頃)、通信速度がものすごく遅い(10Mbps以下、ひどいときには1Mbps未満になることも)という記事を書いた。
furyu.hatenablog.com

あれから一年以上経ったが、一向に改善される気配がないため、ISP乗換も視野に入れてあらためて調査し、設定を見直してみたところ……なんと、v6プラス
support.biglobe.ne.jp
を利用することで、劇的に改善することが判明。
輻輳する時間帯であっても、数十Mbpsで安定して通信できている。2016/10/07現在、データ取得中・後ほど公開予定→記事を公開した
BIGLBOBEは2017年07月31日にてv6プラスの新規受付を終了しており、同等のサービスとしてIPv6オプションの提供を開始している(IPv6 IPoE接続を提供するVNE事業者がJPNEからBIGLOBEに変更となっている)。

デメリットとして、

「v6プラス」では一部利用できないサービスがあります。
すでに利用中もしくは今後、サービスのご利用を予定している方は「v6プラス」はご利用いただけません。

  • BIGLOBEフォン
  • 固定IPサービス
  • 一部通信型ゲームなど、特定ポートを使用するサービス、または、複数のユーザでIPアドレスを共有すると利用できないサービス。
  • 利用可能なポート番号、ポート数に制限があります。 外部へサーバ公開をお考えの方はご利用できません。
  • OP25Bブロックを実施しています。メール送信には587(サブミッションポート)を利用する必要があります。
IPv6接続サービス:BIGLOBE会員サポート

というものがあるが、これらを許容できる方で、

  • NTT東西のホームゲートウェイレンタル中(ひかり電話に加入済み、もしくは加入予定(月額500円(税別)が別途必要)の方など)

または

という条件に当てはまる方は、追加費用(初期費用/月額費用共) 0 ということでもあるし、導入を検討されてはいかがだろうか。

なお、v6プラスはVNE接続事業者のひとつであるJPNE(日本ネットワークイネイブラー株式会社)がISP向けに提供しているサービスでありBIGLOBEの他にも対応しているISPがいくつか存在する

v6プラス導入に伴う、自宅のインターネット接続環境の変遷

1. v6プラス加入以前

f:id:furyu-tei:20161007192131p:plain

  • PPPoE により ISP と接続
  • 特に夜間(21時~25時頃・輻輳時と思われる)での通信速度が遅い(数百Kbps~10Mbps程度しか出ない)
  • フレッツNGN網内の速度は数百Mbpsで比較的安定→ボトルネックはNGN~ISP間の相互接続点(POI)にあると推測
2. v6プラス加入(2015/08/18)~最近(2016/10/06)まで

f:id:furyu-tei:20161007192344p:plain

3. 設定見直し後(2016/10/07現在)

f:id:furyu-tei:20161010003054p:plain

という経緯で、格段に通信速度が安定した環境に生まれ変わった。

なお、Wi-Fiブロードバンドルータ(WZR-1750DHP)は、ルータモードで使用(モードの切替方法)。
ブリッジ(AP)モードでも動作するし、余分な機能がない分だけスループットはその方が大きい気もするけれど、

  • 設定画面にアクセスしやすい(ブリッジモードだとルータのIPアドレスは192.168.11.100なので、いちいちPCの設定を変える必要がある)
  • MACアドレス→IPアドレスのマッピング機能により、端末に固定のローカルIPアドレスを割り当てられる

という具合に、ひかり電話ルータ(PR-S300NE)よりもいろいろと設定がしやすいので(特に、v6プラス加入後は、PR-S300NEはIPv4関連の設定がほとんどできなくなる)、ルータモードで使用している。

独り言

まぁ、v6プラスに加入する方が増えてきたら、やっぱり遅くなってしまうのかも知れないけれども……。
なにせ、これまでISP毎に分散されていたトラフィックが、JPNEに集中する構造なわけで……上記の図では省略しているけれど、NGN~JPNE間にも当然 POI(Point Of Interface・相互接続点)はあるわけだし、BR(Border Relay)の処理能力にも上限はあるだろうしね。この辺りの見通しはどうなっているのかな……?

[2016/10/09 追記]

MAP-Eはステートレスであるため、BRはユーザ数やセッション数ではなくトラフィック量に応じた設備投資が可能であり [2] 、冗長構成を容易に構築できます。

ネットワーク | JANOG31 Meeting

なるほど、ステートレスである(NAPT機能はCPE(HGW)側に持たせるため、BR側はパケットのカプセリング/デカプセリング機能のみ持てばよく、セッション管理をする必要がないために機能的にシンプルになる)ために、トラフィック量のみを考慮した設備投資でよくなるし、冗長化も容易になる(障害に強い構成にできる)のか。


あと、この記事上の図はdraw.ioを使わせていただいた。
初めて使ったのだけれど、お手軽だし使いやすい。おすすめ。


余談

今回、あらためて調べる気になった理由。


……「響け!ユーフォニアム」はいいぞ!
anime-eupho.com
ch.nicovideo.jp
www.onsen.ag

響け!ユーフォニアム2 1巻 [Blu-ray]

響け!ユーフォニアム2 1巻 [Blu-ray]

  • 発売日: 2016/12/21
  • メディア: Blu-ray

Twitter メディアダウンローダ:ユーザータイムラインの原寸画像や動画をまとめてダウンロードするユーザースクリプト(PC用Google Chrome・Firefox等対応)



Web 版公式 Twitter上で、あるユーザーの画像(メディアタイムライン上の画像)を原寸*1でまとめて(ZIP)保存することが出来るようになるユーザースクリプト/Chrome拡張機能/Firefox Quantum用アドオンです。
0.1.0.701より、動画もダウンロード可能となりました。

Twitter メディアダウンローダの動作イメージ



インストール

Chrome 拡張機能版(Google Chrome対応)

chrome.google.com

より追加。
Twitter メディアダウンローダ - Chrome ウェブストアのページ上に表示されている [+CHROME に追加] ボタンを押してインストール。

Firefox Quantum アドオン版(WebExtensions)

addons.mozilla.org

より追加。
ページ上に表示されている [+ Firefox へ追加] ボタンを押してインストール。

ユーザースクリプト(Gresemonkey / Tampermonkey)版(Firefox/Google Chrome対応)

Firefox+Gresemonkey、Google Chrome+Tampermonkeyの環境で、

Twitter メディアダウンローダ・ユーザースクリプト版(twMediaDownloader.user.js)

GitHub - furyutei/twMediaDownloader: Twitter メディアダウンローダ

をクリックし、指示に従ってインストール。

使い方

基本的な使用方法

インストール後には、Web 版公式 Twitter上で、ユーザータイムライン()を表示時に、「メディア」の横に下向きの矢印が表示されるようになります。
0.1.0.901より、検索タイムライン上でも「メディア ⇩」リンクが表示されるようになりました。
0.1.1.1701より、「いいね」タイムラインにも対応しました。ユーザータイムライン表示時に、「いいね⇩」リンクが表示され、まとめてダウンロードできます(なお、「いいね」タイムラインでは、日時範囲指定のみとなります)。
0.1.1.3001より、「通知」タイムライン上・「@ツイート」横に 「⇩」リンクが表示されるようになりました(@ツイートをまとめてダウンロードできます)。


これをクリックするとダイアログが表示されるので、[開始]ボタンをクリックすると、原寸画像/動画の ZIP 化が開始されます。
ZIP 化の進捗は、下部にログ出力されます。

ZIP 化が完了するか、もしくは[停止]を押すと、対象となる画像/動画ファイルをまとめた ZIP ファイルがダウンロードされます。
このとき、ログの内容も ZIP の中に保存されています。

オプションの指定

制限数は、ダウンロード対象となるツイート数の上限です(デフォルトは現状 100 件にしてあります)。
これを超えた分のツイートはダウンロードされません。
大きい値を指定すると、その分メモリを消費してしまい、ブラウザがフリーズする等の不具合が発生する可能性がありますので、ご注意ください。

ダイアログの保存対象 Tweet ID 範囲に、具体的な Tweet ID(ツイートの URL の数値部分・例えば https://twitter.com/furyutei/status/743443761980596224ならば、"743443761980596224")を指定してやることで、その範囲にあるツイートの画像/動画のみをダウンロードすることができます。

■以前にダウンロードしたものよりも後の画像/動画をダウンロードする
以前にダウンロードしたときのログファイルが、

[Complete] 101392230006267904 - 756891141912481792 ( Tweet: 333 / Media: 398 )

のような形で終わっている場合には、下限(左の入力欄)として "756891141912481792" を指定してやることで、これより後に更新された画像/動画をまとめてダウンロードすることができます。

■以前にダウンロードしたものよりも前の画像/動画をダウンロード

[Complete(limited)] 582865505758748672 - 680344335049601024 ( Tweet: 100 / Media: 120 )

この例だと、100件制限によって、"582865505758748672" より前のものが含まれていませんが、この場合は上限(右の入力欄)として "582865505758748672" を指定してやることで、これ以前に更新された画像/動画をダウンロードできます。

0.1.0.701 からはアニメーションGIF(MP4に変換されたもの)と動画も対象となりました。
必要に応じて、対応するチェックボックスにチェックを入れてダウンロードしてください。

0.1.1.101 からは、個別ツイートに動画用のダウンロードリンク(MP4)が付くようになりました。
また、0.1.1.201 からは、個別ツイートに画像用のダウンロードリンクも付くようになりました(ZIPでダウンロードされます)。
Chrome拡張機能版の場合、オプション画面でこの機能を無効化できます。

ID欄には、日時も指定可能
範囲指定したいけれど、IDを探すのが面倒……という場合、実はID欄に日時を入れると、IDに変換してくれます(ただし、2010/11/05以降のみ)。
例)日時:2018/07/21 19:25:00 → ID:1020615617541046272
日時のフォーマットは、JavaScript の new Date(~) で指定可能な形式なら大丈夫なはずです。

なお、ID欄の範囲指定では、指定した値そのものは含まないことに注意。
[A]<ID<[B]であれば、「IDがAよりも大きく、Bよりも小さい」という条件になります。

例えば、ID欄の左に [2018/07/21 00:00:00]と入れた場合("1020322435691446272"に変換される)、「"2018/07/21 00:00:00"よりも後」になります。
厳密に、"2018/07/21 00:00:00" も含めたい場合、"1020322435691446271"(変換された値-1)を入れて下さい。
同様に、ID欄の右に[2018/07/21 18:00:00]と入れた場合("1021319002321846272"に変換される)、「"2018/07/21 18:00:00"よりも前」になります。
厳密に、"2018/07/21 18:00:00" も含めたい場合、"1021319002321846273"(変換された値+1)を入れて下さい。
まぁ、そこまで厳密なタイミングが必要なのか?というのは、さておき。

注意・制限など

免責事項

ご利用の際には全て自己責任でお願いします。
不具合があったり、使用した結果等により万一何らかの損害を被ったりした場合でも、作者は一切関知いたしませんので、悪しからず。

ダウンロードファイルについて

ダウンロードしたファイルの扱いは、(自分に権利があるものを除き)私的利用の範囲にとどめるよう注意してください。
また、違法に公開されている動画や音楽については、それとわかっていながらダウンロードする行為も違法となります(特に、有償で提供されているものについては、刑事罰の対象となります)

ダウンロード対象ツイートの制限について
  • ダウンロードできるのは、Web 版公式 Twitter上のメディアタイムラインで遡れるところまでに限られますので、悪しからず。
    800ツイートくらいかな?
  • [2016/07/24追記]ダウンロードできるのは、Web 版公式 Twitter上のメディアタイムラインおよび検索タイムラインで取得できるもののみです。
    メディアタイムラインでは最大で800ツイートくらいまで(対象外のツイートも含むため、実際はもっと少なくなる)しか取得できないため、それよりも前は検索タイムラインで取得します。ただし、検索タイムラインでは取得もれが発生することも多いため、全ての画像/動画付きツイートがダウンロードできるわけではありませんので、悪しからず。
Chrome 拡張機能が無効化されてしまう

拡張機能の更新時に権限が追加されることにより、拡張機能が無効化されることがあります。
例えば、バージョン0.1.2.101より「閲覧履歴の読み取り」権限を追加しましたので、それ以前のバージョンから更新した際には「Twitter メディアダウンローダ が無効になりました」と表示されます(場合によっては、右上の設定アイコンに「!」が付いており、これをクリックすると表示されます)。



その場合、追加された権限を確認の上、ダイアログの[権限を許可]をクリックするか、手動で拡張機能の管理画面(chrome://extensions/)を開いて、「Twitter メディアダウンローダ 」を有効化します。
ちなみに、「閲覧履歴の読み取り」という名前ですが、これは主としてタブの操作権限を指します
バージョン0.1.2.101ではオプション変更時にTwitterのタブをリロードする機能を追加したため、これに必要な当該権限を追加しています。

[Complete] や [Stop] と表示されているのに、ダウンロードされない

合計ファイルサイズが大きい場合(~1GB以上?)[Complete]や[Stop]状態になっても、ZIPがダウンロードされずにだんまりとなる場合があるようです。
特に動画を含む場合は容量が膨れ上がるので注意。動画ばかりのタイムラインだと、100件ずつくらいにしておいた方が無難かも知れません。

Firefox で「このファイルを開くのは危険です」という警告が表示される

Firefoxでは、ZIPファイルをダウンロードすると、「このファイルを開くのは危険です」という警告が表示される場合があります(危険なファイルなんて含んでいないんですが……)。
現状、対処方法が見つかっておりません……悪しからず。
一応、about:preferences#privacy(「≡」→「オプション」→「プライバシーとセキュリティ」)→「セキュリティ」→「フィッシング防護」→「☑不要な危険ソフトウェアを警告する」のチェックを外すと警告は出なくなりますが、その分他のサイトで危険が増すのでお勧めはできません。

動画がダウンロードされない(エラーが出る)

動画をダウンロードするには、アプリ(twMediaDownloader)のアカウントに対する利用許可が必要になります。
最初にダウンロードしようとしたとき、

のような画面が(別タブで)開くようになっていますが、このときにブラウザのポップアップブロックが設定されていると、
← Chrome の場合
← Firefox の場合
利用許可設定に失敗(→結果として、動画のダウンロード不可)となります。

この場合は、ブラウザの設定で twitter.com からのポップアップ許可を設定後、Twitter のページをリロードしてからお試しください。

ポップアップブロックの解除(Twitterでのポップアップの許可)方法
■ Google Chrome
右上の「≡」→「設定」(chrome://settings/)→「詳細設定」→「プライバシーとセキュリティ」
にある、「コンテンツの設定」をクリック→「ポップアップ」をクリック。
「許可」欄の「追加」をクリックして、サイト欄に、"https://twitter.com:443" を入れ、[追加]

■ Firefox
右上の「≡」→「オプション」→「プライバシーとセキュリティ」(about:preferences#privacy)→「許可設定」
にて、
☑ ポップアップウィンドウをブロックする(B)
の右にある、[許可サイト]をクリック。
ウェブサイトのアドレス(D)欄に、"https://twitter.com" を入れ、[許可(A)]→[変更を保存(S)]

開発経緯

Twitter 原寸びゅーのおかげで、日常的な用途では原寸画像の表示や保存が随分楽にできるようになりましたが、たまたま発見したイラストレーターや写真家の方々等の画像/写真に魅了された際に、ひとつずつダウンロードするのはさすがに手間だなぁ……と思ったので、まとめてダウンロードできるように、スクリプトを試作してみた次第です。

独り言

動画(アニメーションGIF含む)とかまでダウンロードできるとさらに嬉しいので、だれか作ってくれないでしょうか……(丸投げ)。
ちなみに自分は、ちょっと調べている内に結構面倒だということがわかったために、保留中。

0.1.0.701 からは、アニメーションGIFと動画(一部)にも対応してみました。
Vine等や、YouTube等の外部サイトの動画については未対応。

[2016/07/27追記]
というか、例によって作ってから探したところ、普通に
http://shimarisu.webcrow.jp/twitter_down.htmlshimarisu.webcrow.jp
http://shimarisu.webcrow.jp/twitte_down_java.htmlshimarisu.webcrow.jp
という高機能なアプリが見つかったので、これをインストールするのが吉かと思います。
いや、自分自身はまだ入れていないのだけれども……というか、インストール(解凍)するだけはしたものの、最初に若干設定をしないといけないっぽくて面倒になって放置中だったり……(汗)。

*1:URL末尾に『:orig』が付いた画像を便宜上こう呼んでいますが、『原寸』といっても実際にはTwitter側でサイズ変換や圧縮がかかっています

FileZillaでアップロードしたときに、タイムスタンプが維持されないレンタルサーバに困っている

FileZillaを使用してファイルをアップロードした際に、レンタルサーバによっては、タイムスタンプが維持されないことがあり、割と困っていたりする。
具体的には、ファーストサーバのレンタルサーバを使用していると、タイムスタンプが維持されない(少なくとも自分が会社で使用しているマネージド共有・専用サーバーにおいては。Zenlogic等の比較的新しいサービスについては不明)。
当然ながら、転送(T)→転送したファイルのタイムスタンプを維持(P)には、チェックが入っている前提。

回避方法があれば、ご教示ください。
まぁ、FFFTPでは、ファーストサーバにおいてもタイムスタンプが維持されるようなので、そちらを使えばいいという話もあるのだが……ただ FFFTPは、逆にダウンロード時にタイムスタンプが維持されなかったり等の問題があった気がするんだよな……(うろ覚え)。

レンタルサーバの比較

レンタルサーバのサービス元 アップロード時のタイムスタンプの維持 詳細
ファーストサーバ × アップロードした時刻になってしまう
お名前.com(GMO) 秒の単位については0にされてしまう
また、半年以上前のファイルは、FileZillaで見ると日の単位までしかタイムスタンプが表示されない(ダウンロードすると、分の単位までは一致)
さくらインターネット 秒の単位まで維持される

いずれもプレーンなFTPを使用した場合。
FTP over TLSや、SFTPを使用した場合には結果が異なるかもしれないが、現時点では細かくは検証していない(ただ、ファーストサーバ・お名前.comはFTP over TLSで、さくらはSFTPで常用しているが、結果は変わらなかった気がする←これもうろ覚え)。

手動で FTP ログインしたときのサポートコマンド表示

tadtak.jugem.jp
の記事中に、

クライアントは FileZilla。FileZilla は Wikipedia によると、

FTPの場合、サーバがMFMTコマンドをサポートする場合のみ、アップロードされたファイルの日付/タイムスタンプ属性が保持される。
SFTPの場合、FileZilla 3.0.8 以降では同属性が保持される

らしいです。

vsftpd 経由で ftp アップロードするとタイムスタンプを維持してくれない | 日頃の行い

という記述があり、実際、

アップロード

  • FTPモード: サーバがMFMTコマンドをサポートする場合のみ、アップロードされたファイルの日付/タイムスタンプ属性が保持される。
  • SFTPモード: FileZilla Client 3.0.8 以降では同属性が保持される。
FileZilla - Wikipedia

となっている。

そこで、試しに各レンタルサーバに手動でログインしてもみると……いずれもMFMTコマンドはサポートされていない……?
ということは、FileZillaでも、MFMTコマンド以外でタイムスタンプを維持する努力はしているが、ファーストサーバではそれもうまくいっていないということ……?

ファーストサーバ
$ telnet ftp.***.*** ftp
Trying ***.***.***.***...
Connected to ftp.***.***.
Escape character is '^]'.
220 Firstserver FTP Server Ready
user ***
331 Password required for ***
pass ***
230 User *** logged in
help
214-The following commands are recognized (* =>'s unimplemented):
 CWD     XCWD    CDUP    XCUP    SMNT*   QUIT    PORT    PASV
 EPRT    EPSV    ALLO*   RNFR    RNTO    DELE    MDTM    RMD
 XRMD    MKD     XMKD    PWD     XPWD    SIZE    SYST    HELP
 NOOP    FEAT    OPTS    AUTH    CCC*    CONF*   ENC*    MIC*
 PBSZ    PROT    TYPE    STRU    MODE    RETR    STOR    STOU
 APPE    REST    ABOR    USER    PASS    ACCT*   REIN*   LIST
 NLST    STAT    SITE    MLSD    MLST
214 Direct comments to root@***.***.***.***
quit
221 Goodbye.
Connection closed by foreign host.
お名前.com(GMO)
$ telnet ftp.gmoserver.jp ftp
Trying 157.7.144.19...
Connected to ftp.gmoserver.jp.
Escape character is '^]'.
220 ProFTPD 1.3.2d Server (ftp.gmoserver.jp) [157.7.144.19]
user ***@gmoserver.jp
331 Password required for ***@gmoserver.jp
pass ***
230 User ***@gmoserver.jp logged in
help
214-The following commands are recognized (* =>'s unimplemented):
 CWD     XCWD    CDUP    XCUP    SMNT*   QUIT    PORT    PASV
 EPRT    EPSV    ALLO*   RNFR    RNTO    DELE    MDTM    RMD
 XRMD    MKD     XMKD    PWD     XPWD    SIZE    SYST    HELP
 NOOP    FEAT    OPTS    AUTH    CCC*    CONF*   ENC*    MIC*
 PBSZ    PROT    TYPE    STRU    MODE    RETR    STOR    STOU
 APPE    REST    ABOR    USER    PASS    ACCT*   REIN*   LIST
 NLST    STAT    SITE    MLSD
214 Direct comments to root@ftp02-ext.sd.internal-gmo
quit
221 Goodbye.
Connection closed by foreign host.
さくらインターネット
$ telnet ***.sakura.ne.jp ftp
Trying ***.***.***.***...
Connected to ***.sakura.ne.jp.
Escape character is '^]'.
220 ProFTPD 1.3.5a Server (SAKURA Internet FTP Server) [::ffff:***.***.***.***]
user ***
331 Password required for ***
pass ***
230 User *** logged in
help
214-The following commands are recognized (* =>'s unimplemented):
 CWD     XCWD    CDUP    XCUP    SMNT*   QUIT    PORT    PASV
 EPRT    EPSV    ALLO*   RNFR    RNTO    DELE    MDTM    RMD
 XRMD    MKD     XMKD    PWD     XPWD    SIZE    SYST    HELP
 NOOP    FEAT    OPTS    AUTH    CCC*    CONF*   ENC*    MIC*
 PBSZ    PROT    TYPE    STRU    MODE    RETR    STOR    STOU
 APPE    REST    ABOR    USER    PASS    ACCT*   REIN*   LIST
 NLST    STAT    SITE    MLSD    MLST
214 Direct comments to root@www998.sakura.ne.jp
quit
221 Goodbye.
Connection closed by foreign host.

余談

お名前.com(GMO)のレンタルサーバーに関する愚痴

FTPで、ときどきうまく接続できなかったり(詳細は忘れたが、接続数が上限に達した、みたいなエラーが出る)、多数のファイルのアップロード/ダウンロード時に脈絡なく失敗したりと、動作が不安定なのが困る(これらの現象は、FileZillaでもFFFTPでも発生)。
FTPクライアントの設定をいじれば、どうにかなったりするのだろうか……?

あと、SSHをサポートするようになったのはいいのだが、SFTPには対応していないのだろうか?
これは自分が設定をわかっていないだけかもしれないが。

SSHといえば、アカウント(ユーザー名)が「xxx@gmoserver.jp」のように"@"を含んでいるのも、

$ ssh -l xxx@gmoserver.jp ssh.gmoserver.jp

とかしないといけなくて、地味に面倒……。
ホームディレクトリにファイルが置けない(~/.bash_profile等もいじれない)というのも不満。