OSS まとめてみました!

個人的に面白いと思ったオープンソースソフトウェア(OSS)をまとめてみました!

MENU

文字情報から画像を AI が生成する Disco Diffusion を簡単に実行してみたいなら!「DiscoArt」

概要

状況を説明するだけで AI がその状況にあった画像を作成してくれる技術をご存じでしょうか?

こちらは Disco Diffusion と呼ばれる AI モデリング手法で、Text-to-Image を実行するものになります。

github.com

上記のような画像を作成することができ、もはや何が本物で何が AI で作成されたものが分からなくなりつつありますが、AI が画像を自動で作成してくれるというのは正直衝撃を受けましたね。

本家の Disco Diffusion では画像を作成する際に様々な準備や作業が必要ですが、その作業をシンプルにまとめた OSS が、今回紹介する「DiscoArt」になります。

Disco Diffusion で画像を作成する際には、こちらの「DiscoArt」を使って簡単に作成してみましょう。

利用手順

端末にインストールする際は、以下の準備が必要です。

  • Python v3.7 以上
  • PyTorch のインストール

以下のコマンドを入力して、「DiscoArt」をインストールします。

pip install discoart

上記コマンドは、セルフホスティング環境、Google Colab 環境、非 GUI 環境で利用する際でも同じように使用できます。

CLI から使用する場合は、python -m discoart create コマンドを、サービスとして使用する場合は、python -m discoart serve コマンドを入力することで実行することができます。

使用感

実際に自分もこちらの「DiscoArt」を試してみました!

使い方はとてもシンプルで、以下のコード 2 行を書いて実行するだけです!!!!

from discoart import create
da = create()

説明は以上になりますが、とても簡単に Disco Diffusion で AI 画像を作成することができることが分かります。

DiscoArt」についてもっと詳細について知りたい場合は README に記載がありますので、どのように動いているのか、起動時のログを見てみたいなどある場合は、ぜひ参照してみてください。

まとめ

今回は、本家の Disco Diffusion で画像を作成する工程をシンプルにまとめた OSSDiscoArt」をご紹介しました。

インストールが完了すれば、わずか 2 行で AI 画像を作成することができるので、一度試してみてはいかがでしょうか。

また、Text-to-Image などに興味がある方なども、勉強の意味も含めてこちらの「DiscoArtソースコードを確認してみたり、本家の Disco Diffusion のソースコードを確認してみてもよいかもしれませんね。

ライセンス

MIT License

リンク

github.com

Go 言語で Web サイトを素早く作成したいなら!「Bud」

概要

Go 言語で Web サイトを作成したいと考えたことはないでしょうか。

今回は、Go 言語で Web サイトを素早く作成することができる、フルスタック Web フレームワークBud」をご紹介します。

Bud」は Go 言語版の Ruby on Rails と考えることができるものと公式ページで言われていますので、とても期待できそうですね。

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

利用手順

※ 注意:「Bud」は本記事の執筆時点では Linux および Mac のみで動作することができるバイナリとしてリリースされており、Windows 版ではサポートされていないないようです。

要件

Bud」を利用するには以下のソフトウェアのインストールが必要です。

  • Node.js v14 以上
  • Go v1.17 以上

インストール方法

Bud」を利用する方法として、以下のコマンドを実行する方法があります。

$ curl -sf https://raw.githubusercontent.com/livebud/bud/main/install.sh | sh

上記スクリプトは、OS に適したバイナリをダウンロードし、そのバイナリを $PATH の適切な場所に移動するそうです。

上記のコマンド実行後、「Bud」がインストールされているかを以下のコマンドで確認します。

$ bud -h

正常にインストールされていれば以下のように表示されるはずです。

Usage:
    bud [flags] [command]

Flags:
  -C, --chdir  Change the working directory

Commands:
  build    build the production server
  create   create a new project
  run      run the development server
  tool     extra tools
  version  Show package versions

使用方法

今回は私自身の利用端末が Windows しかないということもあり、README の内容をまとめさせていただきます。

Bud」をインストールすると、以下のように新規プロジェクトを作成することができます。

$ bud create hello
$ cd hello

Bud」で作成されたプロジェクト内のファイルを見てみるとわずかしかありません!

$ ls
go.mod  node_modules/  package-lock.json  package.json

他のほとんどのフルスタック フレームワークとは異なり、「Bud」は非常に最小限のものから始められるようです。

実際に「Bud」で作成したプロジェクトを動作させるには、以下のコマンドを利用します。

$ bud run
Listening on http://127.0.0.1:3000

以下のようなウェルカムページが表示されれば無事にサーバーが動いています!

今回は簡単なサーバーの起動方法までを記載しましたが、本当の Web サーバー開発はこれからなので、より詳細な開発方法などについて知りたい場合は、以下の公式ドキュメントを参照してみてください。

denim-cub-301.notion.site

まとめ

今回は Go 言語で Web サイトを素早く作成することができる、フルスタック Web フレームワークBud」をご紹介しました。

フルスタック Web フレームワークとありましたが、「Bud」を新規作成した段階ではわずかのファイルしかないので、プロジェクトの開始時はとてもシンプルに始められそうです。

Go 言語で Web サイトを簡単に素早く作成したいと考えている開発者の方は、こちらのフルスタック Web フレームワークBud」を一度検討されてみてはいかがでしょうか。

ライセンス

https://github.com/livebud/bud/blob/main/License.md

リンク

github.com

denim-cub-301.notion.site

USB フォーマッターを行えるソフトウェアを探しているのなら!「Rufus」

概要

パソコンを利用する際に USB フラッシュドライブや USB メモリを利用される方は多いと思いますが、すでに利用されている USB を利用する際は初期化などする必要がある場合もあります。

そんな時、Windows のパソコンを利用できれば良いですが、Linux 端末しかない場合などは USB メモリなどのフォーマットをすることが大変な時もあるかと思います。

そのような時に利用できる USB メモリなどのフォーマッタソフトウェアを GitHub 上から発見しましたので、今回はそちらをご紹介いたします。

本日ご紹介する OSS は、起動可能な USB フラッシュドライブ・USB メモリを作成したり、フォーマットをするためのソフトウェア「Rufus」です。

Rufus」はフォーマット作業を行う以外にも以下の作業を行う際に便利とあります。

  • 起動可能な ISO ファイル(WindowsLinuxUEFI など)から USB インストールメディアを作成するとき
  • OS がインストールされていなシステムを利用するとき
  • BIOS や他の DOS ファームウェアを更新するとき
  • ローレベルなユーティリティを使用するとき

また、特筆すべき点としては動作速度にあり、インストールドライブを従来のソフトウェアの 約 2 倍近くの速度で Windows インストールドライブを作成することもできるそうです。

それでは、「Rufus」の使い方などについてみていきましょう。

利用手順

Rufus」をダウンロードするには、公式サイトの「ダウンロード」からインストールすることができます。

お使いの端末に合ったファイルをダウンロードしてご利用ください。

なお、「Rufus」は端末にインストールすることは必要なく、ダウンロードしたファイルを起動することで利用可能になります。

rufus.ie

使用感

早速私もインストールして起動してみました。

Rufus」ではインストールドライブを作成するための画面とフォーマットするための画面が表示されており、「ブートの種類」でどちらを使用するか選択します。

今回は USB のフォーマットを試してみようと思いますので、「ブートの種類」は「非ブート用」を選択します。

上記の画面で「スタート」を選択するとフォーマットが始まり、見事 USB メモリはフォーマットされます。

今回はフォーマットについて取り上げましたが、インストールドライブを作成する場合は、公式サイトを参照しながら進めていただければと思います。

まとめ

今回は、起動可能な USB フラッシュドライブ・USB メモリを作成したり、フォーマットをするためのソフトウェア「Rufus」という OSS をご紹介しました。

Rufus」は端末にソフトウェアをインストールすることなくすぐに利用することができるので、とても簡単に利用することができました。

また、インストールドライブを作成する際も、USB フォーマットをする際も同じ画面内で同じように操作でき、かつ選択項目も少ないので操作性もよさそうですね。

USB フラッシュドライブ・メモリについて、インストールドライブ作成やフォーマット処理を行いたいと考えている方は、ぜひ一度こちらの「Rufus」をご検討されてみてはいかがでしょうか。

ライセンス

GNU General Public License v3.0

リンク

rufus.ie

github.com

React.js のスキルを活かして更なるキャリアアップを目指しているなら!「React Interview Questions & Answers」

概要

皆さんは Web アプリケーション開発を React.js で行っていますでしょうか?

そして、React.js を利用して更なるキャリアアップを狙っている方はいますでしょうか?

今回はそんな、React.js のスキルを活かして更なるキャリアアップを目指している方向けの記事となります。

今回紹介する OSS は、React.js 開発者なら知っておきたい面接時の質問集「React Interview Questions & Answers」になります。

もしこれから React.js を使って更なる技術力を身に着けたいと思っている方、React.js のスキルを活かして就職活動・転職活動を考えている方がいれば、こちらの質問集を活用して更なる知識などを身に着けていってもらえればと思います。

それでは早速見ていきましょう。

利用手順

React Interview Questions & Answers」は GitHub の README から閲覧することができます。

github.com

使用感

早速自分も閲覧してみました。

質問項目数は執筆時点では 332 件ありました!!驚愕の量ですね!

こちらはただ質問が投げかけられているだけでなく、質問に対する回答も丁寧に作成されていました。

React.js についての基礎知識について詳しく説明書きがされていたり、実際のソースコード例も記載されていますので、React.js を基礎から学びなおす良いきっかけになりそうだなと思いました!

まとめ

今回は、React.js 開発者なら知っておきたい面接時の質問集「React Interview Questions & Answers」という OSS を紹介しました。

普段 React.js に触れている自分でもなかなか回答に困る質問があったりしたので、この際にしっかり復習して React.js の知識をしっかりと定着させたいと思いました。

React.js を普段利用されている開発者の方々も、ぜひ一度こちらの「React Interview Questions & Answers」を参照してみて、ご自身の React.js に対する知識チェックをされてみてはいかがでしょうか。

そして、React.js の知識について学びなおすよいきっかけになればと思います!

ライセンス

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

リンク

github.com

画像ファイルに写っている人の顔をきれいに復元描画するアルゴリズム!「GEPGAN」

概要

画像ファイルに写っている人の顔をきれいに復元するための、実用的なアルゴリズムGEPGAN」について、今回は紹介しようと思います。

こちらの「GEPGAN」は、事前にトレーニングされた FACE GAN(StyleGAN2 などを利用)にカプセル化された多様な情報を活用して、ブラインドされた顔の復元処理を実行しているということです。

利用手順

オンラインデモページ

オンライン上のデモを利用したい場合は、以下をクリックして試してみてください。

ローカル端末へのインストール方法

  1. 以下のコマンドより、リポジトリをクローンします

    git clone https://github.com/TencentARC/GFPGAN.git
    cd GFPGAN
    
  2. 依存パッケージをインストールします

    pip install basicsr
    pip install facexlib
    pip install -r requirements.txt
    python setup.py develop
    pip install realesrgan
    

使用感

今回はオンラインデモから動作確認をしてみました!

Huggingface を試してみたのが下の画像です。

元の画像と比較しても、顔部分がきれいに描画され、顔部分がトリミングされていることが分かります。

次に、Replicate.ai を試してみます。

左側の画像が元画像、右側の画像が顔部分についてきれいに復元・再描画されていることが分かりますね!

そして最後に Baseten.co を試してみます。

こちらについても左側の画像が元画像、右側がの画像が復元・再描画されている画像でこちらのきれいになっています。

GEPGAN」ではこのように元画像において人の画像を復元・描画することのできるアルゴリズムということが分かりました。

まとめ

今回は、画像ファイルに写っている人の顔をきれいに復元するための、実用的なアルゴリズムGEPGAN」について、オンラインデモを中心に紹介しました。

デモを見てみると、とても精度よく人の顔を検知しており復元されている様子が分かります。

画像ファイルから顔部分について再描画したいと思っている開発者などは、ぜひ一度こちらの「GEPGAN」を利用して、理想の画像を生成されてみてはいかがでしょうか。

ライセンス

Apache License Version 2.0

リンク

github.com

huggingface.co

replicate.com

app.baseten.co

ソフトウェアエンジニアマネージャー向けキャリア管理フレームワーク「Engineering Ladders」

概要

働き方が今大きく変わろうとしている中、ソフトウェアエンジニアの方のキャリア形成や今後のキャリアについて考える機会が最近増えたという方も多いのではないでしょうか。

私自身も今後のキャリアをどうしようかと悩んでいますが具体的に考えることは容易でなく、今後自分がどうなりたいのかということまで深堀する必要があり、何かテンプレートのようなものが欲しいな、と思うことも多々あります。

そんな中、GitHub 上にソフトウェアエンジニア専用のキャリアを考えるのに最適なテンプレートを見つけましたので、今回はそちらを紹介しようと思います。

今回ご紹介する OSS は主にソフトウェアエンジニアマネージャー向けとはなりますが、ソフトウェアエンジニアの今後のキャリアを考える・管理するフレームワークEngineering Ladders」というものになります。

Engineering Ladders」においてソフトウェアエンジニアは以下の 4 パターンに分けられると考えられていて、それぞれのキャリアとしての理想像が提唱されています。

  • Developer
  • Tech Lead
  • Technical Program Manager
  • Engineering Manager

それでは早速それぞれのソフトウェアエンジニアについてどのようにキャリが提唱されているか、掘り下げてみていきましょう!

利用手順

Engineering Ladders」では公式ページが用意されていますので、以下からご覧ください。

www.engineeringladders.com

使用感

それでは実際に「Engineering Ladders」について見ていきたいと思います。

キャリアを形成するための軸として、まずは以下の 5 つの軸を基準として考えているようですね。

技術力

技術とツールに関する知識について評価します

  1. 技術を採用する : チームによって定義されたテクノロジーとツールを積極的に学び、採用をします
  2. 専門性 : 1 つまたは複数の技術の頼りになる人物であり、新しい技術を学ぶために率先して行動します
  3. 伝道 : 調査、概念実証の作成、新しい技術をチームへの導入します
  4. マスター : システム技術全体について非常に深い知識を持っています
  5. 作成 : 内部または外部のチームによって広く使用される新しい技術を設計および作成します

システム

システムの所有レベル具合について評価します

  1. 改良 : システムを改善および拡張するために、新機能とバグ修正を正常にプッシュします
  2. 設計 : システムの技術的負債を削減しながら、中規模から大規模なサイズの機能を設計および実装します
  3. 所有 : システムの本番運用と監視を所有し、その SLA を認識しています
  4. 進化 : アーキテクチャを進化させて将来の要件をサポートし、その SLA を定義します
  5. リード : システムの技術的な卓越性をリードし、機能停止を軽減するための計画を作成します

人間関係

チームとの関係性について評価します

  1. 学ぶ : 他の人からすぐに学び、必要に応じて一貫してステップアップします
  2. サポート : 他のチーム メンバーを積極的にサポートし、彼らが成功するのを助けます
  3. メンター : 他の人を指導してキャリアの成長を加速させ、参加を奨励します
  4. 調整 : 効果的なフィードバックを提供し、議論をモデレートするチーム メンバーを調整します
  5. 管理 : チーム メンバーのキャリア、期待、パフォーマンス、幸福度を管理します

プロセス

開発プロセスへの関与のレベルについて評価します

  1. フォロー : チームのプロセスに従い、機能の一貫したフローを本番環境に提供します
  2. 実施 : チームのプロセスを実施し、全員がメリットとトレードオフを確実に理解できるようにします
  3. 課題 : チームのプロセスに挑戦し、それらを改善する方法を探します
  4. 調整 : チームのプロセスを調整し、フィードバックに耳を傾け、変更を通じてチームを導きます
  5. 定義 : チームの成熟度に適したプロセスを定義し、敏捷性と規律のバランスをとります

影響力

役職の影響範囲について評価します

  1. サブシステム : 1 つ以上のサブシステムに影響を与えます
  2. チーム : チームの特定の部分だけでなく、チーム全体に影響を与えます
  3. 複数のチーム : 自分のチームだけでなく、他のチームにも影響を与えます
  4. 会社 : 技術組織全体に影響を与えます
  5. コミュニティ : 技術コミュニティに影響を与えます

参考例

Engineering Ladders」で定義しているキャリア像はあくまで一例であり、それぞれの会社・環境によってこの 5 つの軸は変わると説明されています。

そのため、こちらで上げている 5 つの軸はあくまで参考程度に、各会社・環境に沿った軸を設定してくださいとあります。

なお、それだけだと投げやりということもあるので、こちらの「Engineering Ladders」では参考例が載っています。

一部紹介したいと思います(なお、各レベルごとの詳細に関しては各ページをご覧ください)。

  • Developer レベル 3 の場合

  • Tech Lead レベル 4 の場合

  • Technical Program Manager レベル 6 の場合

  • Engineering Manager レベル 7 の場合

上記を見るに、レベルが高いからと言ってすべての軸のレベルが高い必要はないということですね。

あくまで、各ロールの中で必要な軸を磨いていき、その中でレベルを上げていきましょうということで考えていくことが大切なようです。

まとめ

今回は、主にソフトウェアエンジニアマネージャー向け、ソフトウェアエンジニアの今後のキャリアを考える・管理するフレームワークEngineering Ladders」をご紹介しました。

近年ではキャリアについては自分で考えるということが大切だといわれていますので、ぜひこちらの「Engineering Ladders」を参考に今後のキャリアや身の振り方などを検討されてみてはいかがでしょうか。

ライセンス

Apache License 2.0

リンク

www.engineeringladders.com

github.com

午前 3 時に作業をするリバースエンジニア・プログラマーの方向けバイナリエディタ!「ImHex」

概要

今回は面白いコンセプトのエディタを発見したのでご紹介いたします!

今回紹介する OSS は、午前 3 時に作業をするときに網膜を重視するリバースエンジニア・プログラマーのためのバイナリエディタImHex」になります。

ImHex」が初めて公開されたのは 2020 年 12 月ということで比較的新しいエディタになります。

まずは簡単に特徴などを紹介していこうと思います。

特徴

README に記載されている特徴を日本語に翻訳して、こちらに転記しています。

かなりたくさんの機能があることが分かりますね!

  • 特徴的な Hex ビュー
    • Byte パッチ
    • パッチ管理
    • 以下の文字列のコピー
    • 文字列および 16 進検索
    • カラフルなハイライト
    • 開始、終了、現在のカーソル位置から移動
  • ファイルのコンテンツを強調表示する解析用の C++ に似たカスタム パターン言語
    • MIME タイプに基づく自動読み込み
    • 配列、ポインター、構造体、共用体、列挙型、ビットフィールド、名前空間、リトルエンディアンとビッグ エンディアンのサポート、条件文などなど
    • 便利なエラー メッセージ、構文の強調表示、およびエラー マーキング
  • 深夜のセッションで使用しても網膜を保護
    • デフォルトではダークモード(ライトモードも利用可能)
  • データのインポート
    • Base64 ファイル
    • IPS および IPS32 パッチ
  • データのエクスポート
    • IPS および IPS32 パッチ
  • データをさまざまなタイプ (リトルエンディアンとビッグ エンディアン) として解釈可能
  • 高速で効率的な読み込みによる巨大ファイルのサポート
  • 文字列検索
    • 文字列のコピー
    • デマングル文字列のコピー
  • ファイルハッシュのサポート
    • カスタムの初期値と多項式を使用した CRC16 および CRC32
    • MD4、MD5
    • SHA-1、SHA-224、SHA-256、SHA-384、SHA-512
  • 多くのアーキテクチャをサポートする逆アセンブラー (Capstone のフロントエンド)
    • ARM32 (ARM、親指、Cortex-M、AArch32)
    • ARM64
    • MIPS (MIPS32、MIPS64、MIPS32R6、マイクロ)
    • x86 (16 ビット、32 ビット、64 ビット)
    • PowerPC (32 ビット、64 ビット)
    • スパーク
    • IBM SystemZ
    • xCORE
    • M68K
    • TMS320C64X
    • M680X
    • イーサリアム
    • RISC-V
    • WebAssembly
    • MOS65XX
    • バークレー パケット フィルタ
  • ブックマーク
    • 領域の強調表示
    • コメント
  • データ アナライザー
    • ファイル マジック ベースのファイル パーサーと MIME タイプ データベース
    • バイト分布グラフ
    • エントロピーグラフ
    • 最高および平均エントロピー
    • 暗号化/圧縮ファイルの検出
  • ビルトインコンテンツストア
    • データベースで見つかったすべてのファイルを ImHex 内から直接ダウンロードします
  • Yara のサポート
    • 公式の Yara を使用してファイルの脆弱性をすばやくスキャン
  • 便利なツール

利用手順

ImHex」をインストールする方法について見ていきましょう。

以下の公式ページに利用 OS ごとにインストールパッケージが用意されています。

各自利用している端末にあったファイルをダウンロードし、インストールしてください。

imhex.werwolv.net

ちなみに、私の利用端末は Windows のため、「Download for Windows」からインストールをしました。

使用感

実際に私も端末にインストールして利用してみました!

バイナリエディタを触れるのは初めてなのですが、初心者でも操作性には困りませんでした。

ImHex」を少し触ってみた感想ですが、見た目や UI がきれいなので使っていて気持ちが良いですね。

自分はまだまだ使いこなせそうにはないですが、少しずつバイナリエディタを利用して、バイナリも扱えるプログラマーになりたいと思います。

冒頭で述べた通りたくさんの機能があるので、いろいろな機能を試してみたい場合はぜひ以下のドキュメントをご覧になってみてください!

imhex.werwolv.net

まとめ

今回は、午前 3 時に作業をするときに網膜を重視するリバースエンジニア・プログラマーを応援するバイナリエディタImHex」を紹介しました。

リバースエンジニアリングをされている方やバイナリを扱っているプログラマーの方、または網膜に優しくて機能がたくさんあるバイナリエディタを利用してみたいと思っている開発者の皆さん、ぜひ一度こちらの「ImHex」をご検討されてみてはいかがでしょうか。

ライセンス

GNU General Public License v2.0

リンク

imhex.werwolv.net

imhex.werwolv.net

github.com