2022/04/19

WindowsでTypeScriptのソースを入れたフォルダの表示について

問題

 Windowsがフォルダの内容物によって表示の仕方を変えるようになったのは、Windows7あたりだったと思います (Windows Vistaは使ったことがないので不明)。クライアントサイドのソースをTypeScriptで書くようになって、拡張子.tsのファイルが増えてきました。

Windowsで拡張子.tsのファイルが多勢となっているフォルダを開くと、困ったことに勝手にアイコン表示になってしまいます。tsファイルを選択するとツールバーに「ビデオツール」のメニューが表示されることからも、TypeScriptのソースがビデオファイルとして認識されていることがわかります。しかもやたらファイルアクセスを繰り返して異常に遅くなったり、散々です。


原因

Windowsが拡張子".ts"のファイルを拡張子だけで、MPEG2のTransportStreamのファイルと認識してしまうことが原因です。遅くなるのはアイコンとしてビデオのサムネイルを表示しようとして、ファイの内部を解析していることが原因です。

動画と音声を1つのストリームにまとめるために、MPEG2では以下のストリームが規定されています。

  • 放送メディア向けのTransportStream
  • 蓄積メディア向けのProgramStream

動画と音声の両方が1つのファイルに入っているなら、上記のどちらかになります。しかし実際に流通しているMPEG2ファイルの拡張子は ".mpg" や ".mpeg" が多く、ごくまれに ".mpeg2" を見るくらいです。音声付きの動画なのに拡張子".ts"/".ps"なんて、見た記憶がありません。

事実上存在していないに等しいファイルへの対応をデフォルトにするのは止めてほしいものですね。


解決策

根本的にはレジストリをいじるしかないようですが、それは危険なので避けたいところです。

ドライブ単位ですが、以下の手順でも解決しました。

  1. エクスプローラを開いて".ts"ファイルを格納しているドライブを表示。
  2. ファイルアイコンのない場所を右クリックして「プロパティ」を選択。
  3. ドライブのプロパティダイアログが表示されるので、「カスタマイズ」タブを選択。
  4. 「このフォルダーを次の目的に最適化」で「全般」を選択し、その下の「このテンプレートをすべてのサブ フォルダーに適用する」をチェック。
  5. 「OK」を押してダイアログを閉じる。


2022/04/15

LotteryServに練習モードを追加

LotteryServの募集に「練習モード」を追加しました。

募集は、あらかじめ入力された内容に従って時間の経過とともに状態を変えながら実行していくので、実行に先立って入力内容が思いどおりであるかを検証することが困難です。そこで入力とLotteryServの動作の関係を理解いただくための「練習モード」を追加してみました。

練習モードは、以下の目的でお使いいただけます。

  • 使い方を覚えるために、練習しておきたい。
  • LotteryServのご利用検討のために、機能・使い勝手を確認してみたい。

練習モードは、本番モードとは下記の点が異なります。
  • 利用料金が無料。
  • 応募者数が制限されます。
  • 抽選は行いません。全応募者が落選となります。
  • 募集期間および結果公開期間が、最大48時間までに制限されます。
  • 当選通知Eメールは利用できません。
  • 主催者に支払い方法が設定されていなくても利用できます。

LotteryServに興味をお持ちで導入を検討いただけるようでしたら、まずは練習モードをお試しください。ご意見やご要望があれば、問い合わせいただけますと幸いです。

2022/03/26

Firebase Hostingで設定したカスタムドメインを解除してみた

  HTML/CSS/JavaScriptや、画像/動画/音声などのメディアコンテンツのみで構成されたwebサイトを構築するなら、Firebase Hostingを使用するという手段が用意されています。Firebase Hostingでwebサイトを作るとデフォルトのドメインが割り当てられるので、コンテンツさえ作ればすぐにwebサイトの運用が可能になります。デプロイしたコンテンツはCDNにも登録されるので、ユーザはアクセスが快適という特徴があります。

 Firebase Hostingでもカスタムドメインでwebサイトを公開することが可能です。その手順は「カスタムドメインを接続する」に書かれているとおりで、Firebaseのコンソールから簡単にできます。


 今回の記事は、Firebase Hostingで公開したサイトに一度接続したカスタムドメインを、解除してみたときの体験です。


ダッシュボードが行方不明

 まず最初に遭遇したのが「Firebase Hostingのダッシュボードがどこにあるのかわからなくなった」という問題。カスタムドメインの接続を試したときは、手順どおりで以下のキャプチャの様なダッシュボードを表示できていました。(このキャプチャはカスタムドメインに未接続です)


 その後日、試したカスタムドメインを解除しようと思い、同じリンクをたどったのですが、今度は以前の様なダッシュボードが表示されません。以下のキャプチャの様にFirebase Hostingの開始の案内が表示されます。先日設定したサイトはどうなったの?


 実はこのページは、シングルページで開始の案内からダッシュボードまで同じURIで実装されています。そしてフラグメントにも対応していないので、開始の案内もダッシュボードも全く同じURIとなります。
 ダッシュボードにたどり着くには、ページを表示する度に以下の手順を踏む必要がありました。

  1. 「始める」ボタンを押す。
  2. 「Firebase Hostingの設定」は説明だけなのでどんどん進めて、
  3. 「Firebase Hostingへのデプロイ」にある「コンソールに進む」を押す。

  4. めでたくFirebase Hostingのダッシュボードが表示される。

 開始の案内や手順の説明は1回でいいと思うのですが、毎回これらを見なければならない実装はいかがなものでしょう。ちなみに言語を英語に変えても同様です。「始める」ボタンを押すと「Firebase Hostingの設定」が右からフェードインして来るので、シングルページだと分かるだろうという思い込みで作られているようですが、このアニメーションを見ていなければ理解できません。シングルページアプリケーションは昨今のトレンドですが、このページの作りはトラップですね。

 ここまで来ると、カスタムドメインのメニューからドメイン編集/削除を選べるようになります。

 ダッシュボードの表示方法がわからなくてFirebaseのサポートに英語で質問したのですが、自分で見つけてしまいました。ついでにサポートに確認したところ「この手順でいい」みたいな返事があったので、手順は間違っていないはずです。


(2022/05/4追記)

ダッシュボードはFirebase Hostingのアプリがあればデフォルトで表示されました。この「ダッシュボードが行方不明」に気付いたのは、一度作成したFirebase Hostingアプリを削除した後でしたので、気付きませんでした。


謎のアクセス

 やっとカスタムドメインの設定を解除し、そのドメインにはGAEアプリのURIを設定しなおしました。しばらくしてGAEアプリのプロジェクトのCloud Loggingに、以下のようなログが残っていることに気付きました。


 リクエストされているパスは以下のとおり。15分間隔で2回ずつ、1日中アクセスが続きます。

/.well-known/acme-challenge/XXXXXXXXXXXXXXXXXXX

 もちろん自分でこんなアクセスした覚えはありません。というかユーザエージェントとして「Google-Firebase...」って。


 これについてFirebaseのサポートに確認したところ、「すでにカスタムドメインの解除は行われていて、このリクエストはそのうち停止する」との回答がありました。Firebase Hostingがこのアクセスを行っている理由は「カスタムドメインの接続先を変えたりした場合に、新しいSSL証明書が再プロビジョニングされるのを待ったり、証明書の作成プロセス全体を再度実行したりしなくていいように」とのことでした。

 上記のアクセスが実際に停止したのは、カスタムドメインの設定を解除してから4週間後でした。けっこう長いです。