2023年の振り返りと2024年の目標

ブログの更新頻度が減ってしまいましたが、裏でいろいろやってますヨ!!

2023年にやったこと

2023年は本当にたくさんの出来事がありました。

  • 大学卒業
  • Microsoft Learn Student Ambassadors 卒業
  • 就職
  • 登壇
  • Web開発
  • 温泉巡り

なんかいろいろとあっという間の一年を駆け抜けような感じです。

大学卒業

3月で大学卒業&学生生活が終わりました。高専から大学へ編入したとき、ちょうどコロナが流行ってなかなか大学へ行く機会がありませんでした。しかも2年次編入ということで同年代に比べて1年遅れて学生生活を送ることになり、ちょっと残念だな~と思っていました。でも、そのおかげで4年になったときに大学へ自由へ通えるようになりました。

学術講演会で優秀発表賞をいただき、研究もかなりいいところまで進みました。CADを使って回路設計、基盤収納ケース、銅板から基板作成、表面実装、Windows App SDKを使った測定アプリケーションの開発など、ハードからソフトまで、必要な計測デバイスの開発を行いました。よくもまぁ1年で計測して結果を出すところまで行けたなぁという感じです。

卒研スライドの一部ですが、こんな感じの装置を組み立てました。本当はもっと小型化する予定だったのですが、時間が足らずでしたね。大学院進学していたら装置の小型化と複数のモデルから結果をとったり・・ができたかなぁと。

ちなみに抄録はWeb上にあります。A-6です。

www.cst.nihon-u.ac.jp

ちなみにちなみに、作った計測アプリはパブリックリポジトリにしました。引き継いでくれる方がいるかはわかりませんがw

github.com

登壇

学生生活最後の登壇

Microsoft Learn Student Ambassadors を卒業するということで、学生生活最後の登壇をさせていただきました。Ambassador としての約2年半、本当にたくさんのことを経験させていただいたので、その経験談を中心に話したいことすべて話しました。 終わりには卒業プレゼントもいただきました。

mspjp.connpass.com

▼記念撮影(一番右が私です)

Global Azure 2023

5月はなんと Microsoft MVPあしかがゆいさんにお誘いいただき、Azure × マイクラをテーマに登壇させていただきました。 45分も時間をいただいたのに見通しが甘く、最後のほうは早口になってしまいました・・ちょっぴり失敗しちゃいましたが、それでも伝えたいことは一通り伝えられたと思います!

jazug.connpass.com

▼発表している様子

▼登壇資料

speakerdeck.com

LINE DC Offline Meetup

LINE Developer Community の前田さんよりお誘いいただきまして、LT登壇しました。 ChatGPT × Azure Functions × LINE Messaging API をつかった内容です。

linedevelopercommunity.connpass.com

▼発表している様子

www.youtube.com

こんなところでしょうか。登壇3回でしたね~。 来年も登壇できたらいいな!

お仕事

インターンでお世話になっていた株式会社YAGOへ就職しました。

yagoinc.jp

新卒として入社したのは私のみのため、いわゆる同僚がいません。が、楽天出身の社長とMarpを開発したエンジニアさんの「つよつよメンバー」に囲まれてとても充実した社会人生活を送っています。

新サービス(クラスモールキッズ)の立ち上げと運営をし、とても新卒とは思えないほど貴重な経験をさせていただいています。本当に新卒なんですかねぇ??

私の担当業務は講師(マネジメント)、教材開発、カスタマーサポート(教育版マイクラトラブルシューティング対応、クラスの振替調整)など幅広くやっています。教材開発はプログラミング言語を使ったアプリケーション開発ではありません。教育版マイクラのアドオン開発になるので、主にマイクラのコマンドを組み合わせたビヘイビアパックを作ります。

イクラが仕事になるってなかなかないですからね。やりたいこともいろいろありますし、会社も大きくしていきたいですね!

趣味活動

プロジェクトのサイトを更新中

趣味でマイクラ×テックを学べるようなサイトを開発中です。すでに以前作ったサイトがあるのですが、UIライブラリに依存していたり、あまり長期的に運用できるような構成をしていなかったので、リニューアルです。

というより、Webサービスってどうやって作るのかな~という勉強がてらです。例えばユーザから見えるサイトと、管理者用のサイトで分けたり、データベース設計してみたりと自分のペースでいろいろやっています。ただ、業務での開発経験がないので ChatGPT と相談しながら手探りという感じです。

こんな感じでラフを書いて

Figmaで再現して

コーディングする

こんな感じのステップで作っていくと、コーディングするときに迷いがなくなります。

実はこれ、入社して身に着けたスキルです。私はエンジニアではないので、日々どんな風に開発が進んでいるのかを目で見て、話し合いに参加して、Slack や GitHub を覗いて・・・を経験したものを再現しているだけです。昔の職人さんみたいに背中で語る師匠から学ぶみたいな感じです。ただぼうっと業務をするだけでなく、「周りの環境から吸収できるものを吸収していって自分のものにする」を意識するようにしました。

あとは「ステージング環境」というワードも入社して初めて聞いた言葉でした。それも、このプロジェクトに導入して dev / stage / production という感じのステップにしました。だいぶ業務っぽい開発手法?(もしかして一般的?)な開発方法に近づいてきたと思います。公開向け用、ステージング用、管理者用とでサーバを分けたりとインフラ周りもそれっぽくなったような気がします。閲覧数が増えたらロードバランサー導入してもいいかもですね。

技術スタックはこんな感じ。Azure Web Apps と Azure SQL Database がメインですかね~。フレームワークASP.NET Core MVC (.NET 8) です。

OSS開発

MinecraftConnection の開発もちょくちょくやってきて、今はバージョン 2.1.0 になりました。ダウンロード数も 4.4k 突破、16 stars 獲得できてなかなかの滑り出しかな~と思いますね。

結構ブログを書いていただいたり、

github.com

あとは MinecraftConnectionBE なるものをちょい開発してみたんですが、Java版と統合版でかなり仕様がことなるので思ったより大変かもしれませんw

ぜんぜん設計できていないので、正式リリースは再来年かなという感じです。やりたいことが多すぎて中途半端になりそうなので、とりあえずHOLD。

github.com

温泉めぐり

2023年から新しい趣味として温泉めぐりを始めました。独り身なので泊まれる温泉宿を探すのが大変ですが、かなり満喫してましたね。写真は新潟(越後湯沢)へ行ったときです。ほかにも幕張、伊豆高原、箱根、石和温泉伊香保温泉、赤城、鬼怒川温泉、山梨市など関東圏はだいたい行きました。まだ茨城と埼玉の温泉に行けていないので2024年は行こうと思いますね!

弟を連れ出したり

弟を連れ出すのが趣味?なんですが、今年は名古屋と熱海にいきました。弟には当日どこに行くのかを伝えずに、だいたい大きい駅で切符を渡して反応見るのが好きなのですが、新幹線の切符渡したときの驚いた顔は面白かったですねw

▼きっかけは水曜どうでしょう(大泉さん)の拉致事件ですw

名古屋はコメダ本店行ったり、矢場とん行ったり、ひつまぶし食べたりと食べてばっかりのグルメツアーでした。ドカ食い気絶部かな??

熱海はクソデカ海鮮丼食べに行きました。さすがに多かったので弟にもおすそ分けしたり。

2024年の目標

いろいろありますが、まずは社会人2年目らしい動き?をすることですかね。だいたい自分の役割がわかってきたので、コミットできるように改善できるところや維持できるところを探っていく感じでしょうか。

あとは趣味活動のWebサイトも公開できるように少しずつ仕上げていく感じですかね。管理ページ作らないとブログ(資料)の投稿ができないので、同時に2つ開発しないといけませんが。データベースの設計もありますし、まぁ自分のペースでやっていこうと思います。

ということで、こんな感じです。

  • お仕事がんばる(社会人2年目ってどんな感じなんだろ?)
  • Webサイト公開できるといいな(管理ページとDBもつくる)
  • OSS 活動を続ける&ドキュメントを頑張って書く
  • 関東以外の温泉へ行くぞ~

2024年もよろしくお願いします~!

MinecraftConnection 2.1.0 をリリースしました

お久しぶりです。

タイトルにあるように MinecraftConnection のバージョン 2.1.0 をリリースしました!

www.nuget.org

追加要素

新規で追加したものは下記の通りです

  • Teleport() メソッド
  • PlaySound() メソッド
  • Time 列挙体
  • Sound 列挙体

Teleport() メソッド

プレイヤーやモンスターなどのエンティティを指定した座標にテレポートさせます。マイクラで言うところの /tp コマンドですね。

MinecraftConnection command = new MinecraftConnection("127.0.0.1", 25575, "minecraft");
command.Teleport("takunology", 100, 64, 120);

このコード例では座標 100, 64, 120 にプレイヤー takunology をテレポートさせます。
相対座標を使いたい場合は Player クラスの GetPlayerData() から Position プロパティを参照するのがオススメです。

PlaySound() メソッド

マインクラフトの音符ブロックの音を鳴らします。

MinecraftConnection command = new MinecraftConnection("127.0.0.1", 25575, "minecraft");
command.PlaySound(Sound.Harp);

これでハープの音を鳴らすことができます。もっと高い音を出すなら double 型で第二引数に値を入れます。

command.PlaySound(Sound.Harp, 1.5);

Java版の仕様上、2.0 が最大値のようです。

Time 列挙体

これは TimeSet() メソッドで使用するための列挙体です。これまでは数値でないと時間変更できませんでしたが、Day, Noon, Night, Midnight の4種類も選べるようになりました。

command.TimeSet(Time.Day);

Dayは6000の値を持っていますので、そのまま数値として 6000 を入れても同じです。

Sound 列挙体

これは PlaySound() メソッドで使用するための列挙体です。この列挙体には音符ブロックの音しか定義されていませんので、何かMobの効果音やブロックの効果音を出す場合は SendCommand() メソッドを使用して、自力で入力する必要があります。

定義されている音リスト

public enum Sound
{
    Banjo,
    BaseDrum,
    Bass,
    Bell,
    Bit,
    Chime,
    CowBell,
    DidGeridoo,
    Flute,
    Guiter,
    Harp,
    Hat,
    IronXylophone,
    Pling,
    Snare,
    Xylophone
}

なんとなくですが、そろそろ MinecraftConnection の使い方についてのバイブルを作ったほうがいいような気がしてきました。
イクラC#の本はあるのですが、あれは「1から実装しながらC#を学ぼう」がコンセプトなので、自動化に特化した内容ではないです。

もっとマイクラっぽいことしたい人向けにコードレシピ集などを作っても良いかもですね!

C#でChatGPTのAPIを叩いて会話してみる

めっっっっっっちゃ久しぶりに記事書きますね。最近多忙でなかなか時間が取れなかったですのよ。

最近、ChatGPTが盛り上がりを見せているので私もやってみようと思ったんですね。C#で。(なぜ?)

準備

まずはOpenAIのサイトへ遊びにいって、アカウントをつくります。

platform.openai.com

アカウント作れたら画面右上のアイコンから "View API keys" を選択して、APIキーを作ります。

作ったAPIキーは二度と表示できないので、必ずメモっておくことをおすすめします。

コードを書く

エディタは何でもいいのですが、私はC#が好きなのでC#のコンソールアプリケーションのプロジェクトを作りました。

dotnet new console -o <hoge>

そしたら、NuGet から OpenAI パッケージを導入します。

dotnet add package OpenAI

ではコードを書いていきます。

using OpenAI_API;

var apiKey = "hogehoge";
var api = new OpenAIAPI(apiKey);
var chat = api.Chat.CreateConversation();

Console.Write("入力:");
var prompt = Console.ReadLine();

chat.AppendUserInput(prompt);
var result = await chat.GetResponseFromChatbotAsync();
Console.WriteLine("出力:" + result);

はい、たったのこれだけです!なんて簡単なんだ~。

試しに何かリクエストしてみましょうか。

ChatGPT優しいなぁw

ちなみに、レスポンスが長すぎると例外をスローしてくるのでうまく工夫してください。こんなエラー言われます。

Unhandled exception. System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.

参考

ありがとうございます。

qiita.com

2022年の振り返りと2023年の目標

皆様、あけましておめでとうございます。
今年も「たくのろじぃのメモ部屋」をよろしくお願いいたします!

さて、2022年は様々なことがあり濃い1年間を過ごしました。特にイベント周りやお仕事関連が多かったです。

2022年にやったこと

Ambassadors 活動

イベント、たくさんやりました!本当にたくさんでしたし、特にオフラインで開催できたのはとても嬉しかったですね。自分が担当したイベントはこちらです。

まずは3月に行われた Azureを使ったLT大会!です。私は ASP.NET Core MVCのプロジェクト作成から Azure (GitHub Actions) へのデプロイを含めたデモを行いましたが、ちょっと失敗してしまいました。リハで作っていたプロジェクトをそのままのこして作成エラーを起こし、焦ったまま作業してコミットを忘れてプッシュするという初歩的なミスが続き、結局時間内にデモまではいけませんでした。発表終わって2分後くらいに完了したのですが、そのお知らせをするのも忘れてしまいました。でもいい経験にはなりました!

mspjp.connpass.com

次に4月に行った Blazor (HTML/CSS + C#) でポートフォリオサイトを作成して公開しよう!です。SPAといえば React が主流なのかなぁという思いもありましたが、個人的にはC#を布教していきたかったので Blazor を選択しました。学生さんにも気軽に触れてほしい思いもあり、ポートフォリオ作成をやってみたところ、結構評判良かったです!

mspjp.connpass.com

次に7月に開催した Ambassadors Meetup ですね。これは本来、オフラインとして Microsoft Base 代官山で開催する予定でしたがコロナウイルス拡大のため急遽オンラインで実施しました。情報処理学会の会員むけにメールにて告知をしていただいたのもあり、30人ほどの方々に参加いただきました。Ambassadors ってどんな活動をしているのか、どうやって応募するのか、どんな特典があるのかをスライドで紹介しました。これで興味を持ってくれる学生が増えてくれると嬉しいですね!ちなみにスライド資料も公開していますので、興味があれば下記リンクの下にある資料欄からご覧ください。

mspjp.connpass.com

次が個人的に一番やりたかったイベント C#Minecraft プログラミングをはじめよう!です。2021年から Ambassadors 活動をはじめて Azure, C#, Minecraft のこれまでに学んだことを総まとめとして応用していく内容になります。マイクラに興味がある方を巻き込んで、C#やAzureに触れてもらえれば嬉しいなぁという思いで開催しました。Zennにて資料を公開していますが、今も少しずつ閲覧数が増えています!

mspjp.connpass.com

zenn.dev

次に、同日21時より開催したマイクラ花火師入門のイベントです。この日、PCの前で気絶していて開始10分遅れてしまうというミスをやらかしました。それでも参加者の方にはお待ちいただき、無事に開催することができました。その節は大変申し訳ございませんでした。イベント自体はスムーズに進んだと思います!(ちなみに、このイベントの後コロナにかかりました!!なんでやねん...)

mspjp.connpass.com

そして、2022年最大のイベントである MS Tech Camp 2周年記念イベント@Microsoft Base 代官山+Youtube を開催しました!このイベントに関しては別の記事にまとめているので、もしよろしければそちらをご覧ください!

mspjp.connpass.com

blog.takunology.jp

さらに、なんと Microsoft 主催のイベントにもご招待いただきまして、学生から見た .NET について語るトークセッションというテーマで登壇しました!こんな経験めったに無いですし、Microsoft MVP の方々と直接お話できる機会をいたたき、大変光栄に思います。ありがとうございました!

msevents.microsoft.com

ということで、2022年を振り返ると過去最大の登壇数を記録しましたねw

  • イベント主催5本
  • イベント運営お手伝い4本
  • 外部登壇1本

個人的な活動

まずは大学まわり。卒業研究は第1志望だった研究室に配属され、プロジェクト実験でやっていた内容を引き続き続けていくことができました。進捗もかなり出ていたこともあり、12月には学術講演会にて発表を行いました。ガチで賞をとりにいく気持ちで取り組んだのもあり、個人的にはかなり手応えを感じました。抄録(PDF)は下記リンクからご覧になれます。総合科学部会の A-6 です。

www.cst.nihon-u.ac.jp

次はOSSまわり。MinecraftConnection をアップデートして日本語表示を可能にしました。これまでは CoreRCON というライブラリに依存していたのですが、仕様変更があったときに対応しないといけないためマイクラで使用されているパケットを調べて、自力で実装しました。といっても先人の資料を見ながらつくっているのでロジックはほぼ同じですね。単に依存関係をなくすための措置なので今のところはこれで十分だと思っています。まだ非同期部分を実装していないので将来的にはアプリでも使えるように非同期対応もしていきたいと思っています。(その前にマイクラのコマンドも早く実装していきたいところですが...)

github.com

次はお仕事。教育版マイクラを使用したプログラミング講師をしています。相手は小学生なので、どうやって教えたらわかりやすいか、いかに難しい概念を噛み砕いて説明するのかを考えていました。もともと接客業のアルバイトをしていたので保護者の方(大人)への対応はいいのですが、子どもと接するのははじめてだったので、かなり緊張しました。「先生」というよりも「親戚のおじさん」感を出したほうが、気軽に取り組んでもらえるし、何よりも学校ではないので縛られずに自由な発想で色々とやってほしいなぁと思っています!なんか宣伝みたいになってしまいますが、興味があればぜひ下記リンクより覗いてみてください。

lp.classmall.jp

そして執筆。いや~これはかなり大変でした。約2ヶ月かけて約35万字を書きました。去年の目標にしていた本の執筆その2ですが、無事達成したとともに反響がすごかったです。しかもこれは想像していなかったのですが、「マイクラ C#」でググると1番目に出てくるようになりました!!(めっちゃ嬉しいやんけ!)
イクラのコマンドからC#の基礎、C#の応用例、アプリ(WPF, WinUI, Blazor)の作り方、Azure(VM, Functions, AppServices)など、自分がこの2年間で学んできたものの集大成をぎゅっと1冊にまとめたものです。これを販売しようか悩んだのですが、ターゲットを学生にしていたので無料で公開することにしました。これで少しでも MS の技術に興味を持ってくれれば嬉しいです!

zenn.dev

2023 年の目標

2022年はやりすぎた年だったかもしれないのと、今年からは社会人として活動していきますのでまずは仕事を覚えることから始めたいです。とにかく仕事を早く覚えて、いかにコミットしていけるか、スピード感も大事ですがクオリティも下げない、そのためのコツを早くつかめるようになりたいですね。

本の執筆もしたいとは思っているのですが、そこまでの余裕があるかがちょっとわからないですねw
ただ、MinecraftConnection のバージョンが上がって破壊的な変更箇所があるので必ずどこかで執筆はしたいと思っています!

あとはイベント登壇などはどうしようか悩み中です。もしかしたら新しいコミュニティ(マイクラ+C#関連)を立ち上げる可能性がありますが、まだ未定です。3月で Ambassadors 卒業なので次のステージへ踏み出すためにも探っていきたいところです!

感想

2022年は学生生活最後ということで、卒研も MLSA もお仕事(インターン)も精一杯取り組むことができたと思います。MLSA になって2年経過しますが、色んな方々と交流を深めながら技術を磨き、学んだことをアウトプットすることの習慣づけができた年だったと思います。実は11月の終わりに九州工業大学の皆さんとお話する機会があったのですが、そこでもアウトプットの大切さやどうやってその一歩を踏み出すかの話をしました。「自分も最初はこんな感じだったかも」という初心?を思い出すことができ、いい振り返りにもなったと思います。また、学生から社会人へのシフトはかなり大変で、学生気分が抜けていないところもあったかもしれません。ただ、この経験ができるのも今のうちだと思いますので、日々精進(やっていき!!)ですね!

まとめ

【2022年】

  • イベント10本(内5本主催)
  • Zenn にて「マイクラ C#」の本を出版、反響がすごかった
  • 学術講演会にて研究発表
  • 小学生向けプログラミング教室の講師になった
  • インターンも始めた

【2023年の目標】

  • 仕事を早く覚える
  • イベント登壇やコミュニティを探す
  • MinecraftConnection の整備
  • MLSA 卒業に備えてなにかする!(引き継ぎ&たくのろじぃラストイベント?)

【.NET MAUI】入力した文字をダイアログ(ポップアップ)で表示する

最近、なかなか .NET の技術を追えなかったのですが少し時間ができたので .NET MAUI を触ってみようと思います。まずは入力と出力のキホンから。

デザイン

適当に作ります。XAMLコントロールは MS の公式ドキュメントを漁ると出てくるので、それ通りに書いてみます。

<ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">
            
            <Label
                Text="なんかいい感じのアプリ"
                SemanticProperties.HeadingLevel="Level2"
                SemanticProperties.Description="Welcome to dot net Multi platform App U I"
                FontSize="18"
                HorizontalOptions="Center" />

            <Entry 
                x:Name="TextInput"
                Placeholder="なにか入力して"
                WidthRequest="100"
                />

            <Button
                x:Name="TextBtn"
                Text="押してね!"
                Clicked="OnTextBtnClicked"
                HorizontalOptions="Center"
                />

        </VerticalStackLayout>
</ScrollView>

コードビハインド

なんかポップアップを表示できるみたいなので、試してみます。WPFでいうところの MessageBox ですね。

private async void OnTextBtnClicked(object sender, EventArgs e)
{
    await DisplayAlert("あなたの入力した文字は", $"{TextInput.Text}", "閉じる");
}

たったこれだけで表示できるのすごいですよね~! C#アプリ開発を経験したことがあれば、x:Name でコントロールを指定して、その中の Text プロパティを文字列補間で表示しているんだなぁ~みたいな雰囲気で書けます。

実行結果

まずは Android 12 (Google Pixel 5 エミュレータ)

次に Windows

たったこれだけで複数のプラットフォームに対応するのやばいw
しかも Windows の場合はダイアログとして表示できます。WinUIのダイアログって XamlRoot とかが必須で結構面倒なのですが、MAUIだと簡単ですね。

MAUI、面白いです!

参考

learn.microsoft.com

learn.microsoft.com

Visual Studio 2022 17.4.0 における .NET SDK リゾルバーエラーの対処方法

問題点

Visual Studio 2022 のバージョンを 17.4.0 にアップデートすると、既存のプロジェクトを開けないだけでなく、プロジェクトを新規作成してもソリューションとして作成されずに何もできなくなる。

 SDK リゾルバー エラー: "SDK "Microsoft.NET.Sdk" を解決しようとしているときに、SDK リゾルバー "Microsoft.DotNet.MSBuildSdkResolver" に失敗しました。
例外: "Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestCompositionException: マニフェスト 'microsoft.net.workload.mono.toolchain.net7' [C:\Program Files\dotnet\sdk-manifests\7.0.100\microsoft.net.workload.mono.toolchain.net7\WorkloadManifest.json] 内のワークロード定義 'wasm-tools' が、マニフェスト 'microsoft.net.workload.mono.toolchain' [C:\Program Files\dotnet\sdk-manifests\7.0.100\microsoft.net.workload.mono.toolchain\WorkloadManifest.json] と競合しています

既存のプロジェクトを開こうとしたとき

プロジェクトは読み込めず、例外が発生する。

Visual Studio で新規作成したとき

ソリューションの中は空っぽになっており、スタートアッププロジェクトも指定できない。

dotnet コマンドから新規作成したとき

Unhandled exception: Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestCompositionException: マニフェスト 'microsoft.net.workload.mono.toolchain' [C:\Program Files\dotnet\sdk-manifests\7.0.100\microsoft.net.workload.mono.toolchain\WorkloadManifest.json] 内のワークロード定義 'wasm-tools' が、マニフェスト 'microsoft.net.workload.mono.toolchain.net7' [C:\Program Files\dotnet\sdk-manifests\7.0.100\microsoft.net.workload.mono.toolchain.net7\WorkloadManifest.json] と競合しています

解決策

.NET 7 のプレビュー版をアンインストールする。

これでプロジェクトを開いたり、新規でプロジェクトを作成できるようになりました。めでたし👏

試したこと

Visual Studio のバージョンを戻す。

しかし、バージョンを 17.3.3 に戻してもプロジェクトを読み込めなかった。あとで気づいたけど .NET SDK 自体のエラーなので Visual Studio はただの被害者でしたw

参考

stackoverflow.com

イベントのお知らせ

2022年12月5日に MS Tech Camp #19 ~Imagine Cup PreEvent~ が開催されます!
マイクロソフトが主催する世界最大規模の学生向けITコンテスト“Imagine Cup”が今年もやってきます。 Imagine Cupの概要、これから挑戦するチームに向けてのエントリー方法などを紹介します。 特別セッションとして Imagine Cup 2022のアジア教育部門で優勝した現役高校生のTeam Lazeによる特別セッション、そしてパネルディスカッションとQ&Aがあります! ぜひご参加ください!

mspjp.connpass.com

Microsoft の学生コミュニティに興味がある学生さんへ

日本では約7名が活動している Microsoft Learn Student Ambassadors は、Microsoft 製品や技術を広める活動を行っています。興味がある方は下記リンクを覗いてみてください。応募方法や特典など、役立つ情報をまとめてみました!

speakerdeck.com

学生の皆さまの参加をお待ちしております!

【イベント報告】MS Tech Camp 2周年記念イベントの振り返り

こちらのイベントは 2022年10月30日に開催された、MS Tech Camp 2周年記念イベント@Microsoft Base 代官山+Youtube です!

mspjp.connpass.com

準備の話

本イベントを企画しようと思ったきっかけ

どこから記事にしようか考えましたが、まずはイベントを考えるところからですかね。定例MTGで「そろそろ2周年ですね~記念イベントやりますか~」という軽いノリで始めました。「今回はオフラインイベントにしたいですね~」ということで、以前やろうと思っていたイベント(Ambassadors Meetup)で使用する予定だった、Microsoft Base 代官山での開催を目標にしていました。感染が広がらなければ、感染対策ガイドラインを守れば大丈夫ということで、会場の予約を社員さんにお願いしました。

イベントの内容をどうするか

次にイベントのテーマですね。1周年記念の場合は「アナログをデジタルにする」というテーマで、リモートワークやオンライン授業の普及によってデジタル化が普及した社会で、何が出来るのかを考えていました。今年はオフラインでやる前提で進むので、オフラインといえば「交流」があるといいよねという話になりました。でも、「交流してくださいね~」の一言でみんな交流できるのか不安でした。もしかしたら1人ぼっちになってしまったり、すぐ帰ってしまう人がいるのでは?と。そこで、HoloLens や Surface を触れる体験会を考えました。じゃあオフライン参加はなしにするのかなぁと思いましたが、いままでオンラインでもやってきましたので、ハイブリッド開催にしましょうということでまとまりました。

あとはゲスト登壇していただこうとも考えており、にー兄さんつながりでイワケンさん、竹内さんの Imagine Cup つながりで永田さんにコンタクトを取っていただきました。お二人共快く引き受けていただき、お忙しい中スライドを作成いただきました。私も何かしたいなぁと思ったので、マイクラでできる対戦ゲーム(鉱石つかみゲーム)の制作に取り掛かりました。(といっても、色々あって当日の深夜1時ごろから作りました...。とりあえず動いて良かったw)

Microsoft Base 代官山への下見

しばらくして、ゲストお二人を交えたMTGを行いました。そのときに、「機材はどんな感じですか?」という質問があり、私達も「そういえば何があるかわかりませんね...」となりました。そこで、イベント1週間前に下見へ行きました。第一印象は「めっちゃ綺麗で広い!」でした。席や椅子、スクリーン、マイクやインターフェースなど必要なものはだいたい揃っおり、HDMIケーブルやVGAもあったので、あとはどうやって接続して使うかですね...。これが結構難しく、オフラインであればマイクをインターフェースに接続し、スクリーンにPCの画面を投影するだけで良かったのですが、配信となるとPCの画面と音声も入れつつ、会場の様子も映したいということで結構大変でした。1時間程度で終わる予定でしたが結局2時間くらいかけて確認しました。

当日開始前

私個人としてはマイクラゲームが動くかどうかをチェックしていました。会場でサーバを立てるよりも、予めサーバを立てておいたほうがいいかなと思い、Azure VMを使用してマイクラサーバを立てました。あと、2人で遊ぶにはアカウントも必要なので追加で1つ購入しました。

Microsoft Base 代官山へ到着したとき、ものすごい人だかりができていました。「もしかして新しい客層ゲットの予感??」と思いましたが、どうやら下の階がアパレルショップになっており、その開店を待っていたようですw(残念w)

会場へ入ったあとは机と椅子の配置を確認し、スライドの修正、配信テストなどを行いました。下見で色々と確認していたおかげもあって1時間もかからずに準備できました。楽しくおしゃべりしながら準備していたら、ちょうどゲストのお二人も来られたのでスライドのチェックをしていただきました。お昼はスーパーとコンビニ組で分かれて買い出しに行き、みんなで食べました。永田さんの高校生活の話、イワケンさんのコミュニティについての話、学生の交流についてなど色々とお話していました。ここで「高専」の話題が出たのは個人的に嬉しかったですw

そういえば開始直前になって配信用のPCが、皆様おなじみの画面でいっぱいになるトラブルもありましたねw
やはり、本番は何が起こるかわからないwww

イベント本番

どうしましょう...書きたいことがいっぱいあってブログとしての手軽さがなくなりますね...。当日の盛り上がりに関しては Twitter をご覧ください!!

あと Youtube リンクも貼っておきますので、ぜひご確認を!

youtu.be

永田さんの登壇「高校生がプログラミング言語作ってみたけど質問ある?」

いや、タイトル強くて草。開発に至った背景やその開発方法、ちょっとした技術など、とても高校生とは思えないほどの完成度で驚きました!ぜひ MLSA に Join して欲しいですね~

イワケンさんの登壇「オンライン時代の技術仲間の増やし方~4つのコミュニティ事例を添えて~」

この時期だからこその大切なテーマですね。同じ趣味を持った仲間同士でどうやってつながるのか、どうやってコミュニティを見つけて参加していくのか、運営する立場として何が必要なのかなど、学びの多いコンテンツでした!

そして、準備段階で心配していた「交流できるか」問題でしたが、見てくださいこの写真!

いざというときに Ambassadors で話を広げようと思ったのですが、後半スタートしたらみんなで輪をつくるようにして雑談が始まりました!この光景を見て、私は思わずテンションが上がりました。会場カメラマンとして色々なグループに突撃しては、どのような話をしているのか、どんな活動をされているのか、質問をしまくりました。(インタビューに答えて頂いた皆さまありがとうございました!)

おかげでお菓子を食べ損ないましたが、それだけアクティブだったということで嬉しさと楽しさでいっぱいでしたね~。やはり技術好きな学生さんや社会人の皆さんが集まれば自然と交流ができるようになるのでしょうね~。このあたりは、にー兄さんと「まるで技育博みたいですね~」と話していました。学生の間は誰かと交流をすることが大切なんだなぁと改めて思いました。

あと個人的に気に入っている自己紹介のシーン。よく撮れてますね~

イベント終了後は打ち上げがてら運営のみんなで食事へ行きました。なんと、そこでも技術について語ったり、学生生活の話をしたり、おだしょーさんの iPhone 話?が聞けたりと交流会の延長のような形で続き、とても楽しかったです!

感想

今回は参加者の皆様の協力もあり、イベントは大成功でした!

オフラインイベントは私にとっては初で、色々な面で心配事がありましたが杞憂でした。当日なんとかなるというスタンスで挑み、楽しみ、そして多くの人と交流できたことで思い出にもなりました。事前準備で「運営も大事だけど何よりも楽しむことが大事」と言われたことを思い出し、素直に楽しめたのが功を奏したのかもしれません。あと、事前準備に時間をかけたおかげで当日の準備時間を短縮できたので、事前準備がいかに大切かがわかりましたね。幸いなことに、メンバー全員しっかりしているので確認すべきチェックリスト項目を作っていたのも良かったのかもです。

今回でオフラインイベント開催の経験は得られたので、あとはいかに盛り上げていくかの「手段」についても色々と検討できたらなと思っています。いわゆる「さらなる改善」というもので、何かしらの課題を見つけながらより良くしていく。まさにMSの「より多くのことを達成できる」ようにしていきたいと思います。

謝辞

ゲストとして登壇してくださった永田さんとイワケンさん、オフラインで当日会場を盛り上げてくださった皆様、オンラインで参加して TwitterYoutube を盛り上げてくださった皆様、そしてMS社員の鈴木(のり)さんには配信周りや機材のセッティング、森口(りえ)さんには受付や買い出しなど、様々な面でサポートいただきました。皆様に改めて感謝申し上げます。ありがとうございました。

これからも MLSA のイベントを応援していただけますと幸いです。ぜひ、イベントにも(オンライン・オフライン・学生・社会人問わず)参加していただけますと嬉しいです!

このイベントには続きが...?

さて、このイベントまだ続きます。今回イベント登壇していただいた永田さんに再度ご登壇いただき、Imagine Cup にフォーカスした内容でお届け!
Imagine Cup に興味のある方、永田さんに色々質問したい方はぜひ下記リンクよりお申し込みください!!会場はなんと、日本マイクロソフト品川オフィスでございます!

mspjp.connpass.com

Microsoft の学生コミュニティに興味がある学生さんへ

日本では約7名が活動している Microsoft Learn Student Ambassadors は、Microsoft 製品や技術を広める活動を行っています。興味がある方は下記リンクを覗いてみてください。応募方法や特典など、役立つ情報をまとめてみました!

speakerdeck.com

学生の皆さまの参加をお待ちしております!

【雑談】色々と忙しくなってきたけど、めっちゃ楽しくなってきた話(近況報告的なやつ)

最後にブログを書いたのは7月10日ということで、気づけばもうすぐ3ヶ月ほど経ちます。この3ヶ月間はかなり濃かったので、その日記がてら色々と書いていこうと思います。

7月

  • イクラプログラミング講師になった
  • 卒研の進捗が出た
  • Ambassadors Meetup 2022 (オンライン)イベントの開催
  • 進路相談

イクラプログラミング講師になった

ツイッターのDMで「MInecraft を使ったプログラミング講師になりませんか?」と届きました。最初は「どうせ釣りやろ~w」とか思っていましたが、添付資料がガチもので何度も読み返しました。まだ小さな会社ではありますが、とても真剣に企画されていたのでオンライン面談を受けることに。CEOの方は想像していた方よりもずっと若く、めっちゃエネルギーを感じました。こちらも負けじと、これまでに活動してきた実績(Ambassadors やマイクラ関連)を語り続けました。おそらく10分くらい早口オタクだったかも...w

結果として、採用していただき classmall Kids さんのほうでマイクラのプログラミング講師をさせていただいております。現在はビジュアルプログラミングを担当していますが、将来的にはテキストプログラミングやらサーバ構築やらMod開発なんかもやるのでしょうかね。。。

lp.classmall.jp

ちなみに、今現在も講師は募集中なようですので興味があれば。

open.talentio.com

卒研の進捗が出た

卒研では基板設計・レーザー加工、電子回路製作、3Dプリンター設計・加工、ソフトウェア開発、実験動物(ザリガニ)のお世話をしています。 詳しいことはお話できませんが、先行研究よりも小型で低コストな実験装置を開発できたのでいい感じです。まだまだプロトタイプなので、製品化できるくらいのクオリティを目指したいものです。

Ambassadors Meetup 2022 (オンライン)イベントの開催

Microsoft Learn Student Ambassadors (MLSA)の過疎化問題。それは大学の卒業に伴い、日本のMLSA人口が減少してしまうことによる絶滅の危機!みたいな感じです。そこで、MLSAの応募方法や、何がお得なのかなど1時間かけてじっくり説明するイベントを企画しました。本来はオフライン開催の予定でしたが、新型コロナウイルスの感染者数増加に伴い、オンライン開催へと変更しました。

mspjp.connpass.com

情報処理学会の方にも呼びかけていただき、20人以上の学生さんが集まってくれました。これで興味を持ってくれると嬉しいのですが...

進路相談

これまでの人生史上1,2を争うくらいに悩みました。卒研テーマが面白いし修士での研究内容も決まっていたので大学院でも研究を続けたい、でもマイクラとプログラミングを使った仕事を本格的にやっていきたいという、両者へのモチベーションが全く同じだったからです。

【進学ルート】

  • 今の研究を続けられる
  • 専門性を高められる(自分の場合は工学全般+生物物理学)
  • 修士号を取得できる
  • 論文を執筆できる(名前が乗るので実績になる、自分が生きていたことの証明になる)
  • コロナ禍で通学できなかった2年間を取り戻せる
  • 研究室の先生に色々相談できる(ちなみに今も、一緒に食堂でご飯食べたり、雑談したりしている)
  • MLSA の活動を続けられる

【就職ルート】

  • 収入があるので自立できる
  • 仕事が魅力的で個人的にベストマッチ
  • ビジネスに必要な知識や経験が得られる
  • 研究生活よりもゆとりができる(と思う)
  • しばらくは進路に困らない
  • 就活しなくて良い(ちなみに、この日までエントリーシートとか書いたことない)
  • Microsoft MVP へ挑戦できる

この両者のメリット・デメリットを2週間くらい考えていました。親にも色々相談しましたが、結論は出せませんでした(どちらを選択しても良いと言ってくれたので)。もともとは大学院進学を考えていましたが、マイクラとプログラミングを使った仕事ができるのが本当に魅力的だったんですね。フルタイムではないので両方やればいいとも考えましたが、さすがに修士課程は学部の比ではないほど忙しそうなので中途半端になってしまうと思いました。それでは両者に失礼ですし、自分も不完全燃焼感に悩まされるかもしれません。あとはもし、仕事をここで断ったら二度とベストマッチした仕事に出会えないかもしれないという、若干の恐怖もありました。結局、自分だけで結論は出せずに色々と相談に乗っていただきました。この場をお借りしてお礼申し上げます。ありがとうございます。

そして、私が選択したルートは「就職」です。研究室の先生も応援してくださるとのことで、自分は本当に良い人たちに囲まれているなぁと感じました。幸せ者です。

ちなみに、高専から大学へ編入すると大学院まで行かないと意味がないと言われがちですが、「進路を考える時間や実績が作れる」のでそのまま就職しても全然問題ないと思います。もし進学と就職で悩んでいる高専生がいたらぜひ。

8月

  • 卒研の進捗が出た2
  • Minecraft with Code Project のサイト改善
  • C#でマインクラフトプログラミングをはじめよう! のイベントの開催
  • イクラ花火師入門 のイベント開催

卒研の進捗が出た2

かなりいいデータが取れました! が、これ以上詳しくは話せないので以上です!

Minecraft with Code Project のサイト改善

こちらのサイト、最近また手つかずなのですがリファレンスのページを GitHub と連携することで、リポジトリにプッシュされた Markdown ファイルを表示できるようになりました。今までサンプルコードをHTML内にベタ書きしていたのですが、さすがに面倒なので作業を簡略化できるようバックエンドを改善しました。

何をどうやったかは記事にもまとめたので、よろしければどうぞ。

zenn.dev

C#でマインクラフトプログラミングをはじめよう! のイベントの開催

これ、2時間にもおよぶ大イベントでした。2時間ぶっ通しで解説し続け、なんとか走り切りました~。Azure が止まらなくて良かったw

mspjp.connpass.com

実は MinecraftConnectin のアプデが全然進んでいなかったのですが、破壊的な変更を行ったので記事との整合性がとれないなぁ~なんてことが...。イベントに併せて急いでアプデしました!

イクラ花火師入門 のイベント開催

なんと、同日にもう一本イベントをやりました。えぐいw

mspjp.connpass.com

しかもイベント直前にPCの前で寝落ち(気絶?)してしまい、開始時間が10分遅れに...その節は申し訳ございませんでした!

それでもイベント自体は成功したと思います!

9月

長期インターンを始めた

イクラのプログラミング講師を運営している会社のほうで、運営側のインターンもさせていただくことになりました。ただ、誰かが仕事を振ってくれるわけではないので初日は結構大変でした。(インターンって通常は研修とか課題とかあるんですかね?)

とにかくMTGで飛び交う用語、事業内容、各種ツールの使い方、社内ルールなどをできるだけ把握し、分からない部分は聞きながら自分が何をすべきか、どのように振る舞うべきなのかを考えてました。大学の場合は専門知識を深めて、それを論文という形にすればいいのですが、ビジネスの場合はお客様が第一ですので、魅力的な提案や企画ができるかどうかを考えないといけません。アカデミックとは違う難しさがあって楽しいです。もうすぐ1ヶ月になりますが、講師以外にも様々な仕事に手を出しているのでオープンポジションみたいな立ち位置になっています。もちろん、エンジニア(フロントエンド、バックエンド問わず)も諦めたわけではないので、とにかくサービスを安定して提供できるようにするのを最優先に、自分がやりたいことは後回しです。

学術講演会の申込みとレジメ作成

卒研で良いデータがとれたので、それをもとに学術講演会(大学内での学会)へ出ることになりました。研究室配属の段階で「学術講演会を目標にしましょう」ということだったので、目標は半分達成です。あとは研究発表を行うための資料作りです。どうやら優秀発表賞なる賞があるみたいなので、これを目指して準備を整えていきたいところです。

大学院へ進学しない代わりに、できるだけ学会へ参加して自分の名前を残していければ目標達成ですね! これはある意味では進学と就職の両立だと思っています。二刀流ってかっこいいですよね~(オオタニサン)

今年度(第66回)の分は、おそらく11月下旬に公開されるかもしれません。

www.cst.nihon-u.ac.jp

今やってること

もう頭の中だけでは整理できなくなってきたので、Google カレンダー開いてみました。

  • 月曜~火曜:インターン(フルタイム)
  • 水曜~金曜:卒研とゼミ / Ambassadors
  • 土曜~日曜:プログラミング講師 / イベント

あれ?結構忙しいやんけw とはなりましたが適度に体を休めながら、卒研も仕事も外部活動もしっかりこなしたいな~と思っています。忙しい方が面白いですしお寿司🍣。

GitHub Pages でカスタムドメインを使って Next.js のページを公開しようとして苦戦した話

問題点

普段 C# でなんとかしているのですが, やはり Web 系にも触れておくべきだと思って TypeScript + Next.js を使って SPA を作る練習をしています. デプロイ先は GitHub Pages でいいかな~と思ったのですが, カスタムドメインを設定するとなぜか CSS が適用されませんでした. github.io のアドレスでは正しく表示されているのですが, なぜ表示されないのか疑問でした。

解決策

どうやら、next.config.js にて assetPrefix が必要みたいです。

module.exports = {
  basePath: process.env.GITHUB_ACTIONS ? "/hoge.com" : "",
  trailingSlash: true,
  assetPrefix: '/',
};

どゆこと?

チュートリアルサイトでは basePathgithub.io のディレクトリ名を入れましょうと書いてあったので、そのまま入れて GitHub ワークフローを実行していました。最初はカスタムドメインを使用していなかったので <user>.github.io/<repository> という URL で公開されていました。このときの basePassgithub.io 下のルートを指していたんですね。

しかし、カスタムドメインを使用すると github.io はなかったことになります。それでも basePath では github.io 下をルートディレクトリ扱いしようとして CSS が見つからん!というようになってしまう?のだと思います。なので、CSS などが入っているルートを修正するために assetPrefix にルートディレクトリを指定してあげるわけですね。

つまり、github.io を経由する場合は特に必要はなく、カスタムドメインを使用する場合は必ずルートディレクトリを指定するようにしてあげないといけないわけです。(へぇ~)

できあがったもの

ちょっとおしゃれなページができました。

fw.mcwithcode.com

補足

とりあえず workflow ファイルとか載せておきますね。

name: Deploy on GitHub Pages

on:
  push:
    branches:
    - main

jobs:
  build-deploy:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2

    - name: setup node
      uses: actions/setup-node@v1
      with:
        node-version: '16.x'
    
    - name: Cache dependencies
      uses: actions/cache@v1
      with:
        path: ~/.npm
        key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.os }}-node-

    - name: install
      run: npm install --frozen-lockfile

    - name: build
      run: npm run build

    - name: export
      run: npm run export

    - name: add nojekyll
      run: touch ./out/.nojekyll

    - name: deploy
      uses: peaceiris/actions-gh-pages@v3
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: ./out

あと package.json とか。

// scripts の部分だけ載せておきます。
"scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "export": "next export"
  },

参考サイト

ありがとうございます~助かりました

wallis.dev

イベントのお知らせ

2022年7月24日(日)についに、対面イベント Ambassadors Meetup 2022 を開催します!
場所は渋谷区代官山にある Microsoft Base です!普段は入ることのできないスペースとなっておりますので、ぜひぜひ足を運んでいただければと思います。オンラインでも開催しますので、会場へ行けない方もお気軽にご参加ください~
内容としては Microsoft Learn Student Ambassadors の活動紹介と応募方法、特典などの紹介になります。気になっている学生さん、ぜひご参加ください!

mspjp.connpass.com

Microsoft の学生コミュニティに興味がある学生さんへ

日本では約10名が活動している Microsoft Learn Student Ambassadors は、Microsoft 製品や技術を広める活動を行っています。興味がある方は下記リンクを覗いてみてください。応募方法や特典など、役立つ情報をまとめてみました!

blog.takunology.jp

学生の皆さまの参加をお待ちしております!

Zenn にて記事を書きました

タイトルは「GitHub 上の Markdown を取得して ASP.NET Core で公開する」です。

リファレンス作るときに、なんで毎回 HTML を編集せなあかんのやと思っていました。が、MS のドキュメントを見たときに気づきました。「もしかして、Markdown を読み込めればわざわざコーディングしなくて済むのでは?」と。

リファレンスを Markdown で編集できて、GitHub で管理できれば万事解決だよなぁと思って色々試したものになります。

zenn.dev

イベントのお知らせ

2022年7月24日(日)についに、対面イベント Ambassadors Meetup 2022 を開催します!
場所は渋谷区代官山にある Microsoft Base です!普段は入ることのできないスペースとなっておりますので、ぜひぜひ足を運んでいただければと思います。オンラインでも開催しますので、会場へ行けない方もお気軽にご参加ください~
内容としては Microsoft Learn Student Ambassadors の活動紹介と応募方法、特典などの紹介になります。気になっている学生さん、ぜひご参加ください!

mspjp.connpass.com

Microsoft の学生コミュニティに興味がある学生さんへ

日本では約10名が活動している Microsoft Learn Student Ambassadors は、Microsoft 製品や技術を広める活動を行っています。興味がある方は下記リンクを覗いてみてください。応募方法や特典など、役立つ情報をまとめてみました!

blog.takunology.jp

学生の皆さまの参加をお待ちしております!