EdgeがChromiumベースになる事への自分の気持ち

この記事は日記としてこの時の気持ちを保存する意図で書かれたものであり、技術的な話ではなく、自分の気持ちを基準に書かれている自分向けの記事です


噂として第一報を聞いたのはのことでした

Microsoft is building a Chromium-powered web browser that will replace Edge on Windows 10 | Windows Central

この時は話半分で聞いており、本当だとして、MSとして合理的な判断だとは思うが、Webの多様性が殆ど消えてしまうtweetしていました

そもそもEdgeはGoogle Chrome互換の実装を標榜していましたので、EdgeをGoogle Chromeのクローンとして車輪の再発明をするより、OSSマルチプラットフォーム化もできており完成度の高いChromiumをそのまま使う方が明らかに合理的です

ただ、この時点ではっきりしていたのはMicrosoftによるChromiumへのパッチ提供が増えているという話だけだったのであくまで噂として認識しており、例えばMicrosoft Office Onlineの互換性向上とか、Android版Edgeのためのパッチ提供ではないかと考えていました

そんな訳でMicrosoftから正式な発表があった時はかなり驚きました

第一報正式発表を聞いた自分の気持ちは ブラウザエンジンがBlinkに大統一されることを私は歓迎しない。しかし、そのコストを自分がメインで使っているわけでもないのにMicrosoftに払えと言い続けるのも違うと思っているのでMicrosoftの判断を非難する気はない。とりあえず今まで通りMozillaを応援する でした

この気持ちは3日経った今も変わらず、Microsoftのこの判断は商売としては妥当なものだと思いますし、普段メインブラウザとして使っている訳でもない私がWebの多様性というお題目の為だけにEdgeHTMLやChakraの開発をし続けろというのも違うと思っていますが、その上で非常に残念と思っています


根本的な話として、この話を聞いてお通夜状態の人もいれば、歓迎する人おり、自分はお通夜状態の人になります

しかし、歓迎側の気持ちも分かるつもりで、複数の実装があってそれぞれの機能の実装の判定やバグを回避しながらWeb Applicationを作るというのは控え目に言ってしんどい以外の何物でもなく、バグはもちろんのこと、実装が遅いブラウザ相手のサポートをせねばならない時の恨み言は1つや2つでは済まないだろうと思います

そう考えるとWeb Application開発者でブラウザエンジンの大統一を理想とする人がいるのは当然とすら思いますし、今大統一に一番近い立場にいるのはChromiumですから、今回のニュースを理想の到達に一歩近づいたと喜ぶ人がいるのも当然と思います

一方、自分としてはWebの世界はユーザーがカスタイマイズできる、一つのリソースを複数の利用方法で使えるのが魅力であると考えており、例えばユーザーが自分の利用目的に合わせて多様な拡張を組み合わせてブラウザを使ったり、ユーザーが自分の視力や色覚に合わせて文字サイズやフォントを変えたり、或いはコントラストや色を変更し、スクリーンリーダーを使って情報を得ることができるのがWebの良い所だと思っています

そして、上記の魅力を実現するためには、リソースの製作者が多様な利用法を想定してリソースを用意し、複数の実装でリソースの表示結果を確認するのが理想だと考えており、私はたった一つの圧倒的なシェアを誇る実装がデファクトスタンダードとなり、Webの制作現場が「1つの実装にのみ対応するリソースを用意すればよい」となってしまう事を恐れています

また、仕様策定の現場においても単一の実装がシェア7割を持った状態で「その仕様には対応しない」と判断すれば、実質その仕様は死に体になってしまいますから、どうしてもその単一の実装を向いて作業せざるを得ない状況が発生してしまうと思います

更に、実装側の製造の現場でも、合理的な判断の結果として「確かに仕様違反であるが、圧倒的なシェアがあり影響が非常に大きいため、互換性保持の為に修正はできない」と言う事もある訳で、結果としてデファクトスタンダードが本来守るべき仕様を侵食してしまう事もあろうかと思います


上記の様に懸念は色々するのですが、だからといって自分の掲げる理想の為に口先だけでMicrosoftにEdgeHTMLを作り続けろというのも、Webの現場に複数の実装のバグ対応などの費用を払い続けろというのもそれは違うと思う訳で、繰り返しになりますが、とりあえず自分は今まで通りMozillaを応援します

2018年の抱負の進捗状況 (12月1日時点)

この記事は自分向けの記事です

もうちょっと頻繁にblogを更新する

一応、毎月この進捗報告以外に1本は何か記事が書けているのでそれでいいか、と言う気持ちです

義務にしてしまうとやる気がなくなるのでこんな感じで来年以降も緩く続けたい所存です

体重を60kgまで落とす、改め体重60kg前後を維持する

の朝が60.75kgでの朝が61.65kgでした

順調にリバウンドしており、この先忘年会、クリスマスにお正月と脂肪を増やしやすい時期なので気を付けたい所です

体脂肪率の朝は9.7%と大体10%前後で安定しており、より大きな目標の健康になるは達成できていますので、とりあえず引き続き様子見です

HTML5.2の仕様書を一通り読む、改め HTML LS Developer's Editionを読む

完全に止まっています

HTML LS Developer's Editionを読むを来年の目標として来年以降挽回したいと思っています

応用情報技術者試験に合格する、改め情報処理安全確保支援士を受験する

情報処理安全確保支援士の受験はしましたが、自己採点で落ちていますのでこちらも来年挽回したい所です

お勧めの東方Project作品の選び方

昨日、現時点の東方Project作品を一通り書き出してみる東方Projectの原作の規模感というか、作品の広がりを自分なりに整理できましたので、改めて自分なりの東方Projectのお勧め作品の選び方を書いてみます

必ずしも原作をプレイする必要はない

参考: 東方を楽しむのに必ずしも原作をプレイする必要はないよという神主のお話 - 雑念雑記はてな出張所

東方Projectの原作者のZUNさんは、原作をやらなくてもよい、と言う旨の発言を度々しています

もしも二次創作を楽しんだのだから原作もやらなくてはと義務感で原作をやろうとしている場合、その必要はありません

ナンバリングがなければ順番を気にする必要はない

ZUN氏(以下ZUN):

東方ってシリーズものだと思われるというか,勘違いされることが多いんですけど,「東方はシリーズ」とは一度も言ってないんですよ。「プロジェクト第何弾」とは言ってますけど,それでも「○○2」だ「3」だってやりかたはしてない。まあ,見る人が見ればシリーズなのかもしれませんけどね。

ただ,僕の中ではシリーズではない。前回の作品を好きだった人が,次も好きになるとは限らないというのが,東方とシリーズものとの大きな違いと考えています。

―特集― シューティングの方法論 第2回

ストーリィ性はありますが、ナンバリングがされている作品 (マンガ作品で1巻、2巻や上下巻などの表記のある作品) を除いて、どの作品から始めても問題ありません


既に興味のある作品名があったり、キャラクターがいたりする場合

興味のある作品名があったり、キャラクターがいたりする場合、それを楽しんでください

ただ、作品によって作画が著しく異なる場合がありますので、絵柄で興味が沸いた場合は作画担当者を軸に作品を探した方が良いと思います

参考: どの八雲紫が一番好き?|2ch東方スレ観測所

弾幕シューティングゲームとしての東方Projectに興味がある場合

現在入手が比較的楽なWindows OS向けの弾幕シューティングゲームは以下の通りです

基本的に道中、中ボス、道中、ボスのセットを1ステージとして6ステージでクリアと言う形のシューティングゲームですが、対戦型シューティングや特定の弾幕を自機の特殊能力でクリアしていくような特殊なルールの物もあります

  1. 東方紅魔郷 ~ the Embodiment of Scarlet Devil.
  2. 東方妖々夢 ~ Perfect Cherry Blossom.
  3. 東方永夜抄 ~ Imperishable Night.
  4. 東方花映塚 ~ Phantasmagoria of Flower View.(註1)
  5. 東方文花帖 ~ Shoot the Bullet.(註2)
  6. 東方風神録 ~ Mountain of Faith.
  7. 東方地霊殿 ~ Subterranean Animism.
  8. 東方星蓮船 ~ Undefined Fantastic Object.
  9. ダブルスポイラー ~ 東方文花帖(註2)
  10. 妖精大戦争 ~ 東方三月精(註3)
  11. 東方神霊廟 ~ Ten Desires.
  12. 東方輝針城 ~ Double Dealing Character.
  13. 弾幕アマノジャク ~ Impossible Spell Card.(註2)
  14. 東方紺珠伝 ~ Legacy of Lunatic Kingdom.
  15. 東方天空璋 ~ Hidden Star in Four Seasons.
  16. 秘封ナイトメアダイアリー ~ Violet Detector.(註2)
註1
対戦型シューティングゲーム
註2
ボスキャラクターの弾幕をプレイヤーキャラクターの特殊技能で1つづつクリアしてくタイプのゲーム
註3
キャラクターの立ち絵の作画が、マンガ東方三月精の作画担当の比良坂真琴

上記のゲームの内、一部は 上海アリス幻樂団にて体験版が配布されていますので、手持ちのPCの動作確認を兼ねて先に体験版を遊んでみることをお勧めします

道中とかいいから弾幕だけ遊びたい、あるいはゲームよりも弾幕そのものに興味がある場合

とにかく弾幕だけ遊びたい場合、上記の中でも以下の4作品がお勧めです

  1. 東方文花帖 ~ Shoot the Bullet.(註2)
  2. ダブルスポイラー ~ 東方文花帖(註2)
  3. 弾幕アマノジャク ~ Impossible Spell Card.(註2)
  4. 秘封ナイトメアダイアリー ~ Violet Detector.(註2)

また、ゲームよりも弾幕の種類や映像に興味がある場合、弾幕を特集した書籍 The Grimoire of Marisa もあります

弾幕は動いているものが……と思いますので、個人的にはThe Grimoire of Marisaは入り口としてよりゲームプレイ後の更なるファンアイテムとしてお勧めです

弾幕アクションゲームとしての東方Projectに興味がある場合

弾幕アクションゲーム (対戦型格闘ゲーム格闘弾幕アクションにしたゲーム) は以下の作品です

  1. 東方萃夢想 ~ Immaterial and Missing Power.
  2. 東方緋想天 ~ Scarlet Weather Rhapsody.
  3. 東方非想天則 ~ 超弩級ギニョルの謎を追え
  4. 東方心綺楼 ~ Hopeless Masquerade.
  5. 東方深秘録 ~ Urban Legend in Limbo.
  6. 東方憑依華 ~ Antinomy of Common Flowers.

弾幕アクションゲームは黄昏フロンティアが開発・販売元となっています

各作品の体験版もダウンロードできますので、手持ちのPCの動作確認を兼ねて先に体験版を遊んでみることをお勧めします

楽曲に興味がある場合

音楽CDが主体となる製品は大きく分けて以下の3つになります

また、ZUN's Music Collectionは独立したストーリィの蓬莱人形と、秘封倶楽部のストーリィが語られる蓬莱人形以外の作品に分けることができます

蓬莱人形秘封倶楽部の物語はCD付属のブックレットで語られているため、iTunesなどのダウンロード販売版よりもCDを購入した方がお得ですが、未知の花 魅知の旅のみ元々ブックレットが付属しておらず、CDも入手困難ですのでダウンロード販売版からの購入をお勧めします

幺樂団の歴史 ~ Akyu's Untouched Score

PC-9801版ゲームのサウンドトラックです

  1. 幺樂団の歴史1 ~ Akyu's Untouched Score vol.1
  2. 幺樂団の歴史2 ~ Akyu's Untouched Score vol.2
  3. 幺樂団の歴史3 ~ Akyu's Untouched Score vol.3
  4. 幺樂団の歴史4 ~ Akyu's Untouched Score vol.4
  5. 幺樂団の歴史5 ~ Akyu's Untouched Score vol.5

ZUN's Music Collection

Windows版ゲームのサウンドトラックです

  1. 蓬莱人形 ~ Dolls in Pseudo Paradise
  2. 蓮台野夜行 ~ Ghostly Field Club
  3. 夢違科学世紀 ~ Changeability of Strange Dream
  4. 卯酉東海道 ~ Retrospective 53 minutes
  5. 大空魔術 ~ Magical Astronomy
  6. 未知の花 魅知の旅
  7. 鳥船遺跡 ~ Trojan Green Asteroid
  8. 伊弉諾物質 ~ Neo-traditionalism of Japan.
  9. 燕石博物誌 ~ Dr.Latency's Freak Report
  10. 旧約酒場 ~ Dateless Bar "Old Adam"

黄昏フロンティアより発売されたsound track

弾幕アクションゲームのサウンドトラックです

  1. 幻想曲抜萃 東方萃夢想 ORIGINAL SOUND TRACK
  2. 全人類ノ天楽録 東方緋想天 ORIGINAL SOUND TRACK
  3. 核熱造神ヒソウテンソク 東方非想天則 ORIGINAL SOUND TRACK
  4. 暗黒能楽集・心綺楼 東方心綺楼 ORIGINAL SOUND TRACK
  5. 深秘的楽曲集 宇佐見菫子と秘密の部室
  6. 完全憑依ディスコグラフィ

横断的に東方Porject全体の登場キャラクターに興味がある場合

特定のキャラクターではなく、横断的に東方Project全体の登場キャラクターに興味がある人には東方求聞史紀シリーズがお勧めです

  1. 東方求聞史紀 ~ Perfect Memento in Strict Sense.
  2. 東方求聞口授 ~ Symposium of Post-mysticism.

なお、上記の作品は作中人物の稗田阿求が執筆した作中作の形式を取っています

東方Project世界で起こった様々な出来事に興味がある場合

東方Project世界で起こった様々な出来事を記録した書籍として以下の2冊がお勧めです

  1. 東方文花帖 ~ Bohemian Archive in Japanese Red.
  2. 東方文果真報 Alternative Facts in Eastern Utopia.

なお、上記の作品は作中人物の射命丸文が執筆した新聞や週刊誌という作中作の形式を取っています

ZUNさん執筆の小説に興味がある場合

ZUNさん執筆の小説として以下の2作がお勧めです

マンガで読みたい場合

現在入手が容易なマンガ作品としては以下の作品があります

基本的に表紙絵の絵柄の好みで選べば良いと思います

その上で、敢えて入門作品として1作挙げるなら、完結済みで主人公が裏事情に疎いために入門者目線になっている東方鈴奈庵 ~ Forbidden Scrollery.がお勧めです

なお、シリーズ名はこの記事における便宜的なものです

また、作画担当の方々の敬称は略させていただきます

東方鈴奈庵 ~ Forbidden Scrollery.

作画担当は春河もえです

東方三月精シリーズ

  1. 東方三月精 ~ Strange and Bright Nature Deity (全3巻)
  2. 東方三月精 ~ Oriental Sacred Place (全3巻)
  3. 東方三月精 ~ Visionary Fairies in Shrine. (既刊1-2巻、連載中)

作画担当は比良坂真琴です

作画担当松倉ねむ東方三月精 ~ Eastern and Little Nature Deityは、現在は絶版状態で入手困難です

東方儚月抄シリーズ

東方儚月抄 ~ Silent Sinner in Blue.の作画担当秋★枝東方儚月抄 ~ 月のイナバと地上の因幡の作画担当はあらた としひらです

東方儚月抄には前述の小説版東方儚月抄 ~ Cage in Lunatic Runagate.もありますが、単なるノベライズ、コミカライズではなく、内容はそれぞれ異なります

東方茨歌仙

作画担当はあずまあやです

現時点の東方Project作品を一通り書き出してみる

この記事は何

いつもに益して本当に個人的な覚書です

人に東方Projectを説明する際に、そもそも東方Projectとは何ぞや、などをどこから語ればいいのか自分の中でも纏まりきらない状態になっているので自分用に整理してみます

この記事における東方Project作品の定義

この記事では、東方Project作品をZUNさんがPC-9801版向けに作った所謂旧作の6作品、上海アリス幻樂団で発表した作品群、及びZUNさん公認でこれら作品群と同一世界の作品とします

ややこしいですが、上記の様な定義をしたのは以下の理由によります

  • ZUNさんが二次創作ガイドラインを発表しており、ガイドラインで一括して公認された二次的創作物が大量に存在する (註1)
  • ZUNさんが原作として関わっているが、一次創作物の東方Project作品群と同一世界の話として作られた作品と、同一世界ではない話として作られた作品がある (註2)
註1
東方Projectの場合、殆どの同人誌 (二次的創作物) がガイドラインによって一括して許諾されている
註2
具体的には東方鈴奈庵 ~ Forbidden Scrollery.火鳥風傑 東方Project 火鳥作品集を比べた場合、両方とも原作ZUNと明記された商業流通されている書籍であるが、東方鈴奈庵は一次創作物の東方Project作品群と同一世界の物語であり、火鳥風傑は異なる所謂パロディ同人誌的な異なる世界の物語であるため、この記事では東方鈴奈庵東方Project作品とし、火鳥風傑は対象外とする

PC-9801版ゲーム

所謂旧作の6作品 (全て入手困難)

基本的に弾幕シューティングですが、第一弾東方靈異伝ブロック崩しで、東方夢時空は対戦型シューティングゲームです

  1. 東方靈異伝 ~ Highly Responsive to Prayers.
  2. 東方封魔録 ~ the Story of Eastern Wonderland.
  3. 東方夢時空 ~ Phantasmagoria of Dim.Dream.
  4. 東方幻想郷 ~ Lotus Land Story.
  5. 東方怪綺談 ~ Mystic Square.

Windows版ゲーム

上海アリス幻樂団の作品

基本的に縦スクロールの弾幕シューティングゲームですが、ルールが特殊なものや、対戦型シューティングゲームなどもあります

  1. 東方紅魔郷 ~ the Embodiment of Scarlet Devil.
  2. 東方妖々夢 ~ Perfect Cherry Blossom.
  3. 東方永夜抄 ~ Imperishable Night.
  4. 東方花映塚 ~ Phantasmagoria of Flower View.
  5. 東方文花帖 ~ Shoot the Bullet.
  6. 東方風神録 ~ Mountain of Faith.
  7. 東方地霊殿 ~ Subterranean Animism.
  8. 東方星蓮船 ~ Undefined Fantastic Object.
  9. ダブルスポイラー ~ 東方文花帖
  10. 妖精大戦争 ~ 東方三月精
  11. 東方神霊廟 ~ Ten Desires.
  12. 東方輝針城 ~ Double Dealing Character.
  13. 弾幕アマノジャク ~ Impossible Spell Card.
  14. 東方紺珠伝 ~ Legacy of Lunatic Kingdom.
  15. 東方天空璋 ~ Hidden Star in Four Seasons.
  16. 秘封ナイトメアダイアリー ~ Violet Detector.

黄昏フロンティアの作品

弾幕アクションゲーム (ざっくりと対戦型格闘ゲームの、格闘が弾幕アクションになったもの) です

  1. 東方萃夢想 ~ Immaterial and Missing Power.
  2. 東方緋想天 ~ Scarlet Weather Rhapsody.
  3. 東方非想天則 ~ 超弩級ギニョルの謎を追え
  4. 東方心綺楼 ~ Hopeless Masquerade.
  5. 東方深秘録 ~ Urban Legend in Limbo.(註3)
  6. 東方憑依華 ~ Antinomy of Common Flowers.
註3
PS4に移植されており、PS4版はキャラクターと続編東方憑依華への導入となるストーリィが追加されている

Sound Track

書籍にCDが付属している作品もありますが、ここではCDが主体となっている作品のみを記載します

幺樂団の歴史 ~ Akyu's Untouched Score

PC-9801版ゲームのsound track

  1. 幺樂団の歴史1 ~ Akyu's Untouched Score vol.1
  2. 幺樂団の歴史2 ~ Akyu's Untouched Score vol.2
  3. 幺樂団の歴史3 ~ Akyu's Untouched Score vol.3
  4. 幺樂団の歴史4 ~ Akyu's Untouched Score vol.4
  5. 幺樂団の歴史5 ~ Akyu's Untouched Score vol.5

ZUN's Music Collection

ブックレットがストーリィ形式になっており、蓬莱人形 ~ Dolls in Pseudo Paradiseのみ独立したストーリィ、その他が秘封倶楽部の物語になっています

  1. 蓬莱人形 ~ Dolls in Pseudo Paradise(註4)
  2. 蓮台野夜行 ~ Ghostly Field Club
  3. 夢違科学世紀 ~ Changeability of Strange Dream
  4. 卯酉東海道 ~ Retrospective 53 minutes
  5. 大空魔術 ~ Magical Astronomy
  6. 未知の花 魅知の旅(註5)
  7. 鳥船遺跡 ~ Trojan Green Asteroid
  8. 伊弉諾物質 ~ Neo-traditionalism of Japan.
  9. 燕石博物誌 ~ Dr.Latency's Freak Report
  10. 旧約酒場 ~ Dateless Bar "Old Adam"
註4
希少枚数のCD-R版と、2018現在も流通するプレス版があり、収録されている楽曲は同一だがブックレット内容が異なっている
註5
東日本大震災の影響で急遽ブックレットなしで作成され、その後再版されていなかったためCDは希少となっているが、2018年iTunesGoogle Playで配信されるようになった

黄昏フロンティアより発売されたsound track

サークル黄昏フロンティアが開発・発売元となっているゲームのsound trackです

  1. 幻想曲抜萃 東方萃夢想 ORIGINAL SOUND TRACK
  2. 全人類ノ天楽録 東方緋想天 ORIGINAL SOUND TRACK
  3. 核熱造神ヒソウテンソク 東方非想天則 ORIGINAL SOUND TRACK
  4. 暗黒能楽集・心綺楼 東方心綺楼 ORIGINAL SOUND TRACK
  5. 深秘的楽曲集 宇佐見菫子と秘密の部室
  6. 完全憑依ディスコグラフィ

書籍

シリーズ名は公式の物ではなくこの記事で便宜上付けたものです

シリーズとしてまとめはしましたが、ナンバリングがない物は独立して読めます

東方三月精シリーズ

  1. 東方三月精 ~ Eastern and Little Nature Deity (全1巻) (註4)
  2. 東方三月精 ~ Strange and Bright Nature Deity (全3巻)
  3. 東方三月精 ~ Oriental Sacred Place (全3巻)
  4. 東方三月精 ~ Visionary Fairies in Shrine. (既刊1-2巻、連載中)
註4

東方三月精 ~ Eastern and Little Nature Deityのみ絶版、入手困難

ただし、付属CDは同一楽曲は東方三月精 ~ Strange and Bright Nature Deity.2巻に収録されている

東方儚月抄シリーズ

  1. 東方儚月抄 ~ Silent Sinner in Blue. (上、中、底、全3巻)
  2. 東方儚月抄 ~ Cage in Lunatic Runagate. (全1巻)
  3. 東方儚月抄 ~ 月のイナバと地上の因幡 (上、下、全2巻)

東方文花帖シリーズ

  1. 東方文花帖 ~ Bohemian Archive in Japanese Red.
  2. 東方文果真報 Alternative Facts in Eastern Utopia.

東方求聞史紀シリーズ

  1. 東方求聞史紀 ~ Perfect Memento in Strict Sense. 記憶する幻想郷 (註5)
  2. 東方求聞史紀 ~ Perfect Memento in Strict Sense.
  3. 東方求聞口授 ~ Symposium of Post-mysticism.
註5

月刊Comic Rex 2006年12月号に読み切り形式で掲載

書籍版東方求聞史紀の前日単にあたるマンガで、単行本未収録のため、2018年現在入手困難

その他、ノンシリーズ

註6

とらのあな専売の同人誌

収録作の六十年ぶりに紫に香る花がZUNさんによる寄稿であり本記事定義の東方Project作品にあたる

2018年の抱負の進捗状況 (11月1日時点)

この記事は自分向けの記事です

もうちょっと頻繁にblogを更新する

自分と知っては合格基準を満たしているのですが (合格基準を低めにしないと、未達成に慣れて何もしなくなる)、もう少しアウトプットを増やしたいとも考えています


また、それはそれとして、最終的に自分の文書を発表するなら自分の管理するドメイン配下だよね、とも思い、もっと気軽に日々の事を書く場を独自ドメイン配下に用意しようかとも考え始めています

その場合、静的CMSを自作するところから始まるのですが

体重を60kgまで落とす、改め体重60kg前後を維持する

の朝が61.10kgでの朝が62.30kgでした

から風邪を引いていて、体が温まるものとか、高カロリイなものを食べて寝ていたら、この1週間で1.5kgほど太りました

所謂リバウンドが始まっているので、11月中に61.00kgまで、年内に60.00kg未満まで戻したいと考えています

HTML5.2の仕様書を一通り読む、改め HTML LS Developer's Editionを読む

HTML5.2の仕様書を一通り読むは完全に未達成であきらめており、現在は来年の目標とする「HTML LS Developer's Editionを読む」の助走期間と考えています

応用情報技術者試験に合格する、改め情報処理安全確保支援士を受験する

に情報処理安全確保支援士を記念受験してきました

知識を問われる問題が壊滅的で要するに勉強不足が露呈した結果になりました

また来年

OneDriveの「重要なフォルダーの保護」を停止すると、重要なフォルダーからファイルが消える話

「オンラインストレージサーヴィスで同期を解除するとローカルファイルが削除される」と言うのはよく聞く罠ですが、それがWindows 10の「重要なフォルダーの保護」でも発生するため、注意喚起としてこの記事を書きました

オンラインストレージサーヴィスで同期を解除したりアカウントを削除すると同期していたローカルファイルが削除される、と言う挙動自体はOneDrive以外でもありがちな挙動ですが (私はこの挙動自体どうかと思いますが、それはそれとして)、それが重要なフォルダー (デスクトップ、ピクチャー、ドキュメント) で発生するので知らないと問題が発生しかねないと懸念し、詳細情報として再現手順を以下に説明します


追記

本事象について、筆者自身がWindows 10 October 2018 Updateの最初のリリース直後に気づき記事にしたこともあり、Windows 10 October 2018 Updateによりユーザーデータが消える事象を連想してしまいますが、本件は別事象となります

しかし、Windows 10 October 2018 Updateの最初のリリースにてユーザーデータが消える事象自体と、本件で問題視している「重要なフォルダーの保護」機能自体は関連があります (ややこしい)

Windows 10 October 2018 Updateの最初のリリースにてユーザーデータが消える事象についての詳細については Updated version of Windows 10 October 2018 Update released to Windows Insiders - Windows Experience BlogWindows Experience Blog をご覧ください


再現手順

対象フォルダ (今回はデスクトップ) のファイルの確認

今回はデスクトップにテストデータとして 新しいテキスト ドキュメント.txt を用意しました

OneDriveの「重要なフォルダーの保護」でデスクトップを保護する

  1. タスクバーのOneDriveアイコンから「その他」、「設定」を選択する
  2. 表示されたMicrosoft OneDrive画面から「自動保存」タブを選択し、「重要なフォルダーを保護する」の「フォルダーの更新」ボタンを押す
  3. 表示された「重要なフォルダーの保護を設定」画面で (デフォルトで、デスクトップ、写真、ドキュメントがチェックされているので) 今回はデスクトップのみをチェックした状態にし、「保護の開始」ボタンを押す
  4. デスクトップ上の 新しいテキスト ドキュメント.txt にOneDriveで同期されているファイルに付くチェックアイコンが付いたことを確認する

デスクトップの「重要なフォルダーの保護」を停止とファイルの確認

  1. 再び「重要なフォルダーの保護を設定」画面を表示し、デスクトップの項目の「保護の停止」を押す
  2. 保護を無効にしますか?
    ・デスクトップのすべてのアイテムは OneDriveに残ります。
    ・新しいファイルは、OneDriveで保護されていない別のフォルダーに追加されます。

    と言う文言を確認し「保護の停止」をクリックする
  3. デスクトップ上のファイルが消え、ファイルの場所 と言うOneDriveでデスクトップファイルを同期していたフォルダーへのショートカットが作成されていることを確認する
  4. なお、ファイルの場所 からOneDriveでデスクトップファイルを同期していたフォルダーへ移動すれば、デスクトップ上から消されたファイルを得る事が出来ます

OneDriveへの要望

「重要なフォルダーの保護」でフォルダーを保護した後、保護の停止を行うと、「重要なフォルダー」からファイルが消されるが、消さないよう変更すべきである

まず、保護の停止時に表示される説明からファイルの削除を読み取ることが出来ない

また、説明があっても重要なフォルダー(特にドキュメントフォルダー)にはアプリケーションの設定ファイル等を保存されている場合があり、一時的にでもファイルが削除されると障害を招きかねない

よって、少なくともファイルを消さずに保護を無効にする方法を用意し、デフォルトとすべきである

.NETの System.Io.Compression で非圧縮のZIPファイルを作れなかったが対象が固定だったので直接バイナリファイル作って強引に解決した話

この話は件名が全てなので、タイトルを読んで「ああ、そうですね」と思った人は読んでも新たな知見は得られません

EPUBファイルを作るためにmimetypeを非圧縮でZIP化したいが System.Io.Compression で上手く出来ない

EPUBの仕様ではmimetyeファイルは非圧縮でzipファイルの最初に格納されていなければなりません

さらに mimetype ファイルは、圧縮または暗号化をしてはならず(must)、そして ZIP ヘッダにエキストラフィールドがあってはならない(must not)。

3.3 OCF ZIP コンテナのメディアタイプの識別 - PUB Open Container Format (OCF) 3.0.1(日本語訳版)

そこで .NETSystem.Io.Compression 名前空間を使ってみます

ZipFileExtensionsCreateEntryFromFile メソッドに [CompressionLevel]::NoCompression を指定して圧縮するPowerShellを書いてみます

using namespace System.IO.Compression;

[ZipArchive] $zipArchive = [ZipFile]::Open('sample.epub',[ZipArchiveMode]::Update);

[ZipFileExtensions]::CreateEntryFromFile($zipArchive, 'mimetype', 'mimetype', [CompressionLevel]::NoCompression) > $null;

$zipArchive.Dispose();

しかし、確認してみると mimetype ファイルは Deflate で圧縮されてしまっています

駄目じゃん

と言う訳で圧縮済みのZIPをバイナリファイルとして直接作ることにした

ZIP化の対象ファイルが可変の内容であれば別なツールを使うか、最悪 ZIP File Format Specification を読む羽目になっていたところですが、今回対象としているEPUBmimetye ファイルは幸い内容が完全固定で、しかも小さいです

つまり、最初からZIP化済みのファイルを用意しておいて複製して使ったり、或いは固定のZIP化したバイナリィデータを知っておけばそれを書き込んで直接ZIPファイルを生成したりして今回はこの問題を回避できます

てな訳で、以下のコードで問題回避

[Byte[]] $byteData = ('80', '75', '3', '4', '10', '0', '0', '0', '0', '0', '99', '140', '53', '77', '111', '97', '171', '44', '20', '0', '0', '0', '20', '0', '0', '0', '8', '0', '0', '0', '109', '105', '109', '101', '116', '121', '112', '101', '97', '112', '112', '108', '105', '99', '97', '116', '105', '111', '110', '47', '101', '112', '117', '98', '43', '122', '105', '112', '80', '75', '1', '2', '30', '3', '10', '0', '0', '0', '0', '0', '99', '140', '53', '77', '111', '97', '171', '44', '20', '0', '0', '0', '20', '0', '0', '0', '8', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '255', '129', '0', '0', '0', '0', '109', '105', '109', '101', '116', '121', '112', '101', '80', '75', '5', '6', '0', '0', '0', '0', '1', '0', '1', '0', '54', '0', '0', '0', '58', '0', '0', '0', '0', '0');

[System.IO.File]::WriteAllBytes("./sample.epub", $byteData);

バイナリファイルの保存はWindows PowerShellなら Set-Content './sample.epub' -Value $byteData -Encoding Byte;PowerShell Coreなら Set-Content -Path './sample.epub' -Value $byteData -AsByteStream; でも行ける感じです

我ながら強引ですが、そんな感じで一つ