頭ん中

しがないITエンジニアが、考えた事を書きます。

UWPでローカルDBのマイグレーションをする(EntityFramework Core / SQLite)

まえがき

ちょっと昔のAndroidアプリやWindowsアプリで、分岐とDDL文を散りばめたギリギリの運用を目にすることが結構ありました。

ローカルDBとテーブルをCodeFirstに生成し、とりあえずデータをCRUDする方法が紹介された記事は一杯ありますが、アプリをアップデートする際のマイグレーションまで解説されたドキュメントは、あまりないんですよね。

ということで、たぶん現在もっとも標準的と思われるWindowsアプリの構成(UWP / EntityFramework Core / SQLite)で、ローカルDBのマイグレーションを試していきたいと思います。

続きを読む

Uno Platformを試す

XAMLひとつでWindows/iOS/Android/WebAssemblyに対応という夢のような話です。 f:id:siamcats:20200206025122p:plain

Create a Single Page App with Uno

既にチュートリアルのやってみた系記事はあるので、いくつか躓いたところと、良くあるXAMLのデザインテンプレートが実際どんな感じになるか紹介したいと思います。

続きを読む

UWPクライアントから社内プロキシ認証を超えてREST APIを叩くのに嵌った

(ほんといちいちいちいち厄介な社内プロキシ)

f:id:siamcats:20200130192353p:plain

マニュフェストに忘れずチェックいれて

// using Windows.Web.Http;
var httpClient = new HttpClient();
var uri = new Uri("https://contoso.com/GetApi");
var response = await httpClient.GetAsync(uri);

こんな感じで叩けば

f:id:siamcats:20200130185243p:plain

おなじみの認証ダイアログが勝手に出てきてくれるじゃないですか。

でもなんかよくわかんない例外になる時があるんです。

"Exception from HRESULT: 0x80072EF3"
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

よくよく調べてるとアプリ起動後に最初に叩くリクエストがPOSTの時だけ起きてるみたいなんですよね。

var httpClient = new HttpClient();
var uri = new Uri("https://contoso.com/PostApi");
var content = "hogehogebody";
var response = await httpClient.PostAsync(uri,content);

なので適当にGETメソッドのリクエストを投げ認証させておいて、それからPOSTのAPIを叩けば普通にいけました。うーん…。

共働き世帯が転勤で保活(転園)&引越した話

家族背景

  • 大阪市在住の共働き夫婦(別の会社で業種も違うけど2人ともフルタイム勤務)
  • 息子は市内の保育園(年少クラス)
  • 夫婦とも実家は遠く頼れない

転勤辞令と家族会議

東京への転勤辞令(9/1付け)が出たことを同僚からのSlackで知ったのは、8月半ばのお盆休み中のことでした。

さっそく妻と今後について話し合います。もし転勤になった場合にどうするかという大凡の方針は、以前から2人で段取りを決めていたつもりでしたが、いざこうなってみると、なかなか細かいところの合意形成が大変です(揉めます)。

どうにか2人で出した結論は以下の通り。

  • 妻は会社へ東京への転勤希望を出す。
  • 私は会社へ赴任時期を調整してもらえるよう交渉する。
  • 同じタイミングで転勤できない場合、東京へ行く方は単身赴任(大阪に残る方がワンオペ)する。
  • ただしこれは上限3ヶ月として、それ以上続くようであれば、どちらかが仕事を辞める。
続きを読む

『Bullshit Jobs:クソどうでもいい仕事』

たまたま原著に目(Audibleなので耳)を通していたので。

ツイートのリプ欄は、様々な職業への蔑みのコメントで荒れて、ツイート主の藤田孝典さんは、原著の趣旨から外れることを憂いている。ただ、福祉職やその他現業職の待遇を守るという立場からの発言とは言え、自身もまたコンサルなど待遇に恵まれた職業への価値評価を疎か(もとい攻撃)しているように見えるので、身から出た錆としか思えない。

Bullshit Jobs=クソくだらない仕事

www.amazon.co.jp

あらすじ

著者の主張は確かに過激で、リサーチャーだとかマーケターだとか企業弁護士みたいなBullshit Jobなホワイトカラーは消えて構わないし、こんなのが蔓延るのは経済的な効率化を是とする資本主義の膿だと指摘します。

そしてこれらは労働者を無理にでも働かせ社会を支配せんと目論む支配階級の陰謀だと。ジョークめいたタイトルと裏腹に、かなり壮大な話です。*1

感想

ノンポリなので陰謀とか社会革新の話は正直ピンとこないのですが、僕がこの本を読んで感じたのは、自身の仕事に価値・意味を見出せるのかという労働者本人の認知の課題です。

本の中には、客観的にBullshit Jobsの定義が体系立ててまとめられていますが、私はそれよりも、自分の仕事を無駄だと思いながら続けるという主観的なBullshit Jobsの存在の方が、よっぽど哀しく、そして解決すべき問題のように思います。どうしたら自分の仕事に対して誇り・やりがいを持てるようになるのでしょうか?

著者は、Bullshit Jobsに気付かない無知で愚かな経営者に対して、未必の故意的な責任を追及しています。私も往々にして企業の経営者や管理者には労働者の認知を助ける活動が足りてないよなぁと感じることが多いです。ワークエンゲージメントとかいうやつですかね?具体的には以下のような単純な働きかけの話だと思います。

  • 労働者に仕事の価値を説明して納得してもらう
  • 労働者へ正当な評価・待遇を与える*2

これらを実践することで従業員のエンゲージメントは高まり、また無知だった経営者も現実に目を向けて真に無駄な仕事に気付く。こうやって、主観的なBullshit Jobsも、客観的なBullshit Jobsも、どちらも自然に淘汰されていく(ちょっとは減るんじゃないか)と、性善的ですが信じています。

職業に貴賤なし

最初のツイートに戻ります。職業差別とか賤業なんて言葉は前時代に置いてきたはずでしたが、現実はそうでもないようです。

営業と製造、コンサルと開発、アプリとインフラ、こんな職種間の対立に心当たりがある人は多いと思います。私もコンサルは嫌いだし、意味の無い仕事してる癖に偉そうにしやがって、と思うことはあります。

他にも公務員のように半分蔑みのように無駄を叫ばれる職種があったり、発注者と受注者、労働者と使用者みたいな本質的に利害が対立する職種なら尚更酷い対立があるでしょう。相互尊重の精神が失われたとき、偏見や差別というのはすぐそこにあります。

ところで、この人たちの仕事は本当に全部無駄なんでしょうか?無駄のない仕事をしているのでしょうか?僕にはわかりません。

仕事の価値を見出すって本当に難しいことで、自分の仕事の価値すら認識できない人が多いのに、他人の仕事の価値まで把握する余裕なんて普通は無いよなぁと思うのです。*3人間が仕事の価値をスマートに判断できないために、Bullshit Jobsや職業の貴賤なんてのが生まれるんだと思います。

それでもそんな人間の限界を憎んで、Bullshit Jobsを減らし職業に貴賎のない世の中を目指すのであれば、Bullshit Jobsや賤しい職業が何かを探し出して定義する=他人の職業を貶めるような賤しい行為はやめませんか。

*1:正直、僕のクソみたいな英語力では特に後半の理解はちょっと怪しい

*2:*おそらく藤田さんもこうした雇用者側の責任に言及しているのだと思います。

*3:あるいは自分の仕事の価値に絶対的な自信を持つあまり、周囲を低く見積もってしまうのかもしれない。自身が正当な評価を受けている実感と精神的余裕があれば、こうも攻撃的にならずに済むのに。

中田敦彦のYouTube大学と知的好奇心へのマーケティング

ちょっと前に見かけたこのツイートが心に引っかかったので、理由を少し考えてみました。

マーケティングの話

唐突にビジネスの教科書的な話を書きます。

  • 情報源の数や量は増え、人々が受動的でなく能動的に情報を探すように変わった。
  • 一方で、人間の情報処理能力や購買欲求は変わっていない。
  • そのため一つ一つの情報に注ぐ注意力や時間が薄くなり、レコメンドや信頼する人間が発信する情報を選択しがちになる。

このような状況下では、いかに消費者に納得性を持たせて商品を選んで貰えるよう仕向けるかが近年のマーケティングのテーマとなっています。*1

実際に自身の行動を振り返ってみても、ググって大量の検索結果をあさるより、よく見るまとめアプリの「○○駅周辺のおしゃれカフェ10選」という記事を見る、インスタのインフルエンサーと同じものを買う、ツイッターで流れてきた写真の場所に旅行するといった、短絡的な意思決定をすることが自然と増えていると自省したくなります。

情報に疲れた現代人という共通点

人間の知的好奇心というのも購買欲求と同じで、学生と大人、そもそも持って生まれた強い・弱いみたいな個人差はあると思いますが、時代によってその量が変わるものではないはずです。それにもかかわらず情報量だけ増えたもんだから普通の人には処理しきれなくなってきて、短時間で納得できるコンテンツの需要が高まったのではないでしょうか。

元ツイートで言及される中田敦彦YouTubeだけでなく、はてなやnoteで御高説を説く記事が流行ったりするのもきっとこの流れの一部なんじゃないかと感じます。商品を何とかして売ろうとするマーケターと同じで、知的資産をアウトプットする賢い人の中でもこのような時代の変化を察知した"狡い"人たちは、この先も納得性に特化したコンテンツを次々と提供してくるでしょう。

仕方ない?仕方なくない?

消費の意志決定プロセスが時代と共に変化したように、知的好奇心の満たし方も自然に変わっただけだと言える気はします。私はこういう歴史の歯車みたいなどうしようもない社会の変化に対して異を唱えるのが苦手なので、手間かけて自分で学ぼうとは思わない現代人を擁護したい気持ちが元ツイートへの引っかかりになってたんだと書いていて気が付きました。

ただ、これじゃ駄目なのにという違和感に同調する気持ちはあって、「せっかくマスメディアの一方的支配から解放されたのに、これじゃあ結局はマーケターに踊らされるだけじゃないか」とリベラルな消費者のプライドがこれを潔しとしないように、せめて勉強を生業とする人は、知的好奇心を大切に扱いながらじっくり消化する情報処理方法を見失わないようにしていきたいですね。

*1:僕の本業はマーケターではないので、 専らSalesforceMarketoみたいなMAの受け売りである。

UWPでPathクラスのDataプロパティにSVGパスデータを指定する

UWPのPathクラスは図形を自由にレンダリングする一番基本的なクラスですが、これにSVGパスデータの文字列(M0,0 L10,30~~~みたいなやつ*1)をコードビハインドで指定する方法が解らず嵌った。

続きを読む