ソフトウェア開発者のための OSS、まとめてみました!

ソフトウェア開発を行なっている自分が、個人的に面白いと思ったプログラムの最新技術や、オープンソースソフトウェア(OSS)をまとめています!

MENU

Microsoft による初心者のための 生成 AI レッスン!「Generative AI for Beginners」

概要

近年、AI の中でも「生成 AI」というものが注目を浴びています。

厳密な定義は存在しませんが、一般的に「生成 AI」とは「さまざまなコンテンツを生成できる AI」または「さまざまなコンテンツを生成する学習能力がある AI」とされています。

www.nri.com

最近では ChatCPT のように何か質問を投げかけることで、条件に応じた文章を「生成」し回答してくれますし、得られた条件や回答をもとに再学習し、文章の制度をより高めることができます。

そんな「生成 AI」についてですが、Microsoft 社が初心者のためのレッスンとして講座を無料で公開してくれている OSS がありましたので、今回はこちらについてご紹介したいと思います。

今回ご紹介する OSS は、Microsoft 社が生成 AI 初心者向けに無料で公開している講座サイト「Generative AI for Beginners」になります。

Generative AI for Beginners」は日本語対応していますので、取り組みやすいかと思います!

それでは早速詳細についてみていきましょう!

目次

特徴

特徴としては以下になります。

  • トピックの概要を紹介する短い動画
  • README に記載されているレッスン
  • サンプル・コードを含む Jupyter Notebook(プロジェクト形式のレッスンの場合)
  • 学習内容を活用した課題やチャレンジ
  • 継続して学習するための追加参考資料へのリンク
  • 英語、中国語、ポルトガル語、日本語に対応

利用手順

利用方法ですが、GitHub の README.md を参照するか、公式サイトにアクセスすることで利用可能です。

github.com

microsoft.github.io

使用感

早速私のほうでもこちらの「Generative AI for Beginners」について触ってみました。

公式サイトのほうは、右上にある「Select Language」より言語選択が可能なため、私は早速「日本語」に変更して利用していました。

レッスンの内容としては全部で 12 講座あります。

まだ表題だけしか見ていませんが、概念や学習目標を確認すると「生成 AI」の基礎からアプリケーション構築までをカバーしてくれているので、こちらの講座を学習することで「生成 AI」についての知識は身につきそうだなと思いました。

個人的にも「生成 AI」については ChatGPT などを通して非常に興味があるため、「Generative AI for Beginners」を利用して早速学習していきたいと思いました!

まとめ

今回は、Microsoft 社が生成 AI 初心者向けに無料で公開している講座サイト「Generative AI for Beginners」について OSS をご紹介しました。

Generative AI for Beginners」の講座は Microsoft 社が公開しているということからとても信頼感があるため、勉強も進みやすいのではないでしょうか?

「生成 AI」は近年でも非常にホットな技術になりますので、ぜひこれを機に学習されてみてはいかがでしょうか?

ライセンス

MIT License

リンク

github.com

microsoft.github.io

お金の送金、割り勘、経費購入などお金に関する操作をチャット形式で行える新しいアプリ「New Expensify」

概要

PayPay や楽天 Pay、メルペイ、LINE Pay などの登場により、最近ではものを購入するときの方法が電子マネー決済で行われることが普通になってきました。

ほかにも知り合い同士でのお金のやり取りや割り勘なども電子マネー決済やスマートフォンアプリを使用することで簡単に済ませることができるようになったほか、2023 年 4 月からは給与の振り込みも PayPay などの一部電子マネー決済アプリで解禁となり、今やお金のやり取りの主流になりつつあります。

そんな電子マネー決済が主流になる中、アメリカでも電子マネー決済が主流になっており、その中でもとても最先端な電子マネー決済アプリとしての OSS を見つけましたので、こちらについてご紹介したいと思います。

今回ご紹介する OSS は、個人間・ビジネスどちらでも使用可能で、友人間・同僚間での送金、割り勘、経費購入などお金に関する操作をチャット形式で行える「New Expensify」になります!

New Expensify」は現在ですとスマートフォンアプリとしてリリースされています。

play.google.com

New Expensify

New Expensify

  • Expensify, Inc.
  • ビジネス
  • 無料
apps.apple.com

それでは早速詳細についてみていきましょう!

目次

特徴

New Expensify」の大きな特徴として、以下の点が挙げられていました。

  • 領収書スキャン
    • 領収書をスキャンして自動的に経費計上が可能
  • 距離追跡
    • 出張経費をキロメートルで計測・追跡が可能
  • 支払いチャット
    • 支払いのためのやり取りをアプリ上のチャット形式で対応可能
  • タスク作成
    • チャットを通じてタスクの割り当てが可能
  • チャット
    • 経費についてチャット形式での質問や個人間のやり取り、グループ会話をチャット形式で可能
  • 財務管理
    • 支出の様子をレポート化し財務状況を可視化可能

そのほかにも様々な特徴がありますので、詳細を把握したいかたは公式ドキュメントを参照ください。

new.expensify.com

利用手順

Mac など macOS であれば Node.js を利用して Web アプリとして起動することができます。

  1. nvm をインストール後、nodenpm をインストールします
    • brew install nvm && nvm install
  2. watchman をインストールします
    • brew instal watchman
  3. 依存関係をインストールします
    • npm install
  4. mkcert をインストールします
    • vrew install mkcert
  5. npm run setup-https でローカルサーバを起動します。
    • npm run setup-https
  6. etc/hosts に dev.new.expensify.com が localhost にアクセスさせるようにファイルに追記します。 127.0.0.1 dev.new.expensify.com

macOS 以外の LinuxWindows などで動作させてみたい場合は、こちらのインストール手順を参考にしてみてください。

github.com

その他、Android アプリ、iOS アプリとしてすでに公開されているので、製品版を触ってみたい方は実際にアプリをインストールしてみるのもよいでしょう。

play.google.com

New Expensify

New Expensify

  • Expensify, Inc.
  • ビジネス
  • 無料
apps.apple.com

所感

New Expensify」ですがすでにスマートフォンアプリとして製品版が公開されており、アメリカなどでは普通に使用されているアプリになっています。

チャット形式で経費のやり取りや個人間でのお金のやり取りができるというもので、今の時代のユーザーにとっては非常にとっつきやすいアプリになっていると思います。

企業での経費は各社内サービスであったり一部のクラウドサービスなどを使用されていることも多いと思いますが、今後このようなチャットでやり取りできるスマホアプリが台頭し、日本の決済サービスがガラッと変わる日が来る気がしました!

まとめ

今回は、個人間・ビジネスどちらでも使用可能で、友人間・同僚間での送金、割り勘、経費購入などお金に関する操作をチャット形式で行える OSSNew Expensify」についてご紹介しました。

すでにスマートフォンアプリとして展開されており、アメリカでは日常的に使用されているアプリになります。

チャット形式で経費計上ができたりお金のやり取りができる点が魅力的ですね。

少しでも気になった方は、ぜひ一度こちらの「New Expensify」を触ってみてはいかがでしょうか?

ライセンス

MIT License

リンク

github.com

new.expensify.com

play.google.com

New Expensify

New Expensify

  • Expensify, Inc.
  • ビジネス
  • 無料
apps.apple.com

Rust でクロスプラットフォームアプリを作成したいなら!「Dioxus」

概要

Rust というプログラミング言語をご存じでしょうか?

www.rust-lang.org

Rust は 2006 年に開発が始まった比較的新しいプログラミング言語で、その処理速度や性能の高さから MicrosoftGoogle でも新サービスの開発に利用しているほどの注目を集めている OSS になります。

Rust は独自の言語設計によるメモリ安全性が実現されており、ほかの名だたる企業なども採用を進めているなど近年非常に注目を集めています。

そんな注目を大いに集めている Rust において、クロスプラットフォームユーザーインターフェースを構築することが可能な OSS を見つけましたので、ご紹介したいと思います。

今回ご紹介する OSS は、ウェブアプリ、デスクトップアプリ、静的サイト、モバイルアプリ、ライブビューなどの数多くのマルチプラットフォームに対応したアプリを作成することができる「Dioxus」になります。

公式サイトなどを見るとデザインなども凝っており、とても力を入れていることがわかります。

それでは早速詳細についてみていきましょう!

目次

特徴

Dioxus」の特徴としては以下の点が挙げられていました。

  • 10 行以下のコードでネイティブに動作するデスクトップアプリが開発可能(Electron は不要)
  • 人間工学に基づいたパワフルな状態管理
  • 包括的なインラインドキュメント、すべての HTML 要素、リスナー、イベント周りのガイドを完備
  • 驚異的な実行速度とメモリ効率を実現
  • 高速開発を行うことが可能なホットリロード機能
  • コルーチンとサスペンスによるファーストクラスの非同期サポート

ほかにも素晴らしい特徴はたくさんありますので、より詳細を把握したい方は以下の公式ドキュメントを参照ください。

docs.rs

対応プラットフォーム

Web
デスクトップ
  • ウェブビューを使ったレンダリング、あるいは実験的に WGPU や Skia を使ったレンダリング
  • 設定不要。cargo-run を実行するだけで、アプリをビルド可能
  • 電子的な IPC を必要としないネイティブシステムアクセスの完全サポート
  • macOSLinuxWindows に対応。ポータブルで 3 mb より小さなバイナリ
モバイル
ライブビュー
ターミナル
  • ink.js のように、アプリケーションをターミナルに直接レンダリング
  • ブラウザでおなじみのフレックスボックスと CSS モデルを採用
  • テキスト入力、ボタン、フォーカスシステムなどの組み込みウィジェット

利用手順

前提条件

Dioxus」は プログラミング言語 Rust がインストールされている前提になりますので、まだインストールされていない方は以下の公式サイトからインストールをお願いします。

www.rust-lang.org

手順

ここでは「Dioxus」を使用して、Hello, world! を表示させる簡単なアプリ作成の方法について記載します。

プロジェクトのビルドや最適化、開発サーバの立ち上げなどアプリ開発時に必要なツールをインストールします。

cargo install dioxus-cli

また、以下のビルドターゲットを Rust のターゲットとして追加します。

rustup target add wasm32-unknown-unknown

その後はプロジェクトを作成します。

cargo new --bin demo
cd demo

その後、「Dioxus」を使用したアプリを作成するのに必要なライブラリを追加します。

cargo add dioxus
cargo add dioxus-web

その後、main.rs を以下の内容に書き換えます。

#![allow(non_snake_case)]
// import the prelude to get access to the `rsx!` macro and the `Scope` and `Element` types
use dioxus::prelude::*;

fn main() {
    // launch the web app
    dioxus_web::launch(App);
}

// create a component that renders a div with the text "Hello, world!"
fn App(cx: Scope) -> Element {
    cx.render(rsx! {
        div {
            "Hello, world!"
        }
    })
}

保存後、「Dioxus」を実行すると Web アプリとしてブラウザ上に「Hello, world!」が表示されるようになります。

dx serve
Hello, world!

上記のような方法で、「Dioxus」のアプリを簡単に作成することが可能です。

今回上げた手順や公式サイトを参考に、「Dioxus」を使ったアプリの構築を行ってみるとよいでしょう。

dioxuslabs.com

まとめ

fn app() -> Element {
    let mut count = use_signal(|| 0);

    rsx! {
        h1 { "High-Five counter: {count}" }
        button { onclick: move |_| count += 1, "Up high!" }
        button { onclick: move |_| count -= 1, "Down low!" }
    })
}

今回は、ウェブアプリ、デスクトップアプリ、静的サイト、モバイルアプリ、ライブビューなどの数多くのマルチプラットフォームに対応したアプリを作成することができる OSSDioxus」についてご紹介いたしました。

今とても注目を集めているプログラミング言語 Rust 向けのマルチプラットフォームアプリ開発 OSS になりますので、今後ますます注目を集めること間違いないです。

Rust を業務で普段使用されている方などは、こちらの「Dioxus」を使用されてみてはいかがでしょうか。

Web アプリ開発はもちろん、モバイルアプリやその他個人的なツールまでも簡単に作成することができるため、まずは少しだけでも触ってみると新しい発見につながるかもしれません。

ぜひ一度見てみてください!

ライセンス

https://github.com/DioxusLabs/dioxus/blob/main/LICENSE-MIT

リンク

github.com

dioxuslabs.com

docs.rs

Python で記号を使った代数計算を行うことが可能な OSS!「SymPy」

概要

今回は、プログラミング言語 Python で記号を使った代数計算を行うことが可能な OSSSymPy」についてご紹介いたします。

SymPy」とは Python ライブラリの一種で、数学の記号を使用した計算を可能にしたり、そのほか因数分解連立方程式微分積分計算をすることが可能になるものになります。

それでは早速「SymPy」の特徴や使い方などについて早速見ていきましょう!

目次

特徴

SymPy」の特徴としては以下の計算が可能ということです。

一般的な計算については対応可能ということですね。

利用手順

SymPy」を利用するには、pip または conda でインストールすることができます。

pip install sympy
conda install sympy

使用感

早速私も「SymPy」について触ってみました。

四則演算は以下のようにできます。

3+2 # 5
3-2 # 1
3*2 # 6
3/2 # 1.5

指数の計算は以下のように可能です。

3**2 # 9

階乗の計算(3!)は以下のように可能です。

sympy.factorial(3) # 6

変数宣言は以下のようにします。

x = sympy.Symbol('x')
y = sympy.Symbol('y')
z = sympy.Symbol('z')

変数を使った因数分解は以下のようにして可能です。

sympy.factor(x**2-4*x+3) # (x-3)(x-1)

微分計算については以下のようにして可能です。

sympy.diff((x+y)**3, x) # 3(x+y)^2

積分計算については以下のようにして可能です。

sympy.integrate(x+y, x) # x^2 + xy

そのほかにもまだまだたくさん計算を行うことができますので、詳細については公式ドキュメントをご参照ください。

docs.sympy.org

まとめ

今回は、プログラミング言語 Python で記号を使った代数計算を行うことが可能な OSSSymPy」についてご紹介いたしました。

Python を使用されている方は多いと思いますので、今回ご紹介した「SymPy」はとても有益な OSS かなと思いました。

四則演算、微分積分計算なども簡単に行えるのもの良いですね。

気になった方はぜひこちらの OSSSymPy」を試してみてください!

ライセンス

New BSD License

リンク

github.com

www.sympy.org

docs.sympy.org

現在主流の AI サービスについて可視化可能なサービス!「Awesome AI Agents」

概要

ChatGPT の出現を受けて、今や AI 開発はすさまじい速度で進んでいます。

Google をはじめ、Amzon、Microsoft、Meta、Apple、OpenAI などといった企業がさらなる AI を求めて開発を進めています。

そんな AI 開発戦国時代の現在において、AI サービスをまとめてくれているとても便利な OSS を見つけましたので、今回はそちらについてご紹介したいと思います。

今回ご紹介する OSS は、現在主流の AI サービスについて可視化可能なサービス「Awesome AI Agents」になります。

Awesome AI Agents」を参照することで、ChatGPT をはじめとして今主流の AI について把握することができます。

それでは早速詳細についてみていきましょう!

目次

特徴

AI 企業、プロジェクトを単にまとめているだけでなく、以下の観点でまとめられています。

これにより、AI サービスが OSS として公開されているものなのか、企業が開発・保持している OSS なのかがわかりやすくなっています。

利用手順

Awesome AI Agents」を利用するには、GitHub のプロジェクトページにアクセスするか、公式サイトにアクセスすることで参照・利用可能となります。

github.com

e2b.dev

使用感

早速私も、こちらの「Awesome AI Agents」について触ってみました。

すこし見てみたのですが、自分の勉強不足で知らなかった AI サービスから GitHub でよく見かける AI サービスなど本当に細かくまとまっている様子がうかがえました。

リストで提示されている OSS について「OPEN」のリンクをクリックすると、その AI サービスの概要だったりリンク先、公式サイトなどがシンプルにまとめられていました。

気になる AI サービスがある際は、こちらのから概要などを見てみるのもよいかもしれないですね。

まとめ

今回は、現在主流の AI サービスについて可視化可能なサービス「Awesome AI Agents」についてご紹介しました。

全体的にシンプルでまとまっていますし、対象の OSS の概要やその他公式サイトリンク先など簡潔にまとまっているため、とても分かりやすく使いやすいリストになっているなと思いました。

これから AI サービスはまだまだ伸びると思いますし、エンジニアの世界では主流になっていくと思います。

興味がある方は是非一度こちらの「Awesome AI Agents」を触ってみてはいかがでしょうか。

また、「Awesome AI Agents」自体は OSS のため、完全なリストになっていないということ、新しく発見した AI サービスがあったら気軽にプルリクしてほしいとありました。

AI サービスに詳しい方はぜひこちらのリストを参照してみて、こちらにまとまっていない AI などありましたら OSS 活動として貢献されてみるのもよいのではと思いました。

ライセンス

特に見当たりませんでした。

リンク

github.com

e2b.dev

e2b.dev

ターミナル・ブラウザ・エディタ上で複雑なタスクを AI に任せたいなら!「codel」

概要

ChatGPT が世に公開されてから、AI を使用したチャットサービスや対話型 AI などが広く普及しています。

https://chat.openai.com/auth/login

ChatGPT にタスクを任せたいが、どのサービスを使用すればよいのか、いろいろなサービスが急速に作成されていますが、どれを使用すればよいのかわからない方も多いのではないでしょうか。

今回はそんな悩みを解決できるかもしれない OSS を見つけましたので、ご紹介したいと思います。

今回ご紹介する OSS は、ターミナル、ブラウザ、エディタで複雑なタスクやプロジェクトを実行できる完全自律型 AI エージェント「codel」になります。

codel」は与えられたタスクをもとに処理を実行し、自動で次のタスクを生成、実行を繰り返すことが可能です。

それでは早速詳細についてみていきましょう!

目次

特徴

特徴としてはいかが挙げられていました。

  • サンドボックス化された Docker 環境で実行可能
  • 作業後、次のタスクを自動的に生成し実行可能
  • 必要に応じて、Web 上から最新情報(チュートリアル、ドキュメントなど)を取得可能
  • 変更されたすべてのファイルをブラウザで表示可能
  • すべての履歴コマンド・出力結果は PostgreSQL に保存可能
  • 自己ホスト型サービス
  • モダンな UI

利用手順

前提条件

前提として、以下の言語・DBなどがインストールされていることが必要になりますので、必要に応じてインストールします。

  • Go 言語

go.dev

  • Node.js

nodejs.jp

  • Docker

www.docker.com

www.postgresql.jp

バックエンドサービス

事前準備

  • .env フォルダ内のファイルを backend フォルダ内に追加する
    • OPEN_AI_KEY: OpenAI API キーを指定
    • DATABASE_UTL: PostgreSQL データベースの URL を指定(例:postgres://user:password@localhost:5432/database
    • DOCKER_HOST: Docker SDK API を指定(例:DOCKER_HOST=unix:///Users/<my-user>/Library/Containers/com.docker.docker/Data/docker.raw.sock
    • (オプション)OPNE_AI_MODEL: OpenAI モデル、デフォルトは gpt-4-0125-preview

実行方法

backend フォルダ内で以下コマンドを実行します。

go run .

フロントエンドサービス

事前準備

  • frontend フォルダ内に .env.local を作成することで環境変数を設定可能
    • VITE_API_URL: バックエンド API URL を指定、URL スキームを省略して指定(例:localhost:8080

実行方法

frontend フォルダ内で以下コマンドを実行します。

yarn dev

使用感

こちらの「codel」について実際に使用してみました。

UI 自体わかりやすく、操作性もよいので、使っていていとても楽しかったです。

自律型 AI というものに初めて触ってみたのですが、処理が次々に進んでいく感じがとても面白かったです。

まとめ

今回は、ターミナル、ブラウザ、エディタで複雑なタスクやプロジェクトを実行できる完全自律型 AI エージェント「codel」について簡単にご紹介しました。

自環境にサービスを構築し、すべての履歴や出力結果も自環境の PostgreSQL データベース内に保存できるので、ほかの人に操作内容を知られることもありませんし、完全に自分の秘書みたいに扱えそうですね。

完全自律型 AI を簡単に構築して試してみることができるので、気になる方がいらっしゃったら、ぜひこちらの「codel」を触ってみるのがよいでしょう。

ライセンス

GNU Affero General Public License v3.0

リンク

github.com

Python 互換性のある構文と処理速度が爆速な AI 開発に利用されている新しいプログラミング言語!「Mojo」

概要

新しいプログラミング言語Mojo」をご存じでしょうか?

Mojo」は Python との互換性を持つよう設計されたプログラミング言語で、AI 開発に利用されることを目的に開発された言語になります。

これまでの AI 開発者が Python で記述されたプログラムと同じような記述のしやすさを残しつつ、処理速度は Python の比ではないほど速いといわれています。

Python で記述された既存のコードを生かすことが容易、AI 開発のための学習コストを下げる、などの背景があり、このようなプログラミング言語が作成されました。

それでは詳細についてみていきましょう。

目次

特徴

プログラミング言語Mojo」の特徴としてはいかが挙げられています。

  • Python 互換の構文
  • 処理速度が C 言語並みの速度
  • 動的型付け・静的型付け両方の構文を所持
  • コンパイル型言語
  • システムプログラミング言語
  • 中間表現に MLIR(Multi-Level Intermediate Representation)を採用

利用手順

Mojo」を利用するには、開発者ツール「Mojo SDK」をダウンロード・インストールすることで、ローカル環境で動作させることが可能です。

※ ダウンロード時にはアカウント登録が必要になります。

docs.modular.com

使用感

早速私自身もプログラミング言語Mojo」を試してみました!

初めに Hello World! を試してみましたが、Python 互換性があるため、Python のコードを試してみたところ、正常に動作しました。

print("Hello World!")
Hello World!

また、「Mojo」には関数の宣言として fn を利用します。

Pythondef と同じようものですが、いくつか違いがあります。

  • 引数は型指定が必要
  • 引数はイミュータブル
  • 戻り値の型が指定されていない場合は、None が指定されたと推定
  • 関数内のローカス変数は let または var で宣言する必要有

上記のようにやや制限がありますが、「Mojo」の fn を利用した関数の処理速度は、Pythondef を利用した関数とは比べ物にならないくらいの速度になります。

(参考)

dev.classmethod.jp

また、これまで Python で記述していたソースコードも「Mojo」では互換性があるため動作するということですが、私自身が試してみたところ、一部エラーとなって動かないことがありました。

一部 Pythonソースコードは静的ソースコードに書き換えるなどの、最適化対応が必要ということでした。

ただ、Python モジュールの利用が可能であったり、方チェックがあるためバグ防止などが可能であったりで、これまで Python を利用してプログラム開発をされてきた方にとっても使いやすいプログラミング言語となっていました!

まとめ

今回は、Python との互換性を持つよう設計されたプログラミング言語で、AI 開発に利用されることを目的に開発された言語「Mojo」についてご紹介しました。

ドキュメントを見ていく中で、PythonMojo の関係性は、C と C++ の関係性にとても似ていると思いました。

それもそのはずで、「Mojo」は将来的に Python のスーパーセットとなることを目指して開発が進められているためです!

現時点では AI 開発・機械学習などを行うには Python!と呼ばれていますが、将来的には「Mojo」に置き換わることになりそうですね。

これまで Python で AI 開発や機械学習などを行ってきた方は、こちらの新しいプログラミング言語Mojo」を触ってみてはいかがでしょうか?

Mojo」の処理速度は Python とはけた違いで速いため、驚くと思います!

いち早く「Mojo」に触れ、知見を広げてみてはいかがでしょうか。

ライセンス

Apache License v2.0 with LLVM Exceptions

リンク

github.com

docs.modular.com