としおの読書生活

田舎に住む社会人の読書記録を綴ります。 主に小説や新書の内容紹介と感想を書きます。 読書の他にもワイン、紅茶、パソコン関係などの趣味を詰め込んだブログにしたいです。

2021年06月

175857_s

今回は、常盤勝美さんの『だからアイスは25℃を超えるとよく売れる 基礎から学ぶ「ウェザーMD(マーチャンダイジング)」』という本を紹介しています。



『だからアイスは25℃を超えるとよく売れる』の概要


本書は、流通業のウェザーマーチャンダイジング(以下ウェザーMDとする)について書かれている本です。

ウェザーMDとは天気や気象に関する情報を商売に生かすことです。天気予報の精度が向上した現代では、ほぼ全ての企業がウェザーMDの情報を商売に活用しています。

本書では、天気と小売業で売れる商品の関係を具体的に説明しています。

例えば本書のタイトルにある通り、アイスは25℃を超えるとよく売れると言われていますがそれは本当なのでしょうか?

実は25℃を超えているからといって必ずアイスが売れやすくなるわけではありません。

逆に気温が高すぎるとアイスの売れ行きが止まるという傾向もあります。

その理由は、暑すぎると口のなかでアイスのどろっとした感じが残り気持ち悪いひとが増えるからです。

こういった天気と商品の関係を学ぶことができる一冊です。



学べる事

4577231_s

  • ウェザーMDの基礎知識
  • 流通業とウェザーMDの関係
  • 様々な季節や異常気象と商品の売れ行きの関係
  • ウェザーMDの実践方法
  • 天気予報の見方




対象読者


  • ウェザーMDの基礎知識が学びたい人
  • スーパーやコンビニといった小売業で商品発注を行っている人
  • 商品開発部門の人
  • 商品の広報を担当している人




個人的な感想


私は小売業などに関わったことがなく専門外の人間ですが、本書を読むことで商品の売れ行きと天気の密接な関係を理解することができました。

本書は専門用語などを一つ一つ分かりやすく解説しているため、気象や経済学に詳しくない人でも読みやすくなっているのが良い点です。

また、こういった専門書ではよく知識だけが書き綴られていて実際にどう活用したらようのか分からないという本も多々ありますが、この本では後半の章でウェザーMDの実践方法が書かれているのも良かったです。

実践方法の解説では商品部、商品企画部、営業企画部、販売促進部などの様々な部門ごとに気候の変化に対してどのような対応をすればよいのかが書かれていたので、色々な人が仕事に活かせるようなノウハウが書かれていました。

具体例もところどころに出てくるため、実戦でのイメージがしやすかったです。

また、Excelなどの表ソフトのウェザーMDでの使い方も分かりやすく書かれていたので、あまりパソコンが得意でない人でも効率的にウェザーMDを行えるように書かれていたのもポイントが高かったです。



まとめ


『だからアイスは25℃を超えるとよく売れる』は一冊でウェザーMDの基礎的な知識と具体的な解説方法を学べる本です。

小売業に関わっている人なら必ず知っておきたい知識が盛りだくさんですのでぜひ読んでみてください。






PXL_20210610_161339227

道尾秀介さんの『ソロモンの犬』を読みました。

友人から進められて読んだのですが、オチが意外すぎる作品でした。

以下、あらすじと感想になります。



『ソロモンの犬』のあらすじ


2週間前、大学生の同級生である秋内、京也、ひろ子、智佳たちは平凡な夏を過ごしていた。

そんな平凡な日常を突如突き破るかのようにある事件が起きた。

彼らが通う大学の助教授・椎崎境子の一人息子陽介が秋内の目の前でトラックにはねられた。

陽介がはねられた原因は、陽介の飼い犬オービーが突如道路に向かって走り出し、陽介が引きずられたためである。

目の前で陽介がはねられたことでショックを受けた秋内だったが、事件現場の近くにいた京也たちの不可解な行動にある疑問をいだく。

オービーが突如走り出すのは本当に不慮の事故だったのだろうか…。

事件の真相を解明するために行動する秋内だったが、予想だにしない事実が彼を待ち受けていた。



感想(ネタバレあり)


物語の中に、京也と智佳の怪しい行動などのミスリードがたくさん混ざっていて、道尾秀介さんのオチで驚かせてやるといった意志を感じる作品でした。

物語の途中で陽介が死んだ原因に気が付くことができた人は相当な推理オタクぐらいしかいない気がしますね。


陽介の死について


陽介がはねられた原因となったオービーの行動が陽介の父である悟から陽介を守るために行ったことだと分かったときはとても複雑な気分になりました。

まさかオービーが飼い主を守ろうとしてとった行動が、陽介の死につながるとは…。

作中では間宮がオービーは陽介が死んだことを理解できていないという風に述べていましたが本当にそうだったのだろうか…。

陽介が救急車に運び込まれているときもしかしたらオービーは何かを感じていたかもしれないと思うと複雑な気持ちになります。

飼い犬が飼い主を悪意なく殺してしまう作品は初めて読んだので、動物が好きな自分としては結構複雑な気持ちになってしまいました…。


最初、私は京也が犯人だと考えていました。

誰も見ていない隙にオービーをコマセでつって陽介を殺したとか推理していましたが、見当違いでしたね。(序盤でコマセの入っているバケツにつっこんでいたので)

ただ、オービーが走り出す原因を作ったのは椎崎に母性を求めた京也です。

なので真相が分かり、犯人はいなかったと分かっても心の中に嫌な気分が残りました。


ミスリードについて


『ソロモンの犬』ではいたるところで読者をだますミスリードが隠されていました。

物語の中盤で秋内が智佳は京也が好きかもと思っている場面がありましたが、それが原因で私は一時は京也と智佳がグルになって陽介を殺そうとしたのかとか疑っていました。

智佳の行動って読者からしてみたら怪しいところが多すぎるんですよね(笑)

秋内が通りかけたときにでいきなり智佳が隠れたシーンとかありましたが、あんなのどう考えても智佳と京也が隠れてデートしようとしてたとしか思えませんでした。

その前から、京也と智佳の二人の関係に微妙な感じの場面が多かったので物語を読んでいてかなりこの二人に振り回された気がします。


また、京也が目が見えていないことなんて作中で伏線があったのかもしれませんが、私は気が付きませんでした。

そのため秋内が京也がいた場所から陽介トラックにひかれたことが見えていたということに気がついた場面では、「やっぱり京也が犯人だ!」とか思ったのですが実際は違いました。

読んでいる私の心情は、

『京也犯人?→京也は犯人じゃないか→やっぱり京也が犯人だ!!』

ということの繰り返しでした。

秋内の推理に完全に振り回されてしまいましたね(笑)



まとめ


『ソロモンの犬』はミスリードを誘っていたりして読者を楽しませるように書かれていたため自分好みの作品でした。

道尾秀介さんはミステリーで有名なので他の作品も読んでみようと思います。






3753817_s

本記事では、C#で数値を文字列に変換する方法と文字列を数値に変換する方法を紹介します。



数値を文字列に変換する


数値を文字列に変換したい場合、ToStringメソッドを使用しましょう。

例えばint型の値をstring型に変化する場合以下のように書くことができます。

int nNum = 5;
string strTemp = nNum.ToString();

また、ToStriongはint型だけではなく、uint、doubleなど様々な方に使うことができます。

double型の値をsttring型に変換する例を以下に示します。

double dNum = 3.14;
strTemp = dNum.ToString();




文字列を数値に変換する



Parseメソッドを使った方法


最初に文字列を数値に変換する方法としてParseメソッドを使った方法を紹介します。

文字列をint型の値に変換した場合、以下のように書くことができます。

string strNum = "10";
int nNum = int.Parse(strNum);

Parseメソッドも先ほど紹介したToStringメソッドのようにuin型やdouble型など様々な型への変換に使うことができます。

string strNum = "3.14";
double dNum = double.Parse(strNum);

Parseメソッドの欠点として数字以外の文字列を引数として与えると例外が発生します。

例えば以下のような場合例外が発生します。

string strNum = "aaa";
int nNum = int.Parse(strNum);


この例外を防ぐ手段としてTryParseメソッドを使いましょう。

TryParseメソッドは第1引数に変換したい文字列、第2引数に文字列を変換した値を格納する変数を渡します。

また戻り値は成功した場合はTrue、関数内で例外が発生した場合はFalseが返ってきます。

TryParseメソッドで文字列をint型に変換した例を以下に示します。

int nNum = 0;
string strNum = "10";
bool bRet = int.TryParse(strNumout nNum);

以下のように数字以外の文字列を与えても先ほどのParseメソッドのように例外は発生しません。

int nNum = 0;
string strNum = "aaa";
bool bRet = int.TryParse(strNumout nNum);






Convertクラスを使った方法


文字列を数値に変換する方法としてParseメソッドの他にConvertクラスを使った方法があります。

Convertクラスを使って文字列をint型に変換するコードは以下の通りです。

string strNum = "10";
int nNum = Convert.ToInt32(strNum);


ちなみにConvertクラスに数値以外の文字列を与えた場合、Parseメソッドと同じように例外が発生します。

string strNum = "aaa";
int nNum = Convert.ToInt32(strNum);

これだけ見るとConvertクラスはParseメソッドと変わらないように見えますが、Convertクラスは引数としてnullが与えられても例外が発生しないとう特徴があります。

以下のように引数にnullを与えた場合、0が返ってきます。

string strNum = null;
int nNum = Convert.ToInt32(strNum);




まとめ


数値を文字列に変換したい場合、ToStringメソッドを使いましょう。

文字列を数値に変換する方法はParseメソッドTryParseメソッドConvertクラスの三つの方法がありました。

数値以外の文字列が与えられる可能性がある場合は、例外に強いTryParseメソッドを使いましょう。

それ以外の場合は、nullが引数として入力される可能性があるかどうかでParseメソッドとConvertクラスを使い分けましょう。






PXL_20210608_143142748_1

村田沙耶香さんの『丸の内魔法少女ミラクリーナ』を読みました。

村田沙耶香さんと言えばコンビニ人間などどこか不思議な物語を書く人です。

タイトルだけでは本作がどんな作品か予想できませんでしたが、本作は4つの物語を収録した短編集になっています。

笑えるような話から、深く考えさせられる作品までありとても面白かったです。

以下、あらすじと感想になります。




あらすじ


36歳のOL・茅ヶ崎リナには小学生のときからの親友以外に隠していることがある。

それは、彼女が魔法のコンパクトで「魔法少女ミラクリーナ」に変身できるということだ…。(これは茅ヶ崎リナの妄想である)

彼女は魔法少女に変身することで、オフィスで降りかかってくる無理難題など社会生活におけるあらゆるストレスに対応することができる。

そんな彼女だが、親友の恋人であるモラハラ男と何故だかなりゆきで魔法少女ごっこをするはめになってしまった。

魔法少女になって喜ぶモラハラ男を見て、魔法少女であることにうんざりしたリナは魔法少女を引退することを決意する。

魔法少女を引退した後のリナの生活は、以前のようには上手くいかなかった。

しばらくしてリナが再び魔法少女に復帰するチャンスが現れる。

ポップな出だしだが一転、強烈な皮肉とパンチの効いた結末を迎える表題作。

その他、初恋の相手を期間限定で監禁する物語を描く『秘密の花園』、性別を告白することを禁じられたスクールライフを描く『無性教室』、怒りという感情がなくなった『変容』が収録されている短編集。



感想



丸の内魔法少女ミラクリーナ


タイトルの魔法少女という文字を見たとき、村田沙耶香さんの別の作品である『地球星人』のような悪い物語を想像をしてしまったが、本作は心温まるいい作品だった。

最初にリナが魔法少女ごっこを始めて27年という設定を見たときは思わず笑いが吹き出してしまった。

また、親友のレイコの彼氏である正志がノリノリで魔法少女を演じている場面も、リナとしては嫌な場面のは分かるが、読者としては笑いがとまらなかった。

本作は笑いも多い作品だが、社会の問題なども色々考えて作られた作品だ。

リナは魔法少女という設定で過ごすことで普通の社会人として生き続けていることだ。

彼女は魔法少女であり続けることで社会人として生きるストレスを吹き飛ばしているが、ストレスの多い現代社会をできる大人として生き延びていくにはリナぐらいの吹っ飛んだ考え方が必要かもしれないとも感じてしまった。

ただ、もし私がポムポムに話しかけているリナのような人をみたら目を反らして、恐らく今後関わらないでおこうと思ってしまうだろう(笑)

本作は、「大人になって魔法少女で居続ける人をどう思う?」という作者の問いかけがある作品だと私は感じた。

正志のような間違った方法でストレスを発散してしまうような魔法少女ならそんな人間はこの世には存在しなくてもよいと思う。

しかし、リナは正志と違い人を傷つけることはない。リナが魔法の力を使うのは親友を笑顔にするためだ。

子どものころの夢は馬鹿にしがちだが、大切な人を守ることができる魔法が使えるのなら私も魔法少女になりたいと思ってしまう作品だった。





秘密の花園


世界に生きているほとんどの人は、いい思い出か悪い思い出かは分からないが初恋を体験したことがあるに違いない。

どんな思い出だとしても初恋を忘れることは難しい。

『秘密の花園』は、初恋を忘れる方法を村田沙耶香さんなりに描いた作品だ。

本作で描かれている初恋の忘れ方は、初恋の相手がどれだけくだらない相手であるかを感じてみるということだ。

物語の主人公である内山は初恋の相手である早川を忘れるために、早川を一週間監禁するという行為を実践した。

初恋の早川が理想の相手であるかどうかを判断するために、内山は早川の真似をして煙草を吸ってみたり、キスをしてみた。

しかし様々なことをするうちに、内山にとって初恋の相手はあくまで小学生の早川で大学生の早川ではなかったと分かった。


この初恋の忘れ方は正直現実で行うのは無理だと思う。

ただ、この作品を通して初恋なんて実際はくだらないものだから早く忘れてしまえということを伝えられた気がする。

良い年齢で初恋を忘れられない人がいたらこの物語のような妄想をして初恋を忘れてみてはいかがでしょうか。


無性教室


性別を告白することが禁止の学園ライフを描いた作品でした。

確かに読み始めから登場人物の性別が推測しにくいようにところどころ表現に工夫がなされています。

タイトルでも予測できる通り表面的なテーマとしてはジェンダー問題を描いた作品である。

近年、LGBTの人に対する差別が問題に上がっています。

本作では、性別が分からないようにすることで、LGBTでいじめられる人を生み出さないようにしていました。

正直この解決策は、本当に問題の解決になっているとは私は思いませんでした。

ただ、ミズキとコウのように性別を気にせず恋をしやすくなるということも考えたら完全には否定できませんね…。



本作を読んでいて面白いなということは性別を告白しないような社会を作ったことで実際に性別というものが必要ないと感じた人間が出現していることです。

これはもう一つの本作のテーマでもあり、近年の性に関心のない人々のことを描きたかったのではないかと思います。

ここでは性別のない人のことを無性と呼ぶことにします。

無性の人は、男性にも女性に興奮を覚えません。同じように現代社会では性に関心のない人々も増えています。

無性というのは生物学的には正しくないとは思いますが、心がある人間の自由な生き方としてはありですよね。

様々な人たちを受け入れて、社会をより良くするにはどうしたらいいのかということを考えるきっかけになる作品でした。


変容


個人的に一番ゾッとするような話でした。

近頃の若者はという言葉を皆さん一度は耳にしたこと、あるいは口に出したことがあると思います。

本作は、そんな若者の変化を描いている作品でした。

本作の内容は、主人公真琴が物語の序盤では最近の若者が「怒り」という感情を知らないことに疑問をいだいていました。

物語が進むにつれて、若者だけではなく大人も「怒り」という感情を知らないことに怒ることを覚えている真琴は怒りを覚えます。

「怒り」という感情を教えるために仲間を引き連れて、よく分からないパーティに乗り込みますが、最終的には真琴も「怒り」を忘れ「まみまぬんでら」してしまいます。


本作を読んで自分が一番怖いと思ったのは人間の感情などもファッションと同じように流行りがあり、それは一部の人たちが決めているということでした。

この作品を読むと今自分が好きな本を読むということも社会的に操作されて好きになるようにコントロールされているかもしれないという風に感じてしまいました…。

ファッションや趣味などに流行りがありますが、周りに流されずに自分な好きなものを堂々と好きということができる人になりたいと感じさせられる作品でした。



まとめ


本作は様々な社会問題をテーマにした短編集が収録されている作品でした。

社会に対する問題を理解して、それをどのように乗り越えるか色々と考えるきっかけになりよかったです。

未読の方は面白いし勉強になるので、ぜひ読んでみてください。







3753817_s

C#でParallel.ForEachを使ってlistオブジェクトにaddでパラメータを追加してみたところ自分が想定していた動作が行われませんでした。

C#ってすごく便利だから、Parallel.ForEachを使ったら排他制御ぐらい勝手にしてくれるだろうとか思い込んでいたのですがそうではないみたいです。

なので今回、C#で排他制御を行う方法を調べたので忘備録として記録しておきます。



排他制御の行い方


C#も他の言語と同じようにマルチスレッドで動作させる場合には、排他制御の実装が必要になります。

排他制御を行わなかった場合、listに全ての変数が追加されないなど実際の処理内容が自分が想定しているものと違う風になってしまいます。

C#で排他制御を行うためにはlock構文を使えばいいみたいです。

lock構文の使い方ですが、以下のように使います。

lock(変数名)
        {
            処理1
            処理2
            …
        }

スレッドの実装も楽々なC#ですが、排他制御の実装まですぐにできるなんてさすがですね。



Parallel.ForEachでlistにaddするサンプルコード


Parallel.ForEachと先ほど紹介したlock構文を使って、listにデータをaddしていくsampleコードを以下に示します。

ちなみに今回のサンプルコードはスレッドなしで作成されたリストのようそを並列処理で別のリストに追加するというコードなのであまり意味がないコードですがサンプルなので気にしないでください。

using System;
using System.Collections.Generic;
using System.Threading.Tasks;

class LockSample
{
    private static object lockTest = new object(); //ロック処理用オブジェクト
    public static void Main()
    {
        
        List<intnumList = new List<int>();
        List<intparralellList = new List<int>();

        for(int i=0i<100000; ++i){
            numList.Add(i);
        }

        // lock処理を使って追加する。
        Parallel.ForEach(numListnum =>
        {
            lock(lockTest)
            {
                parralellList.Add(num);
            }
        });

        Console.WriteLine("numList Count = " + numList.Count);
        Console.WriteLine("parralellList Count = " + parralellList.Count);
    }
}







まとめ


Parallel.ForEachでListオブジェクトを操作するには排他制御が必要でした。

C#では排他制御はlock構文で簡単に実装できるので、意図しない動作を起こさないために並列処理を行うときは排他制御を忘れないようにしましょう。







↑このページのトップヘ