予測不可能な決定系

決定論的なのに予測が不可能……つまり, そういうことだよ

「BuriKaigi2024 」に参加しました

2024年1月20日に行なわれた BuriKaigi2024 に参加しました

その参加記録です

connpass ページはこちら toyama-eng.connpass.com

セッションリストなどが載っている公式のページはこちら burikaigi.dev

togetter はこちら togetter.com

参加登録まで

BuriKaigi の存在は数年前から知ってはいたものの、 なかなか機会もなく参加を見送っていました

そうこうしているうちにコロナ禍になり、 だいぶ行動も緩和された中で今回オフラインで開催されるこを知り、 なんとなく「行くなら今回だ!」となり参加登録をしました

会場まで

いきおいで参加登録したものの、札幌住まいの自分はそもそも富山には行ったことがないのでどうやって行くかもよく分かっていませんでした

調べたところだと新千歳・富山間の飛行機は一日一本しかなく、日中しかない模様

金曜の仕事を休めば行きでも使えそうですが、いろいろ考えた結果今回は「金曜の仕事後の夜に東京に飛行機で移動、土曜の朝に新幹線で富山に移動」という経路にしました

なお、北海道住まいの自分としては新幹線というものに不慣れなのでそもそも「どう乗るのか」「予約が必要なものなのか」というのがよく分かってなかったのでとりあえず予約しました (道内の特急と同じ層のものと理解しています)

富山駅に着いてからも会場の富山県立大学 DX教育研究センターまでは事前に調べていた列車に乗り過ごしたので結局はタクシーを使って移動しました

富山駅
富山駅

セッション内容

自分が聴講した個々のセッション内容については省きますが、 イベントの性質および自分の興味も相俟って .NET の話題、とりわけ Blazor の話を聞くことが多かったです

中でも .NET8 での Blazor の進化や @jsakamoto さんの Blazing Story の話、特殊な環境下での .NET GUI アプリの話が興味深かったです

もともとフロントに触れる機会は少なかったのですが最近になって触れる機会も増えてきたので、 また以下のリポジトリなどを通じて勉強してみようと思った次第です github.com

ドキドキライブコーディング

Burikaigi といえばドキドキライブコーディング!

以前にも生で聞いたことはあったのですが、その時は東京の de:code での時だったので、 今回は本家(?)で聞けるとあってとても楽しみにしていました

プログラマーにとってはとりわけ難しすぎないお題でも、 人前でライブでコーディングするとなると絶対自分にはできないなぁ……と思いつつ楽しく拝見してました

そういったお題を作り、それをそれぞれ個性を出しながら楽しくエンタメにしているあたり、 本当に感心の限りです

これを見れただけでも来てよかったなと思っています!

セッション以外

会場が富山県立大学であり、4トラックある各セッション会場を行き来するのに大学の建物内を少し歩くのですが、 そこで「あー、今大学にいるんだな」と感じられる何とも言えない雰囲気が個人的にとても好きでした

正直行くまでその大学の存在も知らなったので、そういった大学があるということを知れたのも良かったです

あと Burikaigi と言えばやはり「ぶりしゃぶ」!

例年の形式は知らないですが、今回はセッションをやっている日中に会場内でぶりしゃぶが食べられるという予想外の形式でした

これは準備がそうとうに大変だっただろうし、当日の混雑や混乱も予想されるかなり大胆な形式だったように思います

ただ少なくとも自分の見た限りでは大きな混乱などもなく、参加者の皆さんが各々で節度のある行動を取りぶりしゃぶを体験していたので、 改めて「すごいイベントだなこりゃ」と思い知らされました

ぶりしゃぶ
会場内でのぶりしゃぶ

最後に

北海道から参加していたのが自分とスピーカーでもある @jsakamoto さんのおそらく二人だけだったためか、 帰りの飛行機が同じで富山空港から札幌駅までの間ずっと一緒に居てもらい喋りながら帰ることができたので、 知らない土地のイベントでも最後まで楽しく帰ることができました (何故か飛行機の席まで隣というビックリ事態)

知らない土地での移動やそもそも新幹線なども乗り慣れていない状態において、 今回は移動の一切合切を「Copilot」アプリに聞きながら移動していました

例えば「東京から富山まで新幹線で何時間くらいかかりますか?」とか「富山駅から富山空港まではどうやって移動すればいいですか?」 などなど、とにかく何でも聞きました

もちろん全ての情報が正確とは限らないので Copilot に聞きつつ現地の案内所などでも情報を確認していましたが、 どのバスに乗ればいいかなどの情報がざっくりでも掴めるのでかなり助かりました

「分からないことはとりあえず Copilot に聞けばいい」というのも今回の大きな知見の一つになりました

最後になりますが、今回のイベントを企画し大変な状況の中で開催をしてくれて、 とても楽しい体験をさせていただいた運営スタッフとスピーカーの皆様に感謝をしつつ、お疲れ様でしたという思いでいます

本当にありがとうございました :D

会場から富山駅まで送迎してくれたバス
会場から富山駅まで送迎してくれたバス

「第1回 Azure Travelers 勉強会 札幌の旅」に参加しました

勉強会の参加記録です

connpass ページはこちら jat.connpass.com

togetter はこちら togetter.com

多くのセッションや LT がある中で個人的に印象に残ったものを2つ振り返ります

Azure OpenAIと周辺機能を活用して堅牢なLLMアプリケーションを開発しよう

Junpei Tsuchida さんの Azure OpenAI を使ったアプリケーション開発の話

ご本人のブログはこちら zenn.dev

どこもかしこも「AI ! AI !!」の世の中なので GPT や Copilot などを利用する話もアプリケーションなどに組込む話も避けては通れない気と思っています

正直今の自分には難しい内容でしたが、その中でアプリケーションに組込む時のポイントや最新の話などを聞けたのはすごく刺激になりました

この手のものを習得していくには結局は手を動かすしかないので、 Microsoft Learnこの講座 を足掛りに勉強していくのが良さそう microsoft.github.io

Azure でのマルチテナント SaaS のはなし

いわささんのマルチテナントで SaaS を提供する場合の話

ご本人のブログはこちら

dev.classmethod.jp

最終形な手段としては AWS や Azure のサービスをどう使うかという話になるけど、 それ以前の話としてマルチテナントで SaaS を提供しようとした時にどう設計するべきか、 どういった問題が考えられるかという話がまとまっていて大変ためになる話でした

マイクロソフトのドキュメントには Azure アーキテクチャセンターというガイダンスがあり、 ここの人気の記事や特定パターンの記事がすごく参考になるので設計で悩んだり勉強したい時はここを参照すると良い

learn.microsoft.com

全体的な感想

普段札幌 Azure/Microsoft Learn もくもく会には参加していて徐々にオフラインの勉強会も増えてはきたけど、 コロナ前にあったセッション形式の勉強会にオフラインで参加したのは久しぶりでした

オンラインにはオンラインの良さがもちろんあるけど、 やはりオフラインは懇親会も含めてリアルで人と会い、話しという良さを痛感したイベントでした

Azure Travelers というイベント自体は最初に札幌で始まり第2回は神戸で開催されます

jat.connpass.com

今後も各地を転々と旅をしながらイベントが開催されるようなので、 こういったイベントをきっかけに旅行がてら行ったことのない土地に行くというはすごく素敵だなと感じた次第です

毎回はさすがに難しいけど、タイミングがあえば自分の行ったことのない土地で開催される Azure Travelers に参加したくなりました

素敵なイベントを企画し実行された運営の方々には感謝感謝です

ありがとうございました!

Docker コンテナの Azure CLI で Azure VM を作成する

はじめに

いろいろな方法で Azure VM を作成してみようと思い、ポータル上で作成する分にはブラウザ上でポチポチするだけですぐに作成できるので次に Azure CLI で作成しようと思った

ただし、Azure CLI をそのままローカルにインストールするのではなくせっかくなので Docker コンテナを使うことにした

Azure CLI

Azure CLI コマンドラインで Azure のリソース情報などを取得・作成するためのツール

ローカルにインストールして使用することもできるが公式から Docker コンテナが提供されている

hub.docker.com

Docker がインストールされている環境であれば以下のコマンドで取得可能

docker pull mcr.microsoft.com/azure-cli

アカウントと紐づけ

以下の Docker コマンドでコンテナ内に入る (イメージを未取得なら最初に取得する)

docker run -it mcr.microsoft.com/azure-cli

コンテナに入ったら以下のコマンドで自身のアカウントにログインする

az login

コンテナ内から上記コマンドを実行した場合はデバイスコードフローが開始されるので、規定のブラウザが起動した後にターミナルに表示されているコードを入力してからアカウント情報を入力してログインする

VM の作成

ログイン後は以下のチュートリアルに沿ってコマンドを実行していくだけ

learn.microsoft.com

チュートリアルではブラウザ上でそのまま体験できるようにもなっているが、ローカルで試す場合は表示されているコマンドをコピーしてコンテナ内のターミナル上で実行していくだけ

上記のチュートリアルは概要の説明から必要なリソースや VM の作成、削除まで一通り体験できるようになっている

所感

以上の内容で Azure CLI を使った VM の作成は体験できるが、以降は実際にやってみた所感

最初は以下のようなエイリアスを作成してあたかもローカル上で az コマンドを実行しているようにできないかと考えていた

alias az=docker run -it mcr.microsoft.com/azure-cli az

しかし、その方法だと az login したコンテナと以降の操作をやりたいコンテナが別になるので思ったような操作ができなかった

(VM に関する操作をやりたいコンテナではログイン情報を持っていないためと思われる)

最初に az login したコンテナに名前をつけて以降の操作をそのコンテナを指定して実行するようにすれば あたかもローカルに az コマンドが存在するかのように操作できるかとも思うが、それはそれでスマートなやり方ではないように思う

やはりコンテナを使って Azure CLI を使用する場合は一つコンテナを作成し以降の操作はその中でログインして操作していくのがまっとうなやり方なのかもしれない

VSCode のマークダウンプレビューで数式が表示可能になった

概要

Visual Studio Code(VSCode) の「June 2021(バージョン1.58)」でマークダウンプレビューに数式の表示が可能になりました.

code.visualstudio.com

元々拡張機能を使えば可能でしたが, これが標準で可能になりました.

やり方

インラインで表示させるには数式部分を $ マークで囲み, 別行立ての場合は $$ で囲みます.

VSCode は標準でマークダウンプレビューを表示させることができます. やり方はマークダウンファイルにフォーカスがある状態で Ctrl+Shift+V(別タブで表示) または Ctrl+K V(side-by-sideで表示)を押下します. エディタ領域の右上にあるボタンを押しても side-by-side で表示させることができます. 詳しくは以下を参照してください.

Markdown editing with Visual Studio Code

やってみた

実際に試してみたところ単に拡張子 .md のファイル内で数式を $ または $$ で囲むだけなので, 非常に手軽に数式を表現できて便利です.

f:id:Aut_Spyke:20210801230045p:plain
実際に side-by-side で表示させたところ(赤線は side-by-side で表示させるボタン)

ちなみに同じアップデートで数式部分にシンタックスハイライトがされるようになっています.

余談

これでちょっとした文章なら TeX を使わずにマークダウンだけで PDF を作成できるかと期待しましたが, そううまくはいかないようです.

VSCode でマークダウンファイルから PDF を作成する拡張機能として Markdown PDF がありますが, それを使って上記のマークダウンから PDF を出力させても数式部分がうまく解釈されませんでした.

f:id:Aut_Spyke:20210801225733p:plain
実際に出力させた PDF

数式のマークダウンプレビューには KaTeX が使われているようですが, おそらく以下のような関係になっているのでマークダウンプレビューの表示がそのまま PDF になるわけではないと想像します(実際にコードなどを確認したわけではないのであくまでも想像ですが).

f:id:Aut_Spyke:20210801231530p:plain
それぞれの関係(想像)

ちなみに pandoc を使えば LaTeX 経由でマークダウンファイルから PDF を作成することが可能です.

まとめ

VSCode のマークダウンプレビューで拡張機能なしに数式を表現できるようになりました.

TeX の環境を用意して文書を作成するのはそこそこハードルが高いと思っているので, VSCode拡張機能一つでマークダウンから手軽に PDF まで行ければ最高でしたが残念ながらそこまでは行けませんでした. ただちょっとしたメモをマークダウンで残すときにそのまま数式を使えるようになったので便利は便利だと思います.

vim と WSL 上の Docker で C# プログラムを作成して Github で公開するまで

以前 Bitbucket に公開していた Project Euler を解いたコードがしばらく触っていないうちになくなっていたので1, これを機に新規で環境を用意して Github 上に公開しようとした際の備忘録.

環境は Windows 上の vim で terminal に WSL を使った C# 環境. vim の terminal で WSL を使い docker コマンドが使えることが前提.

WSL から Docker コンテナの dotnet コマンドを使えるようにする

Microsoft の公式イメージ を使って dotnet コマンドを使えるようにする. ついでに .bashrc に

dotnet='docker run --rm -v $PWD:/app -w /app mcr.microsoft.com/dotnet/sdk dotnet'

エイリアスを追加して以下のコマンドだけでサンプルプログラムなどの実行を確認できるようにする.

dotnet run

Project Euler 1問目の解答コードを C# で書く

作業ディレクトリに移動して

dotnet new console

でテンプレートを作成して Project Euler の1問目をとりあえず解いてみる. 使用した vim の環境はひとまず vim-lsp-settingsC# 用の Language Server を用意して自動補完ができるようにしたのと, caw.vimでコメントのオン・オフをトグルできるようにしたくらい.

ひとまず最低限のコードを書いて問題なく正解を出力できることを確認.

git リポジトリの作成

次に何も考えずに

git init

としてリポジトリを初期化したが, よく考えるとこの時にできるデフォルトのブランチ名は master である. 今後のことを考えるとデフォルトでできるブランチ名を main にしておいたほうがいいかもしれない2. 途中で何故かエラーで git 操作(status や add や諸々)ができなくなったが一度親ディレクトリに移動すると解決した. もしかしたら途中でディレクトリの名前か何かを変更したのかもしれない. 調べてすぐに解決したから良かったけど.

stackoverflow.com

あとは

dotnet new gitignore

で .gitignore を作成し, vim の swap ファイルも無視するように記載.

dotnet コマンドでできる .gitignore だと自分の環境の場合過剰すぎるけど, このファイルに関してはそれでも問題ないと判断.

ここまでで commit してローカルの作業は一旦完了し, リモートの準備をして push すればいいだけ(のはずだった).

Githubリポジトリを作成

Github 上で新規にリポジトリを作成して, ローカルでリモートリポジトリとして登録する3. ここで Github で2段階認証の設定をしていなかったことを思い出して2段階認証の設定をした. ただし, 2段階認証にすると push 等のコマンドラインでの操作時のパスワードによる認証の方法が変更される.

docs.github.com

そこで SSH キーによる認証に切り替えるべくローカルで鍵を作成する. ただし, この時に Windows 側のディレクトリで鍵を作成するとパーミッションが意図したものにはならないので Linux 側のディレクトリで作成する必要がある. これについては以下を参考に解決した.

qiita.com

それ以外で鍵の作成方法や Github への登録方法は以下を参考にするとよい.

docs.github.com

ここまでで認証自体は通るようになったがこの段階だとローカルのブランチ名が master なのでこのまま push するとリモートで main(デフォルト)と master の2つのブランチができることになる. これは本意ではないので今度はローカルのブランチの名前を main に変更してから push する必要がある. そしてローカルのブランチ名を main に変更しても今度はリモートリポジトリにあるライセンスファイルや README ファイルがないので一度 pull する必要がある. ここで単に

git pull origin main

とすると別のエラーになる.

考えてもみればローカルリポジトリとリモートリポジトリはそれぞれ別に作成された関連付けのないリポジトリなので, 単純にマージしようとしても出来ないのが当然であるべき. なので, 以下を参考に

git merge --allow-unrelated-histories origin/main

とすることで強制的に同期させる.

qiita.com

ここまできてようやく

git push origin main

でローカルに作成したコード一式を Githubリポジトリに push して公開することができた.

感想とまとめ

今回公開したリポジトリは以下になる.

github.com

今後の反省としては予めローカルで作成するリポジトリの名前も main に変更しておくとか

chiroru-memo.hatenablog.com

そもそも最初に Github 上でリポジトリを作成してクローンしてから作業するのが混乱が少なそう. 想定されるシナリオはローカルで何かコードを書いていて途中でリポジトリの作成と公開をしたくなった場合は, リポジトリをローカルで作成せずに最初に Github 上で作成してから clone してローカルのファイルを add なり push なりをするのが良さそう. つまりこの場合は自分で git init と打つ必要はなさそう.

解いていくうちに vim 上の環境をより良くしたくなったり(たぶんスニペットとか欲しくなる), 解答を改良したくなったり, 別の言語で解きたくなったりした際に新規でリポジトリを作成することがあるだろから, その時は今回踏んだエラー等に気をつけながら進めたいものです.


  1. たぶん Mercurial で管理していて何もせずに2020年8月を迎えたのだと思う https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket

  2. https://github.blog/2020-07-27-highlights-from-git-2-28/

  3. git remote add origin [REMOTE_URL]

第4回 日曜数学会 in 札幌に参加しました

以前から気になってた日曜数学会…… 札幌でも何度か開催されているのは把握していたけど今まで都合が合わずに参加できないでいました.

今回はついに参加することができたので, 少し感想を書いてみようと思います.

全体を通して

終始ゆるやかな雰囲気の中, ワイワイガヤガヤ楽しんでいる感じでした. 個人的にもメッチャ楽しかったです!

午前の部も含めて11:30~20:30と長丁場でずっと数学のことを時に緩く, 時に深く考える時間というのはかなり貴重だと思います.

少し細かく

おおまかには以下のスケジュールでの進行でした.

  • レクリエーション (午前の部)
  • LT
  • レクリエーション2
  • 懇親会

レクリエーション (午前の部) では「ヌメロン」という数当てゲームに数学っぽい独自ルールを加えてチームに分かれての対戦.

LTでは発表者が語りたいことをパッショナブルに発表し, そして突発的に作成されるトーラスのモデル(回る).

レクリエーション2では別の数当てゲームを全員で楽しみ, 懇親会ではオードブルをつまみつつそれぞれが思い思いに語らい交流.

f:id:Aut_Spyke:20200126124931j:plain
ヌメロンのチーム勝利後のホワイトボード

f:id:Aut_Spyke:20200126154808j:plain
急遽作成される回るトーラス

その他

他には Looking Glass に表示された時刻が素数の時に音が鳴る装置が展示されており, 会を通して随時話題になっていたように思います……そして遂には四つ子素数を皆で楽しむという結末に.

あと昼, 夜ともに食事として参加者の一人が店長をされているカレーパンドラのケータリングサービスがすごく良かった.おいしかったー!

f:id:Aut_Spyke:20200126194614j:plain
素数時刻に音が鳴る

最後に

普段は数学勉強会@札幌に参加している自分としては, 数学勉強会@札幌は既存の数学を「みんなで勉強する!」という感じが強いけど, 日曜数学会のほうはそれぞれの数学を「みんなで楽しむ!」というのがすごく印象的でした. とにかくみんなで楽しもうとする工夫が随所に見られる会だったなぁ.

運営・参加者みんなが一体となって楽しめる会, 本当にありがとうございます! また次回も参加します!!

f:id:Aut_Spyke:20200126183722j:plain f:id:Aut_Spyke:20200126183718j:plainf:id:Aut_Spyke:20200126203446j:plainf:id:Aut_Spyke:20200126161620j:plain
その他の会の様子

「JAZUG札幌支部(きたあず) 第22回勉強会 Azure Kubernetes Service(AKS) ハッカソン」に参加しました

4月13,14日の2日に渡って開催されたきたあずの勉強会に参加してきたのでそのレポートです.

jazug.connpass.com

今回はいつもの1日で座学中心の勉強会ではなく, 2日(しかも午前中から夕方まで)と時間的にかなり長丁場なものでしたが終ってみればアッという間な感じでした.

内容

具体的な内容としては午前中に Microsoft の寺田さんによる Kubernetes などの説明や注意点などの解説, 午後はモブプロの形で参加者の皆で一つのチームになりハッカソンをやるというものでした.

f:id:Aut_Spyke:20190414170930j:plain

感想

いままでは何となく言葉でしか知らなかった Kubernetes や Azure Kubernetes Service について, 今は何となく…ボンヤリと…概要や大まかな流れくらいは分かる……かも, くらいにはなったはずです(やっぱり難しい。。)

それでも基本的な内容については体験できたので今後は自分で調べていく際もよりイメージがついた状態でできそうです.

あとはモブプロというもの自体初めての体験だったので, そちらでの気付き・学びも多かったです.

自分がドライバーのときは緊張でうまくコマンドが打てなかったりとりあえず言われた通りに打つだけになりがちだったし, 他の人が操作しているときは別の人の指摘で「そうか, その視点があったか」という気付きがあったりと, いろいろな体験ができてとても面白かったです.

また, ほんちゃんの内容とは別ですが寺田さんが仰ってた中で印象的だったのが "英語力の差が技術力の差になる" という話でした.

どの技術もそうですが最初に出るドキュメントは英語であることが多く, 勢いのあるプロダクトや技術であればあるほど翻訳が追いつかなかったり日本語で書かれたブログなどの情報が古くなり, 結果として公式の英語のドキュメントを見て調べていくしかないことはままあります.

それを日本語で情報が出るまで待ったりしてるとその分だけどんどん差がついてしまうのは当然です.

また, issue の報告や英語での会話などにしても文化の違いなどもあり, どうしても考え過ぎたり慎重になり過ぎたりする傾向があります.

ただそんなことではあれこれビクついて何もできない・しなくなるので, 拙くても短かくてもいいからまず自分の意思を伝える意識が大事なのかもしれません.

Don't be shy!

要するに

すっごい楽しかった!!

チームの皆さん, 2日間ありがとうございました:D