Quantcast
Channel: bitWalk's
Viewing all 804 articles
Browse latest View live

カノニカルは生き残れるか

$
0
0

会社がサポートしている Linux ディストリビューションであれば、たとえ人気があっても、それが会社の収益に結びついているかは別問題です。なぜなら、Linux は大抵無料で配布されているからです。しかし、会社は収益がなければ開発を維持できません。

先日 4 月 23 日 に Ubuntu 20.04 LTS がリリースされましたが、その Ubuntu は今や最もポピュラーな Linux ディストリビューションと言えます。その Ubuntu の開発をサポートしている Canonical Ltd. の財務状況が気になり調べてみました。

Ubuntu 20.04 LTS のデスクトップ

ZDNet の記事

ZDNet.comに Canonical Ltd. の最近の動向に関する記事がありました。

日本語にすると「Ubuntu の人気と Canonical Ltd. の収益性について Mark Shuttleworth 氏が語る」といったところでしょうか。要点をまとめました。

  • Canonical Ltd.(以下、「カノニカル」と表します)は、Mark Shuttleworth 氏が所有する非公開の会社でマン島にある。
  • カノニカルの最新年次報告書は 2019 年 10 月 15 日に提出されたもので、2018 年 12 月 31 日までの財務を対象としている。
    • 2019 年の会計年度の最初の 9か月間で、総売上高は 8,343 万ドル、利益は 1,085 万ドルになった。同社は 2018 年から利益を上げている。
  • Mark Shuttleworth 氏はカノニカルを上場させることを考えているが、直近での IPO(新規上場株式公開)の予定は無いとのこと。
    • IPO の前提となる収益と成長率について具体的な目標を設定したが…、
    • 新型コロナウイルス感染(パンデミック)の影響を慎重に見極める必要がある。

カノニカルの収益の柱は?

ZDNet の記事にあった年次報告書の詳細は判らないのですが、一体、カノニカルの収益の柱は何なのでしょうか。

もしかすると、昨年末に発表があった Ubuntu Pro [4]が今後の有力事業になるのでしょうか。新しいサービスなので成否はこれからですが、10 年の OS メンテナンスをコミットしてサポートされるのは、用途によっては大変魅力的でしょう。継続的に Ubuntu Pro の動向に注視していきたいです。

オープンソースに関わる会社だからと言っても、霞を食っているわけにはいきません。持続的に収益を得られる事業の地盤を固めて発展して欲しいものです。

参考サイト

  1. 新規株式公開に向けて準備を進めるCanonical、気になる財務状況 - ZDNet Japan [2019-01-21]
  2. Canonical | Publisher of Ubuntu
  3. Canonical (company) - Wikipedia
  4. Canonical、Amazon Web Services向けUbuntu Proを発表 | Ubuntu
  5. AWS Marketplace: Ubuntu Pro 20.04 LTS

ブログランキング・にほんブログ村へ
にほんブログ村

エンタープライズ用途の Linux (1)

$
0
0

ただ楽しむためだけに彼が始めたカーネルは今や、6 千万以上の人々の PC デスクトップやそれ以上の台数のウェブサーバの OS の一部として稼動している。

リンク切れでたどれませんでしたが、これは Abramson, Ronna (2004年12月15日) の記事です。

Linus B. Torvalds 氏の楽しみから始まった Linux カーネルはますます発展を続け、今やウェブサーバの OS にとどまらず、クラウド環境を支える重要なインフラになっています。本ブログ記事では、エンタープライズ用途で利用できる Linux ディストロをピックアップして紹介します。

今回は Red Hat 社の Red Hat Enterprise Linux と、その互換 OS を紹介します。

Red Hat Enterprise Linux (RHEL)

IBM 傘下になった Red Hat 社は、同社の Red Hat Linux を収録したメディアを販売することから始まりましたが、「もの」から「サービス」を販売することにビジネスを転換し、市場を広げながら発展を遂げてきました [1]。現在、Red Hat 社は、同社が開発する Red Hat Enterprise Linux をベースにして、さまざまなサービスを提供しています。

エンタープライズ用途とは何か?について、こうだと明確に答えることはできません。しかし、無料の RHEL が Linux ディストロと異なる点についてまとめれば、エンタープライズ用途に求められることは何かが見えてくるはずです。

Red Hat サブスクリプション

サブスクリプション (subscription) とは、料金を支払うことによって一定期間サービスを使う「権利」を得られるビジネスモデルのことです。Red Hat 社は、ソフトウェアのアップデート・アップグレード・保守サポートなどが一体化されたサブスクリプション(年間契約費)を販売するというビジネスモデルを採用しています。下記に、Red Hat サブスクリプションについての FAQがまとめられています。

Red Hat サブスクリプションを利用するには、Red Hat カスタマーポータルにアクセスするためのアカウントを作成する必要があります。アカウントの作成は、下記のサイト(言語が選択できます)の右上にあるアカウントのアイコンをクリックして「登録」ボタンをクリックすると作成画面が表示されます。

必要事項を記入してアカウントを作成します。

Red Hat Customer Portal のサイト

大変ありがたいことに、テスト・評価用の 'Red Hat Developer Subscription'という一年間無料のサブスクリプションが利用できます。一年間という期間の指定があるものの、Red Hat のソフトウェア製品をアップデートを含めた機能制限なしに利用することができます。

ここでは、最新の Red Hat Enterprise Linux を仮想環境 (GNOME Boxes) へインストールしました。

Red Hat Enterprise Linux 8.2 のデスクトップ

なお、Red Hat Enterprise Linux 8.2 は下記のプラットフォームに対応していますが、ここでは Intel 64bit (x86_64) のプラットフォーム上で確認しています。

  • AMD and Intel 64-bit architectures
  • The 64-bit ARM architecture
  • IBM Power Systems, Little Endian
  • IBM Z

無料の Linux ディストロと違う点は、サブスクリプションの状態が管理されていることです。アプリの一覧から「Red Hat サブスクリプション」アプリを選ぶと、現在の登録状況が表示されます。

Red Hat サブスクリプション

上図では Service Level が Self-Support、Usage が Development/Test になっています。評価後にこのシステムで本格運用するとなれば、有料のサブスクリプションを購入することになります。Self-Support、つまり Red Hat 社からのサポート無し(ただしアップデートパッケージの利用はできます)で良い場合は、US$99/year からの費用で Red Hat Enterprise Linux を利用できます。

個人的には十分魅力的な価格設定と思いますが、企業がサポート付きのサブスクリプションを大量に購入する場合には、十分な検討が必要です。

10 年の長期サポート

最新の Red Hat Enterprise Linux(以下 RHEL と表します)は 10 年間のメンテナンスサポートが保証されています。言い換えると、カーネルをはじめとするコアのパッケージについては、基本的に 10 年間はバージョンを変えずにセキュリティファイックスがされ続けるということです。現在の RHEL8 の場合、半年毎にマイナーバージョンアップし、8.1, 8.2, ... とバージョン番号が上がっていきます。

※ RHEL 互換を目指すフリーな CentOS も 10 年間のメンテナンスサポートが保証されています。

ソフトウェア企業でシステムを開発するのに、OS 選定から社内評価そして客先でのベータ評価にこぎつけるまで、規模にもよりますが 1〜2 年は直ぐに経ってしまいます。RHEL の新バージョンのリリース時に合わせて、タイミングよくシステムの開発を始められればよいのですが、そんなことは稀でしょう。変化の激しい IT 業界ですが、それでも 10 年のサポートがあれば、それより短いライフサイクルのソフトウェア製品に対しては、安心して開発、保守ができる期間と言えましょう。また、ミッションクリティカルな分野では、パッケージのバージョンアップよりも安定して使い続けることが求められている場合があり、そういう場合、10 年間のメンテナンスサポートは魅力的です。

一方、分野によっては運用期間中に比較的新しい環境(例えば、データベースエンジン更新によるパフォーマンス向上)へ移行を実施した方が良い場合もあるでしょう。RHEL8 ではアプリケーションストリームを利用してパッケージのバージョンアップをすることもできます。

システム (RHEL) のバージョンアップやハードウェアを更新する場合は、既存のサブスクリプションを割り付け直すことができます。

RHEL の製品群(ポートフォリオ)

RHEL8 を仮想環境にインストールしましたが、テスト・評価用サブスクリプション 'Red Hat Developer Subscription'で評価可能なソフトウェア製品は数多くあります。ビジネスの目的に応じて、最適な構成の OS を選択できるようになっています。

  • dotNET on RHEL (for RHEL Server)
  • dotNET on RHEL Beta (for RHEL Server)
  • MRG Realtime
  • Oracle Java (for RHEL Server)
  • Oracle Java (for RHEL Server) - Extended Update Support
  • Red Hat Ansible Engine
  • Red Hat Beta
  • Red Hat CodeReady Linux Builder for ARM 64
  • Red Hat CodeReady Linux Builder for x86_64
  • Red Hat CodeReady Linux Builder for x86_64 - Extended Update Support
  • Red Hat Container Development Kit
  • Red Hat Container Images
  • Red Hat Container Images Beta
  • Red Hat Developer Tools (for RHEL Server)
  • Red Hat Developer Tools Beta (for RHEL Server)
  • Red Hat Developer Toolset (for RHEL Server)
  • Red Hat Enterprise Linux Atomic Host
  • Red Hat Enterprise Linux Atomic Host Beta
  • Red Hat Enterprise Linux for ARM 64
  • Red Hat Enterprise Linux for Real Time
  • Red Hat Enterprise Linux for SAP Applications for x86_64
  • Red Hat Enterprise Linux for SAP HANA for x86_64
  • Red Hat Enterprise Linux for x86_64
  • Red Hat Enterprise Linux for x86_64 - Extended Update Support
  • Red Hat Enterprise Linux High Availability - Update Services for SAP Solutions
  • Red Hat Enterprise Linux High Availability for x86_64
  • Red Hat Enterprise Linux High Availability for x86_64 - Extended Update Support
  • Red Hat Enterprise Linux High Performance Networking (for RHEL Compute Node)
  • Red Hat Enterprise Linux High Performance Networking (for RHEL Server)
  • Red Hat Enterprise Linux High Performance Networking (for RHEL Server) - Extended Update Support
  • Red Hat Enterprise Linux Load Balancer (for RHEL Server)
  • Red Hat Enterprise Linux Load Balancer (for RHEL Server) - Extended Update Support
  • Red Hat Enterprise Linux Resilient Storage for x86_64
  • Red Hat Enterprise Linux Resilient Storage for x86_64 - Extended Update Support
  • Red Hat Enterprise Linux Scalable File System (for RHEL Server)
  • Red Hat Enterprise Linux Scalable File System (for RHEL Server) - Extended Update Support
  • Red Hat Enterprise Linux Server
  • Red Hat Enterprise Linux Server - Update Services for SAP Solutions
  • Red Hat EUCJP Support (for RHEL Server) - Extended Update Support
  • Red Hat S-JIS Support (for RHEL Server) - Extended Update Support
  • Red Hat Software Collections (for RHEL Server)
  • Red Hat Software Collections Beta (for RHEL Server)
  • RHEL for SAP (for IBM Power LE) - Update Services for SAP Solutions
  • RHEL for SAP - Extended Update Support
  • RHEL for SAP - Update Services for SAP Solutions
  • RHEL for SAP HANA - Extended Update Support
  • RHEL for SAP HANA - Update Services for SAP Solutions

製品全てを知っているわけではないのですが、日本語の文字コード (EUCJP, S-JIS) に付いて、延長更新サポートの製品があることは興味深いです。

日本語エンコードは、UTF-8 などの Unicode 系エンコード化の波に取り残されてしまったと思っていましたが、官公庁のシステムなのか、勘定系システムなのか、EUC-JPShift JISから移行できないシステムが残っているのでしょう、2005 年 2 月 15 日にリリースされた RHEL4 以降のサポートが続けられています。

サポート

Red Hat サブスクリプションには、サポートサービスが含まれています。利用可能なサポートレベルには、Premium、Standard、および Self-support(特定の地域および Red Hat Enterprise Linux Server Entry Level でのみ利用可能)があります。

PremiumStandard
対象時間重大度 1 と 2 の場合は年中無休通常の営業時間
ケース数Web および電話Web および電話
ソフトウェアの保守無制限無制限
必要な情報Red Hat カスタマーポータルよりRed Hat カスタマーポータルより

Red Hat 社から実際にサポートを受けたことがないので、サポート内容の善し悪しについてはなにもコメントできません。

Oracle Linux

Oracle Linux は、オラクルによる Red Hat Enterprise Linux (RHEL) をベースとした Linux ディストリビューション (RHEL クローン) の一つです。下記サイトの Download Oracle Linux のリンクをクリックして、Oracle アカウントでログインするとダウンロードサイトが表示されます。

Oracle Linux 8.1 の ISO ファイルをダウンロードして仮想環境にインストールしました。その後の更新で 8.2 にアップグレードされました(5 月 6 日時点)。未登録の状態ですがパッケージの更新はできています。

Oracle Linux 8.2 のデスクトップ

なお、Oracle Linux 8.2 は下記のプラットフォームに対応していますが、ここでは Intel 64bit (x86_64) のプラットフォーム上で確認しています。

  • x86_64 platform (Intel and AMD)
  • 64-bit Arm (aarch64)
    • developer preview release only(開発版レビューのみ)

Oracle Linux の名前が付いている製品群を調べるとだいたい以下のようになっています。

  • Oracle Linux
  • Oracle Linux KVM Templates for Oracle Linux
  • Oracle Linux Virtual Machine Image for Openstack
  • JeOS Oracle Linux
  • Oracle OpenStack For Oracle Linux
  • Oracle RAC with Oracle Linux
  • Oracle Business Intelligence Enterprise Edition for Oracle Linux
  • Oracle Secure Global Desktop with Oracle Linux
  • Oracle Value Chain Planning Release for Oracle Linux

Oracle Linux を利用するメリットは、Oracle の他の製品を Linux 上で稼動させるときに最も高いパフォーマンスが得られることを期待できることです。

CentOS

CentOS は、Red Hat Enterprise Linux と機能的に互換性があることを目指したフリーの Linux ディストリビューションです。現在、Red Hat 社は CentOS プロジェクトを支援しています。

CentOS のインストールイメージは下記の CentOS のプロジェクトサイトからダウンロードできます。

最新の CentOS (8.1-1911) を仮想環境にインストールしてみました。

CentOS 8.1-1911 のデスクトップ

なお、CentOS 8.1-1911 は下記のプラットフォームに対応していますが、ここでは他と同様 Intel 64bit (x86_64) のプラットフォーム上で確認しています。

  • aarch64
  • ppc64le
  • x86_64

CentOS のバリエーションは以下のようになっています。

  • CentOS
    • RHEL 互換でサポート期間の考え方も同じ
  • CentOS Stream
    • ローリングリリース版
  • CentOS Atomic Host
    • コンテナを利用することに特化(RHEL Atomic Host に対応)

参考サイト

  1. IBM傘下になったレッドハット、これまでの軌跡とこれから - ZDNet Japan [2019-08-06]
  2. Red Hat Enterprise Linux 8 リリース! - 赤帽エンジニアブログ [2019-05-08]
  3. Red Hat and the CentOS Project Join Forces to Speed Open Source Innovation [2014-01-07]

ブログランキング・にほんブログ村へ
にほんブログ村

エンタープライズ用途の Linux (2)

$
0
0

ただ楽しむためだけに彼が始めたカーネルは今や、6 千万以上の人々の PC デスクトップやそれ以上の台数のウェブサーバの OS の一部として稼動している。

リンク切れでたどれませんでしたが、これは Abramson, Ronna (2004年12月15日) の記事です。

Linus B. Torvalds 氏の楽しみから始まった Linux カーネルはますます発展を続け、今やウェブサーバの OS にとどまらず、クラウド環境を支える重要なインフラになっています。本ブログ記事では、エンタープライズ用途で利用できる Linux ディストロをピックアップして紹介します。

今回は SUSE 社の SUSE Linux Enterprise Server (SLES) を紹介します。

SUSE Linux Enterprise Server (SLES)

SUSE /ˈsuːzə/ はドイツを拠点とし、ビジネス顧客向けの Linux 製品を開発・販売するオープンソースソフトウェア多国籍企業です。1992 年に創設され、企業向けに商用 Linux を販売した最初の会社です。SUSE はコミュニティ支援で openSUSEを開発している openSUSE Project の主要なスポンサーです。

Wikipediaより引用・編集

SUSE 社は名前と、印象に残るカメレオンのロゴを知っている程度、あと openSUSE を評価したことがあるぐらいでしたが、今回、はじめて SUSE Linux Enterprise の無料ダウンロードサービスを試してみました。

上記 SUSE 社のサイトには、無料ダウンロードのリンクがあり、下記のプラットフォームを対象に 60 日間、SUSE を試すことができます。

  • s390x
  • x86_64
  • ppc64le
  • aarch64

SUSE 社も Red Hat 社と同様にサブスクリプションを販売するビジネスモデルを採用しています。そのため、ダウンロードするにはまずアカウントを作成する必要があります。法人相手がメインなのか、勤務する会社名の入力が必須で、しかも自分のアカウントが、登録上その企業名に紐づけられます。Red Hat 社のサブスクリプションとは違った印象を受けました。

さて、60 日間の無料試用は Get Your 60 Day Activation Trial Codeをクリックしてアクティベーションコードをメモっておき、ISO イメージをダウンロードします。

ここでは、SLE-15-SP1-Installer-DVD-x86_64-GM-DVD1.isoをダウンロードして、仮想環境 (GNOME Boxes) にインストールしました。

サブスクリプション一覧

ただし、Enterprise Server のみの場合、インストール中にデスクトップ環境をインストールする選択肢が表示されないので、Enterprise Desktopの評価用アクティベーションコードも入手して、両方をインストールしました。不慣れで何回もやり直してしまったので、余分にシステム登録がされてしまっています。💦

SUSE Linux Enterprise Server 15 SP1 のデスクトップ

対応プラットフォーム

対応プラットフォームは Red Hat 社の RHEL とほぼ同じです。ARM 系ですが Raspberry Pi も明記されていることと同社の JeOS も記載されていましたのでそのまま書き写しています。

  • AMD64/Intel 64
  • IBM z Systems
  • IBM Power Systems
  • Arm
  • Raspberry Pi
  • JeOS
    • JeOS は KVM / Xen Fully Virtualized、Xen Paravirtualized、Microsoft Hyper-V、VMware、および OpenStack Cloud にすぐデプロイできるサーバーイメージです。

SUSE Linux の製品群(ポートフォリオ)

エンタープライズとソリューションなどと区別して分類してありましたので、そのまま書き写しました。

  • エンタープライズ Linux
    • SUSE Linux Enterprise Server
    • SUSE Linux Enterprise Desktop
    • Arm 用
    • z Systems および LinuxONE [3]
    • IBM Power 用
    • SUSE Embedded
  • SAP ソリューション
    • SUSE Linux Enterprise Server for SAP Applications
    • High Availability
    • SUSE Manager
  • コンテナおよびアプリケーションプラットフォーム
    • SUSE CaaS Platform
    • SUSE Cloud Application Platform
    • DevOps
  • IT インフラストラクチャ管理
    • SUSE Manager
    • SUSE Manager for Retail
  • High Availability
    • SUSE Linux Enterprise Server for High Availability Extension
    • Geo Clustering
    • Real Time
    • Live Patching
  • Multi-Cloud Infrastructure
    • パブリッククラウド
    • Azure
    • AWS
    • Google
  • Software-Defined Storage ソリューション
    • SUSE Enterprise Storage
  • ハイパフォーマンスコンピューティング
    • SUSE Linux Enterprise High Performance Computing
  • SUSE グローバルサービス
    • SUSE グローバルサービス

10 年間の長期サポート

現在の SLES 15 は Red Hat 社の RHEL と同様に通常は 10 年間のサポートがされます。

サポート

サブスクリプションには、サポートサービスが含まれています。利用可能なサポートレベルには、Standard と Priority があります。

表になっているところをざっと日本語にしてみました。勝手に訳したものですので内容を保証しません。詳細は上記リンクの PDF を参照してください。

StandardPriority
ソフトウェアアップグレードと更新
テクニカルサポート無制限
アクセス方法Chat, Phone, Web
対応時間12 時間 × 5 日/週24 時間 × 7 日/週
応答時間2 時間 (Severity 1)1 時間 (Severity 1)
4 時間 (Severity 2)2 時間 (Severity 2)
翌営業日 (Severity 3)4 時間 (Severity 3)
翌営業日 (Severity 4)翌営業日 (Severity 4)

トラブルの深刻度に応じて時間指定のサポートが定められています。Response Time を「応答時間」としましたが、指定した時間内で「何」をコミットしてくれるのかの詳細は、上記サイトの資料から読み取れませんでした。

openSUSE

openSUSE は、SUSE 及びその他企業等が支援するコミュニティー「openSUSE プロジェクト」によって開発されるオープンソースの Linux ディストリビューションです。元々は SUSE が開発する SUSE Linux でした。2003 年にノベルが SUSE を買収した後、100% オープンソースを目指して開発体制をコミュニティベースに移行し、SUSE Linux から現名称の openSUSE に変更しました。

現在の最新版は 2019 年 5 月 22 日リリースの openSUSE Leap 15.1 です。現在は SUSE Linux Enterprise のソースコードを利用しています。Leap の他に Tumbleweed と呼ばれるローリング・リリースモデルを採用したプロジェクトがあります。こちらは最新のソフトを積極的に取り込んでおり、リリース版のベースになります。

Wikipediaより引用・編集

下記が openSUSE のプロジェクトサイトです。

openSUSE Leap 15.1 (x86_64) をダウンロードして仮想環境にインストールしてみました。インストーラーは背景色が異なるものの SLES と同じですが、アクティベーションキーの入力がない分、スムーズにインストールできました。

openSUSE Leap 15.1 のデスクトップ

対応しているプラットフォームは x86_64 で、ppc64le と aarch64 については別コミュニティによってポーティングおよびメンテナンスがされているようです。

  • x86_64
  • ppc64le
  • aarch64

また、JeOS (x86_64) 版として下記のイメージが利用可能です。

  • KVM or XEN HVM hypervisor
  • XEN PV hypervisors
  • MS HyperV
  • VMware
  • OpenStack

エンタープライズ用途の Linux については、次回に考察したいと思います。

参考サイト

  1. 2019年3月20日 SUSE,ふたたび独立企業になる:Linux Daily Topics|gihyo.jp … 技術評論社 [2019-03-20]
  2. 2020年4月10日 Closing the Leap Gap ―SUSE,コミュニティ版とエンタープライズ版の統合を進める方針を表明:Linux Daily Topics|gihyo.jp … 技術評論社 [2020-04-10]
  3. IBM 次世代Linuxサーバー LinuxONE - 日本 | IBM
  4. CaaS とは
  5. エンタープライズとは - IT用語辞典 e-Words
  6. bitWalk's: エンタープライズ用途の Linux (1) [2020-05-06]

ブログランキング・にほんブログ村へ
にほんブログ村

Google Meet と Google Mail

$
0
0

今朝 Google Mail にアクセスしたところ、Google Meet が使えるようになっていました。Google Meet は専用のアプリで使うものだとばかり思っていたので、ちょっとびっくりです。

新型コロナウイルス感染の流行で在宅勤務が増えて、インターネットを用いた会議システムの選択肢が増えるのは嬉しい事です。ただ、自分の場合、会社が Skype あるいは Teams を使っているので、社用では Google Meet を使うことはありません。

社用では Web カメラを使わず、資料を共有してミーティングを進めるスタイルです。Google Meet の使い勝手がどうなのか、プライベートで使ってみます。

参考サイト

  1. Google Meet でビデオ会議を開始する - パソコン - Google Meet ヘルプ

ブログランキング・にほんブログ村へ
にほんブログ村

エンタープライズ用途の Linux (3)

$
0
0

ただ楽しむためだけに彼が始めたカーネルは今や、6 千万以上の人々の PC デスクトップやそれ以上の台数のウェブサーバの OS の一部として稼動している。

リンク切れでたどれませんでしたが、これは Abramson, Ronna (2004年12月15日) の記事です。

Linus B. Torvalds 氏の楽しみから始まった Linux カーネルはますます発展を続け、今やウェブサーバの OS にとどまらず、クラウド環境を支える重要なインフラになっています。本ブログ記事では、エンタープライズ用途で利用できる Linux ディストロをピックアップして紹介します。

前回まで Red Hat 系および SUSE のエンタープライズ用途といわれる Linux を紹介しましたが、今回は調べて判る範囲でエンタープライズ用途とは何かを考えました。

Red Hat

Red Hat Enterprise Linux を紹介した時にも参考サイトに示しましたが、下記の記事が Red Hat 社がエンタープライズ用途の Linux (RHEL) を広めるために歩んできたことを実に解りやすくまとめていると思います。

この記事から、エンタープライズ用途の OS に求められている「何か」をピックアップしてみました。

Linux はニーズに合わせてチューニングできる

ニーズに合わせて Linux はチューニングができますが、専門的な知識が必要になります。そこに「サービス」を提供するという商機があります。既に紹介しましたが RHEL のポートフォリオは多岐に亘っています。用途、ニーズにあわせてパッケージを選ぶことで、カスタマイズにかかる手間を少なくして必要なシステムを短期間に構築できます。

プライベートでコツコツと設定を重ねて出来上がりを楽しむこととは異なり、ビジネスは時間もコストです。用途に応じた製品オプションが豊富に用意されていて、より少ない時間でシステムを構築することがビジネスに求められます。

ほかの企業と協力して、長期的な成功に向けて取り組む

 

Red Hat 社はパートナープログラムを用意しており、実に様々な企業と協業しています。

企業がパートナーになって協業するにあたって、業務に関わる人のスキルがある程度以上にそろっている必要があります。そのために Red Hat 社ではトレーニングと資格認定のプログラムを利用できるようになっています。これは業務を管理する側にとって意外と重要だと思いました。

パートナーとの互恵関係を築けているかが判るデータを示すのは難しいのですが、少なくとも Red Hat 社は発展を続けています。無料の記事にはなかなか適当なものが無かったのですが、Red Hat の発展についてグラフなどの視覚的情報があるいくつかのサイトを下記にまとめました。

Linux はもっと強力なコンピューターに使える

スーパーコンピュータのベンチマークのランキングはエンタープライズの分野なのか、という議論はあるでしょうが、少なくともベンチマークに勝つためだけにスーパーコンピュータを使っているわけではなく、その計算能力を社会の何かに役立てているはずです。

TOP500 のベンチマークがすべてではありませんが、上記サイトには RHEL/CentOS あるいは SUSE を OS に使っているシステムが上位にランクインしていることを確認できます。

デスクトップ Windows のライバルは目指さない

Red Hat Linux 9 が最後の Red Hat Linux になり、Fedora Core への移行をしなければならなかった当時、変化についていくのが大変でした。

2003 年 11 月にレッドハットは方針転換を表明し、Red Hat Linux の開発終了と、企業向けに特化した Red Hat Enterprise Linux (RHEL) のリリースを表明した。無料版にあたるものの提供は、Red Hat 社が支援するコミュニティ Fedora Project の提供する Linux ディストリビューションである Fedora に引き継がれた。

Wikipediaより引用・編集

振り返ると、Linux の入手方法が、今まで家電量販店で買っていた Red Hat Linux から、Linux 関連雑誌の付録の CD/DVD に収録されている Fedora へ移り、そしていつの間にか ISO 形式の OS のインストールイメージをダウンロードするようになった、その最初の変化点だったと考えています。無料の Linux をメディアで販売して僅かばかりのサポートをするスタイルは、インターネットの発展の中ではそもそも旨味が無いビジネスでした。

一方、ふつうにパソコンを購入すると、Windows がプリインストールされているのが当たり前になっていたので、わざわざデスクトップ市場に打って出るのは無謀なことでした。そもそも Linux のデスクトップ環境は選択できるものですので、企業活動に求められる統一された操作とは相性が悪いのです。

現在、RHEL や SLES あるいは Ubuntu のデフォルトのデスクトップは GNOME 3 が採用されています。Windows とは操作が全く違う GNOME デスクトップが、エンタープライズ用途の Linux に採用されていることは大変興味深いことです。

もちろん、Linux でデスクトップを選択する自由は確保されており、Ubuntu をベースとした数々のディストロなどが個人ユーザのニーズを満たしています。

SUSE

1992 年に設立された SuSE は、経営母体がたびたび変わってきました。詳しくは下記の記事を参照してください。

記事によると、経営母体が変わる中でも SUSE 社は着実に発展してきているようです。Red Hat 社が IBM 社に買収されたことで、SUSE は世界最大の独立したオープンソースソフトウェア (OSS) 企業になると SUSE 社の当時の CEO、Nils Brauckmann 氏は主張しています。

近年の日本に関わる SUSE の記事をピックアップしました。

日本における SUSE 社のビジネスの展開はまだまだこれからという感ですが、Red Hat 社と同様にサブスクリプションを採用している他に、他企業とのパートナープログラムやトレーニングプログラムもあります。

企業の基幹システムである ERP 分野においてトップ企業であるドイツの SAP 社との協業関係が長い SUSE は、2019 年 8 月には SAP の COO(最高執行責任者)兼デジタルコアソリューション CRO(最高売上責任者)を務めていた Melissa Di Donato 氏が SUSE の CEO に就任しました。今後ますます SAP 社と SUSE 社の関係は強くなっていくでしょう。

Red Hat 社と異なるのは、SUSE Linux Enterprise と、コミュニティ版である openSUSE Linux との関係です。

RedHat 社の Red Hat Enterprose Linux (RHEL) の場合は、開発版としてコミュニティベースの Fedora プロジェクトがあり、このプロジェクトの成果を RHEL へ反映しています。RHEL と互換性があり、無償で公開されているコミュニティ版の CentOS は、RHEL のソースを別環境でコンパイルし直したパッケージです。これら 3 種類のディストロは個別にビルドされているので、バイナリレベルでは共有されていません。

ところが openSUSE Leap と SUSE Linux Enterprise (SLE) は、今後ソースをシェアするだけでなく、SLE のバイナリを openSUSE Leap に含められるようにするとのこと。製品版とコミュニティ版との境目が曖昧になりますが、今後どのように双方の関係が発展していくのか注目していきたいです。

ちなみに SLES は Windows のサブシステム (WSL) として稼働させられます。

Canonical

Canonical 社が支援する Ubuntu は、最もポピュラーな Linux ディストロです。Canonical 社は Mark Shuttleworth 氏が所有する非公開の会社です。Ubuntu のエンタープライズ用途に関わるサイトをピックアップしました。

たしかに、パートナープログラムはあります。Ubuntu Advantage にはサブスクリプションのビジネスモデルが採用されているようですが、無料でアカウントを登録できるようになっておらず、踏み込んだ調査をしていません。上の「プランと価格」のサイトで詳細を見ると、Red Hat 社や SUSE 社とそう遜色のないサポートのようにも見えます。

ちょっと古いですが、下記の記事で Canonical 社の CEO, Mark Shuttleworth 氏が Canonical 社のビジネスモデルについて語っています。

Shuttleworth 氏は、ビジネスモデルはサポートサービスを売ることで、他のオープンソースソフトウェアのベンダーとは違いはないと述べています。

それでも、会社の規模にまだ差があるからなのか、それとも、二年ごとにリリースされる長期サポート版 (LTS) とその間に半年ごとにリリースされる版で開発的な部分を担っているというリリース形態だからなのか、Red Hat 社や SUSE 社と同じようにして収益をあげていると言い切るには、しっくりとこない部分があります。

下記もちょっと古いですが、この記事によると Canonical 社もRed Hat 社と同様に専門的なサポートサービスで多くの収入を得ているということです。

Ubuntu は人気があるが故、デスクトップ環境などが違うが Ubuntu と同じリポジトリを使用する派生ディストロが数多く存在します。このことが Red Hat 社や SUSE 社のディストロと異なるように見えるだけなのかもしれません。

なお、Ubuntu も Windows のサブシステム (WSL) として稼働させられます。

参考サイト

最近の Linux に関わる動向をピックアップしました。

  1. Ubuntu急増でLinux押し上げ - 4月デスクトップOSシェア | マイナビニュース [2020-05-03]
  2. NVIDIAがLinuxベースのネットワークOS開発のCumulus Networksを買収 | TechCrunch Japan [2020-05-05]
  3. IBMの社長となったホワイトハースト氏が語る“Red Hatの価値” - クラウド Watch [2020-05-07]
  4. ASCII.jp:Red Hat、IBMとのタッグで「オープンハイブリッドクラウド」推進 [2020-05-11]

ブログランキング・にほんブログ村へ
にほんブログ村

エンタープライズ用途の Linux (4)

$
0
0

ただ楽しむためだけに彼が始めたカーネルは今や、6 千万以上の人々の PC デスクトップやそれ以上の台数のウェブサーバの OS の一部として稼動している。

リンク切れでたどれませんでしたが、これは Abramson, Ronna (2004年12月15日) の記事です。

Linus B. Torvalds 氏の楽しみから始まった Linux カーネルはますます発展を続け、今やウェブサーバの OS にとどまらず、クラウド環境を支える重要なインフラになっています。本ブログ記事では、エンタープライズ用途で利用できる Linux ディストロをピックアップして紹介します。

エンタープライズ用途の Linux を扱っている企業は他にもあります。仮想環境で動作を確認できたディストロについて二つ紹介します。どちらも国が絡んでいます。

ROSA

ROSA Linux はロシアの企業 'LLC NTC IT ROSA(以下、単に ROSA 社と呼びます)によって開発されているディストロです。2010 年に設立した ROSA 社は Mandriva Linux をベースにエンタープライズ向けのディストロを開発しましたが、その後、2012 年にエンドユーザ向けの Desktop Fresh もリリースするようになりました。

ROSA Linux はもともとフランスの Linxu ディストロ Mandrivaからフォークして、その後は独自に開発が進められています。ROSA Linux はロシア国防相の認証を受けています。

Wikipediaより引用・抄訳、編集

ROSA のホームページには FSTEC(Federal Service for Technical and Export Control, 技術および輸出管理のための連邦サービスで、ロシア国防省の下にあるロシア連邦の軍事機関)から認証を受けている ROSA Cobalt(デスクトップ版とサーバ版)と、ロシア連邦軍参謀本部の "the Eighth running/control"(日本語訳不明)から認定を受けている ROSA DX NICKEL 1.0 というデスクトップ向けパッケージがあるようです。

上記のサイト Products - НТЦ ИТ РОСА からキリル文字とアルファベットが混じっていますが、ダウンロードできるパッケージ一覧を書き出してみました。x86 (32bit) と x86_64 (64bit) をサポートしています。

  • Операционная система ROSA Desktop Fresh R11
    • Версия с KDE4
    • Версия с Plasma 5
    • Версия с LXQt
    • Версия с XFCE
  • Операционная система ROSA Fresh R10
    • Версия с KDE4
    • Версия с Plasma 5
    • Версия с LXQt
  • Операционная система ROSA Fresh R9
    • Версия с KDE4
    • Версия с Plasma 5
    • Версия с GNOME
    • Версия с LXQt
  • Операционная система ROSA Fresh R8
    • Версия с KDE4
    • Версия с Plasma 5
    • Версия с GNOME3
    • Версия с MATE
  • Операционная система ROSA Enterprise Linux Server (RELS) 6.9
  • Операционная система ROSA Enterprise Desktop (RED) X3
  • Операционная система РОСА «КОБАЛЬТ»
  • Операционная система РОСА DX «НИКЕЛЬ»

リンクからダウンロードできそうだったので、一番上の最初のパッケージ (Desktop Fresh R11 KDE4) をダウンロードして‘、仮想環境 (GNOME Boxes) へインストールしてみました。

ROSA Desktop Fresh R11 (KDE4)

ロシアのディストリビューションですので、インストール時には日本語の選択ができませんでしたが、追加インストールで日本語変換ができるようです。

ロシア国防相の認証を受けているということですので、それだけでビジネスは安泰なのでしょうか。

UOS

Unity Operating System (または Unified Operating System、通称 UOS)(统一操作系统)は UnionTech(统信软件)によって開発されている Linux ディストリビューションです。 Deepinをベースとしており、中華人民共和国から最終的に Windows を置き換えるように委託されて開発しています。

Wikipediaより引用・編集

国策で、Windows と置き換えることを推進しているディストロで、デスクトップのみならず国全体で段階的に普及させるらしいです。Windows を使う自由を主張できる日本では有り得ません。当然エンタープライズ用途にも使われると考えて取り上げました。

中国のサイトから ISO イメージのダウンロードをするのが筋ですが、ダウンロード前に登録が必要です。しかし言語選択ができず、中国語の全部を正確には理解できず不安だったので、他を探したところ、登録なしにダウンロードできる英文のサイトがありました。そこから ISO イメージをダウンロードして仮想環境 (GNOME Boxes) へインストールしました。仮想環境へインストールする際、自動的に 20GB 前後が確保されているのですが、UOS ではストレージ容量が 128GB 推奨、64GB 必須になっているため、あらかじめ仮想環境側で設定しておく必要がありました。

ダウンロードもインストールもできましたが、全部の機能を無償では使えず、一部アクティベーションが必要らしいです。

UOS 20 SP1 Professional

UOS のインストーラは Deepin とほぼ同じですが、下記を読むと Deepin の開発元、Wuhan Deepin Technology Co., Ltd.(武汉深之度科技有限公司)は、UnionTech(统信软件)に買収されたとあります。他のサイトで確認が取れていませんが、参考までに掲載しておきます。

時間がかかると思いますが、きっと中国では着実に UOS の普及が進むでしょう。個人的には Deepin Desktop Environment と呼ばれるデスクトップ環境は使いやすいと思っています。多少リソースを食うかもしれませんが、CPU の能力は今後もそれなりに向上するでしょうから、それを見越してスペックの高いデスクトップ環境を、普及させる前に採用しても損はないように思います。

興味は、サーバー用途に使うバージョンですが、これは調査不足です。

参考サイト

ROSA は Mandriva からフォークして生き残っていますが、Mandriva の方は倒産してしまいました。

  1. かつて人気を誇った「Mandriva Linux」、開発母体が倒産 - ZDNet Japan [2015-05-28]

ブログランキング・にほんブログ村へ
にほんブログ村

【備忘録】スワップファイルの追加

$
0
0

昨年買った NVIDIA Jetson Nano の使用頻度が高くない理由は、はっきり言って時間がないからだと主張したいのですが、持っている情報が少なくて前へ進めないのかもしれない、とも感じています。そこで入門書(右)を買ってみました。

本についての第一の感想は、買って良かった良かった、ということです。一番の理由は、グラフィック関連とはいえいままでサンプルプログラムさえ試していなかったことに気づいたからなのですが、その他に基本的なことで知らなかったということがいくつもありました。そのひとつがスワップの領域を追加する設定です。

ふだん FedoraCentOSを使っているから、というのは全くの言い訳になってしまうのですが、これらのディストロのインストーラは、デフォルトでストレージのパーティション設定に LVMを使っているため、容量の追加についての心配をしたことがありませんでした。

ところが、Jetson Nano 用の Ubuntuでは(LVM は使用せず)スワップ領域が無い、あるいは 2GB しか設定されておらず、メモリ不足になる場合があるとのことです。買った入門書では、スワップ領域をファイルで追加していました。目から鱗です。いや、まあ、確かにできるよなあ、などと強がりを言っても試すしかありません。

ということで、自分の環境でスワップ領域を増やしたので備忘録にしました。使用環境は以下のとおりです。

Jetson Nano Developer Kit SD Card Image, JP 4.4 DP, 2020/04/21
Ubuntu 18.04 LTSGNU/Linux 4.9.140-tegra aarch64

スワップ領域の追加

スワップ領域の現状は次のようになっています。

(venv) bitwalk@jetson-pc:~$ free
total used free shared buff/cache available
Mem: 4051216 1013848 1729228 20568 1308140 3226852
Swap: 2025600 0 2025600
(venv) bitwalk@jetson-pc:~$ /sbin/swapon -s
ファイル名 タイプ サイズ 使用済み 優先順位
/dev/zram0 partition 506400 0 5
/dev/zram1 partition 506400 0 5
/dev/zram2 partition 506400 0 5
/dev/zram3 partition 506400 0 5

zramで 500MB ずつが 4 つ(ARMコア数分)、計 2GB がスワップ領域として確保されています。この領域はメモリ上にあります。

さらにスワップ領域をストレージ上に作りますが、とりあえず zram 分と同じ 2GB を /var/swapfile作成して様子を見ることにします。

(venv) bitwalk@jetson-pc:~$ sudo dd if=/dev/zero of=/var/swapfile bs=1G count=2
[sudo] bitwalk のパスワード:
2+0 レコード入力
2+0 レコード出力
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 28.1978 s, 76.2 MB/s
(venv) bitwalk@jetson-pc:~$ sudo mkswap /var/swapfile
mkswap: /var/swapfile: パーミッション 0644 は安全な値ではありません。 0600 をお勧めします。
スワップ空間バージョン 1 を設定します。サイズ = 2 GiB (2147479552 バイト)
ラベルはありません, UUID=739207c1-88c1-4c2c-98d4-e35abb36cd49
(venv) bitwalk@jetson-pc:~$ sudo chmod 600 /var/swapfile

/etc/fstabを編集して、作成した /var/swapfileをマウントするようにします。

(venv) bitwalk@jetson-pc:~$ sudo vi /etc/fstab

下記の、黄色にマーキングした行を追加して保存します。

# /etc/fstab: static file system information.
#
# These are the filesystems that are always mounted on boot, you can
# override any of these by copying the appropriate line from this file into
# /etc/fstab and tweaking it as you see fit. See fstab(5).
#
#
/dev/root / ext4 defaults 0 1
/var/swapfile none swap swap 0 0

swaponコマンドで /var/swapfileをスワップに追加します。

(venv) bitwalk@jetson-pc:~$ sudo swapon /var/swapfile

あらためてスワップ領域を確認しました。

(venv) bitwalk@jetson-pc:~$ free
total used free shared buff/cache available
Mem: 4051216 720708 1225392 19964 2105116 3211648
Swap: 4122748 232 4122516
(venv) bitwalk@jetson-pc:~$ /sbin/swapon -s
ファイル名 タイプ サイズ 使用済み 優先順位
/dev/zram0 partition 506400 60 5
/dev/zram1 partition 506400 60 5
/dev/zram2 partition 506400 56 5
/dev/zram3 partition 506400 56 5
/var/swapfile file 2097148 0 -1
(venv) bitwalk@jetson-pc:~$

まとめ

インターネットから情報を得られるとは言え、調べかたが悪いと情報が偏る場合があります。ケチらずに必要な情報を効率的に集めるために、専門家のノウハウが詰まった書籍を買うことも重要です。今回、書籍の良さをあらためて認識しました。書籍といっても Kindle で欲しいときにすぐ読めます。😁

参考サイト

  1. Jetson Download Center | NVIDIA Developer

ブログランキング・にほんブログ村へ
にほんブログ村

Linux ディストロ探訪(14) 〜 Proxmox VE 〜

$
0
0

Linux とは本来 Linux カーネルのことを指しています。しかし、カーネルだけでは OSとして動作させることはできません。そこで、OS に関連するツールやアプリケーションなどをまとめて、インストールし易く、インストール後にすぐ利用できるような配布形態にしたものを「ディストリビューション(略してディストロ)」と呼んでいます。

本シリーズ記事は、Linux ディストリビューションをピックアップ、仮想マシン(あるいは実機)にインストールして紹介します[不定期]。

Proxmox VE とは

Proxmox VE (Virtual Environment) はオープンソースのサーバー仮想化環境です。Debian ベースの Linux ディストロで、仮想マシンとコンテナのデプロイメントを Web ブラウザ上で管理できます。Proxmox VE は Web コンソールとコマンドラインツール、サードパーティ向けの REST API を提供しています。仮想化は、OpenVZによる Linux のコンテナ-ベースの仮想化と、KVMによる完全仮想化の二つです。

Proxmox VE は Proxmox Server Solutions GmbH というドイツの企業が開発し、GNU Affero General Public License, version 3 のもとで配布しています。

Wikipediaより引用・翻訳、編集

Proxmox VE をインストールした後、他の PC から Proxmox VE の Web ベースの管理ツールへアクセスした例を示しました。

Proxmox VE の Web ベースの管理ツール

仮想環境にインストール

仮想環境を扱う OS を仮想環境 (GNOME Boxes) にインストールするのは変なのですが、動作確認のため CPU コアとストレージの割り当てを多くしてインストールしてみました。下記のサイトから、Proxmox VE 6.2 ISO Installer の Downloadボタンをクリックして、proxmox-ve_6.2-1.isoをダウンロードしました。

インストールは、ほぼデフォルトのままで次のようにインストールしました。

インストール完了後、以下のように Proxmox VE が起動します。

デスクトップ向けのディストロでないため、ログインは CUI ベースです。

Web ベースの管理ツール

Proxmox VE をインストールしたサーバの IP アドレスの 8006 ポートを(本記事の仮想環境へインストールした例では https://192.168.122.111:8006/)インターネットブラウザでアクセスすると、Proxmox VE の管理ツールを利用できます。

最初にログイン画面になりますので、ルートでログインします。

有効なサブスクリプションが無いという警告が出ます。

Proxmox VE は Proxmox Server Solutions GmbH 社の製品で、サブスクリプションの料金を支払ってサポートを受けるというビジネスモデルです。無料で使う限り、ログイン後に一回表示されます。

Proxmox VE は、Debian ベースの OS 上に稼働するこの管理ツールであると言えます。UI でカバーされていない操作は、このツール上でシェルを選択して利用できる端末エミュレータ上でコマンド処理します。

Proxmox VE の Web ベースの管理ツール上のシェル

Linux コンテナのデプロイ

Proxmox VE では LXCとよばれる Linux コンテナを利用できます。

Linux コンテナ (LXC) イメージのダウンロードは、Proxmox VE の Web システムの UI で出来ないので、端末エミュレータ上でダウンロードします。ダウンロードしたイメージは Proxmox VE 上ではテンプレートとして扱われ、これをデプロイします。コマンド名は違いますが考え方は Docker と同じです。

テンプレートさえあれば、あとは Web の UI でデプロイできますが、まずは、コマンドでコンテナの起動までやってみます。

コンテナのテンプレートのダウンロードは、pveam (Proxmox VE Appliance Manager) というコマンドで操作します。

まず、次のようにコンテナ・テンプレートのデータベースを更新します。

root@pve:~# pveam update
update successful

ダウンロード可能なテンプレートを表示します。

root@pve:~# pveam available
mail proxmox-mailgateway-6.2-standard_6.2-1_amd64.tar.gz
system alpine-3.10-default_20190626_amd64.tar.xz
system alpine-3.11-default_20200425_amd64.tar.xz
system archlinux-base_20200508-1_amd64.tar.gz
system centos-6-default_20191016_amd64.tar.xz
system centos-7-default_20190926_amd64.tar.xz
system centos-8-default_20191016_amd64.tar.xz
system debian-10.0-standard_10.0-1_amd64.tar.gz
system debian-8.0-standard_8.11-1_amd64.tar.gz
system debian-9.0-standard_9.7-1_amd64.tar.gz
system fedora-31-default_20191029_amd64.tar.xz
system fedora-32-default_20200430_amd64.tar.xz
system gentoo-current-default_20200310_amd64.tar.xz
system opensuse-15.1-default_20190719_amd64.tar.xz
system ubuntu-16.04-standard_16.04.5-1_amd64.tar.gz
system ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz
system ubuntu-19.10-standard_19.10-1_amd64.tar.gz
system ubuntu-20.04-standard_20.04-1_amd64.tar.gz
turnkeylinux debian-10-turnkey-b2evolution_16.0-1_amd64.tar.gz
turnkeylinux debian-10-turnkey-cakephp_16.0-1_amd64.tar.gz
...
(途中省略)
...
turnkeylinux debian-9-turnkey-zurmo_15.2-1_amd64.tar.gz
root@pve:~#

ここでは Debian 10 のシステムイメージ debian-10.0-standard_10.0-1_amd64.tar.gzをダウンロードします。

root@pve:~# pveam download local debian-10.0-standard_10.0-1_amd64.tar.gz
starting template download from: http://download.proxmox.com/images/system/debian-10.0-standard_10.0-1_amd64.tar.gz
target file: /var/lib/vz/template/cache/debian-10.0-standard_10.0-1_amd64.tar.gz
--2020-05-20 19:16:25-- http://download.proxmox.com/images/system/debian-10.0-standard_10.0-1_amd64.tar.gz
Resolving download.proxmox.com (download.proxmox.com)... 51.91.38.34, 2001:41d0:203:7470::34
Connecting to download.proxmox.com (download.proxmox.com)|51.91.38.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 230629816 (220M) [application/octet-stream]
Saving to: '/var/lib/vz/template/cache/debian-10.0-standard_10.0-1_amd64.tar.gz.tmp.10384'

0K ........ ........ ........ ........ ........ ........ 1% 641K 5m47s
3072K ........ ........ ........ ........ ........ ........ 2% 772K 5m13s
...
(途中省略)
...
224256K ........ ....... 100% 1.36M=2m10s

2020-05-20 19:18:35 (1.70 MB/s) - '/var/lib/vz/template/cache/debian-10.0-standard_10.0-1_amd64.tar.gz.tmp.10384' saved [230629816/230629816]

download finished
root@pve:~#

pveam downloadコマンドでダウンロードされる LXC(テンプレート)は、proxmox.comドメインのサイトにある圧縮ファイルで、local ストレージの /var/lib/vz/template/cache/にダウンロードされます。

ダウンロードされたコンテナ・テンプレートの一覧を表示します。

root@pve:~# pveam list local
NAME SIZE
local:vztmpl/debian-10.0-standard_10.0-1_amd64.tar.gz 219.95MB

コマンド操作でコンテナをデプロイ

コンテナを操作するには pctコマンド (Tool to manage Linux Containers (LXC) on Proxmox VE) を使用します。

仮想コンテナの識別番号 VMID を 999 として、ダウンロードしたテンプレート (debian) を local-lvm へデプロイします。

root@pve:~# pct create 999 local:vztmpl/debian-10.0-standard_10.0-1_amd64.tar.gz -storage local-lvm
Logical volume "vm-999-disk-0" created.
mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: 33026232-926d-4308-86dc-217f5d3e1b0f
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Multiple mount protection is enabled with update interval 5 seconds.
Writing superblocks and filesystem accounting information: done

extracting archive '/var/lib/vz/template/cache/debian-10.0-standard_10.0-1_amd64.tar.gz'
Total bytes read: 669562880 (639MiB, 127MiB/s)
Detected container architecture: amd64
Creating SSH host key 'ssh_host_dsa_key' - this may take some time ...
done: SHA256:cuNLeoIF1tNAIi6XIm57QX8KbMJUbz3SseQub8PqZm0 root@localhost
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
done: SHA256:aZ3voXWsIFma4rCrY4Vj/Y2efVq6zjpU/j6c9V4/ZwA root@localhost
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
done: SHA256:gBxNPclG5fKs+21q34U1lUaGMvQPw+RucpBI3VJP+7k root@localhost
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
done: SHA256:oEzC4qODjCwuHOF4aw4a7gPceHMt8Tk1tm12QI5C0Ec root@localhost
root@pve:~#

ストレージの論理ボリュームの領域 local-lvmにボリュームラベル vm-999-disk-0を付けて 4GB ほどの領域が作成され、そこへコンテナのテンプレートがデプロイされました。

デプロイしたコンテナにネットワークを設定しておきます。固定アドレスではなく DHCP を指定しました。MAC アドレスは指定をしなければ自動的に生成されるようです。

root@pve:~# pct set 999 -net0 name=eth0,bridge=vmbr0,ip=dhcp

VMID = 999 を指定して、コンテナを起動します。

root@pve:~# pct start 999

Web 左側のコンテナアイコン (CT999) が起動したのを確認して、コンテナに入ります。

root@pve:~# pct enter 999
root@CT999:~#
コンテナの起動して、コンテナに入る

コンテナから出て、ストレージの使用状況を確認すると、以下のようになっています。

root@CT999:~# exit
root@pve:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 120.1G 0 disk
├─sda1 8:1 0 1007K 0 part
├─sda2 8:2 0 512M 0 part
└─sda3 8:3 0 119.6G 0 part
├─pve-swap 253:0 0 4G 0 lvm [SWAP]
├─pve-root 253:1 0 29.8G 0 lvm /
├─pve-data_tmeta 253:2 0 1G 0 lvm
│ └─pve-data-tpool 253:4 0 69G 0 lvm
│ ├─pve-data 253:5 0 69G 0 lvm
│ └─pve-vm--999--disk--0 253:6 0 4G 0 lvm
└─pve-data_tdata 253:3 0 69G 0 lvm
└─pve-data-tpool 253:4 0 69G 0 lvm
├─pve-data 253:5 0 69G 0 lvm
└─pve-vm--999--disk--0 253:6 0 4G 0 lvm
sr0 11:0 1 1024M 0 rom
root@pve:~#

今回、Proxmox VE を評価するにあたって、約 120GB の領域を確保したのですが、上記の領域を単純に足し合わせると総量と合いません。この仕組みを理解できていませんので調べる必要があります。

Web UI でコンテナをデプロイ

コンテナのテンプレートがダウンロードされていれば、Web UI 上でデプロイできます。画面右上にある「CTを作成」ボタンをクリックします。

「CTを作成」ボタン

ボタンをクリックすると、ダイアログ画面が表示されますので、まずルートのパスワードを入力します。VMID やホスト名の指定もできます。

ダウンロード済みのテンプレートが選択できますので、デプロイするテンプレートを選択します。ここでは ubuntu を選択しました。

ストレージの容量、CPU のコア数、メモリ (RAM) の容量を設定します。

ネットワークは DHCP を選択しました。

DNS の設定はそのままで、最後の確認画面で完了をクリックします。

すると、テンプレートのデプロイがはじまります。

テンプレートのデプロイ

デプロイが終わると UI 上にデプロイしたコンテナが表示されます。

デプロイしたコンテナを選択し、右クリックするとプルダウンメニューが表示されますので、「開始」を選択してコンテナを起動します。

コンテナが起動してアイコンが変化したのを確認し、再び右クリックでプルダウンメニューを表示され、「コンソール」を選択します。

すると、ブラウザ上の端末エミュレータが別ウィンドウで表示されますので、root でログインできることを確認します。

端末エミュレータで デプロイした ubuntu のコンテナにログインできることを確認

仮想マシンのインストール

Linux カーネルを利用する場合はコンテナを利用した方が効率が良いのですが、Linux のカーネルを使わない OS を利用したい場合は、コンテナではなくて仮想マシンを作成します。Windows をインストールする場合、ISO ファイルを入手して、Web UI でアップロードします。

ストレージ local の内容を表示し、「アップロード」ボタンをクリックします。

Windows.iso を選択してアップロードします。

ストレージ local の内容の画面で ISO イメージの項目が追加され、アップロードされた Windows.iso が表示されます。

アップロードされた ISO ファイルは、/var/lib/vz/template/isoに格納されます。

「VMを作成」ボタンをクリックします。仮想マシンの設定は、テンプレートの代わりに ISO ファイルを選ぶ以外、コンテナをデプロイするときの設定とほぼ同じです。

仮想マシン 101 (Windows) を開始(起動)します。

アイコンが変わって開始を確認したらコンソールを開きます。

Windows 10 のインストーラーが起動します。じつに久しぶりの Windows のインストールですが、その紹介は本記事のテーマではないので、詳細は割愛します。

Windows 10 のインストール開始画面

拷問のように長い設定の後、ようやく Windows を使えるようになりました。

Windows 10 Home のデスクトップ画面

まとめ

項目説明
ディストリビューションProxmox VE
プロジェクトサイトhttps://www.proxmox.com/
デスクトップ環境なし
対応プラットフォームx86_64
パッケージ管理deb, APT
日本語入力N/A
寸評

Web ベースの管理システムで仮想環境のための Linux ディストロ、ハイパーバイザーです。大規模なクラウド環境がどのようになっているかは想像を超えるので、あれこれ言えませんが、オンプレミスな環境で強力なサーバーシステムがあれば、Proxmox VE をインストールして、そのコンピュータ資源を有効に活用できそうです。Proxmox VE ではクラスター管理もできるようになっていますが、評価できる環境がありませんでした/

雑感

7 - 8 年前、当時勤めていた会社の文書管理システムに新しいシステムを導入したときのことです。結構パワフルなサーバーを導入し、Linux の仮想システム上に、Web サーバー、アプリケーションサーバー、そしてデータベースサーバーを 3 つの Windows OS で構成しました。一台 3 役の設定です。文書管理担当の部下から、どうしてそんな面倒な構成にするのですかと尋ねられたとき、返答に詰まりました。スケーラビリティを確保するためと答えたかったのですが、それでは伝わらないと思ったからです。

IT に詳しくない部下にうまく伝えられないと上から目線で偉そうに考えていましたが、なんのなんの、自分も五十歩百歩だったに違いありません。Proxmox VE を動かしてみて勉強になったことが多々あるからです。

参考サイト

  1. ProxmoxVEのセットアップと利用 - Qiita [2018-10-18]
  2. Proxmoxインストールしようぜの巻 | エンジニアブログ [2019-05-22]

ブログランキング・にほんブログ村へ
にほんブログ村

Vala を試してみた

$
0
0

Vala は GObjectを利用した C 言語のソースコードを生成する、セルフホスティングコンパイラを持つオブジェクト指向言語です。C#に似た構文を持ち、無名関数シグナルプロパティジェネリクスメモリ管理例外処理型推論、および、for-eachなど、C 言語にはない言語仕様を持っています。

Wikipediaより引用・編集

Linux のディストロの一つ、elementary OSを評価していて、コアアプリケーションの開発に Vala というプログラミング言語を使用していることを知り、どんなものか調べてみました。

本ブログ記事では下記の OS 環境で動作確認をしています。

Fedora 32 (Workstation Edition)x86_64

Hello World!

最初の Hello World! のプログラムは、Wikipedia の Vala の説明で紹介されている、GTK+ を使って GUI を作成するサンプルプログラムを、メッセージだけ日本語にしたものにしました。

hellogtk.vala
using Gtk;

int main (string[] args) {
Gtk.init (ref args);

var window = new Window ();
window.title = "Hello, World!";
window.border_width = 10;
window.window_position = WindowPosition.CENTER;
window.set_default_size(350, 70);
window.destroy.connect (Gtk.main_quit);

var label = new Label ("こんにちは、世界!");

window.add (label);
window.show_all ();

Gtk.main ();
return 0;
}

Wikipedia に紹介されている通り実行してみましたがエラーになりました。

[bitwalk@fedora-pc vala]$ valac --pkg gtk+-3.0 hellogtk.vala
bash: valac: コマンドが見つかりませんでした...
コマンド valac'を提供するためにパッケージ 'vala'をインストールしますか? [N/y] y


* キューで待機中...
以下のパッケージはインストールされるべきものです:
libvala-0.48.6-1.fc32.x86_64 Vala compiler library
vala-0.48.6-1.fc32.x86_64 A modern programming language for GNOME
変更したまま継続しますか? [N/y] y


* キューで待機中...
* 認証を待ち受け中...
* キューで待機中...
* パッケージをダウンロード中...
* データを要求中...
* 変更をテスト中...
* パッケージのインストール中...
/home/bitwalk/ドキュメント/vala/hellogtk.vala.c:7:10: 致命的エラー: gtk/gtk.h: そのようなファイルやディレクトリはありません
7 | #include <gtk/gtk.h>
| ^~~~~~~~~~~
コンパイルを停止しました。
error: cc exited with status 256
Compilation failed: 1 error(s), 0 warning(s)

[bitwalk@fedora-pc vala]$

GTK の開発環境が入っていませんでした。とりあえず下記のようにして環境を整えます。

[bitwalk@fedora-pc vala]$ sudo dnf install gtk3-devel gstreamer1-devel clutter-devel webkit2gtk3-devel libgda-devel gobject-introspection-devel
メタデータの期限切れの最終確認: 0:01:49 時間前の 2020年06月06日 18時36分18秒 に実施しました。
パッケージ gobject-introspection-devel-1.64.1-1.fc32.x86_64 は既にインストールされています。
依存関係が解決しました。
================================================================================
Package Arch Version Repository Size
================================================================================
インストール:
clutter-devel x86_64 1.26.4-1.fc32 fedora 394 k
gstreamer1-devel x86_64 1.16.2-2.fc32 fedora 484 k
gtk3-devel x86_64 3.24.20-1.fc32 updates 4.3 M
libgda-devel x86_64 1:5.2.9-4.fc32 fedora 2.9 M
webkit2gtk3-devel x86_64 2.28.2-2.fc32 updates 289 k
依存関係のインストール:
at-spi2-atk-devel x86_64 2.34.2-1.fc32 fedora 9.8 k
...
(途中省略)
...
webkit2gtk3-jsc-devel x86_64 2.28.2-2.fc32 updates 138 k

トランザクションの概要
================================================================================
インストール 52 パッケージ

ダウンロードサイズの合計: 15 M
インストール済みのサイズ: 107 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/52): graphite2-devel-1.3.14-1.fc32.x86_64.rp 539 kB/s | 40 kB 00:00
...
(途中省略)
...
webkit2gtk3-jsc-devel-2.28.2-2.fc32.x86_64

完了しました!
[bitwalk@fedora-pc vala]$ sudo dnf install devhelp gtk3-devel-docs gstreamer1-devel-docs clutter-doc
...
(途中省略)
...
完了しました!
[bitwalk@fedora-pc vala]$

再度、valac でコンパイルしてみます。なにもメッセージがでないのは寂しいので、 -vオプションをつけました。

[bitwalk@fedora-pc vala]$ valac -v --pkg gtk+-3.0 hellogtk.vala
Loaded package `/usr/share/vala-0.48/vapi/glib-2.0.vapi'
Loaded package `/usr/share/vala-0.48/vapi/gobject-2.0.vapi'
Loaded package `/usr/share/vala-0.48/vapi/gtk+-3.0.vapi'
Loaded package `/usr/share/vala-0.48/vapi/gio-2.0.vapi'
Loaded package `/usr/share/vala-0.48/vapi/atk.vapi'
Loaded package `/usr/share/vala-0.48/vapi/cairo-gobject.vapi'
Loaded package `/usr/share/vala-0.48/vapi/cairo.vapi'
Loaded package `/usr/share/vala-0.48/vapi/gdk-pixbuf-2.0.vapi'
Loaded package `/usr/share/vala-0.48/vapi/gdk-3.0.vapi'
Loaded package `/usr/share/vala-0.48/vapi/pango.vapi'
Loaded package `/usr/share/vala-0.48/vapi/harfbuzz-gobject.vapi'
Loaded package `/usr/share/vala-0.48/vapi/pangocairo.vapi'
Loaded package `/usr/share/vala-0.48/vapi/x11.vapi'
cc -o '/home/bitwalk/ドキュメント/vala/hellogtk''/home/bitwalk/ドキュメント/vala/hellogtk.vala.c' -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/at-spi-2.0 -pthread -lgtk-3 -lgio-2.0 -latk-1.0 -lgdk-3 -lgdk_pixbuf-2.0 -lcairo-gobject -lharfbuzz-gobject -lpangocairo-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lcairo -lX11
[bitwalk@fedora-pc vala]$

無事コンパイルができたので、実行してみました。

[bitwalk@fedora-pc vala]$ ls
hellogtk hellogtk.vala
[bitwalk@fedora-pc vala]$ ./hellogtk
hellogtk の実行例

手軽に Gtk+ を利用した GUI プログラミングができそうです。最近 PyGObject で GUI プログラミングをちまちま始めていますが、Vala もやってみたくなってしまいました。少しずつサンプルを試していくことにします。

参考サイト

  1. Projects/Vala - GNOME Wiki!
  2. Tutorial for beginners (Vala)
  3. Gtk+ — Fedora Developer Portal

ブログランキング・にほんブログ村へ
にほんブログ村

GNOME Builder は GNOME アプリ開発用の IDE

$
0
0

GNOME Builder は、GNOME デスクトップ環境で GNOME ベースのアプリケーションを開発するための IDE です。Valaで GUI アプリケーションを開発するのに使えそうな IDE をあれこれ探しているうちにたどり着きました。Wikipediaによると GNOME Builder の開発は 2015 年に始まった比較的新しいプロジェクトです。

本ブログ記事では下記の OS 環境で動作確認をしています。

Fedora 32 (Workstation Edition)x86_64

Vala 用にプロジェクトを作る

GNOME Builder (gnome-builder) をインストールして、Vala 用のプロジェクトを作ってみました。起動後、Git でクローンして参加できる GNOME 関連のプロジェクトが表示されて戸惑いますが、左下方にある Start New Projectボタンをクリックして新しいプロジェクトを作成します。

GNOME Builder 起動後の画面

すると、プロジェクトの作成画面に変わりますので、プロジェクトに関する下記の情報を設定します。

  1. プロジェクト名
  2. Application ID
  • org.gnome.Builderのようなドメインで指定した識別子を指定します。空欄にすると org.example...が設定されます。
  • プロジェクトの場所
    • デフォルトは ~/Projectsです。
  • 言語
    • C, Japascript, Python, Rust, C++, C#, Vala から選択します。
  • ライセンス
    • オープンソースライセンスを選択します。
  • バージョン管理
    • Git でバージョン管理をする場合は、オンにします。
  • テンプレートを選択
    • プロジェクトの雛形(テンプレート)を、GNOME アプリケーション、共有ライブラリ、Command Line Tool、空のプロジェクト、Empty Makefile Project から選択します。

    ここでは、プロジェクト名を test1 として、下記のように言語に Vala を選んでプロジェクトを作成しました。

    Start New Project の画面

    GNOME Builder のプロジェクト画面が表示されます。

    新しいプロジェクト作成後の画面

    左側のペインで、Files → src → main.vala をクリックすると、右側にテンプレートの内容が表示されます。

    上側のをクリックして実行してみます。

    テンプレートの main.vala

    すると、別ウィンドウに Hello World! が表示されます。

    Vala のテンプレート実行例

    ちょっと使ってみた感じでは、なかなか使えそうな IDE ですが、細かい所を全然理解していません。普段使っている PyCharmと使い勝手が異なり、戸惑っています。英文ですが、関連文書が整備されているので、じっくり読んで使いこなせるようします。

    参考サイト

    1. Apps/Builder - GNOME Wiki!

    ブログランキング・にほんブログ村へ
    にほんブログ村

    【備忘録】MSYS2 で Vala を試してみた

    $
    0
    0

    Vala は GObjectを利用した C 言語のソースコードを生成する、セルフホスティングコンパイラを持つオブジェクト指向言語です。C#に似た構文を持ち、無名関数シグナルプロパティジェネリクスメモリ管理例外処理型推論、および、for-eachなど、C 言語にはない言語仕様を持っています。

    Wikipediaより引用・編集

    参考サイト [1]で Linux (Fedora) で Vala を試した例を紹介しましたが、Windows の MSYS2 上でも Vala を利用できたので忘備録としてまとめました。

    本ブログ記事では下記の OS 環境で動作確認をしています。

    Windows 10 / MSYS2 (msys2-runtime 3.1.5-3)x86_64

    Hello World!

    最初の Hello World! のプログラムは、参考サイト [1]と同じく、Wikipedia の Vala の説明で紹介されている、GTK+ を使って GUI を作成するサンプルプログラムを、メッセージだけ日本語 (UTF-8) にしたものにしました。

    hellogtk.vala
    using Gtk;

    int main (string[] args) {
    Gtk.init (ref args);

    var window = new Window ();
    window.title = "Hello, World!";
    window.border_width = 10;
    window.window_position = WindowPosition.CENTER;
    window.set_default_size(350, 70);
    window.destroy.connect (Gtk.main_quit);

    var label = new Label ("こんにちは、世界!");

    window.add (label);
    window.show_all ();

    Gtk.main ();
    return 0;
    }

    まず、PyGObject を利用するための環境を整えます。これは Python でも GObject を利用した GUI プログラミング環境を使うので、Python のために用意する環境が、そのまま Vala の環境になると考えているからです。


    $ pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-python3 mingw-w64-x86_64-python3-gobject

    Vala をインストールします。


    $ pacman -S mingw-w64-x86_64-vala

    C でコンパイルするため、GCC のツールチェーンをインストールします。


    $ pacman -S mingw-w64-x86_64-toolchain

    準備が整ったので valac でサンプルをコンパイルして実行します。


    $ valac -v --pkg gtk+-3.0 hellogtk.vala
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/glib-2.0.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gobject-2.0.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gtk+-3.0.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gio-2.0.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/atk.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/cairo-gobject.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/cairo.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gdk-pixbuf-2.0.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/gdk-3.0.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/pango.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/harfbuzz-gobject.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/pangocairo.vapi'
    Loaded package `D:\msys64\mingw64\share/vala-0.48/vapi/x11.vapi'
    cc -o 'D:/msys64/home/KTAKAHAS/vala-samples\hellogtk''D:/msys64/home/KTAKAHAS/viro -ID:/msys64/mingw64/include -ID:/msys64/mingw64/include/gdk-pixbuf-2.0 -ID:/lude -ID:/msys64/mingw64/include/cairo -ID:/msys64/mingw64/include/pixman-1 -ID:b-2.0/include -ID:/msys64/mingw64/include -ID:/msys64/mingw64/include/cairo -ID:-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lpangowin32-1.0 -lgdk_pixbuf-2.0
    $ ./hellogtk.exe
    hellogtk.exe の実行例

    わざわざ Vala を使わなくとも、PyGObject を利用した Python スクリプトのままで自分の環境では運用できますが、配布する場合にはバイナリの方が都合のよい場合があります。状況に応じて使い分けられるように、使いこなせるようになりたいです。

    参考サイト

    1. bitWalk's: Vala を試してみた [2020-06-06]
    2. Projects/Vala - GNOME Wiki!
    3. Tutorial for beginners (Vala)
    4. Groups - MSYS2 Packages

    ブログランキング・にほんブログ村へ
    にほんブログ村

    【備忘録】クラスの継承

    $
    0
    0

    GObject (GLib Object System) は、GTK+ のすべてのウィジェットおよび関連するオブジェクトの基底クラスからなるオブジェクトシステムと、言語間の透過的相互運用性を提供するライブラリです。GObject は C 言語で実装されており、バインディングによって他の言語から利用可能となっています。

    PyGObject は GObject へのバインディングを提供する Python パッケージです。

    Wikipediaより引用・編集

    Gtk.Dialog クラスの継承

    GUI を作っていると、ダイアログウィンドウを幾つも作ることになりますが、自分が作るアプリの場合、その基本構成はほとんど同じです。必要な基本構成をあらかじめクラスにしておくと、多くのダイアログウィンドウを扱うときに便利です。基本的なことですが、備忘録としました。

    以下のサンプルでは Gtk.Dialog を継承して、OKCancelボタンを付けた OKCancelDlg クラスを作っておき、これを実装した MyDialog の例を示しています。残念ながら、表示するダイアログが一つしかなければ、ありがたみが判りません。😅

    gtk_dialog_3.py
    gtk_dialog_3.py の実行例

    参考サイト

    1. GtkDialog: GTK+ 3 Reference Manual

     

    ブログランキング・にほんブログ村へにほんブログ村

    【備忘録】Python のクラスメソッドを理解する

    $
    0
    0

    GObject (GLib Object System) は、GTK+ のすべてのウィジェットおよび関連するオブジェクトの基底クラスからなるオブジェクトシステムと、言語間の透過的相互運用性を提供するライブラリです。GObject は C 言語で実装されており、バインディングによって他の言語から利用可能となっています。

    PyGObject は GObject へのバインディングを提供する Python パッケージです。

    Wikipediaより引用・編集

    Python のクラスメソッド

    Python でインタンス化していないクラスからメンバーのメソッドを実行したいときには、メソッドに @classmethodというデコレーションを付けます。このときメソッドの第一引数には selfでなくクラスそのものである clsを使います。

    クラスをインスタンス化せずに使いたい場合とはどんなときでしょう?

    例として PyGObject の Gtk.FileChooserDialogを取り上げます。ファイルを選択するダイアログでスタティックメソッドを用いる目的は、クラスに前回選択したファイルがあるディレクトリを記録させておくためです。もちろん、アプリケーション側でディレクトリの場所を記録しておくこともできるのですが、クラス側で管理した方が楽な場合もあります。毎回ファイルを選択するダイアログのクラスをインスタンス化すると、前回開いたディレクトリをインスタンス内で自己参照できないのでクラスメソッドを利用しました。

    以下に例を示しました。

    gtk_filechooserdialog_2.py
    gtk_filechooserdialog_2.py の実行例
    PyCharm上の出力例

    /home/bitwalk/venv/bin/python /home/bitwalk/プロジェクト/PyGObject_samples/gtk_filechooserdialog_2.py
    ファイル「/home/bitwalk/プロジェクト/PyGObject_samples/gtk_filechooserdialog_2.py」が選択されました。
    ファイル「/home/bitwalk/プロジェクト/PyGObject_samples/gtk_filechooserdialog_3.py」が選択されました。

    Process finished with exit code 0

    仮に、同じロジックを使って、普通にインスタンス化したらどのようになるかを確認できるサンプルも以下に用意しました。

    gtk_filechooserdialog_3.py

    インスタンス化すると同じロジックでは前回開いたディレクトリの場所を保持できないことを確認できます。

    GUI アプリケーションをどのように作るかは考え方次第です。いろいろなクラスのインスタンスからファイルを開くダイアログを頻繁に使うアプリケーションを作っていて、前回開いたディレクトリを記録しておかないと操作性が悪くなるので、アプリケーション側で記録させようとしたところ、意外と手間がかかって面倒でした。事前にしっかり設計をしないからだと言われればそうなのですが、そんな時にクラスメソッドの有用性に気づいたので備忘録としてまとめました。

    参考サイト

    1. Gtk.FileChooserDialog - Classes - Gtk 3.0
    2. gtk.FileChooserDialog

     

    ブログランキング・にほんブログ村へにほんブログ村

    Linux ディストロ探訪(15) 〜 elementary OS 〜

    $
    0
    0

    Linux とは本来 Linux カーネルのことを指しています。しかし、カーネルだけでは OSとして動作させることはできません。そこで、OS に関連するツールやアプリケーションなどをまとめて、インストールし易く、インストール後にすぐ利用できるような配布形態にしたものを「ディストリビューション(略してディストロ)」と呼んでいます。

    本シリーズ記事は、Linux ディストリビューションをピックアップ、仮想マシン(あるいは実機)にインストールして紹介します[不定期]。

    elementary OS とは

    elementary OS は、Daniel Foré氏が 2007 年に設立した elementary LLC 社が開発、配布している、Ubuntu LTS をベースとした Linux ディストリビューションです。同社が Valaで開発したデスクトップ環境 Pantheon や、アプリおよびコンポーネントを利用できます。

    elementary OS 5.1 Hara のデスクトップ画面

    仮想環境へのインストール

    elementary OS のインストーラには、Ubuntu と同じく Ubiquityが使われています。そのため、Ubuntu のインストールと同じだと言っても良いのかしれませんが、簡単にスクリーンショットを掲載します。

    GNOME Boxesに、タダでダウンロードした elementaryos-5.1-stable.20200603.isoを読み込んでインストールしました。

    最初にライブシステムが起動し、elementary OS を試すかインストールするかの選択画面が出ますので、最初に左側の言語を選んでから elementary をインストールをクリックしてインストールへ進みます。

    「キーボードレイアウト」→「アップデートと他のソフトウェア」→「インストールの種類」→「どこに住んでいますか?」→「あなたの情報を入力してください」と進めます。

    もしかして、それぞれの画面の翻訳が Ubuntu 18.04 と違うかもしれないと思って調べましたが、全く同じでした。

    ファイルのコピーとインストールが始まります。

    しばらく待つとインストールが終わりますので再起動します。

    しばらく待ってログインの画面が表示されたら、設定したユーザーアカウントでログインします。

    elementary OS 5.1 Hara のログイン画面
    elementary OS 5.1 Hara のインストール後、最初にログインした後の画面

    最初に以下のような設定をします。

    アプリケーション

    elementary OS をインストール直後に利用できる GUI アプリは多くありません。画面左上の「アプリケーション」をクリックして表示される以下の 15 のアプリだけです。

    • AppCenter (elementary, Inc.)
      • AppCenter はコンピュータにソフトウェアをインストールおよび削除、閲覧するための管理ソフト。(Wikipediaより引用)
    • Epiphany (The GNOME Project)
    • カメラ (elementary LLC)
      • カメラで写真と動画を撮影します
    • カレンダー (elementary LLC)
      • 予定の表示と計画をします
    • コード (elementary LLC)
      • 便利なエディター
    • システム設定 (elementary, Inc.)
      • システムとユーザーの設定を変更します
    • スクリーンショット (elementary LLC)
      • 画面の画像を保存します
    • ターミナル (elementary LLC)
      • コマンドラインを使用します
    • ビデオ (elementary, Inc.)
      • 動画や映画を見ます
    • ファイル (elementary LLC)
      • ファイルとフォルダーを閲覧したり管理したりします
    • フォト (elementary LLC)
      • 写真を整理します
    • マルチタスキングビュー (elementary, Inc.)
      • Pantheon 向けのコンポジット型ウィンドウマネージャー
    • ミュージック (elementary LLC)
      • elementary の公式ミュージックプレーヤー
    • メール (elementary LLC)
      • メールを送信し受信します
    • 電卓 (elementary, Inc.)
      • 簡単な式を計算します

    AppCenter は Ubuntu ソフトウェアセンター (AppCenter) をベースにしているかもしれませんが、elementary OS の GitHub のサイトで開発されています。したがって、GNOME の Web ブラウザ以外は、elementary OS で開発されているアプリです。

    アプリを追加する必要があれば AppCenter を使います。例えば AppCenter で GIMP をインストールしようとすると、下記のようなメッセージが出ます。

    キュレーション (curation) とは、人力で情報を収集、整理、要約、公開(共有)することです(英辞郎 on the WEB:アルクより引用)。elementary がキュレーションしていないということは、elementary のパッケージとして配布されているものでは無いということです。インストールはできるけど、elementary OS の保証外ということでしょう。「□ キュレーションに関する警告を表示」のチェックを外せば次回からメッセージが表示されなくなります。

    終わったところから再開できるアプリ

    上記アプリのうち、Epiphany(ブラウザ)とコード(エディタ)を使って気付いたことは、前回終了したときの状態でアプリを再開できることです。ブラウザでは慣れてしまえば、結構便利な機能かもしれません。

    Flatpak のパッケージ

    elementary OS 5.1 Hera から、Flatpakをサポートするようになったということですが、AppCenter から Flatpak のパッケージを識別してインストールする方法が判りませんでした。ウェブブラウザで flathub.orgへアクセスしてアプリをインストールしようとしても、AppCenter が起動してインストールするわけでなく、単純に flatpakref ファイルがダウンロードされるだけでした。

    やむなく端末エミュレータ上で flatpakコマンドで GIMP をインストールしてみたところ、正常に動作しました。ただ、インストールしたアプリが、デスクトップのアプリケーション一覧に登録されなかったので flatpak runコマンドで起動しました。

    ※ なお、OS の再起動後、アプリケーション一覧にインストールした GIMP のアイコンが表示されました。😅

    bitwalk@elementary-pc:~$ flatpak install https://flathub.org/repo/appstream/org.gimp.GIMP.flatpakref
    The remote 'flathub', referred to by 'org.gimp.GIMP' at location https://dl.flathub.org/repo/ contains additional applications.
    Should the remote be kept for future installations? [Y/n]: y
    Required runtime for org.gimp.GIMP/x86_64/stable (runtime/org.gnome.Platform/x86_64/3.36) found in remote flathub
    Do you want to install it? [Y/n]: y

    org.gimp.GIMP permissions:
    ipc network x11 file access [1] dbus access [2] tags [3]

    [1] /tmp, host, xdg-config/GIMP, xdg-config/gtk-3.0, xdg-run/gvfs
    [2] org.freedesktop.FileManager1, org.gtk.vfs, org.gtk.vfs.*
    [3] stable


    ID Branch Op Remote Download
    1. [✓] org.freedesktop.Platform.GL.default 19.08 i flathub 84.6 MB / 85.1 MB
    2. [✓] org.freedesktop.Platform.openh264 2.0 i flathub 857.5 kB / 916.8 kB
    3. [✓] org.gnome.Platform.Locale 3.36 i flathub 1.7 MB / 323.0 MB
    4. [✓] org.gtk.Gtk3theme.elementary 3.22 i flathub 75.3 kB / 1.3 MB
    5. [✓] org.gnome.Platform 3.36 i flathub 273.8 MB / 324.5 MB
    6. [✓] org.gimp.GIMP stable i flathub 84.6 MB / 110.5 MB

    Installation complete.
    bitwalk@elementary-pc:~$ flatpak list
    Name Application ID Version Branch Installation
    default org.freedesktop.Platform.GL.default 19.08 system
    openh264 org.freedesktop.Platform.openh264 2.0 system
    GIMP (GNU Image Manipulation Program) org.gimp.GIMP 2.10.20 stable system
    GNOME Application Platform version 3.36 org.gnome.Platform 3.36 system
    elementary stylesheet org.gtk.Gtk3theme.elementary 3.22 system
    bitwalk@elementary-pc:~$ flatpak run org.gimp.GIMP
    Gtk-Message: 12:04:39.664: Failed to load module "atk-bridge"
    Gtk-Message: 12:04:39.721: Failed to load module "canberra-gtk-module"
    gimp_device_info_set_device: trying to set GdkDevice 'VirtualPS/2 VMware VMMouse' on GimpDeviceInfo which already has a device
    Gtk-Message: 12:04:49.397: Failed to load module "atk-bridge"
    Gtk-Message: 12:04:49.404: Failed to load module "canberra-gtk-module"
    bitwalk@elementary-pc:~$
    FlatHub からダウンロードした GIMP の実行例

    デスクトップ環境での操作性を重視している割には、Flatpak へのサポートがまだ薄いように見えます。しかし、基本的なことを見落としているかもしれません。elementary OS での Flatpak の利用についてはひきつづき調べることにします。

    ショートカット

    キーボードの ⊞ Winを押下すると、ショートカットの一覧が表示されます。

    キーボードのショートカット一覧

    日本語入力

    日本語を選択してインストールすると、最初から ibus と mozc が利用できるようになっています。「システム設定」を開いて「言語と地域」を選ぶと、インストール済み言語に日本語が設定されています。左下の キーボードの設定ボタンをクリックすると、キーボードの設定ウィンドウに変わりますので、右下の インプットメソッドの設定をクリックします。

    すると、IBus の設定画面になります。CtrlSpaceで Mozc が利用できるようになります。

    例としてコードに日本語を入力している例を示しました。

    コードで日本語を入力している例

    マウスの中ボタン(スクロールボタン)

    elementary OS のデスクトップ環境を使っていて気になったことは、むかしから X Window 系の操作で慣れ親しんできた中ボタン(スクロールボタン)を文字のペーストに使えません。以下のような話が以前からあるので、先取りした考え方なのかもしれません。

    開発チームについて

    elementary OS は Ubuntu や RHELと同じく、企業が開発(あるいは支援)している Linux ディストロです。企業が倒産すればそのままディストロ存続の危機に直面しますので、このような場合、ひとまずどのような企業なのか調べるのですが、elementary LLC については判りませんでした。

    しかし、開発チームが elementary OS のサイトで紹介されており、それを見ると、実にグローバルなメンバーで構成されていることに驚かされます。日本語のサイトもあるのですが、おそらく最新と考えられる英語サイトの内容が反映されていないように見えるので、英語のサイトを紹介します。

    日本や韓国の方も参加されています。チーム全員が elementary LLC に雇用されているのかは判りませんが、それぞれの役割でいろいろな国から参加してひとつのディストリビューションを作りあげるということはとても素晴らしい事です。

    インターフェースのガイドライン

    elementary OS のインターフェイスは統一感があり洗練されている印象がありますが、それは下記のガイドラインに沿って開発されているからでしょう。今では GNOME などのデスクトップ環境では気にならなくなりましたが、昔はオープンソースの成果物をただ集めると、それぞれインターフェイスに対する考え方がことなるため、どうしても寄せ集め感が拭えませんでした。elementary OS は特に洗練された統一感があるユーザーインターフェイスの実現に成功しているように思えます。

    今回は調べきれませんでしたが、Vala の開発環境を整備して使い心地を評価したいと考えています。

    まとめ

    項目説明
    ディストリビューションelementary OS
    プロジェクトサイトelementary (GitHub)
    デスクトップ環境Pantheon(GNOME 3 ベース)
    対応プラットフォームx86_64
    パッケージ管理APT, deb
    日本語入力ibus-mozc
    寸評

    Ubuntu をベースにしているとは言え、デスクトップ環境およびコアアプリを独自開発したアプリで実装しており、見た目は全く別の Linux です。

    オープンソースの世界でビジネスを続けていくことは難しく、持続的に収益を確保できる強力なビジネスモデルと積み上げた実力がどうしても必要になります。elementary 社は小さな会社なのでしょうが、珠玉のようなこのデスクトップ OS を持続的に公開し続けることを祈っています。

    参考サイト

    1. 高速でオープンソース、プライバシーも尊重する、Windows や macOS の代わりになる OS ⋅ elementary OS
    2. elementary OS 5.1 Hera がリリース! - Ryo Nakano - Medium
    3. Sponsor @elementary on GitHub Sponsors

    ブログランキング・にほんブログ村へ
    にほんブログ村

    openBD の API を利用した GUI サンプル (PyGObject)

    $
    0
    0

    openBD プロジェクト [1] は、書誌情報・書影の収集を版元ドットコム [2]、API システムの開発をカーリル(図書館横断検索サービス開発会社)[3] で運営している、書誌情報・書影を、ISBNで検索できる APIのサービスです。

    このサービスは、だれでも無償で自由に使えます。取得した書影・書誌データについても、前述したように「本の販促・紹介目的」であれば、自由な利用ができます。ただし、openBD が定める利用規約 [5] を守る必要があります。

    openBD の API を利用する

    Qiita に openBD の API の使い方を紹介しているサイトがありました(下記)。

    サンプルコード (html) が紹介されていましたのでコピペして試してみたところ、サクサクと動くではありませんか!😮

    書籍情報取得サンプルの実行例 (Firefox)

    PyGObject でも同じような機能を実装した GUI を作ってみたいと思い、作ってみました。

    openbdfinder.py

    スマートな記述よりも、とにかく動くことを重視したので、ベタなコードになってしまっていますが、とりあえず動きます。🤗

    openbdfinder.py の実行例

    このサンプルをベースにして、バーコードリーダが使える、データベース付の蔵書管理アプリでも作ろうかと画策しています。惜しむらくは、最近は Kindleでの購入が増えてしまっているので、印刷された本の増加はかなり抑えられてしまっていることです。

    参考サイト

    1. openBD | 書誌情報・書影を自由に
    2. 書誌情報と書影とopenBD  | 版元ドットコム
    3. カーリル | 日本最大の図書館蔵書検索サイト
    4. ヘルプ - openBD Fetch
    5. openBD API 利用規約

     

    ブログランキング・にほんブログ村へにほんブログ村

    CentOS 8.2 (2004) リリース

    $
    0
    0

    CentOS 8.2 (2004) が米国時間 6 月 15 日付けでリリースされました。これは 4月21日(米国時間)にリリースされた RHEL 8.2 に対応しています。対応しているプラットフォームは aarch64, ppc64le および x86_64 です。

    なんだか今回はずいぶんとひっそりとしたリリースです。たまたま distrowatch.comのサイトをのぞいて、リリースに気が付きましたが、本記事を書いている時点では CentOS プロジェクトのサイトを見ただけでは判りませんでした。


    [bitwalk@centos-pc ~]$ lsb_release -a
    LSB Version: :core-4.1-amd64:core-4.1-noarch
    Distributor ID: CentOS
    Description: CentOS Linux release 8.2.2004 (Core)
    Release: 8.2.2004
    Codename: Core
    [bitwalk@centos-pc ~]$

    参考サイト

    1. Download CentOS
    2. Manuals/ReleaseNotes/CentOS8.2004 - CentOS Wiki
    3. 8.2 リリースノート Red Hat Enterprise Linux 8 | Red Hat Customer Portal

    ブログランキング・にほんブログ村へ
    にほんブログ村

    Vala と Meson

    $
    0
    0

    Vala は GObjectを利用した C 言語のソースコードを生成する、セルフホスティングコンパイラを持つオブジェクト指向言語です。C#に似た構文を持ち、無名関数シグナルプロパティジェネリクスメモリ管理例外処理型推論、および、for-eachなど、C 言語にはない言語仕様を持っています。

    Wikipediaより引用・編集

    Vala を試してみて、簡単に GObject の GUI が作れることに興味を持ちました [1]。そこで開発環境を探したところ GNOME Builder が Vala のプロジェクトに対応していることが判りました [2]。しかし使い方がよくわからず、どうもとっつきにくい印象を受けます。GNOME Builder のマニュアルは英語ですが整備されているので、根気良く読めば良いのですが、試しに作ったプロジェクトで生成された meson.buildファイルが気になります。

    GNOME Builder で生成された meson.buildファイルの例

    この meson.build は Meson (/ˈmɛ.sɒn/) というビルド自動化するツールのためのファイルです。この Mason を知れば、GNOME Builder を見る目が変わるかもしれないと思い、Vala のサンプルを Mason を使ってビルドしてみました。

    本ブログ記事では下記の OS 環境で動作確認をしています。

    Fedora 32 (Workstation Edition)x86_64
     meson-0.54.2-1.fc32.noarch
     ninja-build-1.10.0-1.fc32.x86_64

    Hello World!

    参考サイト [1]で紹介した Hello World! のプログラムを今回も使うことにします。

    hellogtk.vala
    using Gtk;

    int main (string[] args) {
    Gtk.init (ref args);

    var window = new Window ();
    window.title = "Hello, World!";
    window.border_width = 10;
    window.window_position = WindowPosition.CENTER;
    window.set_default_size(350, 70);
    window.destroy.connect (Gtk.main_quit);

    var label = new Label ("こんにちは、世界!");

    window.add (label);
    window.show_all ();

    Gtk.main ();
    return 0;
    }

    はじめての Meson

    Wikipediaによると Meson は直接ソフトウェアをビルドするのではなく、Linux では Ninjaのような低レベルなビルドシステム用のビルドファイルを生成するということです。Ninja も使ったことがないのですが、とりあえず簡単なサンプルで Meson を使ってみることにします。

    Meson のプロジェクトサイト [3]のマニュアルに Vala 用のサンプルもありましたので、それを参考に、前述の hellogtk.valaをビルドできるように meson.buildhellogtk.valaと同じディレクトリ内に作成しました。ソースが hellogtk.valaで、ビルドする実行ファイル名を helloとしています。

    meson.build
    project('vala sample', 'vala', 'c')

    dependencies = [
    dependency('glib-2.0'),
    dependency('gobject-2.0'),
    dependency('gtk+-3.0'),
    ]

    sources = files('hellogtk.vala')

    executable('hello', sources, dependencies: dependencies)

    hellogtk.valaをビルドするディレクトリを builddirとして Meson を実行します。

    [bitwalk@fedora-pc hellogtk]$ ls
    hellogtk.vala meson.build
    [bitwalk@fedora-pc hellogtk]$ meson builddir
    The Meson build system
    Version: 0.54.2
    Source dir: /home/bitwalk/プロジェクト/hellogtk
    Build dir: /home/bitwalk/プロジェクト/hellogtk/builddir
    Build type: native build
    Project name: vala sample
    Project version: undefined
    C compiler for the host machine: ccache cc (gcc 10.1.1 "cc (GCC) 10.1.1 20200507 (Red Hat 10.1.1-1)")
    C linker for the host machine: cc ld.bfd 2.34-3
    Vala compiler for the host machine: valac (valac 0.48.6)
    Host machine cpu family: x86_64
    Host machine cpu: x86_64
    Found pkg-config: /usr/bin/pkg-config (1.6.3)
    Run-time dependency glib-2.0 found: YES2.64.3
    Run-time dependency gobject-2.0 found: YES2.64.3
    Run-time dependency gtk+-3.0 found: YES3.24.20
    Build targets in project: 1

    Found ninja-1.10.0 at /usr/bin/ninja
    [bitwalk@fedora-pc hellogtk]$ ls
    builddir hellogtk.vala meson.build
    [bitwalk@fedora-pc hellogtk]$

    builddir内にディレクトリを移して ninjaコマンドを実行すると helloがビルドされます。

    [bitwalk@fedora-pc hellogtk]$ cd builddir
    [bitwalk@fedora-pc builddir]$ ls
    build.ninja compile_commands.json meson-info meson-logs meson-private
    [bitwalk@fedora-pc builddir]$ ninja
    [3/3] Linking target hello
    [bitwalk@fedora-pc builddir]$ ls
    build.ninja compile_commands.json hellohello@exe meson-info meson-logs meson-private
    [bitwalk@fedora-pc builddir]$ ./hello
    hello の実行例

    とてもシンプルな例をビルドしただけですが、現金なもので、これだけのでも Meson への親近感が増し、ひいては GNOME Builder の meson.buildに記載されている内容を理解できる気にもなります。この錯覚が GNOME Builder を使えるようにするためにはきっと必要なのでしょう。🤗

    参考サイト

    1. bitWalk's: Vala を試してみた [2020-06-06]
    2. bitWalk's: GNOME Builder は GNOME アプリ開発用の IDE [2020-06-08]
    3. The Meson Build system

    ブログランキング・にほんブログ村へ
    にほんブログ村

    【備忘録】Vala の実行

    $
    0
    0

    Vala は GObjectを利用した C 言語のソースコードを生成する、セルフホスティングコンパイラを持つオブジェクト指向言語です。C#に似た構文を持ち、無名関数シグナルプロパティジェネリクスメモリ管理例外処理型推論、および、for-eachなど、C 言語にはない言語仕様を持っています。

    Wikipediaより引用・編集

    洋書ですが Vala の入門書を Amazon.jp で見つけました。Vala プログラミングの全体像を手っ取り早く学習しようと Kindle 対応のフォーマットのものを買いました(右図)。

    少し読み進めてビックリです。Vala は valacコマンドでコンパイルして実行するものだと思いこんでいましたが、valaコマンドでそのまま実行することもできるのです。

    valaコマンドでは一時的領域でコンパイルして実行しているだけなので、やっていることはvalacコマンドと結局のところ同じなのですが、使い方に違いがありますので、備忘録としてまとめました。

    本ブログ記事では下記の OS 環境で動作確認をしています。

    Fedora 32 (Workstation Edition)x86_64
     vala-0.48.6-1.fc32.x86_64

    Hello World! を使い回します

    参考サイト [1]で紹介した Hello World! のプログラムを今回も使うことにします。

    hellogtk.vala
    using Gtk;

    int main (string[] args) {
    Gtk.init (ref args);

    var window = new Window ();
    window.title = "Hello, World!";
    window.border_width = 10;
    window.window_position = WindowPosition.CENTER;
    window.set_default_size(350, 70);
    window.destroy.connect (Gtk.main_quit);

    var label = new Label ("こんにちは、世界!");

    window.add (label);
    window.show_all ();

    Gtk.main ();
    return 0;
    }

    valaコマンドで hellogtk.valaをスクリプトファイルのように実行するには次のようにします。


    [bitwalk@fedora-pc hellogtk]$ vala --pkg gtk+-3.0 hellogtk.vala
    hellgtk.vala の実行例

    hellogtk.valaの先頭に、下記のように追加すれば、実行権限を与えてファイル名で起動することもできます。

    hellogtk.vala の最初の一行
    #!/usr/bin/env vala

    [bitwalk@fedora-pc hellogtk]$ chmod a+rx hellogtk.vala
    [bitwalk@fedora-pc hellogtk]$ ./hellogtk.vala --pkg gtk+-3.0

    サンプルを作って動作するか、ちょっと試したい時に重宝する機能です。

    参考サイト

    1. bitWalk's: Vala を試してみた [2020-06-06]

    ブログランキング・にほんブログ村へ
    にほんブログ村

    Vala でオブジェクト指向プログラミング

    $
    0
    0

    Vala は GObjectを利用した C 言語のソースコードを生成する、セルフホスティングコンパイラを持つオブジェクト指向言語です。C#に似た構文を持ち、無名関数シグナルプロパティジェネリクスメモリ管理例外処理型推論、および、for-eachなど、C 言語にはない言語仕様を持っています。

    Wikipediaより引用・編集

    Vala は C 言語のソースを生成しますが、オブジェクト指向の言語です。Vala のサンプル紹介でもオブジェクト指向を意識したコーディングを心掛けたいので、まずは Hello, World のサンプルから書き直します。

    本ブログ記事では下記の OS 環境で動作確認をしています。

    Fedora 32 (Workstation Edition)x86_64
     vala-0.48.6-1.fc32.x86_64

    Hello World!(オブジェクト指向版)

    以前のブログ記事 [1]で紹介した Hello, World! のサンプルと実行結果は同じですが、オブジェクト指向を意識して HelloWorld クラスに直したものを紹介します。

    hello_object.vala
    hello_object,vala の実行例

    今後、Vala を用いた GUI サンプルを充実させていきたいと考えています。

    参考サイト

    1. bitWalk's: Vala を試してみた [2020-06-06]
    2. Projects/Vala/Manual/Classes - GNOME Wiki!

    ブログランキング・にほんブログ村へ
    にほんブログ村

    Linux ディストロ探訪(16) 〜 CloudReady 〜

    $
    0
    0

    Linux とは本来 Linux カーネルのことを指しています。しかし、カーネルだけでは OSとして動作させることはできません。そこで、OS に関連するツールやアプリケーションなどをまとめて、インストールし易く、インストール後にすぐ利用できるような配布形態にしたものを「ディストリビューション(略してディストロ)」と呼んでいます。

    本シリーズ記事は、Linux ディストリビューションをピックアップ、仮想マシン(あるいは実機)にインストールして紹介します[不定期]。

    CloudReady とは

    CloudReady は、Google 社の Chromium OSをベースに Neverware社が構築したオペレーティングシステムです。

    CloudReady のデスクトップ画面

    Chromium OS は、主にウェブアプリケーションと共に動作するよう Google 社により設計された Linux ディストリビューションであり、Chrome OSのオープンソース開発バージョンです。ソースコードからコンパイルするパッケージ管理システム Portageを使用している Gentoo Linuxをベースにして開発されています。

    Wikipediaより引用

    Chromium OS はオープンソースでインストール方法も公開されていますが、他の Linux ディストロほどには単純ではありません。

    それに比べると CloudReady は、Windows 上で USB イメージを作成して、ライブ OS として試すことができ、そのまま実機へのインストールもできるとのことで、とっても簡単そうだったので、試してみました。

    なお、CloudReady を利用する(ログインする)には、Chromebookと同じく、Google のアカウントが必要になります。Chromebook に搭載されている Chrome OS 系の OS は、他の Linux ディストロのように、インストール時にユーザ・アカウントを作成するということをしません。

    インストール

    Cloud Ready には下記の三種類のエディションがあります。

    • Home ; 無料
      • 自宅などでプライベートな利用
    • Education : $20 / 年
      • 学校など教育現場での利用(別途、詳細なオプション有)
    • Enterprise : $49 / 年
      • 企業、官公庁などでのエンタープライズ用途

    $ は米国ドルで、有償のエディションにはテクニカルサポートやセキュリティパッチなどのサービスが含まれています。

    Neverware 社は、下記に認定ハードウェア (PC) のリストを掲載しています。リスト以外の PC でも問題なく動作する可能性はありますが、一部のデバイスに対応していない場合もあるので、自己責任でインストールを実施してください。

    起動用 USB メモリの作成

    ここでは Home Edition をダウンロードして起動用の USB メモリを作成します。

    上記のサイトから USB Maker (cloudready-usb-maker.exe) をダウンロードしてインターネットにつながっている Windows 上で起動すると、Cloudready の Home Edition をダウンロードします。その後、起動可能なイメージで USB メモリへ書き込んでくれます。

    フォーマットされた 8GB あるいは 16GB の容量の USB メモリをプログラムの起動前に PC の USB ポートに差し込んでおきましょう。

    下記のような流れで起動用の USB メモリを作成します。

    実機でライブ起動、そしてインストール

    今回はインストールできる仮想環境がなかったので、Linux ディストロの評価に使っているテスト機 HP Stream 11-y004TUにインストールしました。作成した USB メモリを挿入し、USB メモリから起動するように BIOS の設定を変更して起動します。

    言語やキーボードの設定をした後、Google のアカウントでログインします。ライブ OS で確認したところ、フツーに動いているようなので、本体 PC にインストールしてみることにしました。

    本体 PC へのインストールは、メニューから「install OS」を選択します。

    本体 PC へのインストールボタン

    以下のような画面が現れ、INSTALL CLOUDREADYINSTALL HARD DRIVE & INSTALL CLOUDREADYボタンをクリックすると、CloudReady のインストールが始まります。しばらくするとインストールが終了し、シャットダウンします。USB メモリを抜いて起動します。

    ちなみに、インストールする PC は、いつも Linux ディストロ評価に使用しているので、不測の問題を回避するため、前にインストールされていたパーティション、フォーマットを GParted で削除してから、新しい OS をインストールするようにしています。

    はじめての CloudReady

    CloudReady は Chromium OS をベースとしている OS ですが、どこが Chromium OS と異なるのかが、調べても判りませんでした。ここではひとまず Chromium OS と同等だとみなすことにします。Chromebook に搭載されている Chrome OS と違うのは Google 固有の製品(例えば Google アシスタントなど)が含まれていないことです。

    下記の Chromebook の使い方の大半は CloudReady にもあてはまるはずです。

    そもそも Chromebook を使ったことが無いので、一応同じ機能として、CloudReady のデスクトップで気づいたことをまとめました。

    ログイン後のデフォルト画面ではバーが画面下側にあり、その左側に「ランチャー」があります。以下のようにクリックするとアプリの一覧が表示されます。

    ランチャーでアプリのリストを表示

    表示されているアプリは主にウェブブラウザの Google Chrome あるいは Chromium のアプリの一部ですが、その他にも「ファイル」という Chromebook (CloudReady) 固有のアプリがあります。これはファイルブラウザで、ローカルの保存領域(マイファイル)とGoogle ドライブにアクセスできます。

    ファイルブラウザ「ファイル」

    画面右下の時刻のあたりをクリック、あるいは Alt + Shift + sを押下すると「ステータス領域」が表示されます。ギヤアイコンをクリックすると、設定画面が表示されます。

    ステータス領域と設定画面(CloudReady のバージョン)

    ショートカット

    ショートカットの一覧は、Ctrl + Alt + /で表示されます。

    ショートカット一覧

    ちなみに、全画面のスクリーンショットは Ctrl + □||で取得できるとありますが、Windows PC に CloudReady をインストールしているので、Chromebook とはキーボードが異なります。ファンクションキーのどれかに対応しているのだろうと見当を付けていろいろ試してみたところ、Ctrl + F5でスクリーンショットを取得できることが判りました。

    Linux(ベータ版)

    Linux(ベータ版)は、Chromebook を使用してソフトウェアを開発できる機能です。CloudReady でも同様に利用できます。

    「設定」にある「Linux(ベータ版)」

    機能をオンにして使ってみます。「オン」にすると、下記のような画面が表示され、インストールをクリックするとインストールが始まります。まず仮想マシンがインストールされ、そのあとに Linux コンテナがインストールされます。

    Linux のコンテナとしてインストールされたのは、Debian Linux 10 (buster) の amd64 版です。

    「Linux」アプリのターミナル画面

    apt が利用でき、パスワード無しの sudo で必要なものは自分でインストールできます。また、ちょっと確認した限りでは GUI プログラムが CloudReady のデスクトップ上で動くようです。

    PyGObject の実行例

    「ファイル」を起動すると、マイファイル内に「Linux ファイル」ができており、Linux アプリ内のアカウント内のファイルにアクセスできるようになっています。結構便利にできています。

    「Linux」アプリインストール後の「ファイル」のマイファイル内

    その他

    既知の問題はいろいろあるようです。

    まとめ

    項目説明
    ディストリビューションCloudReady
    プロジェクトサイトNeverware
    デスクトップ環境Chromebook のデスクトップ
    対応プラットフォームx86_64
    パッケージ管理(システムのビルドは Gentoo Linux のパッケージ管理システムである Portage を利用)
    アプリのインストールやアップデートの機能はあるものの、CloudReady 上でユーザーが直接 Portage を使うようなパッケージ管理はない。
    日本語入力Google 日本語入力
    寸評

    Chromebook といえば、ブラウザ中心の OS で、Linux をベースにしていながら、Linux ユーザにとっては面白みが少ないだろうと思っていました。

    しかし、CloudReady を使ってみて、Chromebook は意外と使える環境かもしれないと思うようになりました。どこにでも持ち歩くノート PC で必要となる用途、ゲームといった重い処理でなければ、いろいろと使えそうです。Linux を使いたければ Linux アプリを使えば良いのです。

    参考サイト

    1. CloudReady – USBメモリから起動して使えるChrome OS(Chromium OS) を使ってみよう! [2020-04-13]
    2. Windows7がサポート終了したのでCloudReady(ChromeOS, ChromiumOS)を入れて再利用する - Qiita [2020-01-15]
    3. Windows PCにCloudReadyをインストールしてChromebookとして再利用する:中古PC活用 - @IT [2019-08-09]
    4. Chromebookでスクリーンショットを撮る方法!範囲指定もOK | KEIICHINISHIMURA.COM [2019-01-18]
    5. CloudReadyのインストール後にやっておきたいこと:3点 | Cloud-Work | 生産性向上
    6. CloudReady (クラウドレディ)|Chrome 端末|電算システム
    7. CloudReady Home - 無料ChromeOSのインストールと設定 | E.i.Z
    8. Chromebookで出来ること・魅力を3年間に5台のChromebookを購入したブロガーが徹底解説 - わたしのネット

    ブログランキング・にほんブログ村へ
    にほんブログ村
    Viewing all 804 articles
    Browse latest View live