より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

WPFのImageでMouseLeftButtonDownイベントが反応しない

ImageのMouseLeftButtonDownイベントが反応しないということがありました。

最初はImage Sourceがnullになっているので、それが関係しているかもなあ。

待てよ、他で実装した時は上手く言ったはず。

Gridで囲んでBackgroundを指定すると上手く機能しました。Borderではダメでした。

                    <Grid 
                        Grid.Row="1" Grid.Column="0"
                        Background="White"
                          Margin="4 4 4 4">
                        <Image
                    x:Name="Image"
                    Source="{Binding SelectedImage.Value}"
                       Width="128"
                       Height="128"
                       />
                    </Grid>

ふと考えた。システム開発は、どうして、こうも納期通りに進まないのか。

あちこちのプロジェクトが延期しているような話を聞きます。

今、話題のスマホゲーム、ウマ娘は2年も延期していたそうです。

システム開発は、どうして、こうも納期通りに進まないのか。

とあるプロジェクトを見るとふと思ったのです。

スケジュール通りにシステムテストまで進めたところで、そこで致命的なバグが出たら、出直す必要が出てしまいます。

これは自分としても経験があって、計画通りに順調に進んでいたものの、リリース直前になって致命的な不具合が見つかってしまった。

延期だ、と。

今の会社としては、ランクA,Bのバグが出るうちはまだまだ。ランクC,Dのバグが出るまでテストするようにという指示も出ています。

バグ曲線としては以下の記事がわかりやすいです。

monoist.atmarkit.co.jp

 この「深刻型」になった場合は、潔くバグだらけのソース・コードを捨て、設計し直すのが、長期的な展望に立ったプロジェクト・マネージャとしての正しい戦略です。遅れても、数カ月です。設計し直しても「低品質プログラムをだましだまし使って完成させる」より、はるかに早く製品をリリースできます。

いわゆる再開発ですね。

再開発で上手くいった例としてはFF14ですかね。

ただ、考えてみるとシステム開発ってリスクのある開発だよなあと思ったのでした。

/Library/Developer/CommandLineTools で Xcode が見つかりませんでした。

とある日を境にVisual StudioからMacに接続できなくなってしまいました。

Visual StudioXCodeがアップデートすればなんとかなるんじゃないの?と思っていたのですが、一向に解決せず。

Visual Studioの出力ウインドウをXamarinに切り替えると

/Library/Developer/CommandLineTools で Xcode が見つかりませんでした。

という文字列が。

f:id:rimever:20210314223047p:plain

確かにそれっぽいのないですね。

自分でインストールすることにしました。

XCode - Open Developer Tool - More Developer Toolsを選択します。

f:id:rimever:20210314223127p:plain

そこから、Apple Developerのページに遷移するので、そこからCommand Line Toolsをダウンロード-インストールします。

それだけではダメでXcodeに設定します。

f:id:rimever:20210314225526p:plain
XCode-Preference

パスを確認します。

xcode-select --print-path

/Applications/Xcode.app/Contents/Developer

そこからVisual Studioでパスを設定します。

f:id:rimever:20210314225724p:plain

QuickConverterでIntegerをboolに変換する

いちいちConverterクラスを作成しなくても、手軽にConverterの動きを行えるのがQuickConverterです。

github.com

毎回、ユースケースに合わせて Converterを作成してはキリがないので、このライブラリは優れ物ですね。

QuickConverterを使ったIntegerをboolに変換するケース。

RadioButtonに使いたいシナリオです。

以下みたいに私は書いてます。(CancelIdはReactivePropertyなので.Valueプロパティ指定ですが、適宜使っているViewModelのプロパティに合わせて変えてください)

                <RadioButton 
                    IsChecked="{Binding CancelId.Value, Converter={qc:QuickConverter '$P ==0', ConvertBack='$value == true ? 0 : DependencyProperty.UnsetValue'} }"
                    Content="選択肢1" Margin="8 0"/>

App.xamlにQuickConverterにNamespaceの追加を忘れずに。

            QuickConverter.EquationTokenizer.AddNamespace(typeof(System.Windows.DependencyProperty));

f:id:rimever:20210314171027p:plain
ない場合は警告してくれる

f:id:rimever:20210314170402p:plain

QuickConverterを使いこなす上では、ConvertよりConvertBackがこれ書ける?というのが課題になってきます。

QuickConverterではそこまで複雑には書けないので。

やっぱり、WPFの理解が、どこまで出来ているかが重要ですね。まだまだです。

読書感想『ラーメン超進化論 「ミシュラン一つ星」への道』

ラーメン超進化論 「ミシュラン一つ星」への道 (光文社新書)

創作ラーメンが登場し、ラーメンがミシュラン一つ星を取り、女性・外国人・世界を巻き込むまでに至ったラーメンの進化の過程を書いた本です。

副題のミシュランの星については冒頭に語られますが、それだけでもラーメンを取り巻く人々の熱意を筆者が伝えてくれます。

薄い文庫本なのですが、お腹いっぱいです。

私、そんなにラーメンにこだわりはないのですが、流石にこれを読むとラーメンが食べたくなりますね。

MaterialDesignInXAMLのテーマの色をデフォルトの紫から変える方法

MaterialDesignInXAMLはデフォルトの設定を利用すると紫になります。

この紫、濃いめでビビッドで、もう少し目に優しい色をと思ってしまいます。

そういう時、色を変えたい場合は、App.xamlの指定をPrimaryとAccentの色を変更します。

                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/materialdesigncolor.teal.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/materialdesigncolor.pink.xaml" />

使える色は以下を見るとパッと見でわかりやすいです。

MaterialDesignInXamlToolkit/screen-palette.png at master · MaterialDesignInXAML/MaterialDesignInXamlToolkit · GitHub

f:id:rimever:20210313213336p:plain
既定で用意されている色

ResharperのXAMLのCleanup Codeをする時にはXMLもチェックする

ResharperXAMLをCleanup Codeをする時にはXMLの設定も関係します。

www.jetbrains.com

For XML-like languages (ASP.NET, XAML, and MSBuild), ReSharper uses XML code formatting preferences.

ASP.NETXAML,MSBuildなどXMLのような言語はXMLの設定も利用します。

なので、XML設定にチェックを入れていないと、XAMLは崩れたままです。

f:id:rimever:20210325225839p:plain

f:id:rimever:20210313180249p:plain
それに気づいた、今日この日、XAMLが整形されたのでした。