NINA HOUSE

技術ブログ作ってみる

【AI-900】AIの基礎

AIの基礎

MS learnで必要なところまとめていく。

docs.microsoft.com

AIとは

人間の行動と能力を模倣するソフトウェアを作成すること。

  • 機械学習 - 予測を行い、データから結論を導き出す方法をコンピューター モデルに「教える」こと

  • 異常検出 - システムのエラーや異常なアクティビティを自動的に検出する機能

  • コンピューター ビジョン - カメラ、ビデオ、画像を通じて世界を視覚的に解釈するソフトウェアの機能

  • 自然言語処理 - コンピューターが文字言語や音声言語を解釈し、同じ言語で応答する機能

  • 対話型 AI - 会話に参加するためのソフトウェア "エージェント" の機能

責任ある AI を理解する

Microsoft では、6 つの原則のセットを指針として、AI ソフトウェアを開発している。

公平性

AI システムではすべての人を公平に扱う必要がある。   例)銀行の融資承認申請システム

信頼性と安全性

AI システムは確実かつ安全に実行される必要があります。AI ベースのソフトウェア アプリケーション開発では、リリース前に期待どおりの動作を確保するために、厳格なテストおよびデプロイ管理プロセスを実施する必要があります。 例)自動運転システム

プライバシーとセキュリティ

AI システムは安全であり、プライバシーを尊重する必要がある。 AI システムのベースとなる機械学習モデルは、大量のデータに依存しており、これには非公開にする必要のある個人の詳細が含まれている場合があるので考慮しなければならない。

包括性

AI システムはあらゆる人に力を与え、人々を結びつける必要がある。 AI は、身体能力、性別、性的指向、民族性などの要因に関係なく、社会のすべての部分に利益をもたらす必要がある。

透明性

AI システムは理解しやすい必要がある。 ユーザーは、システムの目的、しくみ、想定される制限事項を十分に認識する必要がある。

アカウンタビリティ

説明責任。AI ベースのソリューションの設計者と開発者は、ソリューションが明確に定義された倫理的および法的基準を満たすことを保証するガバナンスと組織の原則の枠組みの中で作業する必要あり。

フレームワークの賞味期限について

web開発でフレームワークって欠かせないと思います。
現在わたしはC#フレームワーク.NET Coreについて勉強中です。

これまでに他の言語ではPHPのLaravel、Vue.jsのNuxt.jsを触ったことはありますが、特徴はそれぞれだけど基本的にどれも同じだと思っています。各種構造を理解できれば、特定の場所に必要な機能を追加実装するだけでwebアプリとして成り立つので積極的に使っていきたいところです。

フレームワークとは

簡単に言ってしまうと「必要な機能がすでに実装されているファイルをまとめているフォルダ」です。

こんなの ↓
f:id:nina-b:20210428174614j:plain:w300

もちろんこのファイルたち、裏で密につながっています。

例えばフォームのバリデーション。
自分で一から実装すると結構面倒ですが、フレームワークに標準で簡単にバリデーションを実装できるような機能がついてたりするので重宝します。標準のセキュリティがしっかりしてたりとか。

他にも書ききれないほどたくさんの機能がついてるので、使いたいフレームワークの特徴をそれぞれ調べてみると良いと思います。

docs.microsoft.com

バージョンとは

フレームワークにはバージョンというものがあります。
(例:.NET Core3.1の3.1の部分)

だいたい数字が増えるごとにバージョンが上がっていきますが、それぞれ新たな機能が追加されたり、そのバージョンでコーディング方法が変わっていたりするのでこの数字は非常に大事です。

そこで問題になってくるのが、「どのバージョンを選べばいいのか」。

フレームワークをインストールするときにバージョンを指定することができます。例えば .NET Coreは5が最新、Laravelでは8が最新(2021/4現在)なので最新を選べばいいかというと、必ずしもそうではありません。

もちろん選び方は人それぞれなので一概に言えることではありませんが、どれを選べばいいか迷っている方の一つの判断材料になればいいなと思います。

LTS(Long-term support)について

それでは本題、フレームワークの賞味期限についてお話します。

LTS(Long-term support)はその名の通り、「長期サポート」という意味です。公式がながーくサポートしてくれるバージョンというのが、あらかじめ決まっているんです。
.NET CoreやLaravelには、バージョンによってLTSなものとそうではないものがあります。
(LTSはフレームワークに限らず、OSや言語にもあります!調べてみましょう)

.NET CoreのLTS ↓

f:id:nina-b:20210428212613j:plain:w500

.NET Core and .NET 5 official support policy

LaravelのLTS ↓ 

f:id:nina-b:20210428212655j:plain:w500

Release Notes 8.x Laravel

ごらんの通り2021年4月現在では、.NET Coreでは3.1が最新、Laravelでは6が最新のLTSバージョンとなっています。
※それぞれ期間も違うので注意が必要です。

サポート期間が終了するとどうなるのか

ではサポート期間が終了するとどうなるでしょうか。

もちろんいきなり動かなくなったりすることはありません。もしフレームワーク側に重大なバグが見つかったとしても更新されず、セキュリティのリスクが上がるなど、webアプリが少しずつ腐っていきます。

ではどうすればいいのかというと、新しいバージョンに切り替えていく必要があります。 アップデートしながら運用していかなければなりません。
新しいバージョンを選ぶ時も、LTSを考慮する必要がありそうです。

まとめ

フレームワークを使ってwebアプリを開発・運用していくことを考えると、LTSは必ず検討しなければなりません。
もちろん最新バージョンにしかない新しい機能が使いたい!という場合は、LTSでなくともそのバージョンを選択する必要があると思います。

最適なバージョンを自分で選択できるようになりたいなと思います。おわり。

はじめに

技術ブログ開設

技術ブログを開設してみました。
C#, .NET Core, Azureがメインです。とりあえずわからないところをサクサクまとめて、後から見返せるようにというところまでが目標。

スペック

  • プログラミング歴1年
  • バックエンドエンジニア1年生
  • Java Script, PHP, Laravel勉強→就職
  • Vue.jsはちょこっとわかる
  • C#歴そろそろ5か月

C#がわからない

わからない。なんでこんなにわからないのかってぐらいわからない。
今までスクリプト言語しかやったことなかったのでコンパイラ言語はこれが初めてだけど、それにしてもわからない。(でも好き)
いい加減スラスラかけるようになりたいので、ど基礎から人に教えるぐらいの気持ちでこのブログにまとめていく。がんばる。

個人的ルール

  • 終業後30分~1時間で書く
    • 30分で書き終わるかどうか判定、1時間まで延長可
    • 書き終わらなければ翌日に持ち越し
  • マークダウン記法で書く
  • ネタはNotionで別途管理
  • とりあえず1か月やってみて、更新ペースについて再考

まとめ

.NET Core(特にRazor Pages)は日本語だとなかなかまとめが見つからないので、とにかく丁寧に書いていきたい。
初日終わり。