行ってよかったBuriKaigi2024
2024年1月20日(土)、久しぶりのBuriKaigiが富山で開催されるとのことで、以前から気になっていたこのイベントに福井から初参加して参りました。In 富山県立大学 DX教育研究センター!(Not 富山大学)
今回私はボランティアスタッフとして、ぶりしゃぶ体験会受付を担当させて頂きました。こういうイベントに参加する皆さんというのは、とてもイイ笑顔をされるのだなぁと想いながら、受付をさせて頂きました。お会いしたすべての皆様、ありがとうございました。
いやー、めちゃくちゃよいイベントでしたね! 参加する前は勝手な思い込みで、もっとこう、内輪ノリのイベントなのかと想像していて(すいません)恐る恐るの参加だったのですが、全然そんなことはなく、ホスピタリティ溢れる大変オープンで洗練されたイベントでした。数名の運営スタッフでこれを回しているのは大変だったと思います・・・まずは、運営スタッフの皆様、本当にお疲れ様でした!
BuriKaigiとは、公式サイトから引用するとこんな感じのイベントです。
BuriKaigi は「年に一度、寒ブリの季節にソフトウェア開発・ITにおける各分野で最前線で活躍するエキスパートを全国から北陸へ招待し、技術の旬を持ち寄り、講義・ディスカッションを行う」というコンセプトで実施している勉強会です。
https://burikaigi.dev/sponsor/
ですが、その実態は、「会場でぶりしゃぶとかビールとか日本酒とかで盛り上がりながらIT勉強会でも盛り上がっちゃおう」という、「ブリ!??ブリナンデ?????!!!!」という、気が狂ったイベントです。
「ぶりしゃぶ食べながらITのイベントを受けるってどんな気持ちになるんだろう?」と思いながらの参加でしたが、思った以上にみんな普通にぶりしゃぶ食べながらITのイベントを受けていて、狂気ってある一定レベルを超えるとそれが普通になるんだなと思いました。
私が参加して写真が残っているものから、イベントの様子やセッションの内容を一部、お伝えいたします。私は.NET系に興味があるのでそれ系のセッションを中心に聞いておりますが、BuriKaigi自体は.NET/Java/Ruby/Web系などなんでもござれのITイベントです。4トラックで40を超えるセッションがあるため、とても全部は見て回れなかったのが残念です。
.NET 8 と GitHub、そして Azure による開発者エクスペリエンスの向上~ 最新開発プラットフォーム デモンストレーション (仮) ~(井上 章 氏)
.NETがどのように進化してきたか、簡単なおさらいから入って、CopilotとAzureのCI/CDを用いたデプロイまでのライブデモがありました。
.NETっていまだにWindows専用の技術だと思われてる節があるような気がしていて、今回も「Linux/Macでも普通に動くオープンソースだよ」という事を強調されていました。この辺りはもっと知れ渡ってほしいですよね。
Copilotは私も最近お世話になりまくりで、コメントを書いて2秒ほど待つとカーソル位置に勝手にコードが出現して、それがまたちゃんとしてるコードなので、あとはタブキーを押すだけという毎日を送っております。とはいえ、雰囲気だけはそれっぽいけど根本的に間違ってる場合もよくあるので、他人が書いたコードを読む力、コードの良しあしを判定できる力が大事だなと思いました。
このライブデモではAzure PipelinesのCI/CD機能を使って、ブランチにマージすると同時にデプロイを行っていました。その際に、Azure Storageのキーが残っているように(わざと)して、危険なコードのアラートが上がるような仕組みも紹介されており、こういう、「気を付けましょう!」みたいな努力目標ではなく、仕組みとして防ぐというのは(もちろん完璧ではないので気を付けるにこしたことはないわけですが)とても大事なことだなぁと思いました。
.NETのリリーススケジュールについても説明も(.NET系の技術者はよくわかっていることだと思いますが)あり、.NET6→.NET8と、バージョンが偶数の時にLong Time Support(LTS)として3年間のサポートがされるという話がありました。「3年というのは短く感じるかもしれませんが、現在のシステム開発では様々なオープンソースが関係しているので、脆弱性を排除したりする為には定期的な保守が不可欠」という説明が、確かにそうだなぁと納得でした。「そのためにも自動テストなどを利用して、アップデートにかかるコストを最小化しましょう」というお話もありました。
個人的に今一番興味があるBlazorのデモもありました。Blazor WebASM(ブラウザ側でWebASMとしてC#コードを動作させる)、Blazor Server(ブラウザの表示HTMLをサーバ側でリアルタイムに制御する)に加え、Blazor SSRという、完全なServer Side Renderingモード(サーバ側でHTMLを動的に生成してブラウザへ返す)の登場で、Blazorは一気に「Webシステム開発の本命」に躍り出た感じがしています。しかも、場面場面でWebASM/Blazor Server/SSRを切り替えて使えるというんですから、これもはや最強のプラットフォームなんじゃないでしょうか。Blazor SSRは旧来のサーバサイド技術に先祖返りしたように見えますが、内部的にはコンポーネントベースで記述しているかつ画面の一部リロードにも対応しつつブラウザから見ると普通のHTMLを返すサーバに見えるという仕組みなので、Webフロントエンド開発が超絶加速する気がしています。
.NET Aspireの紹介もありました。
.NET Aspireはクラウドアプリケーション特有の開発・運用タスクをサポートするためのツール群の総称で、今回はその中でも「ダッシュボード」機能をシステムに追加する機能の紹介がありました。ダッシュボードを使うと、専用の画面から自分のクラウトアプリケーションの各種ログやテレメトリ、監視を集約して管理することができます。こういう部分まで含めて一貫したテクノロジーでサポートしてくれるのは、.NET系の大きな強みだと感じます。
最後に、Azure Deployment Environmentsという開発者の為のデプロイ環境管理ツールの紹介がありました。
昨今のクラウドベースアプリケーション開発では、プロジェクトに新メンバーが参加した時に、オンボーディングから実際に開発を開始できるまでに様々なリソースへのアクセスが必要になる為、「オンボーディングから最初のプルリクエストまで平均30日かかる」という統計まであるそうです。こういうものを一元管理して、ボタン一発で開発環境を整えるためのものだそうで、最初からこれを使いこなせれば相当便利だろうと思いました。
.NET8周りの最新技術をざっと知ることができる、とても素敵な講義でした。井上さん、ありがとうございました。
UI コンポーネントカタログ "Storybook" を、C# で SPA が作れる Blazor で再実装した話(坂本純一氏)
StorybookみたいなものをBlazorコンポーネントでもできるようにした「Blazing Story」というツールを作ったという、すごいお話でした。
Storybookとは、JavaScriptのUIコンポーネント(ReactとかVueとかで作った画面部品)をカタログとして一覧し、画面上でコンポーネントの挙動を確認できるツールです。チーム内で各自が作りこんだコンポーネントを共有するのにとても便利です。
Storybookは超絶便利だなと思いつつ、自分自身ではまだ使ったことがなく、同じことがBlazorではできないのは歯がゆく思っていたのですが、まさか実際にやってしまう方がいらっしゃったとは・・・! しかもデモを見ると、「え、マジすごいんですけど!?」というレベルでほぼ同じような動作になっていて、普通に使ってみたいと思いました。
Blazorの中心になるのはやはりUIコンポーネントだと思うし、それらを便利に使えるカタログツールの存在は不可欠だと思うので、とても期待しております。
BlazorでCodeer.LowCode作った話(石川達也氏)
ノーコード、ローコードでアプリ開発をするフレームワーク「Codeer.LowCode」というプロダクトについての紹介だったのですが・・・なんか凄すぎてやばい(語彙力)製品でした。
イメージとしてはMicrosoft Accessみたいな感じで(もちろん全然違うものですが)、DBの各フィールドをUIにドラッグ&ドロップすると勝手に列とか入力欄ができていったり、テーブルから自動的に入力フォームとか一覧表とか生成したり、結果をExcelとかPDFとかにできたりします。なんか魔法を見ているようでした・・・。
普通のネイティブアプリケーションに見えていたのですが、内部的にはBlazorで動作しているそうで、WPFのWebViewを張り付けてBlazorをネイティブ動作させているとのことです。
このツールを使って作った独自のダイアログ表示などもC#ライクなスクリプトを使って実現可能で、なんか凄すぎてやばかった(語彙力)です。
このツールで作った各種設定ファイルはテキストデータとして保存される為、開発中の変更点なども含めてGitで管理できるというのがさらに素晴らしいと思いました。
AI時代を生き抜くために処理をちゃんと書けるようになろう(きしだなおき氏)
AI時代では、ライブラリの使い方といのはAIが教えてくれるので、単純な知識を蓄積させることに意味がなくなってきている(そもそも検索で暗記の必要はなくなっているが・・・)為、これからはやりたいことを「正しく表現できること」や「読み取れること」が大事というお話でした。私も最近Copilotを使っていてまさに同じことを感じています。
一時期、「x = x + 1」という記述が数学とごっちゃになってわかりにくい、みたいな話がありましたが、これについて「そもそもちゃんと逐次処理ということが理解できていないだけでは?」という話があり、例題として次のようなコードが提示されていました(初期値は10ではなかったですが、だいたいこんな感じ)。
var x = 10;
x = (x = x + 1) + x; // x には何が入る?
聞いていて、多分こうなるだろう、という予想はあったものの、「あれ? ()の中と外、どっちが先に評価されるんだっけ? 前から順番に評価で合ってるっけ?」という部分で自信がなく、その後確認してみましたが、確かにこういう部分って根本的にどこまでわかっているかが試される部分だなぁと思いました。
きしださんはJavaの人なので、「人間は逐次的な処理よりも宣言的な処理の方が理解しやすいのでStream APIを使いましょう」という話もあって、なるほどなぁと思いつつ、Javaは今そういう感じなんだなという事も知れて大変勉強になりました。
割とニッチめな環境でdotNETのGUIアプリを作ってみている件(中西 孝之氏)
前述のマイクロソフト井上氏の講演にもある通り、.NETはWindows/Linux/Macなど様々なプラットフォーム上で動作するオープンな技術ですが、ということはつまり、Raspberry Pi上でも動作させられるはずだよね、という実験結果の紹介です。
なぜRaspberry Piかというと、車やバイクの制御情報を監視する為、ケーブルからController Area Network(CAN)プロトコルのデータをキャプチャして画面に表示したい、という欲求があった(中西氏はバイク乗り)為とのこと。この人もまた変態です。
Raspberry Pi上でCANのデータを表示するにあたって、キャラクタベースではなくグラフィカルなメーター表示がしたかったということで、最終的に「Blazor Server」を使ってリアルタイムにCANのデータをブラウザに表示する、という仕組みを試したそうですが、デモ(アクセルを握りこむと画面上のメーターがモーター回転数に合わせて動く)を見る限り画面レスポンスは非常に良い感じで、ブラウザベースであることを感じさせません。これはすごいなぁ。
Raspberry Pi + Blazor Serverでここまでリアルタイム性の高い表示ができるのならば、例えばレストラン等の注文システムとかも、とても簡単に作れそうな予感がしました。
米国特許商標から読み解くApple Vision Proの技術仕様(Takumi Muranishi氏)
先日発表されたApple Vision Proをどれだけ愛しているか(まだ入手もしていないのに!)という熱のこもったプレゼンで、私までApple Vision Proが欲しくなってしまいました・・・。
メモリ256GB/512GB/1TBで、それぞれ52万、55万、58万、らしく、「3万ずつの差なら1TBだなぁ…」みたいに思ってしまいましたが、考えてみたら高え、高すぎるよ・・・という事に気づくのが遅れるほど興味深い内容でした。
特許などを読み解いてそのすごさを解説する内容で、瞳孔の直径の時間変化から関心を推測する(=瞳孔の直径が最大の瞬間が一番関心のあるもの)、みたいな話が面白かったです。
このプレゼンの前日夜にストアで購入可能になったそうで、日本には送ってくれないのでハワイまで取りに行く気満々で発注しようとしたら、日本のクレカでは購入できずまだ買えていない、というオチで再度笑わせて頂きました。
その後無事購入されたのでしょうか・・・。
BuriKaigi 名物!C# ドキドキ Live Coding 対決!!(小島 富治雄氏・石野 光仁氏・鈴木 孝明氏)
これを見に来ました!w もとい、福井勢としては、このライブコーディング対決はとても楽しみにしていました。小島さんやじんぐるさんとは福井情報技術者協会(FITEA)時代からお世話になっていますので、応援にもがぜん熱が入ります。もちろん石野氏もいつも画面の向こう側から拝見していて、このお三方の対決が目の前で見られるのは最高です。
メインイベントは各自が作ったプログラム同士を「対戦さめがめ(Samegame)」で戦わせる、というものですが、私は前日の夜、ベトナムビールでカエルのから揚げを食べながら、じんぐる鈴木氏よりこう聞いていました。
「やっぱチートしようと思うんですよね」
「え、今なんて?」
「やっぱチートしないと盛り上がらない」
他にも「提供されるライブラリが、既にチートを前提にしている」「ずっとチートのことばかり考えている」など、ライブコーディング対決の世界やべえな・・・と思いながら真顔でベトナムビールを飲んでおりました。
そして迎えた対決当日。
鈴木氏「1手番目で盤面のすべてのマスを自分の色(赤)で塗りつぶして、全消しして勝利します」
本当にやりやがってました・・・。勝負は一瞬で鈴木氏の勝利。会場爆笑。
しかしさすがにこのチートは封じられ、仕切り直しとなります(当たり前)。
チートなしモードで戦う事を余儀なくされるじんぐる氏。しかし素のアルゴリズムでも割といい感じで赤を配置していっています・・・ん・・・? あれ・・・? 赤が・・・・? 少しずつ色が変わって・・・青になってる!!(青は小島氏の色)
そう、小島氏は、配置された他の色のマスの上にこっそりと同じ色の丸を被せて描画し、ゆっくりとその色を自分の色(青)に変化させていくというアハ体験を仕込んでいたのです。「僕の色もう無いんだけど!?」会場に響く鈴木氏の悲鳴に合わせて沸く会場。
結果は小島氏の圧勝。そして当たり前のようにこのチートも封じられ、仕切り直しとなります。
全員がチートなしのアルゴリズムでの勝負は、いい勝負となりましたが石井氏の勝利となりました。
ちゃんとチートなしでの勝負までやるのが素晴らしいですし、その前座のチート合戦も会場が沸きに沸いていました。ここまでのお膳立てを毎回やっている登壇者の皆様は本当にエンターティナーだし、実力が伴わないとできないことだよなぁ、と思った次第です。
次回はどんなチートが拝めるのか今から楽しみです。
ぶりしゃぶ
会場では、常時ぶりしゃぶが体験できました。参加費は5000円ですが、とてもおいしいケータリングも頂けて、ビールや焼酎・日本酒、ノンアルコールドリンクなども飲み放題で、おなかが満腹になりました。
ぶりしゃぶも美味しかったですが、ケータリングの食事もすごく美味しくて、たくさん食べてしまいました。「キッチン花水木」さん、美味しい食事をありがとうございました。
終わってから
終わってからも、有志での懇親会に参加したり、同じホテルに宿泊した皆さんと語ったりと、とても有意義な一日となりました。こういった交流も、ITイベントのだいご味ですね。
富山の海の幸は本当に旨かったです。特に、写真のブリの塩焼きは、人生で食べた中で一番うまい魚の塩焼きだったかも(大げさに聞こえるかもしれませんが、本当にそう思いました)。
お会いした皆様、お話を聞かせてくださった皆様、運営スタッフの皆様、富山県立大学の皆様、素晴らしいイベントをありがとうございました。
Discussion