小学三年生の漢字を夏休み中に一気に覚える

小3の娘のために、三年生で習う漢字(200字)のための熟語一覧を作りました。これをひと夏で覚えてしまいます。つまりは、2,3学期の先取りですね。

■三年生で習う漢字

小学三年生で習う漢字一覧 を参考にして、ひとつずつ熟語に直します。

悪 安 暗 医 委 意 育 員 院 飲
運 泳 駅 央 横 屋 温 化 荷 開
界 階 寒 感 漢 館 岸 起 期 客
究 急 級 宮 球 去 橋 業 曲 局
銀 区 苦 具 君 係 軽 血 決 研
県 庫 湖 向 幸 港 号 根 祭 皿
仕 死 使 始 指 歯 詩 次 事 持
式 実 写 者 主 守 取 酒 受 州
拾 終 習 集 住 重 宿 所 暑 助
昭 消 商 章 勝 乗 植 申 身 神
真 深 進 世 整 昔 全 相 送 想
息 速 族 他 打 対 待 代 第 題
炭 短 談 着 注 柱 丁 帳 調 追
定 庭 笛 鉄 転 都 度 投 豆 島
湯 登 等 動 童 農 波 配 倍 箱
畑 発 反 坂 板 皮 悲 美 鼻 筆
氷 表 秒 病 品 負 部 服 福 物
平 返 勉 放 味 命 面 問 役 薬
由 油 有 遊 予 羊 洋 葉 陽 様
落 流 旅 両 緑 礼 列 練 路 和

熟語は、三年生までに習う漢字(1,2年生も含む)かつ、三年生でわかる単語にしてます。ただし、意図的に、物理や数学、文学で使う用語を混ぜています。漫画とか本とか出てきそうな単語を入れておくとベターですね。いくつか重複がありますが「漢字を覚える」ことが目的なので(熟語は二の次)これはこれで良しとします。

以下、200熟語あります。

  • 悪者 わるもの
  • 安全 あんぜん
  • 明暗 めいあん
  • 医学 いがく
  • 委員 いいん
  • 意見 いけん
  • 体育 たいいく
  • 全員 ぜんいん
  • 学院 がくいん
  • 飲食 いんしょく
  • 運命 うんめい
  • 水泳 すいえい
  • 駅員 えきいん
  • 中央 ちゅうおう
  • 横道 よこみち
  • 屋内 おくない
  • 温度 おんど
  • 化物 ばけもの
  • 荷物 にもつ
  • 開店 かいてん
  • 世界 せかい
  • 一階 いっかい
  • 寒波 かんぱ
  • 感心 かんしん
  • 漢字 かんじ
  • 本館 ほんかん
  • 海岸 かいがん
  • 発起 ほっき
  • 期日 きじつ
  • 主客 しゅきゃく
  • 研究 けんきゅう
  • 急行 きゅうこう
  • 一級 いっきゅう
  • 宮古 みやこ
  • 野球 やきゅう
  • 去来 きょらい
  • 橋本 はしもと
  • 学業 がくぎょう
  • 楽曲 がっきょく
  • 局面 きょくめん
  • 金銀 きんぎん
  • 北区 きたく
  • 苦楽 くらく
  • 道具 どうぐ
  • 主君 しゅくん
  • 係数 けいすう
  • 軽石 かるいし
  • 心血 しんけつ
  • 決心 けっしん
  • 研究 けんきゅう
  • 県道 けんどう
  • 車庫 しゃこ
  • 湖面 こめん
  • 一向 いっこう
  • 幸運 こううん
  • 南港 なんこう
  • 号令 ごうれい
  • 根本 こんぽん
  • 祭事 さいじ
  • 一皿 ひとさら
  • 仕事 しごと
  • 生死 せいし
  • 使用 しよう
  • 開始 かいし
  • 親指 おやゆび
  • 虫歯 むしば
  • 詩歌 しいか
  • 次手 じて
  • 仕事 しごと
  • 持手 もちて
  • 式場 しきじょう
  • 実用 じつよう
  • 写真 しゃしん
  • 三者 さんしゃ
  • 主人 しゅじん
  • 子守 こもり
  • 取手 とって
  • 酒母 しゅぼ
  • 待受 まちうけ
  • 九州 きゅうしゅう
  • 拾円 じゅうえん
  • 終始 しゅうし
  • 習字 しゅうじ
  • 集会 しゅうかい
  • 住家 じゅうか
  • 軽重 けいじゅう
  • 宿屋 やどや
  • 場所 ばしょ
  • 寒暑 かんしょ
  • 助言 じょげん
  • 昭和 しょうわ
  • 消化 しょうか
  • 商業 しょうぎょう
  • 一章 いっしょう
  • 勝負 しょうぶ
  • 乗客 じょうきゃく
  • 植木 うえき
  • 上申 じょうしん
  • 全身 ぜんしん
  • 多神 たしん
  • 写真 しゃしん
  • 深海 しんかい
  • 進行 しんこう
  • 世界 せかい
  • 整理 せいり
  • 今昔 こんじゃく
  • 全体 ぜんたい
  • 相手 あいて
  • 送風 そうふう
  • 感想 かんそう
  • 休息 きゅうそく
  • 速度 そくど
  • 族長 ぞくちょう
  • 他人 たにん
  • 打者 だしゃ
  • 対話 たいわ
  • 待受 まちうけ
  • 代理 だいり
  • 第一 だいいち
  • 題名 だいめい
  • 炭火 すみび
  • 長短 ちょうたん
  • 相談 そうだん
  • 着物 きもの
  • 注意 ちゅうい
  • 人柱 ひとばしら
  • 丁度 ちょうど
  • 投手 とうしゅ
  • 豆本 まめほん
  • 島国 しまぐに
  • 湯船 ゆぶね
  • 登山 とざん
  • 平等 びょうどう
  • 自動 じどう
  • 童子 どうじ
  • 農業 のうぎょう
  • 波面 はめん
  • 配車 はいしゃ
  • 二倍 にばい
  • 帳面 ちょうめん
  • 調子 ちょうし
  • 追放 ついほう
  • 定食 ていしょく
  • 庭球 ていきゅう
  • 口笛 くちぶえ
  • 鉄火 てっか
  • 回転 かいてん
  • 首都 しゅと
  • 温度 おんど
  • 箱庭 はこにわ
  • 田畑 たはた
  • 発進 はっしん
  • 反動 はんどう
  • 坂道 さかみち
  • 板場 いたば
  • 一皮 ひとかわ
  • 悲話 ひわ
  • 美人 びじん
  • 目鼻 めはな
  • 筆箱 ふでばこ
  • 流氷 りゅうひょう
  • 表面 ひょうめん
  • 分秒 ふんびょう
  • 病気 びょうき
  • 品物 しなもの
  • 勝負 しょうぶ
  • 部分 ぶぶん
  • 一服 いっぷく
  • 幸福 こうふく
  • 動物 どうぶつ
  • 平面 へいめん
  • 返事 へんじ
  • 勉強 べんきょう
  • 開放 かいほう
  • 味見 あじみ
  • 命運 めいうん
  • 表面 ひょうめん
  • 問題 もんだい
  • 役目 やくめ
  • 投薬 とうやく
  • 理由 りゆう
  • 重油 じゅうゆ
  • 有言 ゆうげん
  • 遊具 ゆうぐ
  • 予定 よてい
  • 子羊 こひつじ
  • 洋上 ようじょう
  • 一葉 いちよう
  • 太陽 たいよう
  • 様子 ようす
  • 落葉 おちば
  • 流氷 りゅうひょう
  • 旅行 りょこう
  • 両手 りょうて
  • 青緑 あおみどり
  • 朝礼 ちょうれい
  • 前列 ぜんれつ
  • 練習 れんしゅう
  • 線路 せんろ
  • 平和 へいわ

ここまで、作って気づいたのですが、三年生で習う漢字は、そのときに習う漢字と組み合わせて熟語になるものが多いです。このあたり、漢字を習う順番がうまく構成されているな、と改めて感心しています。この順序って、いつごろ決まったんですかね?先人の知恵は受け継がないと。

漢字なんて、その時に読む本や漫画、テレビに組み合わせたほうが覚えやすいし忘れません。たとえば、「ちょうだのれつ」の「れつ」を書くときに、「前列」の「列」とピンポイントで覚えるわけです。あとは本を読んで熟語を頼りに少しずつ広げていけばOKです。

カテゴリー: 雑談 | 小学三年生の漢字を夏休み中に一気に覚える はコメントを受け付けていません

Windows 8 Media Center Pack を2台目に入れるときの注意点

うちには、業務上(自営上)Windows PC がたくさんあって、あれこれとライセンス認証でややこしいことになっています。「ライセンス上」ややこしいことをしているのではなくて、まあ、MSDNの開発ライセンスと、購入したライセンスを組み合わせながら、Windows 7 Home, Windows 7 Pro, Windows 8, Windows 8 Pro を使い分けているわけですね。ライセンスがダブらないように。

で、結論から言うと、Windows 8 のライセンスは、基本 PC 1台につき1つ Windows をライセンス認証できない理由 – Microsoft Windows ヘルプ となっているので、Windows 8 Media Center Pack も PC1台につき1つ購入しないとダメ、ってことです。ちなみに Windows 8 Media Center Pack ってのは、Winodws 7 Pro にはふつうについていた、DVD やテレビを表示するアプリのことです。どうして、これが Windows 8 Pro から外れてしまったのかわからないのですが、Microsoft のサイトから 800 円で購入しないといけません。中身は Winodws 7 の頃と同じものなので、Winodws 8 についてくる「ビデオ」アプリで十分ならば(これは DVD を再生できません)、購入する必要はないのですが…、まあ、なんかダウングレードって感じがしています。まあ、800円ならばいいですけどね、ってことで、2台のPCならば、2つ購入します。

■再現手順

再現手順…というか、どうやってトラブルが発生したのか?ってところです。

  1. Windows 7 Pro で動作している PC-A がある。
  2. Windows 8 Pro にアップデートする。
  3. このとき、既存の Windows 8 Pro の PC-B の「ライセンスキー」を入れてしまった模様。
  4. PC-A は無事 Windows 8 Pro にアップデートできた(ライセンス認証されていない状態)
  5. PC-A に Windows 8 Media Center Pack を入れようとして、PC-B の「ライセンスキー」を入れる。
  6. Media Center Pack のアップデートは終了。DVD や TV が視聴できる状態になる。
  7. Windows Update をかける。
  8. 再起動に失敗して、Windows 自体が立ち上がらなくなる。構成を Windows Update 前に戻すと、かろうじて Windows 8 Pro が立ち上がる。

という状態です。Windows 8 Pro の重複は後からライセンスを変えることができるので、ひとまずインストールを進めるための手段です。Media Center Pack は、PC 1台につき1つとは思わなかったので(ストアアプリのように Microsft アカウントに紐づいているものかと勘違いした)、PC-B のライセンスをそのまま入れました。不正利用しようとした訳ではありません。まあ、トリッキーな使い方をしているのは認めますが(苦笑)

■不具合の現象

直接的な現象としては「Windows Update に失敗する」ってことなので、最初はこれを解決しようとしたのですが、ちょっと考えた後、「ライセンス認証をしていないPCに対しては、Windows Updateができない」というのを思い出して(例の中国Windows Updateサーバーの件ですね)、これって、そもそも Windows Update できないはずでは?、と思って、ひょっとすると、Media Center Pack のライセンスを再購入すればよいでは?と思ったわけです。

ですが、この PC-A の状態が、

  • 新しい Windows 8 Pro のライセンス認証を受け付けない。
  • Media Center Pack の新しい購入ができない(なぜか、この国では購入できません)。

という感じになってしまって、万事休す、になってしまいました。いやいや、変なところにはまったことはわかるのですが、対処方法がないというのがなんとも。

■Microsoft サポートに電話する

Microsoft のサポートセンターにはいろいろな窓口があるのですが、この件は「ラインセンス認証」が怪しいことが分かったので、「素人」っぽく相談してみました。まあ、MS ライセンスに関しては、素人なのは確かなのですが。

  1. ライセンス認証ができない、Windows Updateに失敗することを、ライセンス認証のサポートセンターに伝える。
    → Windows 8 専門の電話番号を教えられる
  2. Windows 8 専門のところで、Media Center Pack がダブっていることを教えられる。
    解決方法として、2つの方法を教えられる。
    → Windows 7 にダウングレードした後、Windows 8 Pro に戻す…のはつらい。
    → 別 PC で Media Center Pack を購入して、その PC はつぶす。
  3. VMWare で Windows 8 Pro を作って、Media Center Pack を購入する。
    → VMWare のほうはつぶす。
  4. PC-A に追加購入した Media Center Pack のキーを入れようとするが、入れられないので、再び Windows 8 窓口へ
    → エラーコードから、ライセンス台数の制限に引っかかっているので、制限解除の電話番号を教えられる。
  5. 制限解除の電話番号で、長い長い8桁x9の数字を、iPhone で入れた後(いやあ、これは固定電話のほうがいいです)、解除できませんとのメッセージが。
  6. 制限解除のオペレータに繋ぐと、MSDN のライセンス制限にひっかっているとのこと(確かに、MSDN の Windows 8 Pro ライセンスを使っているので)。MSDN のサポートセンターの電話番号を教えられる。
  7. MSDN サポートに「Media Center Pack」のライセンス制限が MSDN 関係でダメっぽいのだが…とMSのサポートから言われた、と伝えると、MSDN サポートの方が「Media Center Pack って何処で購入されましたか?」、「Media Center Pack という製品は MSDN に入っていないので、どういう製品なのですか?」ということを言うので、Bing, Google で検索して貰ったがが解決せず。まあ、自社製品はたくさんあるから「知らなくても」問題はないのですが、クレーマー扱いされるのは本意ではないので、仕方がないので「クレーマーモード」に変更…「君の名前は?」と行聞く。ちなみに、名前は忘れました。
    → すったもんだの挙句、やっぱりライセンス認証らしいので、最初のライセンス認証とは違う電場番号を教えてもらう。
  8. ライセンス認証の電話に掛けるが「ただいま、大変回線が込み合っており…」のメッセージが。ええと、すでに2時間近く問い合わせにかかっているので、ちょっとキレそう。
  9. 仕方がないので、Windows 8 専門の電話番号にかけて(ここは問い合わせ番号を貰えるので、担当者が違っても前後の話が続いていて楽)、事情を話す。
  10. 「電話のたらいまわし」を了解してもらったようで、ライセンス認証の代行をサポートセンターの A さんに代行して貰う。
    → あの8桁x9の長い数字を電話で伝える。
  11. 10分後、折り返し電話がかかってきて、制限が解除されたことを伝えられる。
    → あの6桁x? の長い数字を電話で伝えられる。いやいや、ちょっと大変ですがな。
  12. 無事、Windows 8 Pro, Media Center Pack がライセンス認証された状態になる。

で、解決したのは「ライセンス認証」なので、Windows Update の件は、まだ確かめていません。力尽きました。

まあ、時々答えてネットあたりで「Microsoft のサポートが悪い」との書き込みがあるのですが、ちょっと横の連携がつながっていないところが多いみたいです。Windows 7 から Windows 8 へのアップグレードトラブルと、それに伴うライセンス認証に関しては一本化してほしいところですね。数字の羅列は自動応答しやすいってのもあるけど(コストが安い)、あれこれと手間が掛かる場合はオペレーターに繋いでもらったほうがよさそうです。

■Media Center Pack のライセンスを追加購入する

たぶん、はまりどころなので、記録を書いておきます。Microsoft 推奨の方法ではないけれど、こうしないと追加購入ができないので。

先のように Media Center Pack を2台目のPCに入れてしまうと、どうしようもない状態になります。Media Center Pack を入れた Windows 8 は、それを外すことができない(アンインストールできない)ので「前に進むしかない」状態です。ひとつの方法としては、Windows 7 に一度戻して再び Windows 8 を入れなおせばいいのですが、アプリが既に入っていたり、そもそも Windows 8 からクリーンインストールした場合には、Windows 7 には戻せません。

なので、VMWare などの仮想環境を利用して、一時的に Media Center Pack を購入し、そのライセンスをトラぶった PC に入れるのがベターなようです。

  1. VMWare で Windows 8 Pro を新規作成する(たぶん、お試し版でもOKと思う)
  2. Windows 8 Pro から、Media Center Pack を購入する。
  3. Media Center Pack のライセンスを控えて、インストールはしない。
    → 先の例では、インストールしてしまったのですが、インストールしないほうが安全かと。
  4. VMWare 内の Windows 8 Pro は消し去る。
  5. トラブルのある PC で、購入した Media Center Pack のライセンス番号を入れる。

ってな手順です。ひょっとすると、素直にインストールできるかもしれないし、ライセンス制限のエラー(「0xC004…」だったかな?)が出るはずです。この場合は、ダイアログに出てくる問い合わせの電話番号にかけて、長い長い8桁x9 の文字を電話で(スマートフォンだと苦労します)入力してください。8桁ごとにチェックをしてくれるので、途中で番号を間違えても大丈夫です。私自身、5,6回間違えましたが、認証の番号が貰えるまでいきました(まあ、制限エラーだったわけですが)。認証番号を聞き取れなかった場合は、たぶん繰り返し再生できるかと。

■その他

そういえば、コントロールパネル→システムの出し方は、「左下のWindows キーと Xを同時に押して」で統一されているみたいですね。まあ、チャームから「設定」→「コントロールパネル」では難しいですから。

ちなみに、システムを開くのであれば、エクスプローラーで「コンピューター」(8.1では「PC」でっせ、「PC」ッ)を右クリックして、「プロパティ」を選択すると早いです。まあ「右クリック」ってのが素人的には難しいので、キーボードと「右クリック」の組み合わせで説明するのがベターです。注意したいのは、ThinkPad の古いノートPCとかでは、Windows キーがなかったりするので注意が必要ですが。↓は Media Center Pack をインストールしていない PC です。

image

追記 2013/07/21

Windows Update を試すと相変わらず、起動時にカーネルエラーでこける。どうやら、再起動のかかる Windows Update が全滅の模様。面倒なので、Windows Update をしない設定にして、正式版の 8.1 がでたら、それにアップグレードする予定。

 

カテゴリー: windows 8 | Windows 8 Media Center Pack を2台目に入れるときの注意点 はコメントを受け付けていません

[win8] Win+Alt+PrtScr でアクティブウィンドウを画面キャプチャする

というのを見つけて、「えーえー、知らないですともッ!!!」ってことで、試してみるとWin8ではマイピクチャ(8.1の場合は「画像」)にスクリーンショット(screenshots)というフォルダに「スクリーンショット (1).png」な感じで画像ファイルが保存されます。

そうなると、Alt+PrtScr と同じように、Win+Alt+PrtScr としたときにアクティブなウィンドウをキャプチャして保存してくれると便利ですよね。実際、手元で似たツールは作っていたのですが、Shift+PrtScr にしていたので、Win+Alt+PrtScr に変えてみます。Shift にしているのは、Visual Studio などの画面キャプチャをするときにメニューが閉じられないので書籍用のキャプチャがしやすい、ってのもあります。Alt を押すとメニューが閉じられてしまうので。

あと、Win+PrtScr の場合は、デュアルディスプレイの場合はすべての画面を一遍にキャプチャしてしまうので、モニタ毎のキャプチャ機能を追加してみます。Win+テンキーの1 にしておきます。本当は「Win+1+PrtScr」にしたかったのですが、「Win+1」のキーはタスクバーの最初のアイコンに割り当てられているので、これは使えません(なんじゃ、こんな機能があったのか、ってな具合ですが)。ちなみに「Win+2」は2番目のアイコンです。あと、「Win+Shift+1」の場合は新しくアプリを立ち上げます。なるほど。

ホットキーの設定あたりは、

Ctrl+PrintScreen でアクティブなウィンドウをキャプチャする – Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/2344

を参考にして、そのまま写し。

あとはついでだけど、リモートコンピュータに対しての画面キャプチャも

リモートコンピュータの画面をキャプチャする – Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/3352

まあ、リモートコンピュータ(タブレットPC)の場合は、Mouse without Borders を入れておけば良いのですが。

複数モニタに対応する部分だけコードを示しておきます。
プライマリモニタ(最初のモニタ)は、Screen.PrimaryScreen で取得できるので、これから Bounds を使ってサイズを取得。CopyFromScreen で全体の画面キャプチャから切り出しをすれば ok です。
サブモニタや3枚目のモニタの場合は、Screen.AllScreens で取ればいいですね。モニタ位置は Bounds の Left と Top で撮れるので切り出しをします。

/// <summary>
/// 指定モニタをキャプチャ
/// </summary>
/// <param name=&quot;num&quot;></param>
/// <returns></returns>
private Bitmap ScreenCapture(int num)
{
    if (0 < num &&  num - 1 < Screen.AllScreens.Count())
    {
        Screen sc = Screen.AllScreens[num - 1];
        int width = sc.Bounds.Width;
        int height = sc.Bounds.Height;
        Bitmap bmp = new Bitmap(width, height);
        Graphics g = Graphics.FromImage(bmp);
        // モニタ位置を考慮する。
        g.CopyFromScreen( sc.Bounds.Left, sc.Bounds.Top, 0, 0, bmp.Size);
        return bmp;
    }
    else
    {
        // 最初の画面をキャプチャ
        int width = Screen.PrimaryScreen.Bounds.Width;
        int height = Screen.PrimaryScreen.Bounds.Height;
        Bitmap bmp = new Bitmap(width, height);
        Graphics g = Graphics.FromImage(bmp);
        g.CopyFromScreen(0, 0, 0, 0, bmp.Size);
        return bmp;
    }
}

あとは、かなりダサい方法ですが、マイピクチャに連番で保存すればOKです。正規表現を使ってもいいのですが、まあ、これで用途は足りているので。

/// <summary>
/// マイピクチャへ保存
/// </summary>
/// <param name=&quot;bmp&quot;></param>
void SaveToMyPictures(Bitmap bmp)
{
    string folder = System.Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
    folder += @&quot;Screenshots&quot;;
    // マッチする一覧を取得
    int num = 0;
    var files = System.IO.Directory.GetFiles(folder, &quot;スクリーンショット (*&quot;);
    if (files.Count() == 0)
    {
        num = 1;
    }
    else
    {
        var nums = files.Select(f =>
            int.Parse(
            f.Replace( folder, &quot;&quot; )
                .Replace(&quot;スクリーンショット (&quot;, &quot;&quot;)
                .Replace(&quot;).png&quot;, &quot;&quot;)));
        num = nums.Max();
        num++;
    }
    string path = string.Format(&quot;{0}スクリーンショット ({1}).png&quot;, folder, num);
    bmp.Save(path);
}

実験用なのでホットキーを設定するボタンがありますが、起動時に自動的に登録すれば ok です。

サンプルはこちらに。
http://sdrv.ms/15kdFTs

# ああ、Windows 7 の場合でも使えるようにバージョンチェックしてフォルダ作って、というのも考えていたのですが、作るの忘れていました。それは別の機会に。

カテゴリー: C# | [win8] Win+Alt+PrtScr でアクティブウィンドウを画面キャプチャする はコメントを受け付けていません

ソフトウェア開発委託基本契約書の不備により、未払い200万円の被害を受ける

フリーで作業をしたり小さな会社で請け負い作業をするときには「ソフトウェア開発委託基本契約書」を結ぶことになると思うのだが、これを結んでしまった後、トラブルが発生したときに「請負側」が被害を蒙っている、という現状です。

本日、弁護士に相談したところ「ソフトウェア開発~」の条項から、「違約金などは取れない」旨の通知を受けたのですが、かなり納得がいかないので、ここにフリーランスという立場の防御のために事案を晒しておきます。

image

# 上の図は「給与」って書いてあるけど、実際は報酬/委託金です。

今回のソフトウェア開発は、発注元Lから元請けGに製品開発を依頼しています。この中で株式会社Eの仲介があって個人事業主のM(=私)にところに話が来ている状態です。それぞれの契約は、

  • 発注元Lと元請けGの間の契約
  • 元請けLと株式会社Eの間の契約
  • 株式会社Eと個人事業主Mとの契約

に分かれます。どれも請負契約で、最終的に検収があり、検収のチェックがあった上で入金が発生するという状態になっています。それぞれ4社は、同じ場所で働くこともあり、同じ会議をしている状態で、それぞれは顔見知りの状態です。

さて、去年からこのプロジェクトを続けていた訳ですが、夏ごろに中間検収として発注元Lから元請けGへの入金がありました。元請けGはその中から株式会社Eに入金を済ませました。しかし、株式会社Eは、個人事業主Mへの支払を「意図的に」遅らせています。個人事業主は、入金なりの連絡がこないためにその夏は無給で働くことになっています。

その後、再び、発注元Lから元請けGへの入金がありました。元請けGはその中から株式会社Eに入金を済ませました。しかし、同じく株式会社Eは、個人事業主Mへの支払をしていません。連絡しないので、個人事業主Mとしてはおかしいと思い、10月頃に株式会社Eに「入金があったかどうか?」を尋ねたものの、株式会社Eは「入金はありませんでした」と嘘をつきました。

その後、年末から4月までに何回かの入金が、発注元Lから元請けG、株式会社Eにあったものの、株式会社Eから個人事業主Mへの入金の連絡はまったくなく、0円で仕事をさせられていることになっています。

今回、6月末にプロジェクトを終了するにあたり、個人事業主Mが元請けGに問い合わせをしたところ、既に入金は済ませてあるとの旨の連絡がありました。個人事業主Mは、株式会社Eに問い合わせをしたところ、「手元に資金がないために、個人事業主Mには払えない」という不払いの通知を受けました。

そこで個人事業主Mは、「ソフトウェア開発委託基本契約書」に基づき、株式会社Eに支払いかつ賠償を求めるために、弁護士に相談し、発注元Gと株式会社Eとを交えて、協議の場を設けました。

私としては、下記の「契約の解除」と「損害賠償」に従って、賠償請求あるいは慰謝料請求をするつもりでした。

(契約の解除)

第23条 甲および乙は、相手方が次の各号のいずれかに該当した場合、何らの催告なしに直ちに本契約および個別契約の全部または一部を解除できるものとする。

(1)支払の停止があったとき、または破産、民事再生、会社更生、会社整理、特別清算等の申立てを受けもしくは自ら申立てたとき。

(2)仮差押、差押、仮処分もしくは競売の申立てまたは滞納の処分を受けたとき。

(3)合併、解散または営業の全部もしくは重要な一部の譲渡、廃止を決議したとき。

(4)甲の信用、営業を毀損する行為または活動を行ったとき。

(5)不正行為または甲の業務遂行の妨害行為を行ったとき。

(6)支払能力に支障が生じたとき、またはその恐れがあると認められる相当の事由があるとき。

(7)直接、間接を問わず、反社会的勢力と関与していることが判明したとき。

(8)本契約または個別契約に著しく違反したとき。

(9)本契約または個別契約に違反し、相当期間を定めとした催告後も是正されないとき。

(損害賠償)

第24条 甲および乙は、本業務履行に関し、相手方の責に帰すべき事由により被った損害の賠償を請求できるものとする。

2 前項に定める損害賠償額は、個別契約にて定める本業務の対価としての委託料の総額を上限とする。

ですが、この「ソフトウェア開発委託基本契約書」には、非常に発注側に有利に作られており、支払が遅延しても賠償金を払わなくてよい、という仕組みが入っているのです。

全文は、http://sdrv.ms/1aVTotF です。

現状、ソフトウェア開発自体は終了かつ発注元Lの開発サーバーに納入済みのために、個人事業主Mは全工程を終えています。このために、発注された金額を「すべて」貰わない限り、利益としてペイできません。ですが、先の条項により、賠償金額の上限は「本業務の対価として委託料の総額を上限」としているために、ソフトウエア開発の完了後(プロジェクト完了後)に入金の遅延が発生したとしても、遅延料金(商習慣、年6%)しか上乗せされないとのことです。

個人事業主M=私としては、発注元からの入金が6月であるので、遅延は6月からであること。中間検収による入金がなく、個人事業主Mは、夏、秋、正月、6月直前まで、入金が全くなく運転資金に苦しんだこと。株式会社Eは、個人事業主Mに支払うべき「入金」を、株式会社Eの別の運転資金に割り当て、意図的に遅延させていることは明らかであること。

これを主張したのですが、先の「本業務の対価としての委託料の総額を上限とする」ということから、上限が委託金であること。このために、損害賠償を契約上、これ以上うわのせできないこと。また、検収後の支払の「遅延」だけであるので、先の法定金利の6%しか適用されないこと、を主張されている状態です。当方の弁護士も、その点には同意らしいのですが、私としては納得がいきません。

もし、これが「正しい」のであれば、プロジェクト終了後、検収後に、意図的に支払を遅らせて法定金利6%という安い金利(銀行で借りると15%ぐらいになります)で借りれることになります。この場合、個人事業主M=請負側の意図とは関係なく発生しているため(遅延について、個人事業主は事前に相談などを受けていません)、勝手かつ悪質な行為ではないでしょうか?

当方の弁護士の相談したところ、この場合には、

  • 特約として、遅延が発生した場合は、金利15%を明記する(銀行の金利以上にする)。
  • 違反が発生した場合は、委託金とは別に違約金○○万円を支払う。

などの項目を明記すると良いそうです。フリーランスの方や、零細企業のソフトウェア会社の方は、速攻「ソフトウェア開発委託基本契約書」を見直してください。この条項が入っている、契約書はほとんど存在しないことが分かります。もし、存在しないならば、契約を更新する形で、追加しておきましょう。

私としては、これが普通の「ソフトウェア開発委託基本契約書」だと思っていた(実際、私自身が作るものもこれなので)ので、これは明らかに「罠」です。意図的に請負側を不利にさせる契約書となります。もちろん、普通にプロジェクトが進んでいる場合にはよいのですが、いったん、トラブルが発生すると、その「不備」を盾にして、賠償金等の支払を拒否するのはビジネス上、かなり悪質だと思われます(勿論、「契約書」であることもも十分心得ています)

実は賠償金額の上限については、経験上、これがないと無限責任となってしまうために、私から株式会社Eに助言をしたものです。この助言に従って入れて貰ったものなのですが、それが自分の首を絞める、さらに言えば、それを盾にとって支払を遅らせるとは思いもよりませんでした。

この点、確かに法律上、契約上がそうなのですが、途中の入金の遅延や「入金は発生していません」の嘘が気になるので、別途、中小企業庁あたりに相談を考えています。当方の弁護士との相談は進めておりますが、「納得がいかない」部分を解決できればと、別な方法も模索していますので、似た事例の経験のある方、知識のある方はご連絡ください。

ひとつの方法として、違反なので「ソフトウェア自体を渡さない」という方法もあるのですが、発注元Lや元請けGのことを考えると、そうもいきません。今回のソフトウェア自体は、製品開発の中核であるために、それがなくなると発注元Lの製品が発売できなくなってしまうのです。また、個人事業主M=私にとって、プロジェクト自体が終わってしまっている=必要な作業量/金額を使ってしまっている状態なので、契約金の満額を貰ったところで、作成したソフトウェアの製作費になるだけで、違約金/慰謝料になりません。なので、かなりひどい状態。これを我慢する必要があるのでしょうか? ってのが問いです。

2013/07/10 追記
下請かけこみ寺に連絡したところ、下請法の対象は「資本金 1千万1円」以上の場合に適用されるそうです。なので、本件の株式会社E の場合は「資本金 1千万円」なので対象外とのこと。下請法に「資本金 1千万円を超える」と書かれているのは、そういう意味らしい。ひどい。なので、下請として取引をする場合には、「資本金 1千万1円以上の会社」とやりましょう。たいていの会社は、資本金1千万円なんだけどね…

2013/08/10 追記
決着がついたので、ソフトウェア開発委託基本契約書の不備の感想戦 – Moonmile Solutions Blog にまとめを書いておきます。

カテゴリー: 仕事 | 31件のコメント

[win8.1]スタート画面のタイルを動的に作成する(実践編)

[win8] スタート画面のタイルを動的に作成する(前哨戦) – Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/3443

なところで、C++/CX(DirectX)を使って、スタート画面のタイルを動的に生成する方法を試していたのですが、8.1 になると、RenderTargetBitmap を使って、もっと簡単にできます。

TileTemplateType
http://msdn.microsoft.com/en-us/library/windows.ui.notifications.tiletemplatetype.aspx

を参照すると、タイルには色々と設定ができるのですが、いわゆる「フルカスタマイズ」という方法は用意されていません。画像の配置とシステムフォントを組み合わせた、Microsoft の推奨の方法に従うパターンになります。8 の頃から見ると、TileTemplateType の種類も増えており、色々とできるような気もするのですが、やっぱり「自由なタイル」というのを作ってみたいわけです。

こんな風に、フォントには「MV Boli」を使い、色も変えてしまいます。XAML としては以下のように Grid 要素内に好きなように画像やテキストを配置していきます。

<Grid Grid.Row=&quot;2&quot;
    x:Name=&quot;panel&quot;
    HorizontalAlignment=&quot;Left&quot; Height=&quot;310&quot; Margin=&quot;219,132,0,0&quot; 
	VerticalAlignment=&quot;Top&quot; Width=&quot;310&quot;>
    <Image 
        x:Name=&quot;imageTile&quot;
        HorizontalAlignment=&quot;Left&quot; Height=&quot;310&quot; VerticalAlignment=&quot;Top&quot; Width=&quot;310&quot; 
		Source=&quot;Assets/hidamari.png&quot;/>
    <TextBlock 
        x:Name=&quot;textTitle&quot;
        HorizontalAlignment=&quot;Left&quot; Margin=&quot;10,10,0,0&quot; TextWrapping=&quot;Wrap&quot; 
		Text=&quot;Hidamari Sketch&quot; VerticalAlignment=&quot;Top&quot; FontSize=&quot;32&quot; 
		FontFamily=&quot;MV Boli&quot; Foreground=&quot;#FFE0567C&quot;/>
    <TextBlock 
        x:Name=&quot;textNum&quot;
        HorizontalAlignment=&quot;Right&quot; Margin=&quot;0,248,56,0&quot; TextWrapping=&quot;Wrap&quot; 
		Text=&quot;{Binding Item.TextNum}&quot; VerticalAlignment=&quot;Top&quot; FontSize=&quot;32&quot; 
		FontFamily=&quot;MV Boli&quot; Width=&quot;171&quot; TextAlignment=&quot;Right&quot; Foreground=&quot;#FFF0E0E4&quot;/>
</Grid>

前回の C++/CX 版の場合は、DirectX を使ってがりがりと書いていかないと駄目だったのですが、8.1 の場合は RenderTargetBitmap クラスを使って、Grid 要素の中身を PNG 形式に保存ができます。

■PNG形式で保存する

保存先はアプリケーションのローカルフォルダにします。こうすることで、タイルに画像を指定することができます。他にも Image 要素の Source にしてすることもできるし、かなり便利です。

/// <summary>
/// ローカルフォルダにタイルを作成
/// </summary>
/// <param name=&quot;sender&quot;></param>
/// <param name=&quot;e&quot;></param>
private async void ClickMakeTile(object sender, RoutedEventArgs e)
{
    _filename = string.Format(&quot;hidamariTile-{0}.png&quot;, _model.TextNum);

    RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
    await renderTargetBitmap.RenderAsync(this.panel);
    var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
    var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
        this._filename, CreationCollisionOption.ReplaceExisting);

    using (var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite))
    {
        var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, fileStream);
        encoder.SetPixelData(
            BitmapPixelFormat.Bgra8,
            BitmapAlphaMode.Ignore,
            (uint)renderTargetBitmap.PixelWidth,
            (uint)renderTargetBitmap.PixelHeight,
            DisplayInformation.GetForCurrentView().LogicalDpi,
            DisplayInformation.GetForCurrentView().LogicalDpi,
            pixelBuffer.ToArray());

        await encoder.FlushAsync();
    }
    Debug.WriteLine(&quot;パス:{0}&quot;, file.Path);
}

ファイル名を hidamariTile-{0}.png のようにしているのは、タイルに指定するときの画像ファイルをユニークにするためです。どうやら、同じファイル名にするとスタート画面は前のタイルを利用するらしく画像がうまく更新されません。これが、TileSquare310x310Image だけの現象なのかは分かりません。ひょっとすると、前回のファイル名と違っていればいいのかも、なので、2つのファイル名を交互に使うというハックでもいいと思います。

■保存したPNGファイルをタイルに設定する

今回、更新するタイルは 310×310 のサイズの大きなタイルにしました。TileTemplateType の enum 値は 8 の時とがらりと変わっているので、8.1 に移行させるときは注意が必要です。まあ enum 値を適当に直すだけですけどね。

/// <summary>
/// 作成したタイルを設定
/// </summary>
/// <param name=&quot;sender&quot;></param>
/// <param name=&quot;e&quot;></param>
private void ClickSetTile(object sender, RoutedEventArgs e)
{
    // タイルをアップデート
    var tileTemplate = TileTemplateType.TileSquare310x310Image;
    var doc = TileUpdateManager.GetTemplateContent(tileTemplate);
    var xml = doc.GetXml();
    var images = doc.GetElementsByTagName(&quot;image&quot;);
    var img = (XmlElement)images.Item(0);
    img.SetAttribute(&quot;src&quot;, &quot;ms-appdata:///local/&quot; + this._filename);
    // 通知
    var notify = new TileNotification(doc);
    TileUpdateManager.CreateTileUpdaterForApplication().Update(notify);
}

タイルは Xml 形式なので、自前で設定してさほど難しくはありません。適当な関数でくるんでしまえばよいかと。ここでは、XmlDocument を使っていますが、XDocument を使ったほうが楽です。C++/CX のコードが XmlDocument だったので、面倒なのでそのまま引き写しました。

ここの例では、MyModel の TextNum プロパティしか変更していませんが、自分のアプリに合わせて適当なクラスを作ればよいでしょう。あまり汎用的にはせずに、自前のアプリに沿わせるのがベターです。

■実行してみる

「make tile」して画像に保存してから「set tile」すると、スタート画面のタイルが切り替わります。

定期的に変えれば、スタート画面に表示できる時計も作れるし(しかも画像やテキストなどの配置は自由)、サブタイルを利用すれば手持ちの動画ファイルや youtube の画像へのリンクをスタート画面に置くことが可能です。mpg 形式や youtube のプレビュー画面は API を使えば簡単に取得できるので、これは後ほど紹介します。手元の「VS100連発」で使っている方法です…公開はしてなかったかも。これは後で作る予定です。
そんな訳で、8.1 を使って、ちょっと変わったタイルを作って、ストアアプリの目立ち度で差をつけましょう、とかとか。

サンプルコードは、SkyDrive に置いておきます。
http://sdrv.ms/13rcsOk

カテゴリー: C#, WinRT | [win8.1]スタート画面のタイルを動的に作成する(実践編) はコメントを受け付けていません

[win8.1] RenderTargetBitmapクラスで、XAMLをビットマップ形式で保存する

WPFには RenderTargetBitmap クラスがあって、XAMLの要素を指定して画像を保存できたのですが、なぜか Windows 8 ではできませんでした。が、Windows 8.1 になって、これが導入されたのでストアアプリでお絵かきツールが作れますよ。ってのが、今回の変更で一番大きいかと…いや、そういう方もいらっしゃると思います。

XAML render to bitmap sample (Windows 8.1)
http://code.msdn.microsoft.com/windowsapps/XAML-render-to-bitmap-dd4f549f

をダウンロードすると、動的に矩形を追加させた後 grid を保存できます。
あれこれと、ごちゃごちゃしたサンプルなので、ばっさりと削ってしまってあらかじめ Canvas に Image やら TextBlock やらを貼り付けておいて、PNG形式で保存するソースが以下です。

private async void Button_Click(object sender, RoutedEventArgs e)
{
    // Render to an image at the current system scale and retrieve pixel contents
    RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
    await renderTargetBitmap.RenderAsync(this.panel);
    var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();

    var savePicker = new FileSavePicker();
    savePicker.DefaultFileExtension = &quot;.png&quot;;
    savePicker.FileTypeChoices.Add(&quot;.png&quot;, new List<string> { &quot;.png&quot; });
    savePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
    savePicker.SuggestedFileName = &quot;snapshot.png&quot;;

    // Prompt the user to select a file
    var saveFile = await savePicker.PickSaveFileAsync();

    // Verify the user selected a file
    if (saveFile == null)
        return;

    // Encode the image to the selected file on disk
    using (var fileStream = await saveFile.OpenAsync(FileAccessMode.ReadWrite))
    {
        var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, fileStream);

        encoder.SetPixelData(
            BitmapPixelFormat.Bgra8,
            BitmapAlphaMode.Ignore,
            (uint)renderTargetBitmap.PixelWidth,
            (uint)renderTargetBitmap.PixelHeight,
            DisplayInformation.GetForCurrentView().LogicalDpi,
            DisplayInformation.GetForCurrentView().LogicalDpi,
            pixelBuffer.ToArray());

        await encoder.FlushAsync();
    }
}

サンプルより抜粋…というか、そのままですね。RenderTargetBitmap クラスの RenderAsync メソッドで XAML 要素からレンダリングの画像データを取ってきて、GetPixelsAsync メソッドで byte 配列にします。実に簡単。。必要な namespace は、適宜 VS2013 preview を使って加えてください。

デザイン時に以下のように画像を貼り付けます。Opacity で半透明にしたりとか色々。回転させても大丈夫です。

実行時

そして、Save ボタンを押して保存した結果

バカバカしいほど簡単にできます…つーか、これが Windows 8 で実装されていなかったのが不思議なぐらい。
ちなみに画面の外に出てしまった時はどうなるのか?というと、大丈夫です。きちんと RenderTargetBitmap が対象にしている XAML 配下をきちんとレンダリングしてくれているので、はみ出た分も画像ファイルとして保存されます。
これでストア版のお絵かきツール作成がはかどりますね。

サンプルのダウンロードは以下からどうぞ
PanelToBitmap-v0.1.zip
http://sdrv.ms/1aEOZeu

カテゴリー: C#, WinRT | [win8.1] RenderTargetBitmapクラスで、XAMLをビットマップ形式で保存する はコメントを受け付けていません

Acer w500 に Windows 8.1 preview を入れる

最新のではなくて、ひと昔前の Windows 7 がプリインストールされていたバージョン 日本エイサーサポート|ICONIA TAB W500 に Windows 8.1 preview を入れます。

実は、このタブレットは去年の COD2012 用に買ったもので、Windows 8 プレビューあたりから使っています。今年の3月に Surface RT を買ってからめっきり出番がなくなってしまいましたが、CPU が Intel 製なので、Windows 8 Pro のほうを入れられます。Surface RT のほうは、ダークな使い方をしないとダメなんですが、Acer w500 であれば、Windows 8 Pro で普通にタブレットができるって訳ですね。あと、このタブレットは解像度が少し狭くて、Windows 8 ではスナップができなかったのですが、Windows 8.1 の改変でスナップ…というか画面のハーフ状態ができるようになっています。

結論から言えば、Windows 8 よりも 8.1 で快適に動いています…と言いますか、まだ動画を無縁LANで流すぐらいしか使っていないのと、いくつかスタート画面を開いて操作している感じだけなんでけど、動画とびとびにならないし(Windows 8 正式版では時々もたついていた)、スタート画面のスクロールや、デスクトップのスナップなど全然問題ありません。設定自体はリモートデスクトップが使えるので、本体にキーボードを用意する必要もありません。純粋にタブレットPCとして使うことができます。

image

バッテリーの持ちは、もともと4時間ぐらしか持たないので、同じぐらいかなと。映画1本を流しても途中で途切れないので、これはこれでいいと思います。ただ、外に持って行く場合はバッテリーが必要ですよね。後、重さが1kg近くと重たいので、外にはノートパソコンを持っていたほうがいいみたい。

Acer w500 の場合は、ハードの Win ボタンが左下にあります。このために、デスクトップのスタートボタンと位置がダブる…んですが、別に構いません。タブレットとして使っている場合はほとんどデスクトップを使わない訳で、スタートボタンが有ろうと無かろうと関係ありません。Acer w500 ののハードボタンはちょっと押すのに力がいるので( Surface RT のように接触型のボタンではないし、iPhone のホームボタンよりも力がいる)主に右から出るチャームの Win ボタンを使っていました。あと、音量もチャームから使っています。

実は、Windows 8 の音量操作(Windows 8.1 も同じ)はよく考えられていて、指を添えた位置が現在の音量の位置になっています。なので、指をつけたまま上下にスライドさせることで音量を変えることができます。ええ、何が便利かわかりにくいと思いますが、標準の「ビデオアプリ」の音量は、音量のアイコンを押したときに音量の状態がフライアウトで表示されるので、いちいち指を離さないとダメなんですね。これはマウスの場合は普通に思えるのですが、タブレットの場合は、先の方式のほうが全然便利です。

image

こんな風に、チャームの音量は指を離さずに済みます。

image

ビデオアプリの場合は、「標準的な」フライアウトを使っているので、いちいち指を離さないとダメなんですね。フラットデザイン云々じゃなくて、こういうユーザーインターフェースの気遣いってのが大切ですよ…ってのはさておき、

image

スペック的には、AMD 1.00 GHz、メモリは 2GB しかないので、かなり貧弱な環境です。HDD も 32GB 程度しかなくて、現在の空き容量は 15GB ぐらいしかありません。あ、そうそう。Surface RT と違って MS-Office が入っていないので、割高といえば割高ですが。

image

Windows 8 の発売当初からあった、montezuma というゲーム(元PCゲーム)なんですが、8.1 の場合は普通に遊べる位に動きます。これ、Windows 8 の時はタッチがおかしな動きをしてまともに遊べないし、駒の動きは遅いし…で Acer w500 のグラフィックボードの非力さ?に足を引っ張られていたのですが、Windows 8.1 のドライバー(おそらくGPUまわりの DirectX)が改善されたのかスムースに動いています。ちなみに、Surface RT では問題なく動き、一番スムースなのが初代iPad だったりします。これはかなりチューニングされている模様。

■問題点

無線LANですが、なぜか 802.11n を認識せずに、802.11g の方につなぎに行きます。Atheros AR9285 802.11b/g/n なので、11n でも大丈夫なはずなのですが、指定のルータが見当たりません。うちの環境では、iPhone 4 のために 11g を残しているのですが、ちょっとこれは困ったかなと。

あと、Windows 8 では回転も認識していたのですが、8.1 preview ではダメなりました。カメラはそのまま動くので、3G センサーのドライバーがおかしいのかも。日本エイサーサポート|ICONIA TAB W500 に、Windows 8 用のドライバーがあるので、後で入れて確認してみましょう。

ちなみに、Windows 8.1 ではストアからダウンロードした時点では、スタート画面には現れません。なので、Windows 8 を使っているときは「???何処にダウンロードしたんだろう???」ってな気分になるのですが、新しく追加されたアプリ一覧のほうにアイコンが追加されています。なので、ここからスタート画面にいちいちピン留めしないという手間が…。これは要改善ですね。

image

アプリ一覧は、こんな風に「インストール日順」に変えておくと便利です。そうするとインストールしたアプリは必ず左上に来ますからね。この例は、Visual Studio 2013 preview のサンプルをばしばしビルド実行(ビルド実行すると自動的にインストール状態になるのです)したので、こんな風になっています。Windows 7 の「すべてのプログラム」の場合は、最近インストールしたアプリはオレンジになる設定があったので、あんなふうなのが欲しい感じ。スタート画面に「最近インストールしたアプリ」のグループに自動的に突っ込む感じでもOKかと。

カテゴリー: windows 8 | 5件のコメント

Visual Studio 2013 Preview の変更点をざっと

Windows 8.1 Preview – Microsoft Windows
http://windows.microsoft.com/ja-jp/windows-8/preview

Visual Studio 2013 Preview | Microsoft Visual Studio
http://www.microsoft.com/visualstudio/jpn/2013-preview

Visual Studio 2013 は Windows 8.1 でしかストアアプリの開発ができないので、両方をそろえる必要がある。第一番にやったのが、「ひと目でわかる~」のC#版のサンプルの起動。シミュレーター自体の起動が、最初ひっかかかるのだが、OS を再起動すればOKな模様。

image

外見上は問題ないので、このまま 2013 にコンバートすればOKかというとそうではないという話。

サンプルプログラムは、Visual Studio 2012 付属の「グリッドアプリケーション」をベースにして、アプリを組み立てることになっている。グリッドアプリケーションは、いくつかのクラスが自動でインストールされていて、スナップ表示やデータバインドが(多少)やりやすくなっている。

image

が、Visual Studio 2013 でグリッドアプリケーションのテンプレートを使うと、Common フォルダ配下がかなり異なっている。

image

MVVM に必須な(というか実装いている)BindableBase.cs ファイルがない。SampleData.json が増えている。ってことは、SampleDataSource クラスの中身が変わってしまっている可能性が高い。

image

SampleDataSourceを見てみると、案の定、単純な POJO クラスになっている。INotifyPropertyChanged インターフェースがないので、MVVM 自体をあきらめてしまているか、それとも別の実装の仕方をするか、というところであろう。なのでグリッドアプリケーションの場合は、個々のアイテムはプロパティの変更通知経由「ではない」ということになる。これは、ちょっと…まあ、グリッド表示自体はデータの変更をする必要がない(初回の読み込みのみ)ので、この実装でもいいのだが、2012 のテンプレートではデータ数やデータの変更を考慮したものになっているものの、2013 のテンプレートは「全く考慮していない」というコードになっている。まあ、いいんだけど。

もうひとつ、変更点が大きいところにスナップ表示がある。前々から 8.1 のスナップはサイズが可変になることが知っていたので、そのところの細かい言及は避けていたのだが、8.1 の XAML テンプレートには VisualStateManager の記述がない。え?そうなると、回転とかスナップはどうなると?と思ってみたが、シミュレーターで動かすと回転もスナップも OK。つまり、VisualStateManager を使わない(間接的に使ってる?)方式に代わっている。

image

まあ、2012 の VisualStateManager の記述は、Storyboard を使っているハック的な記述なので、消えてしまうに越したことはないのだが、独自にスナップとか回転とかに対応する場合はどうんですかね?基本ページを使えばOKですかね?という疑問は残る。動かしてみると、2012 ではグリッドアプリケーションはスナップに対応しているのだが、2013 のテンプレートはスナップに対応してない。

image

image

もともとが VisualStateManager を使って、ListView 形式に直しているので、同じ実装が 2013 のグリッドアプリケーションに求められるところだ…が、どうなるかよくわからない。

ApplicationViewState enumeration (Windows)
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.viewmanagement.applicationviewstate.aspx

この API 自体が 8.1 で消えるようなことが書いてある(本当に消えるかどうかは分からない)ので、なんらかの対処をしてくると思う。たぶん、ぐだぐだなソースが。ちなみに、2012 にあった「状態記録の有効」という疑似的に Storyboard を作ってくれる機能までなくなってしまっているので、別の手段(手動?)が必要となる。

GroupedItemsPage クラスをよく見てみると、

public sealed partial class GroupedItemsPage : Page

ってことになっていて、便利な LayoutAwarePage を継承していない。LayoutAwarePage の中で回転などの制御を行っているので、2013 では自前ってことになる。まあ、中途半端なソースだと思うので、これが正式なのかはわからない。ただし、NavigationHelper という怪しげなクラスを作って、中身が LayoutAwarePage に似ているので、これを使うのだろう。Page クラスを継承して中間クラスを作る LayoutAwarePage  の方式よりも、一見ヘルパークラスのほうが良さげに見えるが、OnNavigatedTo なり OnNavigatedFrom なりで、いちいちヘルパークラスのメソッドを手動で呼び出さなければいけないので、保守性としてダメダメ。Page.OnNavigatedTo 等が protected なので、こういう処理になっているのだが、このダサい方法ならば、どうせテンプレート出力なので中間クラスを作ったほうが保守性は高い。まあ、このあたりもどうなるかわからない。

そんな訳で、結構ごっそりサンプルを書き換えないとダメなんだが、どうしたものか。プレビューの2013では、スナップや対応していない(ListView化されない)、回転は GridView コントロールのリサイズに頼っている状態なので、リサイズや回転に対応していない状態になる。ここが Microsoft のサンプルとして正式にどうなるのか見極めたうえで、サンプルの修正案を考えようかな。

ちなみに「ハブアプリ」ってあるけど、デバッグ実行ができません。XAML の記述が間違っているっぽい。

image

なので、状態としてはベータ版というよりも、アルファ版っぽい動きな感じ。

カテゴリー: windows 8 | Visual Studio 2013 Preview の変更点をざっと はコメントを受け付けていません

Windows 8.1 変更点をざっと

Windows 8.1 Preview – Microsoft Windows
http://windows.microsoft.com/ja-jp/windows-8/preview

Visual Studio 2013 Preview | Microsoft Visual Studio
http://www.microsoft.com/visualstudio/jpn/2013-preview

Visual Studio 2013 は、Windows 8.1 上でしかストアアプリを作れない。この状況は、Windows 8 上でしか Visual Studio 2012 でストアアプリを作れなかったのと同じなので、ランタイム&シミュレーターの動作(事実上の自分自身へのリモートデスクトップ)に関わるものなので仕方がないのかもしれないが、Windows 8.1 マシンに対してのリモートデバッグができれば十分な訳で、今後、毎年発売されるであろう(と以前のMS のアナウンスにはある)Windows 8.2 ?を考えると、ちょっと開発環境の見直しは必要かもしれない。ただし、Azure 上での仮想VMを使った開発も可能になっている(実際、Azure上に今回のプレビュー版がインストールされたものが用意されているとのこと)ことを考えると、プレビューでの開発自体(あるいは本開発も)は仮想上で行うことを考えるのがベターかもしれない。実際、私の場合は VMWare 上で Windows 8.1 を動かしているし、グラフィック操作の多いゲームアプリ開発でなければ、仮想上で十分かもしれない(逆に言えば、ゲーム開発の場合は困ることになりかねない)。

image

復活したかのように見える「スタートボタン」ではあるが、左下にアイコンがあるだけ。このアイコンを押すと Windows 8 と同じようにスタート画面が開かれる。普通にWindowsキーを押した時と同じ動作になる。これはひどい…処置で、Windows 7 のようにスタートボタンを使いたい場合には別途フリーソフトなどをインストールするといいだろう。私は使わないけど。

image image

いくつかの記事で、こんな風なメニュー(左)を出しているものもあるが、これはマウスを右クリックしたときのコンテキストメニュー。Windows 8(右) で既にあったもの。コマンドライン関係が、「コマンドプロンプト」から「Windows PowerShell」に代わってしまっている。いつものコマンドプロンプトを出したい場合は、Win キーから cmd で検索すればok。

が、検索方法の変更があって、Windows 8 ではアプリケーションだけを検索対象にしたりストアを検索したりということができたのだが、8.1 では、「すべての場所」がデフォルトになっている。

image image

これは、いままで「アプリ」に限定するとか「設定」だけを検索するとか、Amazon アプリを検索対象にするとかできたのだが、すべて Bing による検索に置き換わっている。なので、内部的に「検索コントラクト」を使うことができない?仕様になっているのではないか、と想像できる。ちなみに、いちいち Bing に検索しに行くので検索スピードは遅い。

チャームでの検索ができなくなっている証拠に、Windows ストアの右上には「アプリの検索」という入力が増えている。ここで検索をすると、ストア内の検索(アプリ内検索)になる。Windows 8 の場合は、チャームから「ストア」を選択すれば、ストア内の検索になったので、いちいちストアアプリを立ち上げないとダメ、という不便さがある。が、アプリに検索機能があるという直観的な操作(Windows 8 での直観的な悪さ)という意味もある。このあたりは離反する…のだが。

image

では、チャームにある検索の場合はどうなるかというと、アプリ内ではなくて、Bing 検索になってしまっているので「amazon」アプリを探そうとしても他の検索結果(インターネット上のamazonのサイトとか)が検索に引っ掛かって、アプリにたどり着けない…こともないのだが。

image

こんな風に右端に amazon アプリのアイコンが出てくる。

image

この操作/変更がまずいのは、チャームの検索が Windows 8 では、アプリ内検索を優先として行い、特にアプリが起動されたときには検索対象はそのアプリが優先されている、ことに対して、Windows 8.1 は、アプリを立ち上げているにも関わらず、チャームの検索はグローバルな検索(Bing検索)に走ってしまうという「コンテクスト(文脈)」を無視した動きをするため、直観的ではない。

スナップに関しては、ちょっと奇妙な操作が実現されている。慣れなのかもしれないが、スナップ表示のデフォルトは画面の半分ずつで、Windows 8 のように 320px にする場合は、一度マウスで寄せてやらないとけない。スナップになるとフィル(スナップの反対側)になるときと、どのように区別するのかはプログラム的には「区別してない」と思う。多分、画面サイズを判断してレイアウトを動的に変更する必要がある。このあたり、スナップは「320px 固定」が嘘になってしまった時でもある。

image

さて、ハーフの場合にアプリを起動すると、真ん中に起動中のが麺がでてくる右左のどちらかをタッチすればそちらのスナップに起動されるのだが、この状態のときには迷う。かつ、アプリケーションは、この状態の時は「起動中なのか?」という問題がある。たぶん、フラッシュ画面を表示しているだけ(内部的には起動前の状態か?)と思うのだが、フラッシュ画面は動的に作ることができる(特にゲームの場合)ので、この時は不明。更に言うと、片方が 320px の場合もこの選択画面がでる。

Windows 8 の場合、デュアルディスプレイの場合、1つの面にしかストアアプリが表示できなかったが、8.1 の場合は、両方の画面にストアアプリが表示できる。そもそも Windows 8 のときの制限がおかしいので、これが撤廃されたのは良いのだが、そうなると内部的に変なことになっていないのか?が気になるところ。

image

スタート画面の背景は、タスクバーを右クリックしてプロパティを選択して「ナビゲーション」で変更できる。「スタート画面にデスクトップの背景を表示する」ので、デスクトップの背景と同じものなる。たぶん、タイルを移動させたときの背景のスライドみたいなのはできなくなるかなと。

ちなみに、Windows ストアのインターフェースなのだが、左の大きな画像は縦スクロール(マウスのホイールで動く)で、右の小さ目の画像は横スクロールで動く。これは、Microsoft 自身がデザインガイドラインで出していた「違反」の例である…のだが、元ネタが見つからん。要は、縦スクロールと横スクロールの混在は、ユーザーを混乱させるか望ましくない、という記述だったんだよね。

image

ただし、あのガイドライン自体が「人間工学的」ではないので、それらのガイドラインを無視した Windows ストアのアプリは、それはそれで良いかなと。

image

ただし、カテゴリがなくなってしまったので、いちいちメニューをダサいないといけない。色々なアプリが混在している状態なのと、タブレットの場合はスクロール(スワイプ)するのはそれほど手間ではないし、エモーショナル的に「楽しい演出」であるので、残してほしかったところ。何かを選ぶときに、カタログをぺらぺらとめくって色々なものから選ぶ、作業は楽しいでしょう?目的に即達したい場合と、いろいろと眺めて楽しみたい場合があるので、そのあたりは区別して作らないといけない。そのあたりが忘れ去れてたアプリ設計になってしまっている。

あと、エクスプローラーの変更で重要なのが「ライブラリ」の扱い。

image

いままで、ライブラリという疑似フォルダの中に、「ドキュメント」やら「ピクチャ」やらがあったのだが、8.1 の場合は、「PC」の下に配置されている。「PC」自体が、「コンピューター」だったのでこの変更は、Windows 7 からのユーザーや、あらゆる初心者本に影響が出てくる。電話でお客さんに対応する時、OS が Windows XP なのか Windows 7 なのか、Windows 8 なのか、Windows 8.1 なのかを確認しないと「マイコンピューター」なのか「コンピューター」なのか「PC」なのかが判断できない。できれば「コンピューター」に戻してほしいところなのだが…。チャームの設定画面では、Windows 8 の頃から「PC設定の変更」になっているので、既に用語の混乱が起きている。

ひとまず Windows 8.1 はこんな感じ。利用者からすれば、初めて買った PC に Windows 8.1 が入っている分には問題は少ないかと。検索のところが Bing 検索なのでちょっと遅い(設定で、Bing 検索をしに行かない設定もできる)のが難点なのと、ストアからインストールしたときにスタート画面に出てこない(アプリ一覧に出てくる)ので、いちいち「スタートにピン止め」をしないとダメなのが難点かな。

ちなみに、私のスタート画面(Windows 8)をセマンティックズームすると、これぐらいのアイコンが配置されている。ごちゃごちゃして不便かと思いきや、大抵のアプリは「アプリ検索」で起動してしまうのでスタート画面でマウスを使うことはない。また、よく使うアイコンを左に、テスト用デバッグ用が右に配置されるので、タブレットでスクロールさせたときも問題はない。

image

なので、Windows 8.1 のようにあらかじめ整理されたスタート画面はあまり必要ないと言える。まあ、このタイル表示は Windows Phone からの影響が強いので、見た目を強く意識するしたものだと思うのだが。

カテゴリー: windows 8 | Windows 8.1 変更点をざっと はコメントを受け付けていません

Windows8とスーパーフラット

以下、ネタです。信用しないようにw

Windows 8 や iOS 7 で採用されたフラットデザイン(元メトロデザイン、モダンスタイル)は、シンプルかつ二次元的、薄っぺらい表層のみの消費行動の価値の創出としてあらわれた「スーパーフラット」に スーパーフラット – Wikipedia に源流をもつのは周知の事実である…かどうかわからないのでここに言及しておこう。

 image

スーパーフラットは、2000年に村上隆氏が開いた展覧会に端を発する。日本のアニメーションのパクリを海外に広めて、海外から不当に高い評価を受け、二次創作のフィギュアを粗製乱造してはあれこれと億円単位の落札に至るという実にうらやましい…もとへ、けしからん出来あいのフラットデザインなのだが、その下流に、Windows 8 と iOS 7 がいるということは、実はかなり考え直さねばッ!!! というところに私は至っている。ええ、嫌村上流もあれこれということで、ジョブズも彼の毒牙に?と思わざるを得ないのである。

しかし、現実としてスーパーフラットは Windows 8 のデザイン、そして iOS 7 のデザインに採用されている。実は、その前から Google の色合いがスーパーフラットの薄っぺらな配色に近くなり、青味を加えるとか色彩をちっとばかしずらすのに数十万ドル使うとか、そんなことは google を使っている素人にはどうでもいい(というか、私は google のトップぺーずは全く使わずに検索窓だけ使うから google のロゴなんてどうでもいいし、ましてや google+ なんて登録しただけ全然つかっていないし、規約が変わってしまったら個人情報云々が流れてしまう facebook は google とは違うのであれなのだが、スマートフォンのホームページに facebook が流れているって一体どうなん?いつでも眺めているの?君はいつ仕事をするの?それってスマートフォンジャンキーじゃないの?と思ったり、いやいや、その前に「スマホ」ってなんですか?「オナホ」と間違えたらどうするの?とたまに考えてみたりする訳ですが、そんなことは今回のフラットデザインには全く関係なく…もないけど、話を元に戻して)、ロゴの微妙な違いは確かに CI としては有効なのかもしれないが、流動性あるところあるいは双方向性のネットワーク(まさしく、インターネッツ民)のところでは、聞く耳持たんッ!!! 戦略でいけば、まあ、自己中なデザインをしてもそれはそれでよくて、まあ、そこにスーパーフラットの旗手たるところがある。ええ、評価してますッ!!!

さて、調べに対しては未調査部分が多く、単純な思い付きなのだが、スーパーフラットのさらに源流は、

SLIM G

協和ハーモネット(元協和電線産業?)の SUPER FLAT G ではないか?と考えている。あの丸い有線LANケーブルをフラットにしたことによって「自社開発の超薄型でソフトなLANケーブルです。しかもカテゴリー6準拠のハイスペック。薄いから狭い隙間の配線やカーペットの下、壁麺の配線等に最適です」という訳で、私は愛用してたり愛用してなかったりするわけですが、このLANケーブルの配線は会社の取り回しの場合は太くてもいいんですが、持ち運びだったり、家で配線する場合には本棚の裏に配線させたりするのに薄い方がいいんですね。なので、ここで SUPER FLAT G の出番ですよッ!!! ごはんですよッ!!! ってな訳で、ごはんは進みませんが、LAN ケーブルの中には電子が進む進む。その速さや光速の3倍に至る…訳はなく、ええ、Windows 7 よりも Windows 8 はファイル転送のプロトコルが軽くなったらしく、LAN ケーブルを早くて太くすれば伝送量も2倍3倍に跳ね上がります。音質も上がって、クリアな音質としっとりとした音のねっとりさは東京電力が一番ですね、ってな具合なのですよ。そんな感じで、フラットデザインのもとは「スーパーフラット」にあり、その傍らには SUPER FLAT G があるのではなか?と妄想するわけですが…ごめん、協和ハーモネットさん。

参考画像としてスーパーフラットを探すと、なぜかもやしもんが引っ掛かるのですが、まあ、これを参考資料として貼り付けておきます。ええ、ネタとはいえ、あれを貼り付けるのは私の良心が無くなるので。

Albert Shum 氏 MS製品開発とデザイン–「Windows Phone」タイルUIデザイナーの取り組み – CNET Japan が村上隆氏を教祖と仰ぎ、壺を買ったり買わなかったり都議選で20パーセントもの議席を得たりするのは「共産党ッ!!!」なわけで、あれ?まあ、人口的に言えばそれなりに宗派だったり宗教だったりは手前勝手な訳で、それはキリスト教も仏教もイスラム教も同じ。単純に多い少ないの問題ですから。真実とは別なんですよ?と手かざしをしていみたり…ってのは危ない話なので、WEB デザイナのロクロ廻しに話を戻そう。Windows Phone の UI デザインがフラットになってしまったのは、二次元のエヴァンゲリオンだとか二次元の嫁だとか、ひも理論だとかひもな人生だかがある訳で…ええと、ちなみに「俺の嫁」ってのは、高橋留美子が漫画の中で諸星あたりに言わせたのは最初だと思うのだが、どうなんだろう?ってのを考えてみたりして、そんなこんなで、スーパーフラットは薄っぺらの象徴である。そう言われてみれば、Windows Phone のつるつる感はスーパーフラットである。日本の携帯電話がボタンがあって電源ボタンがあってiモードボタンがあって、なんでこんなボタンがあるの?ってな感じなのだが、ハードとしてのボタンがあることと、スーパーフラットな外観である「スマホッ!!!」は、それはそれは、Windows ボタンすらフラットになっている Surface に至っては、押してるのか押してないのかはその「ぶるぶる」しかない訳である。「スマホッ!!!」あるいは「タブレット」(時には、スレートPC って呼ばれていたよ、なに?スレートPCって?)にすれば、キーボードが有る無しにかかわらず、ひたすら薄く薄くなるのが自然の摂理らしい。実は「スマホッ!!!」を、人間工学的な手で持つ、かつ電話をする、「スマホッ!!!」を指で操作するという感覚を元にするとあまり薄くある必要はないわけで、これは「スマホッ!!!」自体が電池の関係からアツくなってしまったのをその反動から薄くしているのではないか?と勘繰ってしまうのだが、いやいや、そんなことを考えずにひたすら薄っぺらくしてしまうのが、スーパーそに子ッ!!! じゃなかった、スーパーフラットな訳である。

そうなると、バウハウス的な言及やら印刷時のタイポグラフィ(輪転機の制約やインクの関係とか)やディスプレイ上のタイポグラフィ(ディスプレイが四角のドットで構成されているということ、あるいは三角形に配置されているということ)とか、エモーショナルなところと人間工学的なところと安全工学的なところが全く考慮されていない、似非工学的なお題目を延々と繰り返すのは、まあ、さすがに「スーパーフラット」が源流ならば致し方がないといったところである。

なので、猫も杓子もフラットデザインなので、ここは皆さま諦めて失望して幻滅して点滅して点灯して額が前進している方に見習って、ひとつスーパーフラットな人生と「スマホッ!!!」を認めていこうではないか、という猫と杓子の話なのである。

カテゴリー: 雑談 | 2件のコメント