2019年11月28日木曜日

Xsd.exeでXMLからC#モデルクラスを生成さす

あまプロではC#の案件をお請けする事が有ります。
先日、XMLファイルからC#のモデルクラスを生成するXSDというツールでハマったのであメログ。

.net frameworkにはXMLファイルからC#のモデルクラスを生成してくれるXsd.exeという
ツールが予めインストールされてます。
※見付からない人はドットネットのインストールディレクトリを検索してみてね

このツールでXMLからC#のクラスファイルを生成する事が出来ます。
手順
  1. xsd hoge.xml
    これでスキーマファイル(hoge.xsd)がカレントディレクトリに生成されます
  2. xsd /c hoge.xsd /n:namespace.hoge
    これでC#のカレントディレクトリにクラスファイルが生成されます
二段階あるのでちょっと手間ですけど、多数のXMLファイルからC#クラスを生成せなあかん場合はバッチファイルとかを組むと良いでしょう。

これはこれで便利やねんけど、例えば
hoge.xml
<?xml version="1.0" encoding="utf-8"?>
<root>
  <child0>value0</child0>
  <child1>value1</child1>
  <child2>value2</child2>
</root>
こんなXMLファイルやと生成されるC#クラス内に
NewDataSetという内部クラスが生成されてしまいます。

C#クラス一つだけなら問題なくコンパイルも通んねんけど
生成されたクラスが二つ以上同じネームスペース内に有ると
重複エラーでコンパイルが通らんくなってしまいます…。

ツールの引数を色々変えて試してみたけど、あかんくて結局
hoge.xml
<?xml version="1.0" encoding="utf-8"?>
<root>
  <child>
    <child0>value0</child0>
    <child1>value1</child1>
    <child2>value2</child2>
  </child>
</root>
こんな感じに要素を一つ追加して回避しました。
こうするとNewDataSetという内部クラスは生成されず、重複エラーも起きない。

その他の回避策としてはクラス毎にネームスペースを変えるとかかな…美しくないけど。

ツールの仕様らしいです〜。

グーグルフォームでアンケート結果が消える件について

あまプロではグーグルフォームを使ったアンケート作成する事が有ります。
先日アンケートで困った事があったのであメログ。

グーグルフォームではアンケート結果を保存する事が出来ます。
質問と回答は組になってまして、この質問についてはこの回答という関連付けになっています。


アンケートを開始すると、回答がどんどん溜まっていくのですが、
既に回答が保存済みの状態で、 関連付く質問を削除すると…保存済みの回答も削除されてしまいます。2019/11/25現在

警告も無しに保存済みの回答も消されてまうので、知らない人は
アンケート結果が消えてびっくりされると思います。
が、仕様です。

一応フィードバックを送信しておきましたので、ひょっとしたら改修されるかもしれませんが
今の所はご注意を…。

2019年11月3日日曜日

ラインオフィシャルアカウントマネージャでのグループチャットについて

あまプロではline公式アカウントを使ってプログラミング教室の生徒と連絡する場合が有ります。

最近、line@がライン公式アカウントに統合され、管理アプリもLINE Official Account Managerに変更されました。
その移行の際に設定が変わってしまって、公式アカウントでのグループチャットが出来なくなってしまったのであメログ。

あまプロの様に教室を経営していると、教室と生徒で1:1の遣り取りだけでなく、教室と複数の生徒さんで1:nの遣り取りが要る場合が有ります。
例えば、友達と一緒に教室に通われてて、友達と一緒に日程を調整したい場合等はグループチャットの方が便利です。
但し、初期設定ではグルチャ出来へん設定になっているので、以下の手順で設定を変更します。

設定 > アカウント設定 > チャットに
  • グループ・複数人チャットへの参加を許可しない
  • グループ・複数人チャットへの参加を許可する
が表示されてます。
何故か初期状態では許可しないになってるので、許可するに変更しておきます。

これで公式アカウントからグループチャット出来るかと思いきや、公式アカウントからはグループチャットを開始出来ません
生徒から公式アカウントを招待してもらわなあかん様です(今の所)。

生徒さんからグループに招待してもらったら、晴れて1:nでのチャットが出来る様になります。

ちなみに、LINE Official Account ManagerはPC版でフリープランで行ってます。
スマホ版や有料プランでは違うのかもしれません…。