著者アーカイブ takahashi

takahashi 著者:takahashi

“ワンセグ対応”スマートフォンが減少中らしい…

ふと気になる記事が目に留まりました。

ネットでの映像配信が増えているためか ワンセグ搭載は1機種のみ – Engadget 日本

そういえば最近、確かにワンセグ対応を売りにした端末を見かけなくなった気がします。

自分が持っているPixel 3aも日本仕様ですが、ワンセグは入っていないですしね。

また、見れる機種であっても、別アンテナの接続が必要だったり、そもそも受信感度があまりよくなかったり…なんていう感じもあり、正直実用性は疑問に感じていました。

昔はフルスペック重視の考え方で、必ず”ケータイにはワンセグが入っていてほしい”という考えでしたが、最近は”どこでもテレビが見れる”こと自体の需要をあまり感じなくなったのもあるかもしれません。

ただ、災害時などを考えるのであれば、むしろテレビ受信に特化した専用機とかメディアプレーヤーとして出ていた方が欲しくなるかもしれませんね。(HDD接続で録画できる、とかあったらもっといいかもですね。)

takahashi 著者:takahashi

欧州などを管轄するRIPE NCCのIPアドレス在庫が枯渇。迫るIPアドレス不足対策のリミット。

話題に上ってから久しい、IPv4アドレスの在庫枯渇問題ですが、ここ数年の間に実際に多くの管理団体で、未使用のIPアドレス在庫が枯渇する状況になっています。

日本をはじめとするアジア地域でのIPv4アドレス在庫を管理していたAPNICでも、2011年4月5日にすでに新規のIPアドレス在庫が枯渇しています。

IPv4アドレスの在庫枯渇に関して – JPNIC

そして先日、ヨーロッパ地域などを管轄するRIPE NCCの所有IPv4アドレス在庫も枯渇したとのニュースが流されました。

欧州地域のIPv4アドレスがついに枯渇 – ZDNet Japan

これで、新規IPv4アドレスの在庫がまだ残っているのが、アフリカを中心としたAFRINICの管理するIPアドレスのみとなりました。
(※AFRINICはもともと在庫数が少なく、他のRIRへの移転が認められていないため、IPアドレス在庫があっても他国の事業者が使用することはできないようです。)
AFRINIC 26レポート [前編] ~全体概要~ – JPNIC BLOG

まだ中古ドメインの取り扱いは一部あるようですが、明らかに需要に対してアドレス数が足りていないため、いよいよもって根本的な対策が必要となってきました。

しかし、移行先の第一候補であるIPv6はIPv4とほぼ互換性がなく、IPv4しかないネットワーク、およびその逆の場合は相互に通信を行うことができないのが最大の難点となっています。

全世界で一斉に切り替えることは無理なので、影響を最小限に抑えつつもスムーズに移行する方法が必要になってきますが、既存の仕組みだけではなかなか難しいのが現状のようです。

うまいやり方が見つかればよいのですが…

takahashi 著者:takahashi

Google Chromeに実装された新機能の影響で多くのサイトで不具合が発生

先日、次のような不具合の情報が、銀行や申込フォームなどがあるサイトなど、様々なサイトでアナウンスされました。

【システム障害】ろうきんダイレクト(インターネットバンキング)一部取引における不具合について – 近畿ろうきん

インターネットバンキング(個人)における一部不具合について(続報) – 島根銀行

【お知らせ】Android版chromeでWEB投票をご利用中にエラーが表示される事象について – BOAT RACE

Android版Chromeにおける各種不具合について – mixi

上記のサイト以外にも、楽天市場やmineoなど、多くのサイトで影響が出ていたとのこと。

具体的な内容としては、Android版Google Chromeでこれらのサイトを閲覧すると、サイトの動作に不具合が発生し、セッションが切れてしまったり、不正な操作が行われてしまうといった少々まずい症状のようです。

原因はAndroid版GoogleChromeの新機能、”プリロード”

原因は最近Android版Google Chromeに搭載された”プリロード機能”によるもののようです。

AndroidのChrome 78のPreload問題 – Qiita

このプリロード機能は、サイト内のaタグ(クリックすると別のページを表示するいわゆるリンクのこと)をすべてスキャンし、aタグで指定されているリンク先URLのページまでも先読みしてしまうことで、表示速度を高速化しよう、という機能だったようです。

ところが、サイト内のaタグに含まれるすべてのURLのページに無差別にアクセスする仕組みになっていたために、ユーザーがタップしていないにも関わらずログアウトボタンが動作してしまったり、ショッピングサイトなどのページ遷移が厳しく管理されているサイトなどでは不正なページ遷移が発生し操作ができなくなる、といった状況が多数発生したのが今回の問題の原因だったようです。

すでにChromeの開発チームには報告されており、直ちに無効化の操作が行われ、現在は一度GoogleChromeを再起動することでこの問題の機能が無効化されるようになっているとのことです。

しかし、まだ設定項目は残っているようで、何かのはずみに再び有効になってしまうことも考えられます。

一応設定からも無効にしておくと安心です。

Chromeの”設定”から

プライバシー->”ページをプリロードして、閲覧と検索をすばやく行えるようにします”

のチェックボックスをオフにすることで、プリロード機能を無効化できます。

しかし、明らかに既存のサイトでの動作に影響が出そうなこの機能が、どうして正式リリースまで出てしまったのか…非常に疑問ですね。

takahashi 著者:takahashi

dockerのMySQLコンテナでなぜ”command: –innodb-use-native-aio=0″が必要な環境があるのか

ここ最近人気のコンテナ型仮想化技術であるDockerですが、Linuxを前提とした仕組みのため、他のOSではLinuxのカーネル何らかの方法で動作させ、そのうえでdockerを実装させる仕組みをとっています。

実はこの仮想化の方法によってはDockerでMySQLを動作させる際にdocker-compose.ymlを編集しないとMySQLが動作しない場合があります。

具体的には、Docker Toolboxで動作させた場合、docker-compose.tml内のMySQLの設定セクションで

command: --innodb-use-native-aio=0

を入れておかないとエラーになるというものです。

dockerでmysqlが起動できない。 – Fworx Tech Blog

なぜ上記の指定が必要かというと、デフォルトでは、データベースエンジン InnoDBの”非同期ディスク I/O”という機能が有効になっているのですが、このDockerToolboxなどの環境ではこの機能が利用できないようで、起動時にエラーになってしまう状況のようです。

なので、

--innodb-use-native-aio=0

のオプションを指定して非同期ディスクI/Oを無効化することでDocker Toolboxなどでも動作させることができるようになる、ということのようです。

せっかくどの環境でも同じ開発環境が実現できるようにdockerを使用しているのに、OSによってオプションを変えないといけない、というのはちょっと辛いものがありますね。

OSごとに異なる設定を読み込ませるような指定があればいいのですが…

takahashi 著者:takahashi

DNS over HTTPS、近いうちにWindowsに実装される!?

先日、MicrosoftがDoHをWindowsに搭載することを発表しました。

Firefox/Google Chromeに続き、Windowsでも“DNS over HTTPS”をサポートへ – 窓の杜

DoH(DNS over HTTPS)は、DNSへのIPアドレスの問い合わせリクエストをHTTPSプロトコルを経由(カプセル化)することでDNS通信を暗号化する方法です。

DNSプロトコルそのものを暗号化するのではなく、既存のHTTPSの仕組みを使うため扱いやすいうえ、HTTPSポートをブロックしている環境はかなり限られてくるので、ファイアーウォールが置かれている環境でも設定の変更なく通信が通りやすいのが特徴です。

現時点ではまだDoHを正式に実装しているのはFirefox/Chromeの2ブラウザのみで、OSレベルでの対応は現状Androidのみですが、先日、MicrosoftがWindows OSの標準機能としてDoH対応を行う予定であることを明かした、というのが今回のニュースです。

ブラウザレベルでの対応では、あくまでDoH対応ブラウザを使用した通信でしかDoHが利用されませんが、OSレベルで対応されれば、そのマシンで行われる(OS上で動作する全アプリの)全通信のDNSリクエストをDoH経由で行わせることが可能になります。

DoHはユーザーのDNS要求を意図しない第三者に見せないようにすることでユーザーのプライバシーを保つ仕組みなので、OS全体で適用されるようになればより信頼性も向上することになります。

インターネットの自由性と安全性の担保の一つとして、DoHは重要になってくると個人的には考えているので、Windowsでの標準サポートはありがたい話だと思います。

今後。他のOSも追従してくるのか、今後の動きにも注目したいですね。

takahashi 著者:takahashi

楽天カードに大規模障害が発生した件で思うこと

先日、 楽天カードでなかなかヤバい障害が発生していましたね…

【一部復旧】当社サービスの一時利用停止のお詫びとお知らせ
(株式会社QTnetの電源設備更新作業に伴う不具合)- Rakuten Card

上記記事によると、2019年11月23日(土)6時ごろから、楽天カードや楽天ペイ、およびこれらサービスの利用明細確認などの機能が障害により停止し、なんとカード決済までも止まってしまう障害が発生していました。

カード決済機能と楽天Payは当日中に復旧しましたが、明細確認機能などはこの記事作成時点においてもまだ復旧していません。

原因は楽天カードの決済サーバーが置かれているQTnet社のデータセンターで、電源設備入れ替え時に電源障害が発生し電源が一瞬落ちたそうで、それが原因で同データセンターで稼働していたサービスが影響を受けてしまったようです。

この関係で、楽天以外にも、同データセンターにサーバーを置いていた官公庁や電力会社のHPにも障害が発生していたようです。

楽天カードなど260社・自治体に影響 九電系で障害 – 日本経済新聞

入れ替え中とはいえ、データセンターで電源を一瞬でも落としてしまうというのはあってはならない障害ですが、AWSですら電源ではないですが設備設定の入れ替えで障害を起こしたこともあるぐらいで、残念ながらデータセンターであっても障害が起きるときは起きてしまうものです。

個人的に、今回一番に問題に感じたのは楽天側のシステム構成の問題。

費用の問題もありますし、ダウンタイムが許容されるようなサービスであれば単一データセンターで動かしていたとしても理解はできます。

しかし、楽天カードはクレジットカードという超重要な社会インフラですし、たとえそれなりのコストがかかったとしても、決済機能だけでも絶対に止めてはいけないシステムであったはずです。

最近ではクレジットカードをメインに使用し、現金を持ち歩かない人も増えているようですが、もし食事やサービスを利用した際に現金をもっていない状況で(利用者側の落ち度なく)カードの利用ができなくなってしまっていたら、利用者がどのような状況に陥るのかは想像に難くありません。

生活費をカードで決済している場合もあります。

また楽天カードはETCも発行しています。

実際に起きていたかどうかはわかりませんが、決済ができないということはETCなどでの利用でも問題が発生した可能性もあると思います。

もし出場時に問題が発生して出られなければ、利用者はパニックに陥りかねないとおもいます。

停止すれば日常生活に実害をもたらしてしまう可能性のあるサービスが、単一のデータセンターが障害されただけで止まってしまうという状況は、楽天カード側の障害対策が甘すぎると感じました。

今回は電源断でしたが、万が一そのデータセンターが災害などに巻き込まれて完全に破壊されてしまったら、どう復旧するつもりなのでしょうか。

もう少し、耐障害性のことを考えたシステム設計にすべきなのではないかと個人的には感じました。

今後の対策に注目したいと思います。

takahashi 著者:takahashi

Macで利用できるブートローダー”rEFInd”の見た目をカスタマイズする方法

以前紹介した記事でMacでデュアルブートを行っている場合に、起動時にOS選択メニューを表示させる方法をご紹介しました。

ここで使用したrEFIndというブートローダですが、実は見た目を変更することができるようになっています。

デフォルトのデザイン

今回は、その方法をご紹介したいと思います。

※今回の操作には最悪macOSを含む全OSが起動しなくなる、リスクのある操作が含まれます。取り扱いには十分注意してください。また、万が一起動しなくなっても責任は負えませんのでご了承ください。(起動時にOSを読み込むプログラムが入っている領域を触るためです。誤って必要なファイルを変更したり、削除したりしないように注意してください。)

まず、ネット上に公開されているテーマから、自分が使用したいテーマを見つけます。

The rEFInd Boot Manager: Theming rEFInd

参考元の記事によると、このあたりにまとめられているようです。

好きなテーマを見つけたら、ダウンロードして解凍しておきます。

次にrEFIndがインストールされているEFIパーティションをマウントします。

ターミナルを開き、次の2つのコマンドを入力します。

sudo mkdir /Volumes/efi #EFIパーティションのマウント先に使用するディレクトリを作成
sudo mount -t msdos /dev/disk0s1 /Volumes/efi #efiパーティションをマウント

マウントに成功したら、次のコマンドでrefindのディレクトリに移動します。

cd /Volumes/efi/EFI/refind

移動したら、次のコマンドを実行してFinderを開きます。

open .

Finderが/Volumes/efi/EFI/refind内の内容を表示した状態で起動しますので、その中に先程入手したテーマをディレクトリごとコピーします。

/Volumes/efi/EFI/refind直下にテーマをコピーしてもよいですが、僕はさらにthemesというディレクトリを作り、その中にテーマをコピーしました。

あとは、 /Volumes/efi/EFI/refind/refind.confの末尾に、次の行を追加します。

# Custom theme
Include テーマが入っているディレクトリ/theme.conf

“テーマが入っているディレクトリ”の部分は

/Volumes/efi/EFI/refind 

から見たtheme.confへの相対パスを記述します。

プラグインによってはこれで使用できる状態になるのですが、プラグインによってはthemesフォルダ内に置かれることを想定していないものもあるため、その場合はテーマが含まれるディレクトリを移動するか、themes.confを確認・書き換えする必要があります。

書き換えなければいけない項目としては下記のような項目です。

・icons_dir
・banner 
・selection_big
・selection_small

これらの項目のパスも、 /Volumes/efi/EFI/refind/refind.conf 同様に

 /Volumes/efi/EFI/refind/

から見た相対パスを記述する必要があります。

例えば、僕が今回ダウンロードした”refined-next”は、ディレクトリ直下に置くことを想定していたため、このテーマに含まれるtheme.confは下記のような内容になっていました。

hideui singleuser,hints,label
icons_dir next-theme/icons
banner next-theme/background.png
selection_big   next-theme/selection_big.png
selection_small next-theme/selection_small.png
showtools about,reboot,shutdown

上記のような設定の場合はthemesフォルダの中にいれる構成にするとパスが合わないため、パスが合うように設定を修正します。

hideui singleuser,hints,label
icons_dir themes/next-theme/icons
banner themes/next-theme/background.png
selection_big   themes/next-theme/selection_big.png
selection_small themes/next-theme/selection_small.png
showtools about,reboot,shutdown

これで無事テーマが適用されるようになります。

refined-next適用後のOS選択画面

なお、頭と末尾にある設定

hideui singleuser,hints,label

showtools about,reboot,shutdown

ですが、hideuiはOS選択画面で表示されるUIのパーツのうち、非表示にする要素を入れることで、説明文や詳細オプションなどを消すことができます。

またshowtools はOS一覧の下に並ぶシャットダウンボタン・リブートボタンなどのメニューのうち、何を表示するかを指定できます。

僕は上記の設定を下記のように変更したところ、次のようなUIになりました。

...省略...
#hideui singleuser,hints,label
...省略...
showtools apple_recovery,shell,about,reboot,shutdown
...省略...

ほかにも、画像の差し替えを行ったりなどすれば、オリジナルの起動画面を作ることも可能です。

rEFIndのデフォルトのUIに飽きてきたら、是非試してみてはいかがでしょうか。

takahashi 著者:takahashi

“MySQL版SSMS”なGUIツール MySQL Workbench

Microsoft SQL ServerというRDBMSには、GUIでDBやテーブル、データの編集ができる”SQL Server Management Studio(SSMS)”が無料で用意されています。

SQL Server Management Studio (SSMS) のダウンロード – Microsoft

一方MySQLはサードパーティ製のツール以外ではあまり充実している印象がなかったのですが、先日、公式のツールとして公開されている”MySQL Workbench”というソフトウェアで、実はSSMS同様GUIでDBを操作できる機能があることを知りました。

MySQL Workbench

https://www.mysql.com/jp/products/workbench/ より引用

接続したMySQL内のスキーマやテーブルの一覧を表示したり、現在DBへ保存済みのデータ一覧をGUI上で確認したり、編集したりもできます。

さらにパフォーマンス解析などを行うことも可能です。

https://www.mysql.com/jp/products/workbench/ より引用

CLI環境とSQL文だけでもMySQLは問題なく操作できますが、開発やデバック時はCLIだけではとても効率が悪い場合もあります。

このツールは無料で利用できるので、MySQLを使ったある程度規模の大きいシステムを構築する際は、是非利用してみてはいかがでしょうか。

takahashi 著者:takahashi

USBメモリ 容量表記の罠

USBメモリやポータブルHDDなどを買う際に、そのストレージの容量を確認してから買っている方がほとんどだと思います。

今回はこのUSBメモリの容量についてのネタです。

USBストレージを刺すと、パッケージに書かれている容量と、PCに刺した時に表示される容量が異なって見えることがよくあります。

USBストレージに不可視の容量が設定されていて少なく表示されている場合もありますが、例えば64GBのストレージを買ったのにPCにつないだら58GBぐらいの容量で表示され、”えっ、6GBも少ないじゃん…”となってしまう場合もあります。

この違いの一番の原因は、実はストレージの総容量を出すときの計算方法の違いにあるようです。

容量を表すByteという単位ですが、実はこの単位は特殊な部分があり、2つの計算方法が存在しています。

1000バイト=1KB、1000KB=1MB…

のように、1000単位で次の位に上がる”SI接頭辞”と、

1024バイト=1KB、1024KB=1MB…

のように、1024単位で位が上がっていく”二進数接頭辞”

の2種類です。

つまり、同じ100GBというデータ量でも、

100GB = 100 × 1000 × 1000 × 1000 (B)

の場合と

100GB = 100 × 1024 × 1024 × 1024 (B)

の場合があるということです。

(※11/27修正:計算式が間違っていました。申し訳ありません…)

ややこしいですよね…(;´∀`)

そして、USBストレージのパッケージに書かれている容量にはよくSI接頭辞が用いられていて、PC内での容量計算には二進数接頭辞が使われているので、実際は少なく表示されるようになっているわけです。

(PC上でSI接頭辞なんて普段ほとんど使う機会がないのになんでこればっかり使われるんでしょうね(;´∀`))

なので、例えば合計60GBのデータをバックアップしようとして、64GBのUSBメモリを購入したら、実際は58GBしかなかった…なんてことが起きたりもしますので、データの保存に必要な容量に合わせてストレージを購入する場合は、かなり余裕をもった容量のものを購入されることをお勧めします。

参考:
USBメモリについて(2)バイト単位について補足 – 【IT運用保守】サポーターズBlog

takahashi 著者:takahashi

Windowsでファイルのハッシュ値を取得する方法

フリーソフトやLinux系OSのインストーラのISOなど、インターネット上から自由に入手できるソフトウェアにはよく、”チェックサム”と呼ばれる値がついていることがあります。

Ubuntu公式サイトでISOイメージのハッシュ値をチェックする方法を紹介している部分

このチェックサムとは何かというと、

ある関数を使って特定のデータを計算すると必ず同じ値が得られ、1ビットでもデータが異なった場合は異なった値が出力されるアルゴリズム=ハッシュ関数

によって出された、ダウンロード対象ファイルのハッシュ値のことです。

つまり、公開する側が正規のファイルのハッシュ値を計算したものをを公開しておくことで、そのファイルを入手した人が同じハッシュ関数を使って”本物のファイルが入手できたのか”を簡単に確かめられるようにしてある、ということです。

例えば、もし何らかの方法でダウンロードするファイルが不正にすり替えられていたとしても、1ビットでも異なれば別のハッシュ値が出力されてしまうため、手元のファイルのハッシュ値と比較することで手元のファイルが改ざんされたものかどうかを簡単に調べることができます。

そんなセキュリティ的にも重要なハッシュ関数ですが、WindowsではGUIのツールがデフォルトで用意されているわけではないため、ハッシュ関数の存在を知っていてもセットアップのめんどくささからあまり使わないユーザーも多いのではないかと思います。

実は、コマンドプロンプト上のコマンドによる操作にはなってしまいますが、Windowsに始めからインストールされている、CertUtil というコマンドで簡単にファイルのハッシュ値を求めることができます。

コマンドの使い方としては

CertUtil -hashfile ハッシュ値を出したいファイルのパス ハッシュ関数

のように指定します。

実行すると下記のようになります。

Microsoft Windows [Version 10.0.18362.476]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\hoge>CertUtil -hashfile C:\Users\hoge\Downloads\linuxmint-19.2-mate-64bit.iso sha256
SHA256 ハッシュ (対象 C:\Users\hoge\Downloads\linuxmint-19.2-mate-64bit.iso):
56f2d0c2b54be0fd66a8cf35799a69d02d4bfdf546b4f946a0b8af01cbbbd689
CertUtil: -hashfile コマンドは正常に完了しました。

C:\Users\hoge>

上記の例はLinuxMintのOSのインストーラーイメージをハッシュ関数にかけた時の結果です。

56f2d0c2b…の一行がハッシュ値となります。

このハッシュ値を公式サイトで公開されているハッシュ値と照らし合わせます。

ばっちり合致したので、改ざんがないことがわかりました。

こういったひと手間をかけるだけでも、ウイルスの被害などから身を守ることができますので、是非積極的に利用していきたいですね。