Tech Knowledge

IT技術者の知識共有を目的とした記事を書いています

Finch: Container Management Tool

本日はコンテナ管理ツールのひとつであるFinchを紹介します。Finchはコンテナをビルド、実行、公開するための新しいコマンドラインクライアントです。AWSが開発しているDockerのようなものだと思ってもらえればいいと思います。

Finch は、ローカル・コンテナ開発のためのオープンソース・ツールである。Finchは、革新的なアップストリームのコンテナ・プロジェクト(Lima、nerdctl、containerd、BuildKitなど)を簡単にインストールして使用できるようにすることで、その促進を支援することを目的としている。

runfinch.com

このページでは、Finchのインストール方法と簡単な使い方を解説します。また、WindowsとWSL2を前提に解説します。

導入

前提条件

  • Windows10(1903 以降)またはWindows11
  • wsl2をインストール済み

インストール

FinchGitHubリポジトリから最新のFinch Windowsインストーラー(Finch.msi)をダウンロードし、Finch.msiを実行します。2024年2月1日時点ではv1.1.1が最新です。
Releases · runfinch/finch · GitHub

finch vmの起動

finchはwslの仮想マシンを作成することで動作します。 コマンドプロンプトMicrosoftのWindows Terminalを起動して、以下のコマンドを実行します。

finch vm init

Finch virtual machine started successfullyと表示されれば完了です。
vmはwslコマンドのwsl -lで確認することができ、lima-finchという名前で作成されます。実際にはこのマシンにログインする必要はありません。finchコマンドをWindows上で実行すればコンテナを管理できます。

finchによるコンテナの起動

finchコマンドを使ってコンテナを起動してみましょう

finch run --rm public.ecr.aws/finch/hello-finch:latest

イメージのダウンロードが完了すれば、次のようなアウトプットがあるはずです。

                            @@@@@@@@@@@@@@@@@@@
                        @@@@@@@@@@@@    @@@@@@@@@@@
                      @@@@@@@                  @@@@@@@
                    @@@@@@                        @@@@@@
                  @@@@@@                            @@@@@
                 @@@@@                      @@@#     @@@@@@@@@
                @@@@@                     @@   @@@       @@@@@@@@@@
                @@@@%                     @     @@            @@@@@@@@@@@
                @@@@                                               @@@@@@@@
                @@@@                                         @@@@@@@@@@@&
                @@@@@                                  &@@@@@@@@@@@
                 @@@@@                               @@@@@@@@
                  @@@@@                            @@@@@(
                   @@@@@@                        @@@@@@
                     @@@@@@@                  @@@@@@@
                        @@@@@@@@@@@@@@@@@@@@@@@@@@
                            @@@@@@@@@@@@@@@@@@


Hello from Finch!

Visit us @ github.com/runfinch

nginxの起動

他にもnginxコンテナを起動してみましょう。

finch run -d --name nginx -p 80:80 public.ecr.aws/nginx/nginx

http://localhost/ にアクセスして確かめましょう。以下のような表示になるはずです。

welcome to nginx

最後に、nginxコンテナを削除しましょう。

finch rm -f nginx

LPICとLinuCとの違いと、LinuC誕生の理由

LPICとLinuCは、ともにLinuxの技術者を認定する資格ですが、その違いは何でしょうか?また、なぜLinuCが誕生したのでしょうか?この記事では、LPICとLinuCの歴史や特徴、試験内容などを比較してみます。

LPICとは

LPICLinux Professional Institute Certification)は、Linux Professional Institute(LPI)が提供するLinuxの技術者認定資格です。LPIは1999年にカナダで設立された非営利団体で、Linuxオープンソースの普及を目的としています。LPICは世界中で受験できる国際的な資格で、現在は日本語版もあります。LPICはレベル1からレベル3まであり、レベルごとに試験科目や難易度が異なります。LPICLinuxの基礎知識やコマンド操作、システム管理などを問う資格で、特定のディストリビューションに依存しない内容です。

LinuCとは

LinuC(Linux Engineer Certification)は、一般社団法人日本Linux協会が提供するLinuxの技術者認定資格です。日本Linux協会は2000年に設立された団体で、Linuxオープンソースの普及や教育を目的としています。LinuCは2010年に誕生しました。LinuCは日本国内で受験できる資格で、日本語版のみです。LinuCはエントリーからエキスパートまであり、レベルごとに試験科目や難易度が異なります。LinuCはLPICと同様にLinuxの基礎知識やコマンド操作、システム管理などを問う資格ですが、一部の試験科目では特定のディストリビューションに関する内容もあります。

LPICとLinuCの違い

LPICとLinuCは共通点も多いですが、以下のような違いがあります。

  • LPICは国際的な資格で、英語版や日本語版などがあります。LinuCは日本国内の資格で、日本語版のみです。
  • LPICはLPIが主催し、試験センターで受験します。LinuCは日本Linux協会が主催し、インターネット上で受験します。
  • LPICはレベル1からレベル3まであります。LinuCはエントリーからエキスパートまであります。
  • LPICは特定のディストリビューションに依存しない内容です。LinuCは一部の試験科目では特定のディストリビューションに関する内容もあります。
  • LPICは有効期限が5年です。LinuCは有効期限がありません。

LinuC誕生の理由

では、なぜLinuCが誕生したのでしょうか?その理由は以下のようなものです。

  • 日本国内でLinuxの技術者を増やすために、日本語版だけでなく英語版も提供していたLPICではなく、日本語版だけを提供する資格を作りたかった。
  • 日本国内でLinuxの技術者を育成するために、インターネット上で受験できる資格を作りたかった。
  • 日本国内でLinuxの技術者を評価するために、特定のディストリビューションに関する内容も含めた資格を作りたかった。
  • 日本国内でLinuxの技術者を継続的にサポートするために、有効期限のない資格を作りたかった。

LPI-JapanによるLPICの取り扱い停止に関するお知らせは以下からご覧いただけます。
lpicj.org

まとめ

LPICとLinuCは、ともにLinuxの技術者を認定する資格ですが、その違いは歴史や特徴、試験内容などにあります。LPICは国際的な資格で、特定のディストリビューションに依存しない内容です。LinuCは日本国内の資格で、一部の試験科目では特定のディストリビューションに関する内容もあります。LPICとLinuCはそれぞれの目的やニーズに応じて選択できる資格です。

Written with Copilot

分散型バージョン管理システム: Gitの基本操作

Git入門

Gitは、分散型バージョン管理システムの一種です。Gitを使うと、ファイルの変更履歴を効率的に管理できます。また、複数の開発者が共同でプロジェクトに参加する際にも、コードのマージや競合の解決を容易に行えます。この記事では、Gitの基本的な概念や操作方法について説明します。

Gitの概念

Gitでは、ファイルの変更履歴をリポジトリと呼ばれるデータベースに保存します。リポジトリには、ローカルリポジトリとリモートリポジトリの二種類があります。ローカルリポジトリは、自分のコンピュータ上にあるリポジトリで、自分だけがアクセスできます。リモートリポジトリは、インターネット上にあるリポジトリで、他の開発者と共有できます。

Gitでは、ファイルの変更をコミットと呼ばれる単位で管理します。コミットは、変更内容や変更した人、変更した日時などの情報を含みます。コミットは、親コミットと呼ばれるひとつまたはふたつのコミットから派生します。親コミットがひとつの場合は、単純な直線的な履歴になります。親コミットがふたつの場合は、ブランチと呼ばれる分岐した履歴になります。

ブランチは、異なるバージョンや機能を並行して開発するために使います。ブランチを作成することで、他のブランチに影響を与えずに自由に変更を加えることができます。ブランチをマージすることで、ふたつのブランチの変更を統合することができます。マージする際には、競合と呼ばれる同じ箇所の変更が衝突する場合があります。その場合は、手動で競合を解決する必要があります。

Gitの操作方法

Gitを使うためには、まずGitをインストールする必要があります。インストール方法は、使用するオペレーティングシステムや環境によって異なります。詳しくは、公式サイトを参照してください。

git-scm.com

Gitをインストールしたら、次にGitの設定を行います。設定は、以下のコマンドで行えます。

git config --global user.name "Your Name"
git config --global user.email "Your Email"

これらのコマンドは、自分の名前とメールアドレスを設定するものです。これらの情報は、コミットする際に使用されます。

次に、リポジトリを作成またはクローンします。リポジトリを作成する場合は、以下のコマンドで行えます。

git init

これは、現在いるディレクトリに空のローカルリポジトリを作成するものです。

リポジトリをクローンする場合は、以下のコマンドで行えます。

git clone <url>

これは、指定したURLからリモートリポジトリをコピーしてローカルリポジトリを作成するものです。

次に、ファイルの変更をコミットします。コミットする前に、ファイルの変更をステージングと呼ばれる準備段階に移動する必要があります。ステージングは、以下のコマンドで行えます。

git add <file>

これは、指定したファイルの変更をステージングするものです。ファイル名の代わりに.を指定すると、すべてのファイルの変更をステージングできます。

ステージングしたら、以下のコマンドでコミットできます。

git commit -m "message"

これは、ステージングしたファイルの変更をコミットするものです。-mオプションは、コミットメッセージを指定するものです。コミットメッセージは、変更内容を簡潔に説明するものです。

最後に、リモートリポジトリに変更を反映します。反映するには、以下のコマンドを使います。

git push <remote> <branch>

これは、指定したリモートリポジトリに指定したブランチの変更を送信するものです。リモートリポジトリやブランチの名前は、事前に設定する必要があります。詳しくは、公式ドキュメント(https://git-scm.com/docs/)を参照してください。

以上が、Gitの入門的な概要と操作方法です。Gitは、非常に強力で柔軟なバージョン管理システムです。しかし、その分複雑で難解な部分もあります。Gitを使いこなすためには、より多くの知識や経験が必要です。この記事では触れられなかったGitの機能やコマンドについても、ぜひ学んでみてください。

Written with Copilot

Azure Lab Servicesとは

Azure Lab Servicesとは、Microsoft Azureのサービスの一つで、教育や研究、開発などの目的で仮想マシンを簡単に作成・管理・共有できるクラウドベースのプラットフォームです。Azure Lab Servicesは、以下のような特徴を持っています。

  • ラボ管理者は、仮想マシンのサイズや数、利用時間や期間などを自由に設定できます。また、ラボの参加者には自動的にアクセス権が付与されます。
  • ラボ参加者は、ブラウザから仮想マシンにアクセスできます。仮想マシンは、必要なソフトウェアやデータが事前にインストールされているため、すぐに作業を開始できます。
  • ラボ管理者は、仮想マシンの使用状況やコストをリアルタイムに確認できます。また、ラボの終了後には、仮想マシンは自動的に削除されます。

Azure Lab Servicesは、様々なユースケースに対応できる柔軟性とスケーラビリティを備えています。例えば、以下のようなシナリオが考えられます。

  • 教育機関では、学生や教員がオンラインで授業や実習を行うために、Azure Lab Servicesを利用できます。学生は、自分のデバイスから仮想マシンにアクセスして、必要なソフトウェアやデータを使って学習できます。教員は、学生の進捗や成果を確認したり、フィードバックを与えたりできます。
  • 研究機関では、研究者や協力者がオンラインで共同研究を行うために、Azure Lab Servicesを利用できます。研究者は、自分のデバイスから仮想マシンにアクセスして、必要なソフトウェアやデータを使って実験や分析ができます。協力者は、同じラボに参加して、研究成果を共有したり、議論したりできます。
  • 開発企業では、開発者やテスターがオンラインで開発やテストを行うために、Azure Lab Servicesを利用できます。開発者は、自分のデバイスから仮想マシンにアクセスして、必要なソフトウェアやデータを使って開発ができます。テスターは、同じラボに参加して、開発されたソフトウェアをテストしたり、バグレポートを作成したりできます。

以上のように、Azure Lab Servicesは、教育や研究、開発などの分野で活用できる便利なサービスです。詳細や料金については、公式サイト をご覧ください。

azure.microsoft.com

Written with Copilot

Azure Virtual Desktopとは

Azure Virtual Desktopとは、Microsoftが提供するクラウドベースのデスクトップ仮想化サービスです。このサービスを利用すると、Azure上にWindows 11などの仮想デスクトップを作成し、インターネット経由でアクセスすることができます。Azure Virtual Desktopのメリットは、以下のようなものがあります。

  • セキュリティ:Azureのセキュリティ機能やポリシーを利用して、仮想デスクトップのデータやアクセスを保護できます。
  • スケーラビリティ:需要に応じて、仮想デスクトップの数や性能を柔軟に変更できます。
  • コスト:従量課金制なので、必要な分だけ支払うことができます。また、Windows 11 Enterpriseのライセンス料も含まれています。
  • 管理性:AzureポータルやPowerShellなどのツールを使って、仮想デスクトップの作成や設定や監視を簡単に行えます。
  • 互換性:Windowsだけでなく、LinuxmacOSなどの異なるOSやデバイスからも接続できます。また、Microsoft 365やAzure Active Directoryなどのサービスとも連携できます。

Azure Virtual Desktopのユースケースは、以下のようなものがあります。

  • リモートワーク:社員やパートナーが自宅や外出先からでも、安全かつ快適に仮想デスクトップにアクセスして業務を行えます。
  • デジタルトランスフォーメーション:既存のレガシーアプリケーションやデータをそのままAzure上に移行して、最新のテクノロジーやサービスと組み合わせて活用できます。
  • エンタープライズアプリケーション:高いパフォーマンスやセキュリティが求められるアプリケーションをAzure上に展開して、グローバルに提供できます。

Azure Virtual DesktopとAmazon WorkSpacesとの違いは、以下のようなものがあります。

  • プラットフォーム:Azure Virtual DesktopはAzure上で動作するため、Azureの機能やサービスとシームレスに連携できます。Amazon WorkSpacesはAWS上で動作するため、AWSの機能やサービスとシームレスに連携できます。
  • ライセンス:Azure Virtual DesktopはWindows 11 Enterpriseのライセンス料が含まれています。Amazon WorkSpacesはWindows 11 Enterpriseのライセンス料が別途必要です。
  • カスタマイズ:Azure Virtual Desktopはカスタムイメージやカスタムスクリプトを使って、仮想デスクトップの設定や構成を自由に変更できます。Amazon WorkSpacesはカスタムイメージやカスタムバンドルを使って、仮想デスクトップの設定や構成を自由に変更できます。
  • セッションホスト:Azure Virtual DesktopはWindows Server 2019などのマルチセッションOSをサポートしています。Amazon WorkSpacesはWindows Server 2016などのマルチセッションOSをサポートしています。

Azure Virtual Desktopの価格は?

Azure Virtual Desktopの価格は、以下の2つの要素に分かれています。

  • ユーザーのアクセス権限:対象となるWindowsMicrosoft 365のライセンスを持っている場合は追加料金はかかりませんが、外部ユーザーに対してはユーザー単位の月額料金が発生します。
  • Azureインフラストラクチャのコスト:仮想デスクトップをホストするために必要なAzureのサービス(仮想マシン、ストレージ、ネットワークなど)については使用量に応じて課金されます。

具体的な料金例を見てみましょう。

  • 仮想デスクトップタイプ:Windows 11 Enterprise シングルセッション
  • ユーザー数:10人
  • 同時接続数:5人
  • 仮想マシンサイズ:Standard_D2s_v3(2 vCPU, 8 GB メモリ)
  • 仮想マシン稼働時間:1日8時間
  • ストレージタイプ:Premium SSD
  • ストレージ容量:128 GB
  • ネットワーク帯域幅:10 GB/月

この場合、以下のような料金がかかります(2024年1月時点、日本円換算)。

  • ユーザーのアクセス権限:0円(対象となるMicrosoft 365 E3ライセンスを持っていると仮定)
  • Azureインフラストラクチャのコスト:
    • 仮想マシン:約9,000円/月(従量課金制)
    • ストレージ:約1,000円/月
    • ネットワーク:約100円/月
  • 合計:約10,100円/月

もちろん、仮想マシンのサイズや稼働時間、ストレージの容量やタイプ、ネットワークの帯域幅などによって料金は変わります。また、コンピューティング用のAzure節約プランや予約などを利用すれば、さらに割引が受けられます。詳しくは Azure Virtual Desktop の価格 をご覧ください。

Written with Copilot

Amazon WorkSpaces: リモートワーク、ソフトウェア開発、教育に適したクラウドサービス

Amazon WorkSpacesとは、Amazon Web Servicesが提供する仮想デスクトップのクラウドサービスです。WorkSpacesを利用すると、ユーザーは自分の好きなデバイス(PC、タブレットスマートフォンなど)から、仮想デスクトップにアクセスして、必要なアプリケーションやファイルを利用できます。WorkSpacesは、セキュリティやパフォーマンス、コストなどの面で多くのメリットを提供します。

aws.amazon.com

WorkSpacesのユースケースは様々ですが、代表的なものとしては以下のようなものがあります。

  • リモートワークや在宅勤務の場合、AWS WorkSpacesを使うと、社内のネットワークやシステムに安全にアクセスできます。また、自分のデバイスに関係なく、統一された環境で作業できます。
  • BYOD(Bring Your Own Device)やCYOD(Choose Your Own Device)の場合、AWS WorkSpacesを使うと、ユーザーは自分の好きなデバイスを選べます。また、デバイスの故障や紛失などのリスクを減らせます。
  • ソフトウェア開発やテストの場合、AWS WorkSpacesを使うと、開発環境やテスト環境を簡単に構築できます。また、必要に応じてスケールアップやスケールダウンできます。
  • 教育や研修の場合、AWS WorkSpacesを使うと、受講者や講師に一律の学習環境を提供できます。また、受講者は自分のデバイスから参加できます。

以上が、Amazon WorkSpacesについての基本的な説明とユースケースです。WorkSpacesは、クラウド時代におけるデスクトップアプリケーションの新しい形と言えるでしょう。ぜひ一度お試しください。

Written with Copilot

NoSQLデータベースの特徴と種類:高速処理と柔軟なデータ構造

NoSQLデータベースとは、SQLを使わない非関係型のデータベースの総称です。NoSQLデータベースは、大量のデータを高速に処理することができるという特徴があります。また、スキーマレスであるため、柔軟にデータ構造を変更することができます。NoSQLデータベースには、主に以下の4種類があります。

  • キーバリューデータベース
  • ドキュメントデータベース
  • カラムデータベース
  • グラフデータベース

それぞれのデータベースの特色と代表的な製品を紹介します。

キーバリューデータベース

キーバリューデータベースとは、キーと値のペアでデータを管理するシンプルなデータベースです。キーは一意であり、値は任意の形式で保存できます。キーを指定することで、値を高速に取得・更新・削除することができます。キーバリューデータベースは、スケーラビリティやパフォーマンスに優れていますが、複雑なクエリや結合などはサポートしていません。キーバリューデータベースの代表的な製品としては、RedisやMemcachedなどがあります。

ドキュメントデータベース

ドキュメントデータベースとは、ドキュメントと呼ばれる単位でデータを管理するデータベースです。ドキュメントは、JSONXMLなどの形式で表現される階層的な構造を持ちます。ドキュメントには、任意の数や種類のフィールドを含めることができます。ドキュメントデータベースでは、ドキュメントごとに一意のIDを付与し、コレクションと呼ばれるグループに分類します。ドキュメントデータベースは、スキーマレスであるため、柔軟にデータ構造を変更することができます。また、ドキュメント内のフィールドに対してインデックスやクエリを実行することができます。ドキュメントデータベースの代表的な製品としては、MongoDBやCouchDBなどがあります。

カラムデータベース

カラムデータベースとは、カラム(列)単位でデータを管理するデータベースです。カラムデータベースでは、テーブルに対して行ではなくカラムごとにインデックスや圧縮を行います。カラム単位での管理により、大量のカラムを持つテーブルでも高速に集計や分析を行うことができます。また、カラムごとに異なる型や属性を持つことができます。カラムデータベースは、ビッグデータや分散処理に適しています。カラムデータベースの代表的な製品としては、CassandraやHBaseなどがあります。

グラフデータベース

グラフデータベースとは、グラフと呼ばれる構造でデータを管理するデータベースです。グラフは、頂点(ノード)と辺(リレーション)で構成されます。頂点は、エンティティやオブジェクトを表し、辺は、頂点間の関係を表します。グラフデータベースでは、頂点や辺に任意のプロパティやラベルを付与することができます。グラフデータベースは、ネットワークやソーシャルメディアなどの複雑な関係性を持つデータに適しています。グラフデータベースの代表的な製品としては、Neo4jやOrientDBなどがあります。

Written with Copilot