1.3K Views
December 09, 24
スライド概要
mishizaki
情報発信をしよう & アプリに何もしないでアプリに AI を組み込む 【登壇者募集中】.NET Conf 2024 後! C# Tokyo カンファレンス 石崎 充良 1 / 40
自己紹介 石崎 充良 ( @mishi_cs ) C# Tokyo コミュニティ管理メンバー GitHub: https://github.com/m-ishizaki blog: https://rksoftware.hatenablog.com/ 2 / 40
情報発信をしよう 3 / 40
【登壇者募集中】 【登壇者募集中】 https://csharp-tokyo.connpass.com/event/334045/ https://www.youtube.com/@CTokyo-wj8fv 4 / 40
1. (分量:04 ページ)人はなぜブログを書くのか 2. (分量:03 ページ)職場ブログを書いてほしい時は 3. (分量:04 ページ)自分が良ければ良い 4. (分量:02 ページ)締め切り駆動 情報発信 5. (分量:03 ページ)アプリに何もしないで機能を追加する 6. (分量:03 ページ)AI 機能の実装は簡単 7. (分量:03 ページ)ネタバレ・実際に追加してみる 8. (分量:01 ページ)まとめ 目次 5 / 40
OneNote は素晴らしい製品です 人は学ぶ生き物 しかし 忘れてしまう生き物 例えば OneNote https://www.microsoft.com/ja-jp/microsoft365/onenote/digital-note-taking-app しかし大きな課題も 6 / 40
おうち vs 職場 学ぶのは自分の環境 活用は職場 個人のアカウント(環境) 職場の環境 参照(コピペ) できない OneNote 仕事 PC 7 / 40
いつでも、どこからでも 学ぶのは自分の環境 活用は職場 インターネットに公開 職場の環境 参照(コピペ) できる ブログ 仕事 PC 8 / 40
職場は変わる恐れがある 職場 自分の環境 職場の環境 メンテ不可 インターネットに公開 ブログ 転 ずっと メンテ可能 ブログ 職場の環境 ブログ 9 / 40
1. (分量:04 ページ)人はなぜブログを書くのか 2. (分量:03 ページ)職場ブログを書いてほしい時は 3. (分量:04 ページ)自分が良ければ良い 4. (分量:02 ページ)締め切り駆動 情報発信 5. (分量:03 ページ)アプリに何もしないで機能を追加する 6. (分量:03 ページ)AI 機能の実装は簡単 7. (分量:03 ページ)ネタバレ・実際に追加してみる 8. (分量:01 ページ)まとめ 目次 10 / 40
職場ブログを 書いてほしい時は 11 / 40
自分で学ぶ隙を与えない 学ぶのは自分の環境 学ぶのは職場 インターネットに公開 職場の環境 職場での学びが ファストだと 自分ブログに書 かない ブログ 仕事 PC 12 / 40
時系列 新しいものが登場 調査 ブログ 調査 調査 ブログ ブログ 13 / 40
時系列 新しいものが登場 日本時間深夜 に公開 翌日の業後 調査 ブログ 調査 調査 ブログ ブログ 14 / 40
1. (分量:04 ページ)人はなぜブログを書くのか 2. (分量:03 ページ)職場ブログを書いてほしい時は 3. (分量:04 ページ)自分が良ければ良い 4. (分量:02 ページ)締め切り駆動 情報発信 5. (分量:03 ページ)アプリに何もしないで機能を追加する 6. (分量:03 ページ)AI 機能の実装は簡単 7. (分量:03 ページ)ネタバレ・実際に追加してみる 8. (分量:01 ページ)まとめ 目次 15 / 40
自分が良ければよい 16 / 40
不十分・わかりにくい 調べものをしていて、良さそうな記事を見つけました。喜んで読んでみると 記事を書いた 本人にとって 十分でわかりやすい 17 / 40
例えば C# で早いコードを書きたいけど、ベンチ マークの取り方どうやるんだっけ? https://www.google.com/search https://rksoftware.hatenablog.com/entry/2023/12/19/010000 18 / 40
例えば 検索したのは自分 C# で早いコードを書きたいけど、ベンチ マークの取り方どうやるんだっけ? 書いたのは自分 読んでいるのは 自分 自分の自分による自分のための記事 自分が書いたものが自分にとって一番わかりやすい https://www.google.com/search https://rksoftware.hatenablog.com/entry/2023/12/19/010000 19 / 40
不十分・わかりにくい 調べものをしていて、良さそうな記事を見つけました。喜んで読んでみると 別の切り口・視点・ 表現の記事 記事を書いた 本人にとって 十分でわかりやすい 自分に近い状況の人にとっても わかりやすいかもしれない 20 / 40
1. (分量:04 ページ)人はなぜブログを書くのか 2. (分量:03 ページ)職場ブログを書いてほしい時は 3. (分量:04 ページ)自分が良ければ良い 4. (分量:02 ページ)締め切り駆動 情報発信 5. (分量:03 ページ)アプリに何もしないで機能を追加する 6. (分量:03 ページ)AI 機能の実装は簡単 7. (分量:03 ページ)ネタバレ・実際に追加してみる 8. (分量:01 ページ)まとめ 目次 21 / 40
締め切り駆動 情報発信 22 / 40
締め切り駆動 情報発信 イベントに合わせて 調査・情報整理 YouTube 動画公開 スライド 公開 スライド共有サイト 職場環境 https://csharp-tokyo.connpass.com/event/334045/ https://www.youtube.com/@CTokyo-wj8fv 23 / 40
【登壇者募集中】 【登壇者募集中】 https://csharp-tokyo.connpass.com/event/334045/ https://www.youtube.com/@CTokyo-wj8fv 24 / 40
アプリに何もしないで アプリに AI を組み込む 25 / 40
1. (分量:04 ページ)人はなぜブログを書くのか 2. (分量:03 ページ)職場ブログを書いてほしい時は 3. (分量:04 ページ)自分が良ければ良い 4. (分量:02 ページ)締め切り駆動 情報発信 5. (分量:03 ページ)アプリに何もしないで機能を追加する 6. (分量:03 ページ)AI 機能の実装は簡単 7. (分量:03 ページ)ネタバレ・実際に追加してみる 8. (分量:01 ページ)まとめ 目次 26 / 40
結論 DLL 読み込み コントローラーを追加 (コントローラーを探す場所に DLL を追加) MvcCoreMvcBuilderExtensions.AddApplicationPart(IMvcBuilder, Assembly) メソッド https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.extensions.dependencyinjection.mvccoremvcbuilderextensions.addapplicationpart 27 / 40
ASP.NET MVC の頃は? DLL を置くだけでコントローラーを追加できた プロジェクトテンプレートで 生まれるコード 置いておく DLL の中身 こういったクラスを含む DLL を置いておくだけ 28 / 40
デバッグを意識したプロジェクト構成 追加で置く DLL のプロジェクト 存在感の強い長さの相対パス ASP.NET Core MVC プロジェクト 29 / 40
1. (分量:04 ページ)人はなぜブログを書くのか 2. (分量:03 ページ)職場ブログを書いてほしい時は 3. (分量:04 ページ)自分が良ければ良い 4. (分量:02 ページ)締め切り駆動 情報発信 5. (分量:03 ページ)アプリに何もしないで機能を追加する 6. (分量:03 ページ)AI 機能の実装は簡単 7. (分量:03 ページ)ネタバレ・実際に追加してみる 8. (分量:01 ページ)まとめ 目次 30 / 40
AI 機能を実装したコントローラー 背後で Azure OpenAI を呼ぶコントローラー リクエスト・レスポンスデータの型 背後で呼ぶAzure OpenAI の情報 環境変数にしておくことで 開発者ごとの Azure OpenAI が使える(OSSの複数人開発など) 開発・本番での AI の切り替え なんでもはできないように、 システムプロンプトはサーバーサイドで設定 Azure OpenAI を呼ぶコード 31 / 40
プロジェクト設定 Web プロジェクトにしておくだけでよい NuGet からこれはインストール > dotnet add package Azure.AI.OpenAI https://www.nuget.org/packages/Azure.AI.OpenAI/ 32 / 40
追加でこんなコントローラーも Web ページ上のボタンをクリックすると 指定のテキストエリアの値を 前述の AI 機能コントローラーに送信する JavaScript 33 / 40
こんなコードが必要でした DLL 読み込み コントローラーを追加 (コントローラーを探す場所に DLL を追加) MvcCoreMvcBuilderExtensions.AddApplicationPart(IMvcBuilder, Assembly) メソッド さらには前述の JavaScript も どうやって呼ぶか…… https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.extensions.dependencyinjection.mvccoremvcbuilderextensions.addapplicationpart 34 / 40
1. (分量:04 ページ)人はなぜブログを書くのか 2. (分量:03 ページ)職場ブログを書いてほしい時は 3. (分量:04 ページ)自分が良ければ良い 4. (分量:02 ページ)締め切り駆動 情報発信 5. (分量:03 ページ)アプリに何もしないで機能を追加する 6. (分量:03 ページ)AI 機能の実装は簡単 7. (分量:03 ページ)ネタバレ・実際に追加してみる 8. (分量:01 ページ)まとめ 目次 35 / 40
Pleasanter というプロダクト コントローラーを追加 (コントローラーを探す場所に DLL を追加) https://github.com/Implem/Implem.Pleasanter/blob/f6867d805850d8b912743b346923e3f272de2ea9/Implem.Pleasanter/Startup.cs#L145 36 / 40
テーブルの管理 Pleasanter のテーブルの管理という機能は、ページに HTML をコンテンツ として登録可能 Web ページにボタンを追加 追加ボタンしたボタンのクリックで 前述の AI 機能コントローラーを使用 37 / 40
実行結果 38 / 40
1. (分量:04 ページ)人はなぜブログを書くのか 2. (分量:03 ページ)職場ブログを書いてほしい時は 3. (分量:04 ページ)自分が良ければ良い 4. (分量:02 ページ)締め切り駆動 情報発信 5. (分量:03 ページ)アプリに何もしないで機能を追加する 6. (分量:03 ページ)AI 機能の実装は簡単 7. (分量:03 ページ)ネタバレ・実際に追加してみる 8. (分量:01 ページ)まとめ 目次 39 / 40
まとめ ⚫ C# Tokyo コミュニティではいつでも【登壇者募集中】 ⚫ ASP.NET Core MVC では機能追加の口が必要 ⚫ 口の用意されているプロジェクトも世の中にはある 40 / 40
ありがとうございました。 石崎 充良 41 / 40