<2012年新年の挨拶>

| | コメント(0)

 新年あけましておめでとうございます。

 改めて、今年度もこのBlogを継続させて頂きます。昨年中Blogにお立ち寄りいただいた方にはとても感謝しております。継続できるのも、皆様のおかげです、改めて本年もよろしくお願いいたします。

 昨年は、いろいろなことがございましたが、特に震災については、多くの方がなくなった悲しもございますが、それに伴いまして、改めて人と人の絆というものも見直されたのでは無いのでしょうか?
 人は決して、一人で生きているわけではなく、多くの人と関わって生きている、ということを改めて感じた一年でもありました。昨年中も多くの方に助けられて、今年の私がいることを改めて思い直したいと思います。

 絆と言いますと、やはり駅伝というものは、一人のヒーロがチームを引っ張るということもありますが、チームみんなの絆が勝利をもたらすスポーツですね。
 今年も、箱根芦ノ湖のゴールまで応援に行ってきました。
 

20120101_1_tobe.jpg
 年頭のご挨拶ですので、もっと晴れ晴れとした写真が取れると良かったのですが、あいにくの曇り空でした。しかし気温もあまり上がらないので、選手にとっては非常に走りやすかったのではないでしょうか?
 

 さて、駅伝をゴールで待っているのは良いのですが、何と言っても情報が不足します。そこでこんなサービスがありました。
 

20120101_2_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 世の中便利になりましたね。
 周りの人もドキドキしているようで、私がもつ情報が気になるようです。いろいろな方がいろいろな想いをもって、応援にきているのですね。

 さて、時間は年末に戻りますが、実家からスカイツリーを見ました。
 

20120101_3_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 年末限定のライトアップです。

 今年も、いろいろな情報をお伝えしたいと思います。
 一年間、宜しくお願いいたします。

<画像処理4>

| | コメント(0)

 美齊津さんのブログでは、海から工場を見学していた話が載っていました。それでは、私は中から見学してみたいと思います。
 子供の頃は社会科見学というものがあり、我が家の娘達も年に数回学校の授業でいろいろな会社を見学しておりますが、私も社会科見学をしたいと思い、早速工場見学をして参りました。

 工場見学といいますと一度行ってみたかったのが、ビール工場です。
 なぜかといいますと、中央高速道路を走っているとついつい口ずさんでしまう歌は有りませんか?そう、あの松任谷由実の歌です。
 「中央フリーウェイ~、右に見える競馬場~左はビール工場。。。」
 という訳で、娘と工場見学するには若干強引でありますがユーミンの歌で憧れていたビール工場へ早速出発です。

20111114_1_tobe.jpg

 

 工場見学を致しますと、いわゆるビールができるまでの工程を一つ一つ説明してくれます。ビールを作るのに大事な3要素「麦、水、ホップ」をならい初めてホップの匂いを嗅がせて頂きました。私は恥ずかしながらホップというものを見たことがなかったのですが、このホップがビールの香り付けに非常に重要で結構強い香りがします。麦芽はよく出てきますが、ホップについてはあまり知りませんでした。このホップ。。。どのくらいビールに影響を与えているか早速調べてみます。(あくまでも学習のためです)

20111114_2_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 おお、確かにアロマホップの香りがします。(もちろん子供はオレンジジュースです)

 さて先ほどの、「ユーミン」の歌には続きがあります。「この道は~~まるで滑走路、夜空に続く」と言う訳で次は航空会社です(笑)

 

20111114_3_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 ここでは、飛行機がなぜ飛ぶのかから説明してくれます。飛行機が飛ぶ理由は理科の勉強で習っています。飛行機の羽根の形に理由があり上空の空気が早く移動すると気圧が薄くなり、羽を吸い上げるように力が働きます。。。しかしどうも式とか理屈で説明されてもという感じがしますね。そこの説明員の方は唇の下側に紙をおいて、力強く息を吹きます。するとどうでしょう、唇の下側にある用紙がまさに吸い上げるられるように持ち上がるのです。なるほど「百聞は一見にしかず」ですね。どんな教科書よりもわかりやすい気がします。プログラムも本で覚えるだけでなく、実際に書いて動かしてみることが覚えるためには一番の近道だと思います。
 さて、この航空会社ではヘルメットをかぶって実際の航空機の整備場に入らせてもらえます。整備場はもちろん飛行場の中にありますから、直ぐ目の前は滑走路です。丁度この日は運良く風向きの都合で目の前で飛行機が着陸するところを見ることが出来ました。

20111114_4_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

<画像処理4>
 ようやく表示までできましたので、最後に本題であります、アルファーチャンネルを含んだ画像の合成を致します。まずは、準備として合成するための透過率設定を行うために、ダイヤログ上にNumericUpDownコントロールを配置します。

20111114_5_tobe.png

 

 

 

 

 

 

 評価用ですので、特に小数点はなしに0~100%まで設定しますので、初期値をそれぞれ以下のように設定します。

20111114_6_tobe.png 

 

 ただし、背景画像だけは、Value = 100にしておきます。
 これらコントロールの名称はNud_で登録します。

  • 画像1:Nud_Image1
  • 画像2:Num_Image2
  • 背景画像:Nud_Image3

 さて、上記透過率を元にこれら3つの画像ファイルを合成いたします。

20111114_7_tobe.png

  プログラムとしては以下ステップで行います。

  • 画像ファイルの取り出し。
  • 透過率の取り出し。
  • 画像データ(ピクセル値)の取り出し。
  • 合成処理
  • 表示処理


[画像ファイルの取り出し]
 前回のBlogで紹介しました表示作業の時に、画像ファイル(ビットマップファイルの中身)を以下のデータに格納致しました。
 BitmapData[num];

 今回もキーをもとに取り出します。

20111114_8_tobe.png[透過率の取り出し]
 先ほど作成しました、NumericUpDownコントロールから透過率を取り出します。
 透過率については、画像ファイルの中では0~255の値で設定できるようになっています。従って、今回はNumericUpDownから取り出した割合(%)を以下の式で0~255の値に変換しております。
 一応、255という値の特性から割り切れない場合もありますので四捨五入のために(100/2)の値を追加しております。

20111114_9_tobe.png

[画像データ(ピクセル値)の取り出し]
 ピクセルデータについては、8bitの色情報(R,G,B)と透過率情報(A)を合わせて32bitのデータとなっております。そこで、構造体として取得可能となるように以下の共有体を作成しました。

 
20111114_10_tobe.png
 

 

 そして、以降行う計算式については、基本的には32bitのピクセルデータをそのまま扱う形としたいので、改めて、取り出したピクセルデータの透過率に先ほどの透過率を格納します。

20111114_11_tobe.png

  残りは合成処理になります、こちらについては、次回ご紹介させて頂きます。


 さて、工場見学をしていて感じたことは、説明説する方からその仕事が大好きだという雰囲気を感じることでした。航空会社ですと、参加者から「なんか珍しい形の飛行機ですね。。」と言われますとうれしそうに「あれはMD-90」ですね。。「あの飛行機はエンジンが翼の下についていないので。。」とかなり技術的なことを説明してくれます。
 飛行機が好きなんだなぁと感じることが多々有りました。

 最後にもう少しホップについて理解するために今度はビターホップを勉強。。

20111114_12_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 ひっく。。 (*^。^*)
 覚えたことを忘れそうです。

<画像処理3>

| | コメント(0)

 さて、秋はスポーツの秋といわれる季節ですね。
 この時期まだ、暖かさが残っています(正直まだ暑いですね)ので、グランドにシートを敷いてスポーツのイベントを観戦しているのは非常に楽しいものです。

 

20111003_1_tobe.jpg

  スポーツ観戦の中でも、特に最近は陸上競技を見る機会が多いです。私は陸上競技をやっていたわけではないので、こういったイベントを見る機会がなかったのですが、棒高跳びなどはテレビで見たことしかなかったので、生で見ると結構迫力があります。

 さて、スポーツの秋と言いますと、何と言っても、運動会ですね。近所でも運動会のお知らせ等が回覧板で回ってきます。私は運動が好きですから、基本参加方向です。
 しかし、親となって、どちらかといいますと運動会を見る側が多くなってきています、今までは小学校の運動会だったのですが、中学生/高校生の運動会を見ると、いままでのものとはかなり違います。体育祭の応援はもちろん、進行や案内等すべて学生による手作りです。この手作り感が非常によく、ここまで体育祭を創り上げるまでの苦労等を考えると、「大変だっただろうな?」と思うと共に「楽しんでいるなぁ」と思うと、もう一度学生をやりたくなります。
 そして何と言っても迫力が違います。特に、迫力があったのが棒倒しです。
 いや~~、高校生がぶつかり合うってすごいですね。自分もやっていたつもりなのですが、改めて見るとあの圧力の中に自分の体をおいておくことが考えられません。
 

20111003_2_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

  今あの圧力の中にいたら、{{{{(+_+)}}}}

 

 

<画像処理3>
 前回のBlogで「読み出しの準備」、「ファイルの選択」、「画像の表示」の3Stepで説明しました。今回はStep3として、指定された画像ファイルを表示することにします。

 

 <3.画像の表示>
 画像の表示については、[表示]ボタンを押下された際に画面左側に該当するファイルを表示する動作を実装します。

20111003_3_tobe.png

 

 画像を表示するために、ピクチャーボックスを利用します。また、今回も前回同様のキーワードでピクチャーボックスをハッシュテーブルに関連づけます。
 ハッシュテーブルの宣言およびTableへの登録については以下の手順で行うことが可能です。
 ここでは、今回使用する変数をすべて表示しています。 

20111003_4_tobe.png 

 

 また、前回画像ファイルを選択する際に共通的な処理にしましたが、今回も同様に[enum]を引数として画像表示を行うための共通関数[showImage()]を作ります。

20111003_5_tobe.png

 

 さて、ここで呼び出されます[showImage()]関数ですか以下の手順で作成します。
  ① ファイル名の取得
  ② 該当ビットマップファイルを開く
  ③ ビットマップファイルの中身を取得 (ここでは400×400[固定]で行なっています。)
  ④ 表示先ピクチャーボックスの取得
  ⑤ ピクチャーボックスに表示

 

 [①ファイル名の取得]
 関数としての共通化を図るために、引数であるenumを元にテキストボックス名を取得します。

20111003_6_tobe.png

 

 [②該当ビットマップファイルを開く]
 取得したテキストボックスに記述されているファイル名からビットマップファイルを開きます。該当するファイルがなかったりする場合もありますので、例外処理も記述します。

20111003_7_tobe.png 

 

 [③ビットマップファイルの中身を取得]
 2項で開いたビットマップファイルの中身(ピクセル情報)を[BitmapBuffer]に取得します。こちらのバッファーも[enum]を元に取得します。
 またbitmap内のデータを取得する場合には、[GetPixel()]を利用します。 

20111003_8_tobe.png

 

 [④表示先ピクチャーボックスの取得]
 恒例のパターンです。こちらも、引数であるenumを元にテキストボックス名を取得します。

20111003_9_tobe.png

 

 

 [⑤ピクチャーボックスに表示]
 ピクチャーボックスに表示する場合は、ピクチャーボックスの[Image]にbitmapファイルを登録するだけでOKです。しかし、ピクチャーボックスのサイズと表示する画像ファイルの大きさが同じとは限りませんので、画像サイズをあわせる必要があります。 

20111003_10_tobe.png

 

 [StretchImage]をつけた時と、付けない時では表示画像がこんな感じで異なります。 

StretchImage有り.png

StretchImageなし.png

 StretchImage有り                  StretchImageなし

 

 ようやく、画像の表示ができました。

 

 さて、運動会の花形と言いますとリレーですね。
 各チーム必死になってバトンリレーをしていきます。

20111003_11_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 ここで、いろいろなドラマが生まれますし、見ていて非常に迫力があるところです。
 さて、黄色チームのバトンはどうなのでしょうか?

20111003_12_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 あれ、スピード落としちゃって。。

<画像処理2>

| | コメント(0)
 毎年恒例になりつつありますが、夏休みをいただき今年も京都へ行って参りました。
 今年は、観光コースの一つに「知恩院」を入れてみました。
 実は、法然上人がなくなられたのが西暦1212年と言われておりますので、今年(西暦2011年)は800年の節目となるからです。昨年も目の前を通過したのですが、立ち寄らなかったので今年は節目ということで参拝してみました。

20110905_1_tobe.jpg

 知恩院の正面に立ちますと、見上げる程に大きな門が私たちを待っています。この門は約400年前に徳川秀忠の命により作られたと言いますから、私たちにとって大先輩であるとともに、人間の一生の短さも感じてしまいます。まさに今大河で活躍している「お江」様も関わったのでしょうか?

 また、前回の思い残しとして銀閣寺にも行って参りました。
 

20110905_2_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 こちらは、よくある写真などで出てくる銀閣なのですが、やはりこれだけ見ると「やっぱり銀色に塗っていないんだ」と思ってしまいますが。
 しかし、銀閣寺を単純に近くで見るより、私は庭園(小山)を含んだ景色の方がすばらしいと感じています。

20110905_3_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 物をとらえる場合、「近づいて細かい部分をとらえる」、「少し離れて全体をとらえる」、その役割が人それぞれあると感じています。
 細部にこだわり銀閣寺を作る人も必要ですが、この銀閣寺というものがもっとも光るように庭園を含んで銀閣寺という全体を作るプロジェクトマネージャーも必要です、それぞれがそれぞれに必要な目線というものを持っていないとこの美しさは表現できないのだろうなと感じた京都旅行でした。

 

<画像処理2>
 前回は、なんとなく画像の合成を理論的に説明いたしました。
 今回は、恒例のC#における画像処理の実施例を幾つか記載いたします。何故C#といいますのは、画像の処理をしたいと思ったときに、bitmp画像やJpeg画像等を簡単に読み出せるからです。
 さて、論より証拠、まずはC#を利用して画像データを表示する下準備をします。

 画像の読み出しを行うために以下のようなフォームを作ってみます。

20110905_4_tobe.png まずは、画像の呼び出しを以下の3stepで実施いたします。

  • 読み出しの準備
  • ファイルの選択
  • 画像の表示

 

<1.読み出しの準備>
 ファイルを呼び出すために以下のようなControlを画面上に配置します。

20110905_5_tobe.png

 

 今回は、複数のファイルの読み出し(3種類)がありますので、それぞれ以下のように名前をつけます。

  • 画像1:Txt_FileName1
  • 画像2:Txt_FileName2
  • 背景画像:Txt_FileName3

 

 いちいち説明するほど複雑な名前ではないのですが、若干意味があります。
 右側にあります[参照]ボタンはフォーム上に合計3つあるのですが、押下された処理というものはほぼ共通です。従って何かしらの「キーワード」を元に同じ処理をさせたいと思ったことと、これから4つ5つと増やしていったときに、簡単に増やせるようにあえて意味のない名称にしています。
 そこで、これらの名称をID(enum)で管理するために、enumの定義とテキストボックスの関連づけを行います。
 [enum]については以下のように定義します。

20110905_6_tobe.png

 

 

 

 

 

 

 今回は、上記キーワードでテキストボックスをハッシュテーブルにより関連づけます。
 ハッシュテーブルの宣言およびTableへの登録については以下の手順で行うことが可能です。

20110905_7_tobe.png

 

<2.ファイルの選択>
 ファイルの選択については、「OpenFileDialog」を利用しますが、共通的な処理にしますので、[参照]ボタンが押下されたときに、[selectFilename()]という関数を呼び出すこととします。その際に、先ほど宣言しました、[enum]を引数とします。

20110905_8_tobe.png

 そして、[selectFilename()]関数では、「OpenFileDialog」を利用して、表示するファイルを選択した後、引数となっているキーを元に表示させるテキストボックスを検索し、該当するテキストボックスにファイル名称を表示します。

20110905_9_tobe.png

 

 ポイントは、以下の行の処理でして、この処理で、[TextBoxFileName]というハッシュテーブルからキーに対応したテキストボックスルが検索されます。

20110905_10_tobe.png

  次回は、画像の表示方法について補足いたします。
 

 さて、何故銀閣といいますと昨年の金閣寺と併せて入場券のお札をそろえたかったという下心もあります。
 

20110905_11_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 ずっとそろえたかったのです、昨年金閣寺の御札を紹介(http://blog.d-clue.com/tobe/2010/09/)しましたが、これでようやく金銀そろいました。
 私の大学時代からの夢だったのですが、約20年たってかないました。

<画像処理>

| | コメント(0)

 我が家では、毎年恒例のディズニーランドへ行ってきました。
 今回は、いろいろあったこともあり、子供たちへのご褒美も込めてディズニーランドホテルに宿泊しました。

20110801_1_tobe.jpg

 ここは、建設中の時から「いつか泊りたいね」と言っていたホテルであり、念願が叶ったというところです。
 以前もブログに書きましたが、ディズニーランドのすごいところは、「これでもか!!」という位にサービスをしているところだと思っています。
 もちろん、ディズニーですからミッキーに会いに行きたい人は大勢いると思いますが、ここではエレベータボーイもミッキーです。しかも全てのエレベータで違うミッキーがいると言うところがこだわっているところではないでしょうか?詳しくは是非宿泊した際に体験してくださいということにしておきますが、これは、私たちの仕事にも共通のことが言えますね。
 やはりお客様からの仕事をして、当たり前。。そこからどれだけの+α「これでもか」を出せるかが私は重要だと思っています。

 さてディズニーランドに入りますと、ビックサンダーマウンテンと言ったような、アトラクションだけでなく、いろいろなところでお客様をもてなす工夫がされています。
 今回私が一番楽しかったのは、こちらのショーです。

20110801_2_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 この方は、自転車をこぎながらピアノを弾くということをしてくれるのですが、ただピアノを弾くだけでなく、周りの人を巻き込みながらみんなが知っている曲を楽しそうに弾くのです。
 音楽って何だろう、人を楽しませる(もてなす)って何だろうと思っている原点を教えてくれるようなショーでした。この方全然鍵盤をみないんです。ほとんど周りにいる観客に目を向けていて、周りの人と一緒になって本当に楽しくピアノを弾いているんです。それこそ拍手が足りないとわざと曲を速くして観客をあおったり。。弾いている途中に「がんばって!!」と観客をあおったり。。写真で感じていただけるようにみんな一体となった盛り上がりがありました。
 コンサート終了後。いや~~楽しかったね~~と思っていたら、家族はどこかへ。。。
 ( ̄□ ̄;)!!
 携帯電話は便利です(笑)

 

<画像処理>
 最近よく、画像処理ソフトウェアとして「GIMP」を利用することがあります。
 私のBlogの中でも自動車のナンバープレートを会社のロゴで隠したりするときもこのソフトウェアを利用しています。写真を掲載されたくない人もおりますので、先に掲載した写真も中央の方以外は若干モザイク処理をかけさせていただきました。

 さて、小学校の勉強で、赤いライトと青いライトを重ね合わせると何色になるでしょうか?という問題がありました、今回はソフトウェアでこの回答にチャレンジしたいと思います。

 さて、赤と青を色紙に例え単純に重ね合わせますと、当然上側の画像しか見えません。
 そこで上側の画像はある程度光を透過させる必要があります。Image的には下の画像を表示させるために上の画像を50%透明にする(透過率50%)ということを行います。紙ではなくセロファンですね。

 

20110801_3_tobe.png

 

 では、早速赤色のセロファンを青色の紙の上にのせたときの色を計算してみましょう。
 上側の画像の透過率をαfとし下側の画像の透過率をαbとします。
 上側の画像については、もともとの画素に対してαfで透過されていますから元の色情報(Cf)に対して、下記の通りとなります。
 ・Cf' = αf×Cf
 同様に下側の画像についても、もともとの画素に対してαbで透過されていますから元の色情報(Cb)に対して、下記の通りとなります。
 ・Cb' = αf×Cf

 しかし、ここでよく考えないといけないのは、上記図を見てわかりますように、下側の画像については、上側の画像を通過した光が与えられるために、光の強さが弱まっています。どのくらい弱まっていますと上の画像が通過を許してくれた分です。つまり(1-αf)ということになります。

 そこで最終的にできあがる画像については、以下のような計算式で表せることになります。
 ・C =αf×Cf + (1-αf)×αb×Cb

 また画像の透過率についても下側の画像については、(1-αf)分だけ光の強さが弱まっていますので、
 ・α =αf + (1-αf)×αb

 では、上記式をGIMP上で検証してみたいと思います。
 そのために以下のBitmapを用意しました。

 

20110801_4_tobe.png Windowsでのbitmapを用い32bitで画像を表現させる場合ARGBという形式が利用されます。Littleエンディアンと言うこともありまして、実際に1Byte毎にみてみますと以下のように色情報が表現されます。
 ・青(B), 緑(G), 赤(R), 透過率(A)

 赤の場合は「0x0000FFFF」、青の場合は「0xFF0000FF」となります。
 それでは、先ほどの計算式を用いまして画像の合成を行っています。

 ここでは、赤と青が重なった部分の計算を行います。
  [透過率]
    α=αf[50%] + (1-αf[50%])×αb[100%] = 100[%]

  [色情報]
    C=αf[50%]×Cf + (1-αf[50%])×αb[100%]×Cb
    Cr=0.5×Crf[0xff] + (1-0.5)×1×Crb[0x00] = 127.5(0x7F)→0x80
    Cg=0.5×Cgf[0x00] + (1-0.5)×1×Cgb[0x00] = 0    (0x00)
    Cb=0.5×Cbf[0x00] + (1-0.5)×1×Cbb[0xFF] = 127.5(0x7F)


 結果を見ますとGIMPで出力したbitmap画像と同様の結果になりました。ポイントとしては、重ね合わせをすると実は画像が濁るということですね。
 合成した画像の右上や左下にある赤や青の画像は鮮やかでなくなっています。理科の実験でもセロファンを重ねていきますとだんだんと光が弱くなっていくのと同じですね。

 さて、ところ変われば品変わると言うわけではありませんが、同じ物でもみる角度(見方)によってか違って感じることがよくあります。
 皆さんは東京ゲートブリッジというのを知っているでしょうか?
 東京湾にかかる大きな橋ですが、以前、国際ブックフェアーに行った際に、東京ビックサイトから撮影した時に「大きいなぁ」と感じて写真を撮ってみました。

20110801_5_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 同じ橋を浦安側から撮影したところ、より迫力を感じました。個人的には、真横から写すと結構華奢に見えてきました。
 

20110801_6_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 以前、大河ドラマで篤姫が「一方聞いて沙汰するな」とありましたが、人や物はみる角度や聴き方によっていろいろと見え方が変わる物です。

 皆さんは、どちらの橋が好きでしょうか?
 それも、人それぞれですね。

<volatileの必要性2>

| | コメント(0)

 先日娘の授業参観に行って参りました。
 公開授業の内容は「道徳」です。授業では一枚のプリントが配られました。タイトルは「くずれ落ちただんボール箱」です。

20110627_1_tobe.jpg

 

 この話では、主人公である「私が」、スーパーマーケットに行ったときに、小さな子供がふざけていて、つまれていた段ボール箱を崩してしまうところから始まります。
 小さな子供は崩した後に、さっさとどこかへ行ってしまい、子供をつれていたおばあちゃんが心配そうに子供の行く先を見つめながら、段ボールを片付けようとしています。

 主人公である「私」はおばあちゃんの「片付けを手伝ってあげます」と言い、おばあちゃんは「ありがとう」と言い、子供の行った先をゆっくりと追いかけていきます。
 何となく、どこにでもありそうな話ですね。

 実は、この後、この女の子は段ボールを崩した人と間違えられて、スーパーマーケットの店員にむしろしかられてしまいます。

 授業では、こういう状況に出会ったとき皆さんはどうしますか?という内容で、生徒と話を進めていきます。


 <先生>「みんなだったら、どうですか?」、
          「おばあさんに手伝ってあげたのに、むしろ店員にしかられてしまって」。


 <生徒>「なんか、損した感じ」、「やらなきゃよかった」。

 

 このような意見が出ました。
 でも、先生は「そうかなぁ、みんなは、ほめられるために手伝ってあげたのかな?」、「最初はおばあちゃんが心配だから手伝ってあげたんじゃないのかな?」と生徒に問いかけます。

 今被災地などで、日本人のマナーが世界で紹介されています。こういうことも親からあるいは学校から「道徳」というものを通じて小さい頃から教わっているからではないかと感じました。つねに相手のことを想い、自分がほめられるためでなく、人のために行動を起こすと言うことは日本人の大事な心ですね。
 また、その授業ではもう一つ重要なことを言っていました。それは、小さな子供が段ボールを崩した時に自分がどういう行動を取るか?です。

 半数の生徒は、「はずかしいから、遠くでみている」とか、「誰かがやるかもしれないから。。」という意見でした。そこで先生は質問します。

 

 <先生>「では、手伝ってあげるために必要なことはなんだろうね?」

 

  ある生徒が、「勇気をもって声をかけること」と答えました。

 

 今回の道徳の授業の結論でした。
 人生、いろいろな場面で「あのときああしておけばよかった」といったようなことがありますね。でも出来ないことが多い。そのときに必要なもの、それが「勇気」であると私も思います。

 あらためて、学校から私もいろいろと教わることがあった授業参観でした。

 

 

<volatileの必要性って2>

 さて、前回は一見あり得ないようなプログラムですが、現実によくありそうな、そんな例を用いたプログラムでしたが、今回はファームウェアでよくあります、ハードウェアへの制御を例にvolatile宣言の必要性を欠きたいと思います。

 今回は、あるハードウェア制御レジスタ(5555番地:2Byteサイズ)に対して以下の手順で初期化を行うプログラムを記述します。

  • 0x00FFを書くと初期化を行う。
  • 0x0011を書くと制御が開始される。
  • 0x0033と書くと制御が停止する。

 それぞれの処理結果については、デバッグ用にviewWork[3]という変数にしまっておきます。

 簡単にプログラムを書くと以下のようになります。

 

20110627_2_tobe.png 

 

 このプログラムを実行したところ、ハードウェアは期待する動作をしていませんでした。
 制御処理のロギング用としてviewWork[]をみますと、しっかりと0xFF, 0x11, 0x33というように期待する値が入っていました。
 どうしてなのでしょう。

 今回も、CPUの実際の処理を調べるべくアセンブラ表示を行います。
 マイコン(DSP)はTI社製である[TMS320F28027]を使っています。


 

20110627_3_tobe.png

 

 

 実際の処理をみますと、どうやらおかしいです。
 5555番地に対して値を書いているのは、[008]行目の処理だけのようです。
 しかし、viewWork[]という配列に対して値をしまっているのは[006], [007], [009]行目ですが*regWorkではなく0xFF等といった値を直接入れています。
 結果としては、viewWork[]には確かに0xFF, 0x11, 0x33は入っていますが実際に5555番地は0x33だけしか書いていません。今回の仕様ですと最終的な停止命令だけ発効されているという結果になりました。

 さて、この問題を解決するために、volatile宣言を行います。先ほどのプログラムから5555番地にアクセスを行う*regWorkをvolatile型に書き換えてみましょう。

 

20110627_4_tobe.png

 

 さて結果をアセンブラで見てみます。

 

20110627_5_tobe.png

 

 ポイントをみますと、本来書き込みを行いたい5555番地に対しては、[005], [009], [012]行目で書き込みを行っております。そしてさらにviewWork[]に対しては[008], [011], [013]行目で実施されているますが、先ほどと大きく違うのは、0xFFといったような値を直接書き込むのではなく、5555番地から読み出した値を使っていると言うことです。
 つまりは、0xFFといった書き込み(制御)に対する処理結果を返してくれていることになります。
 これで、うまくいきました。
 ポインタ等を利用して外部領域にアクセスする際は十分に気をつけてください。

 

 さて道徳といいますと、学校教育もそうですが普段の生活で身につけることも大事ですね。
 先日実家に戻って、お肉屋さんに買い物にいったところ、合計で1,512円(消費税込み)でした。小銭を持っていませんでしたので、2,000を払ったところ。
 「おまけだよ」といって500円のおつりをくれました。
 パソコンとかPOSレジを利用したシステムの中で計算が合わなくなることが「ダメ」と言われる世の中で、細かいお金をおまけとしてサービスできる心はまだ下町には残っていたようです。

20110627_6_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 と、感動して帰ってきたのですが。
 よく考えると、私41歳なんですよね。地元ではまだまだ「子供」なのでしょうか?

<volatileの必要性1>

| | コメント(2)

 皆様のおかげさまを持ちまして、今年もD-CLUE社員旅行に行くことができました。
 今年も恒例の沖縄です。

20110530_1_tobe.jpg

 

 沖縄にきてしばらくして感じたことは、なんとなく自分がのんびりしているなと感じたことです。それは海があるからなのでしょうか?自然があるからなのでしょうか?昔は全然考えなかったのですが、ふと今回そんなことを感じました。
 「海岸線を走っているとき」、「山の中を走っているとき」。それらの全てを含めてここでは時間がゆっくりと流れている感じがしています。もちろん仕事で来ているわけではありませんので、なにかに急かさせることもないのですが、この明るい日差しと波の音がゆっくりとした時間の流れを感じさせてくれるんだなと思い、自分の心をリフレッシュさせることができました。
 また、沖縄と言えば「沖縄そば」が有名ですね。私は「ソーキそば」よりもこのもやしがたっぷりと乗った「牛肉そば」が好きです。

20110530_2_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 しばらく食べ続けないと、その下にある「そば」に出会えません。
 これを全て食べ尽くしたときに、なんとも言えぬ達成感があります。。。

 

<volatileの必要性って1>

 さて、沖縄の時間はゆっくりと流れていますが、プログラムのコードは出来るだけ早く動いてもらいたいものです。そこで、皆さんはコンパイルをするときに最適化のオプションを付けたりすると思います。

 たとえば、以下のような処理を作ったとします。

20110530_3_tobe.png

 testFunc()という関数を考えますと、変数[initialFlag]を"1"に初期化した後、[initialwait()]という関数を呼び出します。
 [initialWait()]では[initialFlag]が"0"にクリアされるのを待っていて、"0"になったらwhile文を抜けて[testFunc()]に戻ってきます。
 自分で変数を"1"に初期化したのに、"0"を待っているなんて、一見あり得ないようなプログラムですが、以下のような場合が考えられます。

 

20110530_4_tobe.png 事前にデバイスドライバー等を初期化しておいて、外部からのイベント(電源ボタンの押下等)をひたすら待っている場合等がその例だと思います。
 さて、今回これらのプログラムがどう動くかを見てみます。と言うわけで、恒例のアセンブラです。
 

20110530_5_tobe.png

 上記アセンブラコードは、コンパイラが出力したListファイルを貼り付けたものです。
 ここで重要なのは、whileのLoopがどのように変換されているかです。
 コードの一番左側に行ラベルがありますので、そちらを基準に説明しますと、
   65c-660 :r3レジスタにinitialFlagのアドレスをLoadしています。
   664     :r3レジスタにinitialFlagの中身をLoadします。(最初は"1")
   666     :r3レジスタの値を"0"と比較します。
   668     :違っていたら65c番地に移動します。

 

ここで見る限り、特に問題はありませんね。
さて、上記Listは最適化オプションを[-O0]を使ってコンパイルしたものです。
実際にデバッグが完了し、製品上で最終試験をする場合は[-O2]等のオプションを付けるか、Toolによっては[Release]側を選択して最終コンパイルをすると思われます。
そこで、[-O2]を付けてビルドしたコードを見てみることにします。
 

20110530_6_tobe.png    490-494 :r3レジスタにinitialFlagのアドレスをLoadしています。
   498     :r3レジスタにinitialFlagの中身をLoadします。(最初は"1")
   49a     :r3レジスタの値を"0"と比較します。
   49c     :違っていたら49c番地に移動します。

 

ここで、問題となるのは49c番地の動作です。
先ほどのソースと大きく違うのは、49c番地の動作では、再度[initialFlag]の中身をLoadせずに、CPU内部の演算結果だけをみていることです。
従って、この場合は、割り込みハンドラ側でイベントを受け付けたことにより"0"を設定しても、while()のLoopは抜けなくなってしまいます。
「デバッグしている時は、動いていたのに、最終試験をすると動かない。。」ということになります。

さて、どうするか。。。そこで[volatile]宣言の活躍です。
先ほどのプログラムから変数の宣言だけを変更します。

 20110530_7_tobe.png

そこで、再度アセンブラコードをみますと。

20110530_8_tobe.png

     490-494 :r2レジスタにinitialFlagのアドレスをLoadしています。
   498     :r3レジスタにinitialFlagの中身をLoadします。(最初は"1")
   49a     :r3レジスタの値を"0"と比較します。
   49c     :違っていたら498番地に移動します。

 

今度の場合は、[498番地]の比較結果がNGの場合は [498番地]に戻っています。
[498番地]では再度r2(initialFlag)の中身をLoadしますので、もしも誰かが変更している場合は、新しく"0"という値が取得出来ることになります。

割り込み処理等が無くシングルタスクの場合、あるいは最適化オプションが無い場合は問題ないかもしれませんが、そのようなプログラムはあまり一般的ではないと思いますので、改めてきちんと付けることにしましょう。

 

 さて、心がリフレッシュできたところで、体はと言いますと。
 今年もD-CLUE社員旅行恒例の、「大イベント大会」を行いました。
 海岸で体をつかったイベントや、ゲームをやって盛り上がるのですが、今年は急遽「大水泳大会」も追加されました。
 急遽はじまった水泳大会ですが、たまにプールに行っていることもあり若干余裕かと思ったのですが、急に泳いだら足がつってしまい。。σ(^◇^;)
 ちょっと40歳を超えてなにか、今までのように行かない自分に。。。そんなことも気がつかせてくれるすてきな沖縄でした。(~ヘ~)ウーン。。改めて準備(運動)が必要です。
 最後に、沖縄の注意点ですが。。
 遊びすぎに注意しましょう。。
 あまり遅くに空港に行きますと。

20110530_9_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 「ぐぶり~さび~しが・・・・、ちゅうやうわいやいび~ん」と。。
 お腹が空いても、何も食べれません(笑)

<WindowsMobile2>

| | コメント(0)

 少し情報としては、古くなりますが。近所の桜が満開でしたので、是非この桜を皆さんにお伝えしたいと思い、写真を撮っておきました。

20110502_1_tobe.jpg

 

 例年、桜祭りが行われるのですが、電力供給の不安定さ、および自粛ムードに伴い、今年は中止になりました。子供たちは、毎年ここで販売される、「桜ソフトクリーム」を楽しみにしているので非常に残念がっていました。
 おっと、「花より団子」ということでしょうか?( ̄― ̄)
 春と言えば、別れと出会いの季節ですね。
 ちょうど娘が卒業を迎えたこともあり、卒業式そして入学式と参加してきましたが、やはり卒業式の方が泣けますね。
 私たちの学校では、歌で作る卒業式という感じがあります。卒業式を迎えるにあたり、一生懸命歌の練習をしていたことも、自宅の様子からわかります(鼻歌がよく聞こえます)し、送り出す側も一生懸命に歌の練習をしていたことが予想されます。
 送り出される側、送り出す側、一つの大イベントを盛り上げようという雰囲気を感じます。
 また、卒業式が終了し体育館から退場した後、在校生が校庭に移動して、花のアーチを作って校門まで送り出していました。
 やっぱり「これでもか!!」と言うくらい、送り出される主役たちを盛り上げることが大事だなぁ?と感じました。
 そして送り出される側が出した最後の一枚がこれです。

20110502_2_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 そうです、卒業式には「感謝」というものがあふれているからなのではと感じました。

 

 

<GPS情報の取得>
 前回から、スマートフォンをいじっています。
 前回はプロジェクトの作り方を説明しましたので、今回はスマートフォンを使ってGPSの情報を取得したいと思います。

 スマートフォンでGPSを取得使用とした場合、Windowsが提供する以下の「GPS Intermediate Driver」を利用することで簡単に取得ができます。
 http://msdn.microsoft.com/en-us/library/bb202086.aspx

 上記Driverについては、前回のBlogでお伝えした開発キットをインストールすることでサンプルアプリとともに提供されます。
 それでは、以下の手順でGPS情報の取得と行きます。


<STEP1:ドライバーの複写>
 「GPS Intermediate Driver」を使ったサンプルアプリはインストール時に特に変更をしていなければ、以下のフォルダーに入っています。
 C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS

 上記フォルダから以下の7つのファイルを自分のプロジェクトにコピーしてきました。

20110502_3_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<Step2:フォームの作成>
 GPS情報を取得するためのフォームを作成します。

 今回用意した画面は、以下の通りです。

20110502_4_tobe.PNG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 GPS情報を表示するために、2つのテキストボックスと情報を取得するトリガーとなるボタンを一つ実装しました

 

<Step3:変数の定義>
 GPS情報を取得するために以下の3つの変数を定義しました。

20110502_5_tobe.PNG

<Step4:初期化処理>
 Step3で定義した変数の初期化、およびクラスの生成を行います。

20110502_6_tobe.PNG

 [GPS Intermediate Driver]については、newおよび[Open()]の2手順で利用が可能です。

 

<Step5:位置情報の取得>
 [Btn_GetPosition]が押下された時に最新の情報を取得するようにします。そこで、[Btn_GetPosition]のイベント時に以下のコードを記載します。

20110502_7_tobe.PNG

 

 さて、簡単ではありますが、これで終了です、実行結果については、以下の通りです。 

20110502_8_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 ん??、なにか微妙にずれている気がするが。。

 

 さて、震災にともないいろいろなイベントが中止になりました。
 我が家の娘たちは、朝ジョギングもしていることもあり、マラソン大会を楽しみにしています。
 しかし、残念ながら今年は中止が多かったです。
 そこで、代わりにバドミントンをやることに。。

20110502_9_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 体育館を利用して、安く親子で楽しんでいます♪
 ようやく、前回購入したラケットが活躍しています(笑)

<WindowsMobile1>

| | コメント(0)

 人に関わるということは、非常に大切なことであり非常に大変なことですね。
 関わる部分で一番濃いのはやはり家族ではないでしょうか?子供の学校の成績を自分のことのように一喜一憂するのも、それだけ関わりあいを大事にしているからだと思います。
 私が、子供たちと関わるために重要にしていることが2つあります。
 一つめは、できるだけ一緒に登校するようにしていることです。
 ここは、非常に重要な情報源で、朝歩いているとかなりの情報がとれます。○○君がどうしたとか。給食の時間、男子がふざけて。。。等勉強に関係の無いことですが、一日学校を楽しんだことや、一日嫌だったこと、席替えを早くしたいとか、したくないとか今の子供の気持ちがとれます。

 それから、もう一つは、勉強に関わる方法として「パパ塾」なるものを2年間程開いていました。今回はこのパパ塾を少し紹介します。
 もともと、人に教えることが大好きなのですが、やはり学校の勉強についていってほしいこと、それから週末の大事なコミュニケーション手段として、特に子供たちと関わり続けるために開いていました。

 塾を開校するなら、「やはり黒板は必要だよ!!」ということからホワイトボードを購入し、塾っぽいことをしています。
 今回は、地図記号です。さて皆さんはどれだけの地図がわかりますか?

 

20110328_1_tobe.jpg

 よく、社内では「知識を知恵に変えよう」という話が出てきます。せっかく覚えたことは「使わないと意味がない」、逆に覚えたことは「使えなければ意味がない」ということです。
 そういった点で、この塾では、覚えることも大事ですが、覚えたことを実践で使い、覚えた知識を知恵に変えたいと思っています。なかなか難しいのですが、問題を解くだけでなく、問題を自分で作るということがその一つの手法かな?と思っています。
 さてこのホワイトボードはどうなるでしょうか?

 
<スマートデバイス>

 iPhoneが口火となり、ここのところスマートフォンの需要は多いですね。
 電車に乗っていても、スマートフォンの画面ごしにニュースを見ている人、Twitterをフォローしている人、電車の時刻を検索している人など、皆さん忙しそうです。
 そこで、今更ですがWindows Mobileを使ってスマートフォンをいじりたいと思います。

 何故Windows Mobileかと言いますと一言で言うと簡単だったからです。いろいろな開発環境はありますが、なるほどWindowsはよくできております。私はVisualStudio 2008を持っているのですが、こちらのソフトウェアがあれば、スマートフォン用のApplicationはただで入手が可能です。

 

 さて、早速ですが、VisualStudio 2008を持っていることを前提に話を進めますと、スマートフォンの開発のためには以下のソフトウェアをMicrosoftのHomapageから入手する必要があります。

 こちらを用意しましたが、あとは通常のApplicationと同じように開発が可能です、今回はC#で試してみます。


<Step1:Projectの作成>

  • 上記ソフトウェアをInstallした後、VisualStudio 2008を起動します。
  • [ファイル(F)]→[新規作成(N)]→[プロジェクト(P)]より新しいプロジェクトを作成します。
  • 「新規スマートデバイスプロジェクトの追加」ダイヤログが表示されますので、ターゲットプラットフォームに「Windows Mobile 6 Professional SDK」を選択し、プロジェクトの種類として[スマートデバイス]を選択します。尚今回のプロジェクト名称は[SampleProject]とします。

20110328_2_tobe.jpg

20110328_3_tobe.jpg

 


<Step2:アプリケーションの開発>
 Step1が完了しますと画面上になにやらスマートフォンらしき画面が出てきます。

20110328_4_tobe.jpg

 

 さて、今回は、テスト用としてボタンをクリックするとテキストボックスの数字をカウントアップするアプリケーションを作ってみます。
 作り方は、皆さんご存じかもしれませんし、過去のBlogでも紹介させていただきましたので、今回は少し省略させていただきます。
 今回はこんな画面を

20110328_5_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20110328_6_tobe.PNG

 

 

 こちらをビルドし、デバッグボタンを押しますと、アプリケーションの配置場所を要求されます。
 ここは、「JPN Windows Mobile 6 Professional VGA Emulator」を選択し[配置]を押下します。
 すると、だいぶ時間が経過した後Windows Mobile端末が起動を始めます。
 起動が完了しますと、先ほどのアプリケーションが表示されます。マウスを当ててクリックしますと、カウント数が更新されることが確認出来るはずです。


<Step3:スマートフォンへの転送>
 さて、アプリケーションの開発が完了しました。
 最後に、スマートフォンへの転送を行います。ここでは一番簡単な方法を記載します。
 スマートフォンをPCとUSBケーブルで接続しますと、スマートフォン上のSDカードが共有されて表示されます。
 そこに[Release]でビルドしましたアプリケーションをエクスプローラ上から転送します。
 通常のファイル同様、単純にドラッグで転送できますので、簡単です。

 

<Step4:アプリケーションの実行>
 さて、スマートフォンへの転送が完了しました。
 最後にエクスプローラ上から起動してみます。
 まずは、PCと接続しましたUSBケーブルを抜いておいてください。こちらがささったままですとSDカードの操作がスマートフォン上からできなくなっています。

 そして、エクスプローラの画面の左上から[Storage Card]を選択しますと、先ほど転送したファイルが見えるはずです。クリックして起動してください。

 うまく動作したでしょうか?

 

 さて、先ほどの「パパ塾」。
 改めて、楽しみながら実践を。。ということも目的の一つにしています。先ほどの地図学習を実践で楽しみながら使うと。。

 「電車が無いと不便だよね!!」、「手紙を出すときに困るよね!!」、「病院を作ろう」等とにぎやかに書き込みを始めますと、こんな街作りができます。(笑)

20110328_7_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 もう少し続けると収拾がつかなくなりそうでしたので、本日はこの辺で授業終了です。。

<マルチタスク>

| | コメント(0)

 さて、前回のブログで三国志の本を紹介しましたが、実は中学生の時にちょうどNHKで「人形劇三国志」という番組をやっていまして、毎週みておりました。特に私は諸葛亮孔明(声:森本レオ)の大ファンでした。武力による武将たちも大好きなのですが、なんと言っても孔明こと「丞相様」です。
 そんなことから、実家にある私の大事な湯飲みを紹介します。

20110207_1_tobe.jpg

 

 ものには、いつか壊れるという運命がありますが、この湯飲みを作った日付をみますと。

20110207_2_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 昭和59年6月7日とあります、中学生の修学旅行で作った物なんです。諸葛亮孔明とかかれた湯飲みを作るなんて、ちょっと??な中学生でしょうか?

 さて先日、三国志の話をしましたが、結構おもしろいです。全部で550ページありますので、電車の移動だけではなかなか読み終わらず、ようやく読み終わりました。しかしこの本、私たちが知っている派手な?武将の歴史だけでなく、そこから新しく文化が出来ていく課程を感じることができます。
 これは、どの歴史も同じだと思うのですが、世の中が乱れているときは武力の強い人が必要とされ、だんだんと戦が無くなってくると、いわゆる「文官」というものが大事になってきます。この文官たちが独自の文化を創っていき、逆に武力をもって戦ってきた人たちにとっては「こんな世の中を作るつもりじゃなかった」と思うかもしれませんが、良くも悪くも世の中は平和に変わっていきます。
 その新しい世界に適応できない人たちは、自然と消えていく運命にあります。これって三国志とか戦国時代とかだけの問題でなく、今激しく変化している世の中でも同じことがいえると思います。
 時代時代で必要とされる、役割が変わります。私も改めて世の中に変化に適応出来るように自分の役割を変え続けていきたいと改めて考えました。


<マルチタスク>
 さて、前回はWindowsというOSを便利に使って、開発・評価を速く進めるための手法を紹介しました。安価なマイコンではC言語で開発をしますので、C++上でSimulationができれば非常に開発が楽になりますね。
 今回は、とはいえマルチタスク的な環境での評価もしたい場合について少し書きます。組み込みファームウェアでは「タスク」という言葉を使いますが、その他の環境ではよく「スレッド」という言葉を使います。こちらの意味については、書籍に書いてありますし「何がタスクで何がスレッドで。。」なんて議論もありますね。
 持論は置いておいて、今回はWindows上のスレッドを利用します。
 μiTRONでタスクを生成するのは、[cre_tsk()]ですね。このcre_tsk()を元にWindows上でスレッド(タスク)を生成します。
 cre_tskの引数については以下の通りに規定されています。


20110207_3_tobe.png

 こちらの関数をWindows用のスレッド生成手順にあわせます。
 Windowsでスレッドを生成するためには、以下の通りの手順で行います。20110207_4_tobe.png

   さて差分を埋めると、以下の表の通りです。 

20110207_5_tobe.png

  非常に似通っていることがよくわかりますね。
 C言語で記載することで、tskstrは無視できます(=TA_HLNG[固定])、またスタックサイズについてはここでは言及しないので、"0"ということにします。すると、そのまま移行できます。

 さて早速タスク(スレッド)を生成しましょう。
 まずは、cre_tskのAPI実装です。

20110207_6_tobe.png

  これで、cre_tskをcallすればThreadが生成されます。
 おまけで、TestAPI.hも乗せておきます。
 基本はitorn.hをそのまま実装すればよいのですが、ここでは、より理解を深めるために必要なものだけ抜粋したファイルを作りました。 

20110207_7_tobe.png

  正式なものを実装したければToppersのWindows Versionを実装すればそれですむ気もしますが。。(http://blog.d-clue.com/tobe/2009/01/windowsos.html

 特に、ファームウェア開発を行っていますと、システムの開発としては後工程になりますので、出来るだけ先手先手を打って、開発後半のリスクを減らしたいと考えています。


 さて、冒頭に中学生の時に作った湯飲みの話をしましたが、約25年たって、ある不具合を見つけました。

20110207_8_tobe.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 あっ、葛の字が。。
 本当に「丞相様」のファンだったのでしょうか。
 中学生でしたので許してください。