布団が俺を呼んでいる

丘山大一のぶろぐ

空文字を判定する最も効率のいいやり方は? (C#i編)

というわけでC#編。

ソース(前回書かなかったな)

効率のいい書き方?作法?そんなん知らんがな(邪悪)。

    class Program
    {
        static void Main(string[] args)
        {
            using (StreamWriter sw = new StreamWriter(@"D:\test.txt", true, System.Text.Encoding.Unicode))
            {
                Console.SetOut(sw);

                string s = string.Empty;
                var result = new List<TimeSpan>();

                var tryCounter = Enumerable.Range(1, 10).ToList();
                var roopCounter = Enumerable.Range(0, 10000000).ToList();

                Console.WriteLine(@"""""での判定");
                result.Clear();
                tryCounter.ForEach(i =>
                {
                    Console.Write(i + "回目:");
                    Console.WriteLine(
                    RunText(() =>
                    {
                        roopCounter.ForEach(r =>
                        {
                            if (s == "") { };
                        });
                    }));
                });

                Console.WriteLine(@"String.Emptyでの判定");
                result.Clear();
                tryCounter.ForEach(i =>
                {
                    Console.Write(i + "回目:");
                    Console.WriteLine(
                    RunText(() =>
                    {
                        roopCounter.ForEach(r =>
                        {
                            if (s == string.Empty) { };
                        });
                    }));
                });

                Console.WriteLine(@"String.IsNullorEmptyでの判定");
                result.Clear();
                tryCounter.ForEach(i =>
                {
                    Console.Write(i + "回目:");
                    Console.WriteLine(
                    RunText(() =>
                    {
                        roopCounter.ForEach(r =>
                        {
                            if (string.IsNullOrEmpty(s)) { };
                        });
                    }));
                });

                Console.WriteLine(@"Lengthでの判定");
                result.Clear();
                tryCounter.ForEach(i =>
                {
                    Console.Write(i + "回目:");
                    Console.WriteLine(
                    RunText(() =>
                    {
                        roopCounter.ForEach(r =>
                        {
                            if (s.Length == 0) { };
                        });
                    }));
                });

                Console.WriteLine(@"""""とequlsでの判定");
                result.Clear();
                tryCounter.ForEach(i =>
                {
                    Console.Write(i + "回目:");
                    Console.WriteLine(
                    RunText(() =>
                    {
                        roopCounter.ForEach(r =>
                        {
                            if (s.Equals("")) { };
                        });
                    }));
                });

                sw.Close();
            }
        }

        static TimeSpan RunText(Action a)
        {
            var t = DateTime.Now;
            a();
            return DateTime.Now - t;
        }
    }

結果

""での判定
1回目:00:00:00.1810066
2回目:00:00:00.1560072
3回目:00:00:00.1440069
4回目:00:00:00.1290084
5回目:00:00:00.1630423
6回目:00:00:00.1779770
7回目:00:00:00.1580394
8回目:00:00:00.1800101
9回目:00:00:00.1579818
10回目:00:00:00.1810102

String.Emptyでの判定
1回目:00:00:00.1690038
2回目:00:00:00.1430068
3回目:00:00:00.1370051
4回目:00:00:00.1190062
5回目:00:00:00.1190067
6回目:00:00:00.1090028
7回目:00:00:00.1030062
8回目:00:00:00.1020050
9回目:00:00:00.0900034
10回目:00:00:00.0890046

String.IsNullorEmptyでの判定
1回目:00:00:00.0770039
2回目:00:00:00.0740020
3回目:00:00:00.0680047
4回目:00:00:00.0670034
5回目:00:00:00.0720012
6回目:00:00:00.0670210
7回目:00:00:00.0619853
8回目:00:00:00.0610202
9回目:00:00:00.0610032
10回目:00:00:00.0600027

Lengthでの判定
1回目:00:00:00.0510044
2回目:00:00:00.0469995
3回目:00:00:00.0460022
4回目:00:00:00.0460020
5回目:00:00:00.0460034
6回目:00:00:00.0460022
7回目:00:00:00.0460020
8回目:00:00:00.0460016
9回目:00:00:00.0420017
10回目:00:00:00.0420029

""とequlsでの判定
1回目:00:00:00.0640032
2回目:00:00:00.0640030
3回目:00:00:00.0630028
4回目:00:00:00.0590029
5回目:00:00:00.0590028
6回目:00:00:00.0580030
7回目:00:00:00.0590032
8回目:00:00:00.0580030
9回目:00:00:00.0560021
10回目:00:00:00.0540025

総括

おおむねこの通りでした。
とりあえず「文字列 == 空」のような書き方はアカンということが分かった。
DelphiとC#は、開発者レベルで似ている(というか同……ゲフンゲフン)ですけど、結果が大分違うのが面白いですね。

※注意!

私の開発環境での結果です。
ロジックや書き方、環境によってなんぼでも結果は変わることをお断りしておきます。


C#実践開発手法 (マイクロソフト公式解説書)

新品価格
¥5,400から
(2016/5/22 17:14時点)

Windows Phone (Windows Mobile) アップデートの再起動ににかかる時間(trinity) 201605

「電話の更新」が昨日来ていました。
すぐに更新したかったのですが、寝る直前で気が付いた => 計測のためには起きてなくてはいけない
だったので、更新を延期。
本日更新しました。

再起動を手動でかける
というわけで手動でアップデート。
画面の歯車がクルクル回るのが約4分。
プログレスバーが約5分。
合計10分弱くらいでした。
前回よりわずかですが短い印象。
アップデート終了直後、「電話の更新」を覗いてみたら更新に失敗したぜ、みたいなメッセージが出ていましたが、数分してから再試行すると問題なくなりました。ただ単に起動直後にやったのがいけなかったみたい。

バージョン

OSのビルドバージョンは 10.0.10586.318 で変わっていません。
ファームウェアリビジョンは、 1028.020.001.61 になっていました。
本日時点の各バージョンは、
  • バージョン:1511
  • OSビルド:10.0.10586.318
  • ファームウェアリビジョン番号:1028.020.001.61
  • ハードウェアリビジョン番号:1.0
  • 無線ハードウェアバージョン:1.0
  • チップSOCバージョン:8952
ファームウェアリビジョンが上がっている=trinity側の更新だろ、ということでタイトルにはtrinityをくっつけました。
違ったらどうしよう。記事をなおそう。

まあアップデートはいいとして

MSさんちの方で携帯電話事業の動きがバタバタしていて、今後がとっても不安ですw


de:code 2016 参加してきました

楽しかったけど疲れたよ。

今年の感じ

期待されていたHolo Lens 関係があまりなかったので、デバイス的な盛り上がりにはちょっと欠けていた印象。
全体的には、
DevOps、Xamarin、ロボット(ボット)、UWPてな感じ。
スマホやらクラウドやらは当たり前になりすぎて、「それは前提として」話が進むのがなんともはや。
時代の流れは速いもんだ。

これから

感覚的には、Xamarinを押さえておくべきだと思った。
あんまり手を広げると学習効率が落ちるので、当面はWUP集中だけど、アンテナは立てておこう。


Creating Mobile Apps with Xamarin.Forms Preview Edition 2 (Developer Reference)

空文字を判定する最も効率のいいやり方は? (Delphi編)

現在いるプロジェクトではDelphiなる言語を使っています。
んで、他の人のソースを読んでいる���、空文字かどうかの判定の仕方には色んな書き方があるのだなあと思います。
代表的なのは、
(1) Result := s.IsEmpty;
(2) Result := s = '';
(3) Result := s.Length = 0;
(4) Result := s = EmptyStr;
等でしょうか。
ちなみに、私は基本的にIsEmptyメソッドをなるべく使う派です。
「''」と記述すると、後で読み返した時に
「これは本当に空文字で判定したいのだろうか?
 それとも実は半角スペースと比較するべきところを間違えてしまったのだろうか?」
等と疑わせてしまうこと、また本当にそのように間違える可能性が出てきてしまうためです。
 あとIsEmptyを使った方がコード上からカッコが減りやすいというのもある。IDEが貧弱なRadStudioではこれが割と重要。
 
さて、そうは言っても、「IsEmpty使おうぜ!」と主張しても使ってくれる人はなかなか増えません。
わざわざ書くのが面倒+間違いやすい「''」で書く人がほとんどです。

むう。何故だ。

と思っていると、MSDNの中で、(C#ですが)空文字判定方法について記述してある箇所を見つけました。
https://msdn.microsoft.com/ja-jp/library/ms182279.aspx?f=255&MSPPError=-2147217396
な、なるほど!
きっと速度差があるからみんな「''」を使うんだ!
理由があったんだね!

というわけで、それぞれの実行時間はどれくらいなのか。

2147483647 回ループを回してテストしてみました(適当な値をとるのが面倒だったので、Integer.MaxValue)。
以下、単位はミリ秒。
(1) IsEmpty
①37430
②37197
③37296
(2) 「''」
①36414
②36193
③36258
(3) Length
①40755
②40704
③40771
 
最速と最遅で比較すると、
(2) Result := s = '';
が最遅に比べ4578ミリ秒早いという結果になりました。
一回当たりおよそ
4578 / 2147483647 ≠
5000 / 2000000000 ≠
5 / 2000000 ≠ 0.0000025 ミリ秒早い。
ということになります。

おおー、なるほど、確かに早い。
なるほど、同じ結果が出るなら早い方を採用するのは理に適っている。
うん……正しい……
いや、たしかに正しいんだが……

全然変わんねえよ (´・ω・`)

実質0秒だよコレ。
これ以上速度を気にしなければならない要件なら、そもそもDelphi使わないわな。
それこそCとかアセンブラとか、もっと高速な言語を採用するわ。
やっぱり「''」と比較するコーディングは、昔から書いている人の単なる惰性な気がするなあ……。
一応、「早い」ということは分かったから、無暗にIsEmptyを進めるのは止めるけど……
やっぱり私はIsEmptyでいこう……。

※注意!
私の開発環境での結果+面倒だったのでデフォルト設定のDebugビルド結果です。
ロジックや書き方によってなんぼでも結果は変わることをお断りしておきます。



Delphi XE2プログラミング入門

新品価格
¥4,104から
(2016/1/18 20:58時点)

ようやくUWPアプリを一つ公開できた

クソアプリなんですけどね。

アプリ概要

Windows Store 公開。
ランダムな数値を生成する機能(だけ)
推奨はWindows Mobile。

※詳細はブログ上部の「公開アプリ」から。

目標達成

アプリを作りこむよりも、まずWIndows Storeでアプリを公開するとはどういうことなのか覚えたかった。
プログラムで何ができるか、ということも重要だけど、公開するということを考えた場合、公開先の事情も知っておかなければならない。
大家の事情を店子は知っておく必要があるのだ。
その目標は、まずは達成できた気がする。
……まあほとんどの時間はVisual StudioとかUWPアプリのエラー解決に費やされていた気がするが(汗)

今後
練習がてら、もう2~3個くらい軽いアプリを作成するつもり。


UWPアプリが、Windows Phone (Windows Mobile)  に配置できなくなった

最後に配置してから間が結構あったので、何がトリガーだったのか分かりません。
色々見ていると、
・OSのビルドバージョンが上がったから
・ストア申請用のパッケージを作成したから
あたりが原因ぽいですが、確証には至っておりません。

'Device' のブートストラップに失敗しました。デバイスが見つかりません。

最初に遭遇したエラー。
デバイスマネージャからデバイスを削除したらできた、という話があったので試してみたら突破できました。

DEP0001 : 予期しないエラー

すわ、OSのリフレッシュを試す必要があるか、と思いましたが、デバイス側(WIndows Phone側)のアプリを削除すればいけました。
同名のアプリが入っているところに、パッケージ化の設定がされたアプリを突っ込もうとしたしたから出た? ような気がします。

最近はUWPよりも ざまりん の方が盛り上がっているような気がしますが、当分はUWPでいこうかな。


Diginnos SIMフリー スマートフォン DG-W10M ( Windows10 mobile / クアッドコア / 5.0インチ / 1280*720 / デュアル SIM / LTE対応 / RAM1GB / ROM16GB )

新品価格
¥9,980から
(2016/5/14 22:56時点)

Windows Phone (Windows Mobile) Windows Update 後の再起動ににかかる時間(10.0.10586.318)

OSのビルドバージョンが10.0.10586.318に上がりました。

いつものように、更新後の再起動を手動でかけてみる

手動再起動GO!

今回はこんな感じでした

アップデートファイルのダウンロードや更新自体は完了しているので、再起動にかかる時間だけです。
手動で再起動をかけると、画面上に歯車が出てきてクルクル回り始めます。10分強。
それが終わると、ついに起動か、と思いきや、また何やらプログレスバーが出てきます。5分
大きく上記2ステップ、合計15分で更新が完了しました。
前回とあまり変わらないかな。

状況によって時間は大きく前後すると予想されますので、目安の一つとして。

更新内容や履歴はどこで確認する?

いかにもなページもあるんですが、本日時点では特に情報が記載されていないような……?

バージョン

端末はNuAns Neoです。
本日時点の各バージョンは、
  • バージョン:1511
  • OSビルド:10.0.10586.318
  • ファームウェアリビジョン番号:1028.020.001.53
  • ハードウェアリビジョン番号:1.0
  • 無線ハードウェアバージョン:1.0
  • チップSOCバージョン:8952


無線ハードウェアバージョン:1.0
  • チップSOCバージョン:8952


  • 追記

    調べたら、公式ブログに情報が載っていました。
    通常とは違う方式だよ、と記載されていますが、フツーに配信されたんですが……? まあいいか。

    「ナビゲーションバーを操作した際、バイブレーションが動作するようにしました。」
    なんかブルブルするなと思ったらコレでしたか。


    プロジェクトマネージャ 初試験(玉砕)

    玉砕してきました。

    試験以外について今のうちにまとめておく

    試験はボロボロだったので、何も言えない(泣)
    でも次回試験で備えておきたいことがあったのでメモ。

    その1:間の休憩時間は5分

    試験と試験の間には30分程度の間があります。てっきりそれは休憩時間だと思っていたのですが、
    試験監督「答案を集めます」 約5分経過。
    試験監督「次の試験の説明をするので、20分前には着席していてください」 え?

    試験と試験の間は30分なので、20分前に着席ってことは5分しか休みがない……。

    実際は10分前に着席していてもいいんですが、そこはモラルの問題。着席しておきましょう(泣)

    その2:昼の食事時間は短い

    昼は1時間ありますが、上記ルールが適用されるので、
    60分 - 5分 - 20分 = 35分
    しか休みがありません。
    この時間ではどっかに食べに行く、なんて時間はない。
    ぐぬぬ。
    仕方ないのでパンを買ってほお袋に詰め込みました。

    教訓

    試験会場に休みは無い!
    体力を十分に回復させてから挑むんだ!


    情報処理教科書 プロジェクトマネージャ 2016年版

    新品価格
    ¥3,110から
    (2016/4/17 22:33時点)

    Windows Phone (Windows Mobile) Windows Update 後の再起動ににかかる時間

    OSのビルドバージョンが10.0.10586.218に上がりました。

    更新後の再起動を手動でかけてみた

    OSの更新後は、デフォルトだと、深夜に再起動がかかります。
    しかし、前回の更新では APN の設定が変わってしまい、ちょっと困ることになりました。
    今回も同様のことが起きると困るので、何かあったらすぐに気が付けるように、昼に手動で再起動をかけてみました。
    まあ実際はただの興味からなんですが。

    こんな感じでした

    アップデートファイルのダウンロードや更新自体は完了しているので、再起動にかかる時間だけみていました。
    手動で再起動をかけると、画面上に歯車が出てきてクルクル回り始めます。約10分。
    それが終わると、ついに起動か、と思いきや、また何やらプログレスバーが出てきます。約5分。
    大きく上記2ステップ、合計約15分で更新が完了しました。


    状況によって時間は大きく前後すると予想されますが、目安の一つとして知っておくと便利……かもしれない。


    Windows Mobile がバージョン10.0.10586.164にしたらネットワークに繋がらなくなっていた

    昨日、Windows Mobile のアップデートがかかりました。
    バージョン:10.0.10586.164
    そして今朝会社に行ってみると、インターネットに繋がらない状態になっていました。

    設定を見直してみよう

    設定 - 携帯ネットワークとsim - sim設定 から、「携帯ネットワーク接続プロファイル」を確認。
    すると、
    @モバイルくん。
    になっていました。

    ……うん、心の底から言わせてください。

    「君、誰?」

    (調べたらMVNOの一つみたいですね
    なんで変わってしまったか分かりませんが(原因はアップデート以外何物でもない気がしますが)、「DMM mobile」にもどします。
    ちょっとすれば、またつながるように。
    良かった良かった。

    いや良くないよ!

    MSさんへ。
    Windows Phone に注力するつもりはない、とは言っても、アップデートに伴うネットワーク系の不具合ぽい動作は勘弁してください。
    わりと泣きそうになります。

    名称変わった?

    以前は、
    「DMM mobile」と「DMM Mobile(after 2015/6/16)」という名称だったはずですが、
    今は「DMM mobile2015/6/16以前」「DMM mobile」にしれっと変わっていました。



    @モバイルくん。 3G使い放題プラン (マイクロSIM)

    新品価格
    ¥3,240から
    (2016/4/7 18:50時点)

    Amazon Prime を試してみる

    Amazon の全品送料無料が終了とのニュースが大きく取り上げらています。

    というわけで、まんまとAmazonの手のひらの上を踊ってみる

    Amazon Prime の無料体験をまずは試してみることにしました。
    元々Kindleユーザだし、使っててもいいくらいだったんですよねw
    とりあえず、
    • 配送特典
    • Prime Music
    • Kindleオーナーライブラリー
    は使うかな?

    • 会員限定先行タイムセール
    • Amazonパントリー
    は微妙。Amazonパントリーまでフルに使い始めたらいよいよダメ人間になる気がしてなりません。

    Prime Music を Kindle から使ってみる

    ホーム画面右上の「ミュージック」から。
    画面左側のハンバーガーメニュー(?)から「デバイスライブラリ」を「クラウド」に変更、その後「Prime Music」を選択すると音楽を聴けるようになります。
    とりあえずルルティアを聞き始めました。

    Kindleオーナーライブラリー を Kindle から使ってみる

    こちらも要領は同じですね。
    ただ、ちょっと探しづらく感じるので、場合によってはPCでお目当ての本を探した方が早いかもしれません。

    この頃、自分のモバイル環境が急速に変わってきています。
    PC最強、とか言っていないで色々慣れないとダメですね。


    Fire タブレット 8GB、ブラック

    新品価格
    ¥8,980から
    (2016/4/6 22:22時点)

    SDKの更新の影響で(?)UWPのプロジェクトとXAMLのプレビューが開けなくなった

    直接の原因不明や解決策は不明。
    現象としては複数ありますが、面倒なので一つのエントリにまとめますw

    現象1:UWPアプリが開けなくなった

    まず、VS2015をupdate2に上げました。
    次に、使わなくなっていたVS2013関係をアンインストールしました。
    上記二つを行った後、UWPのプロジェクトを開こうとすると、「SDKの更新が必要です」のようなメッセージが出るようになりました。
    (どちらの操作がトリガーかは不明)
    案内に従ってSDKを更新しましたが、開けるようにはなりませんでした。

    現象1-対応:プロジェクトファイルの書き換え

    プロジェクトファイルを直接メモ帳で開いてみると、「Version=10.0.10586.0」がターゲットになっているようでした。
    ここを、「10.0.10240.0」に書き換えると、とりあえずビルドとデバッグは通るようにはなりました。

    現象2:XAMLエディターのプレビューができなくなった

    XAMLエディターを開くと、プレビューができなくなってしまっていました。
    これは、以前作ったアプリでも、新規に作成したアプリでも同様。

    現象2-対応:色々入れ直し

    下記を順番に実行しました。
    ・VS2015をコンパネから「修復」 → 直らず
    ・Windows SDK の「修復」  → 直らず
    ・Windows SDK の「アンインストール」 → 直らず
    ・Windows SDK の再インストール → 直った!
    結果的に、Windows SDK のアンインストール&インストールが正解だったような気がしますが、何分検証できていません。

    その後

    プロジェクトを開きなおすと、アプリケーションのターゲットバージョンが
    ・Windows10(10.0;ビルド10240)
    ・Windows10(10.0;ビルド10586)
    の二つが選択できるようになっていました。
    で、ためしに Windows10(10.0;ビルド10586) にして、保存してみると、VSが落ちました。
    再度開くと、また上記現象1のような状態に……。
    仕方ないので、またプロジェクトを直接修正して、10240に戻すと、開けます。

    つまりこういう状況みたい

    新規にプロジェクトを作成した段階で、10586を選択すると「プロジェクトはプラットフォームSDK(UAP.10.0.10586.0)が必要ですが、インストールされていません。」のエラーになってしまう。
    どうやら、SDKのインストール自体が壊れてしまっているみたい。
    VSのインストーラー、コンパネ、ダウンロードファイルいずれの修復・インストールでも直らないので、諦めることにしますw
    次のバージョンでは直っているといいなあ……。



    XAMLとC#によるUniversal Windows Platform アプリ開発

    マッピングしているネットワークドライブのドライブが、管理者権限で実行したアプリケーションから接続できない

    管理者権限でアプリケーションを実行していると、時折色々パスがズレて面倒なことになる。
    大体ちょっとした工夫で解決しますが、ネットワークドライブ(共有フォルダ)にアクセスできなくて困ることが。
    管理者権限/ユーザ権限 でどのようにネットワークドライブにアクセスできるかは、net use コマンドを実行すれば判断可能だが、肝心の「そこから」どうやってアクセスできるようにできるかが分からない。

    ググるとレジストリ弄れ、という解決方法がよく出てくるのだが、たとえばこれをユーザ(顧客)に対して実行してくれ、とは言えない。というか言いたくない。
    どーすればいいのかな、と思っていたら凄い簡単な方法が見つかった。

    管理者権限でメモ帳起動してドライブアクセス


    単純すぎて盲点でした。

    ロディア No.11 方眼罫 オレンジ 3冊セット

    新品価格
    ¥625から
    (2016/2/13 14:34時点)

    Windows Phone (Windows Mobile) と DMM Mobile の話

    柔銀行からDMM Mobile へ MNPしました。
    対象機種はもちろんNuans Neo。Androidからの乗り換えとなります。
    レッツチャレンジ。

    MNPの流れ

    といっても、DMM Mobile の申し込みの流れはHPに詳しく記載されていますし、格安SIMに詳しい方々が色々と情報を提供してくださっています。
    ので、ここでは自分がはまったところ・やって手間がかかったことだけをを記載していきます。

    柔銀行へ予約番号請求

    マイページからうんたらかんたら、とか色々ありましたが、ぶっちゃけ暗証番号を忘れていたので、直接電話して予約番号を受け取りました。
    なかなか繋がらず結構待ちましたが、繋がってしまえば親切に応対してくれました。
    予約番号は口頭での控えと、メールで送ってもらいダブルチェック。
    ……メールが迷惑メール扱いされていたのは何か意味があったんでしょうか……

    ②dmmでの申し込み時に住所を入力ミスする。

    ミスりました。orz

    ③simが届いてても繋がらない?

    夜にsimが届いて、何も考えずに差し替え。
    あれこれやっても繋がらないなー、と思っていましたが。
    DMMのHPで電話番号切り替えの申し込みをやっていませんでした……��
    ※マイページから可能。
    申し込みさえやれば、不通時間は2~4時間くらい? のようです。
    ※お昼を挟んで申し込んでしまったので、時間がかかったものと思われます。

    ④sim差し替え後の動作

    さしたsimは、Windows Mobile側で勝手に認識・設定してくれます。
    が。
    このとき、既定のAPNに設定がされるのですが、そのままではネットワークに繋がりません。
    設定 - 携帯ネットワークとsim - sim設定 から、「携帯ネットワーク接続プロファイル」を
    「DMM mobile」 → 「DMM Mobile(after 2015/6/16)」にすると繋がりました。


    simを変えてみて

    心配していた音声通話ですが、問題なく使えました。
    問題のはWindows Mobile 側の電話の微妙な使いにくさの方ですねw
    まあこの辺りは慣れの問題ですので、徐々になじむでしょう。
    ネットワークについてはもうしばらく使ってみないとなんともいえません。
    なにか気が付く点があれば、またココに記載します。


    DMMマネーカード 2,000円

    新品価格
    ¥1,935から
    (2016/3/31 21:02時点)

    ペヤング と ペヨング (夕飯)

    多分、世間では散々されていると予想しますが、それはそれとして自分でも食べ比べてみました。

    経緯

    もともとペヤング超大盛をよく食べる派です。
    かのゴキブリ混入事件があった直後に、ふつうに会社で喰ってました。
    蟲が混入してた?
    いつもソースに蟲を仕込んでいる俺には余裕です(違
    ※実際入っていたら流石にドン引き、つーかムリですけど。

    まあそんなこんなで、会社ではペヤング派であることが知られているので、「食べ比べた?」と聞かれることは必至。
    そんな時のために買っておいたのさ。

    ペヤングとペヨング


    外装はちょっと違うけど、中身はビックリするくらい同じでした。
    ソースの袋やかやくの袋は違うんですが、逆にそれしか違いが分からない。
    食べ比べするために同時にお湯を注いで、同時に湯切りしたんですが、
    「あれ、右手に持ってるのがペヤングだっけ? ペヨングだっけ?」
    状態になりました。

    写真映りを一切考慮しない、ソースの適当な絡め方



    ……これほど違いが無いとは。
    そして、食べても全く違いが分からない!
    量が違うみたいな話も聞きましたが、それすら分からない!

    結論

    どっちでも一緒(適当)。

    重要な点。
    最初から分かってはいたんですが、この手の食べ比べ系はみんなでやりましょう。
    一人でやると空しくて悲しくて寂しくなります(泣)

    ペヨング ソースやきそば 106g×18個

    新品価格
    ¥2,390から
    (2016/3/30 23:30時点)