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

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

筋トレを習慣付けたこと

YouTubeで本の要約を聞いていると、ビジネスマンにも筋トレは必要なようです。

prtimes.jp

ddnavi.com

体を動かすと、やる気や気力が湧いてくるとのことです。

筋トレすることで体が引き締まると。

スクワット、腕立て、背筋、腹筋をそれぞれ20回、これを2セット始めてみることにしました。

とはいえ、三日坊主になりそうだし、出社するようになったらやめそうだなあと。

腕立て20回でもうツライです。早速、筋肉痛になりました。

痩せるためには筋肉が必要で、筋肉があればエネルギー消費量が増えるため痩せられるのだそうです。

それでも以下の動画を見たこともあったので、30日間続けてみようと思いました。

youtu.be

三日もすれば腕立て20x2もすんなりこなせるようになりました。

そして、30日間続けることもできました。

体重の変動があるため、はっきり断言はできませんが、1kgくらいは痩せたかなあと思います。

かつて体を使う仕事をしていたが、それでも痩せることはありませんでした。

むしろ太ってました。ご飯2杯とか食べてたからですね。

在宅勤務をしていると無駄に外に出ないため、誘惑がなく、食べずに済むことが多かったです。

10時まで残業した時とか、もう晩飯抜きで行こうとかしてました。

通勤するようになるとやっぱりなんか食べるようになってしまいました。

WPFのXAMLを指定する時には、DesignInstanceを設定する

WPFXAMLでは、ViewModelのプロパティと Viewの紐付けを行うことになります。

課題なのは、C#という静的型付け言語にも関わらず、動的な値の指定になるということです。

なぜか、ViewModelの値が反映されない!

気付いたら、Bindingしているプロパティの名前が、Nameではなく、Nemeだった!

しょうもない話ですが、あり得る話です。

振り返れば、簡単なことですが、気づくまでに30分かかって時間を無駄にしていることもあります。

そういうことをなるべく防ぐのがDesignInstance です。

XAMLに以下のようなコードを記述します。

d:DataContext="{d:DesignInstance local:Person}"

f:id:rimever:20200628072721p:plain
インテリセンスが表示された

こうしておけばミスタイプによる失敗を防ぐことができますし、効率よく実装が進めることができます。

ViewとViewModelは、ほとんど1対1です。

基本、XAMLを宣言するときは、このDesignInstanceを指定しておくべきでしょう。

と、私は思ってます。

サンプルコード

<Window x:Class="WpfApp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        d:DataContext="{d:DesignInstance local:Person}"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition Height="40"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0" Grid.Row="0" Text="名前"/>
        <TextBlock Grid.Column="0" Grid.Row="1" Text="企業"/>
        <TextBox Grid.Column="1" Grid.Row="0" Text="{Binding Name}"/>
        <TextBox Grid.Column="1" Grid.Row="1" Text="{Binding CompanyName}"/>
    </Grid>
</Window>
#region

using System.Windows;

#endregion

namespace WpfApp2
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new Person();
        }
    }

    public class Person
    {
        public string Name { get; set; }
        public string CompanyName { get; set; }
    }
}

参考記事

読書感想「成城石井はなぜ安くないのに選ばれるのか」

前の職場の近くに成城石井が出来たということがありました。

成城石井って何? 使い方がわからないまま職場を離れていったものです。

これは、そういう店で、こういうところに力を入れているのね、と知ることができる本です。

成城石井はなぜ安くないのに選ばれるのか

名前の通りに、高級住宅街・成城で生まれたスーパーで、成城のお客に納得してもらえるような品揃えを目指した店です。

成城石井の品揃えの強みは以下の二つです。

静読会に参加した時のこと

会社の読書会に参加してきました。

読書会というと、一冊の課題図書を決めて、みんなでその本を読むということが多いです。

一時期、C#の勉強会を開催している隣で、Laravelの読書会が開催されていたので、こんなことやってるのかーと見ていました。

コロナの影響もあり、静読会と称して、時間を取って、各々が技術書を読むというスタイルになってました。

本を読む習慣を持とうというのが狙いとのこと。

本? 本なら読んでいるよ

と、私は思ってました。

しかし、いざ参加してみると、今まで読もうと思ったけど、読めていない重めの本に取り組むことができました。

読みやすい軽めの本ばかり読んでいたなあと気付かされました。

時間を作って、じっくり本を読むというのは意味があるなと感じました。

読書感想「ゲストの心を離さない ライザップ式接客術」

ゲストの心を離さない ライザップ式接客術

ライザップというと、食べたものをトレーナーに報告する。というものです。

こっそり食べるべきではないものを食べていたら?

という疑問が私にはありました。

その答えがこの本にはあります。

著者はライザップのトレーナーですが、その以前からトレーナーを行ってました。

以前の著者は、トレーナーが指導したことをやっていない受講者が悪いという考え方をしていました。

トレーナーが見ていない間(シャドウタイムと呼びます)、受講者がダイエットに取り組むかが重要になります。

見ていない間、どのように取り組むか。

著書の中で、

相手を動かすことができなければプロではない

とまで言っています。

接客というかマネジメントにも繋がる話がここにあります。

動因

一番重要なのは、どうして痩せたいか。

私自身も痩せたいなと思うのですが、割とその辺りの目的が弱かったりします。

太ったらなんかみっともないから痩せたいとか、なんか中途半端な目的になってしまいますね。

痩せたら着れる服があるから、痩せたらモテるから、健康な体を維持したい、といった強い目的をはっきり持つことは大事です。

ボディメイクは「やればできる」

ボディメイクは、「やればできる」、逆説的に言えば、「できない者はやっていない」

つまり、トレーナーに甘いものを食べているなどといったことを報告していなかったとしても各セッションでの測定でバレるのです。

上司やマネージャーが報告と違うじゃないか!みたいなシーンですね。

ありがちなパターンとしては、もっと細かく報告を徹底させるとか、ネチネチ追求するとか、やる気を失わせる。かと言って、何も言わないのもダメ。

ライザップのトレーナーはどうするのか?

相手のミスに対しては反省を促しつつ、すぐに切り替えて、目標達成への次なるステップへ進むように促すのです。

未来志向の提案をするのです。

3つのm

JIRAのcsvインポートでつまづいたこと

仕事でJIRAのcsvインポートを散々実施して、つまづきながら、学んだこともあったのでメモ。

ja.confluence.atlassian.com

要約は必須

csvインポートについて、要約(JIRAのタイトル)は必須です。

これは、課題キーを指定しての更新も例外ではありません。

更新するのは要約以外のフィールドで、要約を変える必要はないのにという時も要約を指定します。

インポートできるのは該当プロジェクトのフィールドのみ

インポートする際に、csvの列とJIRAのフィールドの紐付けを行いますが、JIRAのフィールドとして選べるのはプロジェクトの画面項目のみです。

なので、該当プロジェクトに関係ないフィールドを割り当てることはなくなるのですが、困るのが課題タイプです。

複数の課題タイプを選べるプロジェクトであれば、課題タイプを指定したくなるのですが、出来ないというのに頭を悩ませました。

これについては、画面項目に課題タイプの項目を追加しておけば良いです。

実際のJIRAの画面では課題タイプが編集できるようになるという弊害があると思ったのですが、そんなことはありませんでした。

チェックボックスなどの複数値のインポートについて

複数値は以下のように同じ項目名の列を複数作成して、値を一つずつ入れます。

A,B,Cなんてことをしたら、A,B,Cという項目名が生成されてしまいます。

|要約|チェックボックス|チェックボックス|チェックボックス| |AとBにチェックを入れる|A|B|| |Aのみチェックを入れる|A||| |A,B,C全てにチェックを入れる|A|B|C|

管理者でしか出来ないこと

課題の更新や、インポート時にJIRAのステータスを設定することは管理者でなければ出来ません。

検証環境を用意して行った方がいい

大掛かりなインポートであれば、いきなり目的のJIRAプロジェクトにインポートしてしまうよりは、目的のJIRAプロジェクトをコピーして検証用環境を用意した方が良いです。

担当者はインポート時に、JIRAアカウントを生成したりするのですが、変なアカウントが生成されてしまったり、元のデータがおかしいせいで変な課題が出来てしまうことがしばしばです。

そもそも課題すら正しく生成されず、本当はインポートされてなかったということが起き得ます。

インポート後にはインポートログを見て、WARNINGが起きていないか確認しましょう。

また、インポート時の設定はダウンロードをしておきます。

正しく、インポートできていれば、このインポート時の設定を使い、目的のJIRAプロジェクトに変更して、インポートすれば同じようにインポートできます。

CSVインポートは簡単な作業ではない

他システムや Excelで管理されているCSVインポートは簡単な作業ではありません。

  • 元のデータがおかしかった
  • 要約が空のために課題が生成されなかった
  • 担当者の氏名をJIRAアカウントにマッピング

といったことに悩まされました。

データがあれば、1日でなんとかなるでしょうとは、安易にできると考えないことをお勧めします。

Visual Studioのキーボードショートカットで空いてるショートカット

私がVisual Studioでよく行う操作の一つが、Macとのペアリングです。

Xamarinのアプリをデプロイするのに行います。

PCをスリープすると Macとの接続が切れるらしく、その都度、Macとのペアリングを行ってます。

Macとのペアリングにはショートカットがありません。

人によっては使わないでしょうから、致し方なし。

しかし、私としては、ショートカットを割り当てたいところです。

といってもVisual Studioは操作が多数用意されており、キーボードショートカットもほとんど埋まっています。

と思ったのですが、Visual Studioは「Ctrl+M,Ctrl+M」と二つのキーの組み合わせも行うことができます。

最初は「Ctrl+M,Ctrl+M」を狙っていたのですが、もう埋まってますね。

もう少し調べると、Shiftを絡めて「Ctrl+Shift+M, Ctrl+Shift+M」 あたりは、良さそうです。

f:id:rimever:20200627144117p:plain

「Ctrl+Shift+A-Zともう一つのキー」は割と空いてそうです。

おまけ

「Ctrl+Shift+M, Ctrl+Shift+M」にするとCtrlとShiftを押したまま、Mを2回押せば発生するので、意外と入力は楽です。