概要
先日、マイクロソフトのde:code2019に参加してきました。
本当に素晴らしいセッションを通して勉強することが多く、行って正解だったと思います。
それにこういうイベントで知見が広まると、モチベーションも上がりますね。
あと、某スペシャルゲストも、本当にスペシャルな人でしたからね。
そんな中で「C# ドキドキ・ライブコーディング対決 @ de:code - ONLY C#!! Blazor Web 開発バトル」というセッションがありました。
私は残念ながら拝聴できなかったのですが、「その場で与えられたお題に対して、即興で時間内にプログラミングして動かす」というものです。
ちなみにお題は「C#で令和元年を表示する」だったようです。
「じゃあ自分でやったら、何分かかる?」ということで、やってみました。
結果
とりあえず僕が思いついたのは、下記のコード。
(WinFormアプリとして動くのは確認済です。)
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var Ymd = textBox1.Text; var listNengoPeriod = new List<NengoPeriod>(); listNengoPeriod.Add(new NengoPeriod(new DateTime(2019, 5, 1), "令和")); listNengoPeriod.Add(new NengoPeriod(new DateTime(1989, 1, 7), "平成")); listNengoPeriod.Add(new NengoPeriod(new DateTime(1926, 12, 26), "昭和")); listNengoPeriod.Add(new NengoPeriod(new DateTime(1912, 7, 30), "大正")); listNengoPeriod.Add(new NengoPeriod(new DateTime(1868, 1, 25), "明治")); var resultNengo = String.Empty; if (DateTime.TryParse(Ymd, out var dt)) { var nengo = (from n in listNengoPeriod where n.getPeriod <= dt orderby n.getPeriod descending select n).FirstOrDefault<NengoPeriod>(); resultNengo = nengo == null ? "明治より前" : nengo.getNengo; } var message = string.IsNullOrEmpty(resultNengo) ? "指定した年月日が不正です。" : $"{Ymd} は、{resultNengo} です。"; MessageBox.Show(message); } } class NengoPeriod { public NengoPeriod(DateTime period, string nengo) { this.getPeriod = period; this.getNengo = nengo; } public DateTime getPeriod { get; } public string getNengo { get; } } }
上記コード完成にかかった時間は、30分でした。
なお、実際の登壇者がコード完成までにかかった時間は、たったの5分とのこと。
(細かいバグはあったようですが)
いや、カップ麺の待ち時間程度でこれを完成させちゃうって、本当すごいな~、と思いました。
(しかも実際は、トークをしながらとかですからね。)
やはりすごい人はいるんだなあ、と改めていい刺激になりました。
てか、対峙する価値のない人なんて適当にスルーして、その分こういう方々とご一緒させて頂ける時間に割くべきですね、本当に。
※体験記その2は、また後日。