ちょっと4月5月は忙しくて更新が滞ってすいません><
roadtoalinuxmintuser

theming

roundup
Linux Mint 18.3 : 端末からアニメ情報を取得できる「moe」コマンド 17:20
アイキャッチ

moe とは


端末からアニメ情報を取得できるコマンドラインツールです。GO 言語で書かれています。アニメ情報は MyAnimeList.net から、動画の URL は 9anime.is から取得しています。つまりネット環境は必須です。
主な特徴:
  • エピソード数の表示
  • 放送期間の表示
  • 概要の表示(英語)
  • 曲名の表示
  • MyAnimeList.net でのランキングとスコアの表示
  • 対応するエピソードの動画(9anime.is)のリンクの表示

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
まずは GO をインストールします:
sudo apt install -y golang-go
次に、moe をインストールします:
go get github.com/dragonzurfer/moe
ここで以下のようなエラーが表示されるかもしれません:
github.com/dragonzurfer/moe: cannot download, $GOPATH not set. For more details see: go help go path

これは GOPATH に何もセットされていないのが原因です。試しに $GOPATH の中身を確認してみてください:
echo $GOPATH
おそらく空で何も返されないはずです。なので GO 用のディレクトリを作成し、これを GOPATH に通し、更に GOPATH を PATH に追加して端末から実行できるようにしましょう:
mkdir ~/go && export GOPATH=~/go && export PATH=$PATH:$GOPATH/bin
これで再度インストールを試みてください:
go get github.com/dragonzurfer/moe

使い方


基本的な構文は以下のとおりです:
moe -name "アニメの名前" フラグ
"アニメの名前"の部分は多少融通がきくので日本語で入力しても構いません:
moe -name "シュタゲ" -info
出力例:
範囲を選択_039
ここから「steins gate」をコピーして(もっといい方法があるかもしれません)次のように打ち直します:
moe -name "steins gate" -info
出力例:
範囲を選択_037
-info 以外にも、概要を見るために -synopsis:
範囲を選択_038
曲名を知るために -songs などのフラグ:
範囲を選択_040
ランキング(-rank)やスコア(-score)だけを見ることも出来ます:
範囲を選択_035
このランキングやスコアは MyAnimeList.net に対応していることがわかります:
範囲を選択_036
すべての情報を得るには -all を使います。場合によっては less コマンドと併用すると良いかもしれません:
moe -name "steins gate" -all | less
出力例:
範囲を選択_041
動画自体も 9anime.is で見れるため、このサイトの URL を返してくれるはずですが:
moe -name "steins gate" -video all
いろいろ試しても以下のようなエラーが出るだけでうまく行きませんでした:
Could not find any results for -video: steins gate

見るのであれば直接 9anime.is にアクセスしたほうが良さそうです:
範囲を選択_034
moe コマンドで使えるフラグは -help で見ることができます:
moe -help
| Linux |
Linux Mint 18.3 : ブートローダーの簡易編集ツール「Grub Customizer」[加筆再up] 04:04
アイキャッチ

Grub Customizer とは


GRUB(GRand Unified Bootloader)は、Ubuntu や Linux Mint など多くの主要なディストリビューションのブートローダとして採用されています。ブートローダとは何でしょうか ? これは起動時にメモリーにロードされる最初のソフトです。ストレージから OS を読み込むためにあります。その後、選択した OS を起動するか、Windows のように Grub をサポートしていない OS の場合は別のブートローダーに制御を渡します。

この Grub ブートメニューは個人設定が可能です。Linux につきものですが、その操作には多少の知識とスキルが必要です。しかし、Linux がここまでデスクトップ OS として使われ始めてきたのは GUI アプリの開発が進んできたからです。今回は Grub Customizer という GUI アプリについて見ていくことにします。

主な特徴:
  • Grub メニューの項目の編集
  • デフォルトの OS を設定
  • Grub メニューの非表示/表示
  • 待ち時間の変更
  • 背景画像の変更
  • Grub から Windows の MBR へ変更

手動でこう言ったファイルの設定をやるとクラッシュの原因となるミスを犯しかねません。Grub Customizer は GUI を提供してこの問題を解決します。昔は「StartUp-Manager」というものがありましたが、廃れてしまいました。

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
次のコマンドを実行してインストールします:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer -y && sudo apt update && sudo apt install -y grub-customizer

Grub 2 の豆知識


Grub 2 の設定ファイルは /boot/grub/grub.cfg ですが、直接ファイルを編集することはしません。/etc/default/grub で設定を行い、update-grub コマンドを実行することで、設定に基づいて /boot/grub/grub.cgf を生成します。

/etc/default/grub の説明を少し加えます。/etc/default/grub には以下のような行が有ります:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

それぞれのパラメーターの意味することは:
GRUB_DEFAULTデフォルトで起動する OS の番号。
GRUB_HIDDEN_TIMEOUTメニューを表示せず待機する秒数。
GRUB_HIDDEN_TIMEOUT_QUIETtrue ならメニューを表示しない、false なら残り時間を表示。
GRUB_TIMEOUTデフォルトの OS を起動するまでの秒数。
GRUB_CMDLINE_LINUX_DEFAULTブートオプション。
GRUB_CMDLINE_LINUXカーネルに渡すブートオプション。

使い方


メニューから起動すると、このようなウィンドウが表示されます。タブが 3 つあり、一番目のタブは起動用の OS のリストについてです。ウィンドウの上部には [ 保存 ]、[ 削除 ]、[ 編集 ]、[ 新規 ] ボタンなどがあります。新しく項目を作成して OS をリストに追加したり、不必要な項目をリストから削除したり、既存の項目を編集したり出来ます:
範囲を選択_060
試しに新しい項目をリストに追加してみましょう。最初の欄は表示する項目名です。二番目は OS の種類についてです。Linux や chainloader などを指定します。Windows であれば chainloader を選びましょう。最後にパーティションを選んだら [ OK ] をクリックします。注意すべき点として [ 保存 ] ボタンをクリックするまでは変更は保存されません:
範囲を選択_061
追加されました:
範囲を選択_062
二番のタブではデフォルトで起動する項目を選べます。ブートメニューを表示にしたり、ブートメニューの表示時間を変更することが出来ます:
範囲を選択_063
最後のタブでは、文字のサイズや色、背景の色や背景画像を変更することが出来ます。このタブでは Grub ブートメニューの外観を大きく変更できます:
範囲を選択_064
上の画像で使用した壁紙:
miiku4grub

参考元:linuxandubuntu
| Linux |
Linux Mint Tips : 「mintUpdate」アップデートマネージャー のレベルの意味 06:11
アイキャッチ

それぞれのレベルの意味


Linux Mint のアップデートマネージャの初期設定は、Linux Mint の特徴でも有りますが、安定性を第一に考え、かなり用心深い設定になっています。Linux Mint の開発者はこれに関しては素晴らしい仕事をしてくれており、良質な品質管理を行っているうえに、保護層を追加しています。

Linux Mint は更新にレベルシステムを適用しています。レベルには 1 から 5 まであり、レベルが高くなればなるほど、リスクが高まります。レベル 1 から 3 に分類された更新はデフォルトで表示され、チェックもつきます。レベル 4 は表示はされますが、チェックはデフォルトではついていません。レベル 5 の更新に関してはデフォルトでは表示すらしないように設定されています。

ある更新が、レベル 1 から 3 に分類されるのはその更新の潜在的な回帰バグがシステムに致命的ではないからです。システム全体が利用できなくなる可能性のある回帰バグを含む更新は全てレベル 4 か 5 に分類されているはずです。このようにコンピューターの動作を停止させるバグからシステムを守るためにレベルシステムが有ります。幸い、システムを停止させるバグは極めてまれなことですが、それでも自己防衛するに越したことはありません。

しかしながら、安全を期してなにか大事な作業の真っ最中なときは更新をしないようにすべきです。レベル 1 から 3 の更新であってもです。まずは大事な作業を終わらせてから更新をインストールしましょう。

もし、レベル 1 から 4 までの更新で深刻なバグがあれば、落ち着いて次善策を探し、バグフィックスの更新があるまで待ちましょう。

レベル 1お墨付きのパッケージ。Linux Mint の開発チームによって直接テスト、管理されています。更新があったらインストール推奨です。
レベル 2推奨パッケージ。Linux Mint の開発チームによってテストされ、承認を受けたものです。これもインストール推奨です。
レベル 3安全なパッケージ。テストはされていませんが、安全だと考えられるものです。これもインストール推奨です。
レベル 4不安定なパッケージ。このレベルに分類された更新は、ハードウェアの構成やスペックによって、システムの安全性にマイナスの影響を与える恐れが有ります。安全のためデフォルトでは選択されません。
レベル 5危険なパッケージ。このレベルに分類された更新は、ハードウェアの構成やある条件下では、システムの安全性にマイナスの影響を与える恐れが有ります。これも安全のためデフォルトでは選択されていませんし、表示もされません。


レベル 1 から 3 はインストール


これらのレベルに分類された更新は毎回インストールしましょう。さもないと、重要なバグフィックスやセキリュティ上の修正を受けることができません。レベル 3 でもリスクはとても低いのでインストール推奨です。ただし、Linux Mint の開発チームはレベル 3 の更新に関してはインストールする前にバグ報告がないか公式フォーラムを参照することを勧めています。しかし、Linux Mint と Ubuntu を使い続けた長年の経験則として、極めてまれな例外を除いて考慮する必要はありません。レベル 3 の更新まで全てチェックを入れてインストールすることをお勧めします。

レベル 4 は取り扱い注意


デフォルトではレベル 4 の更新は全て表示はされますが、予め選択はされていません。これはアップデートポリシーの「Just keep my computer(最も注意深いアップデートポリシー)」と「Let me review sensitive updates(中程度のアップデートポリシー)」の両方においてそうです。デスクトップユーザーにとってはレベル 4 のパッケージに含まれるセキュリティホールの実際のセキュリティリスクがたいてい低いからです。なので更新のインストールを急ぐ必要はありません。一方で更新をインストールすることによりシステムの安定性にダメージを与える可能性がほんの僅かですが存在します。

レベル 4 としてタグ付けられている更新を見れば、Grub や LightDM のようなリスクが高めなパッケージに関係していることがわかります。前述の通り、極めてまれなケースですが、大きなトラブルを引き起こす可能性を秘めているため、レベル 3 までとは異なった扱いを受けています。こういうリスキーな更新は経験上めったにトラブルを引き起こさないためか、Linux Mint がベースにしている Ubuntu ではリスク分類をそもそもしていません。しかし「めったにない」は「まったくない」とは違います。例えば、Grub ブートローダーを更新するとシステムが起動しなくなる恐れが有ります。Grub はその更新がとても重要なときだけ更新すべきパッケージの好例です。

なので、レベル 4 の更新は都合が良い時まで延期しても構いません。実際、レベル 4 の更新をせずともシステムはかなりセキュアな状態です。少なくとも、Windows よりは安全です。更新をレベル 1 から 3 までにするのは間違いなく合理的な判断です。

しかし、セキュリティを最高までに高めたいなら、レベル 4 の更新もしたいと思うでしょう。この場合、Linux Mint の開発チームはレベル 4 の更新をインストールするときは、一つ一つインストールする毎にシステムを再起動することを勧めています。これはなにか問題が生じた時にどの更新が悪さをしているか正確に知るためです。これはトラブルシューティングをより解決しやすくしてくれます。

もしセキリュティ上の問題の修正以外の普通のバグフィックスも含めたくて、レベル 4 の更新を増やしたいと思うなら、アップデートポリシーを変更することで簡単に行なえます。
[ 編集 ] -> [ アップデートポリシー ]:
範囲を選択_029
三番目の選択肢「Always update everything」はおすすめしませんが、二番目の選択肢「Let me review sensitive updates」は Linux Mint 経験者にとって妥当なチョイスです。セキリュティ上の問題の修正以外の普通のバグフィックスも含みます。

もし、まったくの Linux 初心者であれば、一番目の選択肢「Just keep my computer safe」を選ぶのが良いでしょう。このアップデートポリシーでは単純にセキュアなシステムを得ることが出来ます。セキュリティに関係しない一般的な更新がないだけです。「Just keep my computer safe」ではカーネルを含む全てのレベル 4 の更新が表示されます。もし手動でインストールしたドライバーを壊したくないなどの理由で、カーネルの更新は表示させたくない場合、次のように設定できます。[ 編集 ] -> [ 設定 ]、[ Always show kernel updates ] と [ Always select kernel updates ] のチェックを外し、[ Apply ] ボタンをクリックします:
範囲を選択_028
2010 年より前のノートパソコンをお使いですか。Broadcom のワイヤレス LAN チップセットが内蔵されていれば、レベル 4 の更新を有効にしないほうが良いです。無線での接続ができなくなる恐れがあるからです。新し目の Broadcom のチップセットであれば、ありがたいことにこのような問題はありません。もし、レベル 4 の更新をインストールしてシステムがめちゃくちゃになった場合は、クリーンインストールするしかない場合が有ります。

レベル 5 はインストールしてはいけない


レベル 5 は、アップストリーム (Ubuntu) から流れてくる「問題児」をせき止めるためのレベルです。どんな場合でもインストールすべきではありません。Linux Mint の開発チームは、Ubuntu が修正済のバージョンをリリースするまではレベル 5 として「問題児」を引き止めます。3 つのすべてのアップデートポリシーにおいて、気づいていなかいもしれませんが、こういったことが起きています。レベル 5 の扱いはシンプルで、インストールをしないことです。もっとも、レベル 5 に分類されることはそうそうあることではありません。

Linux Mint に流れてくる更新は Ubuntu ソースからのものと Linux Mint ソースからのものとがあります。Linux Mint ソースからのものにレベル 5 の更新がないのでそもそもシステムに流れ込む恐れはないのですが、極めてまれなケースでレベル 5 の更新を見ることがあります。それは Ubuntu ソースから流れ来るもので、Linux Mint の開発チームがコントロールできないものです。できることはレベル 5 に分類することで警鐘を鳴らしたり、ブラックリストに入れる手段を提供することだけです。ブラックリストに入れてしまうと修正済のバージョンもシステムに届かない恐れもあるのでブラックリストに入れるのは少ないほうが好ましいでしょう。

というわけでレベル 5 はアップストリームから流れ来る「問題児」を一旦せき止めるための手段としてみなしてください。それ以上でもそれ以下でもありません。緊急用のブレーキです。

更新のチェックの間隔を増やす


新しい更新がないかチェックする間隔の設定を変更したいと思っているかもしれません。[ 編集 ] -> [ 設定 ] -> [ Auto-refresh ] からできます:
範囲を選択_029
初期設定ではシステムを起動してから 10 分後、それから 2 時間おきにチェックします。すでに妥当な設定なのでそのままにしておくと良いと思いますが、起動してから 10 分後というのは変えないほうが良いと思います。

カーネルの更新について


カーネルの更新は現在「メルトダウン」と「スペクター」という脆弱性に対していくらかの緩和策を講じるために必要なことになっています。4.4 と 4.13 シリーズだけがこれらのバグフィックスを含んでいます。

アップデートポリシーの一番目と二番目では、カーネルは表示はされるものの、予め選択はされません。[ 編集 ] -> [ 設定 ] -> [ オプション ] でいつでもカーネルの更新を表示しないように出来ます。この場合、特定のカーネルにアップデートしたい場合、手動でバージョンを選んでインストールすることが出来ます。[ 表示 ] -> [ Linux カーネル ](警告が出来ますが少々誇張が過ぎます):
範囲を選択_030
たとえ、新しいカーネルに含まれるセキュリティ上のバグフィックスが、小さなリスクを修正するだけとしても、欲しいと思うことがあるでしょう。ここから選んでインストールし再起動すれば、システムは選んだカーネルで動きます。

デフォルトのバージョンのシリーズを使い続ける


Linux Mint にデフォルトで入っているカーネルのバージョンと同じシリーズのカーネルをインストールするのが好ましいです。もしデフォルトのカーネルでうまく動作しているのであれば、そのバージョンのシリーズを使い続けることをおすすめします。なぜなら Linux Mint は特定のカーネルシリーズを中心に設計されているからです。「エンジン」を他のものに変えることは安定性を損なう恐れがあります。

しかし、Linux Mint 18.2 以降をお使いで、安全なカーネルがほしいなら 4.13 シリーズにアップグレードするか、4.4 シリーズにダウングレードする必要があります。なぜなら Linux Mint 18.2/18.3 にデフォルトで乗っているカーネルは短命で、もうサポートされていないからです。18.1 の場合は、4.4 シリーズを選び、そのシリーズの中で一番新しいバージョンを選ぶと良いでしょう。

もうひとつ例外として、全く新しいハードウェアを使っている場合は、いまお使いのカーネルではうまく対応できないかもしれません。最新のドライバーが含まれていないからです。なので新しいハードウェアに関しては最新のカーネルシリーズを選ぶのが一番いい選択肢です。

カーネルには 2 種類ある: LTS と HWE


カーネルには 2 種類あります。Long Term Supported (LTS) 版と Hardware Enablement (HWE) 版です。Linux Mint 18.1 では LTS のカーネルでリリース(4.4.x)されました。このシリーズのサポート期間は Linux Mint 18.x シリーズのサポート期間である 5 年間をフルにカバーしています。なのでカーネルの最新の更新を適用する場合は常に 4.4.x シリーズを使い続けるべきです。

18.2 以降では HWE 版でリリースされています。これは短命のカーネルシリーズなので、18.2 以降でカーネルの更新をしようと思ったら時々、新しいカーネルシリーズにアップグレードする必要があります。現行の HWE カーネルのサポート期間が終了を迎えると、アップデートマネージャーでレベル 4 として新しいカーネルシリーズが提供されます。

では、なぜ HWE 版があるのでしょうか。それはハードウェアのサポートです。とても新しいハードウェアのドライバーを LTS 版に組み込むのが単純に時期尚早だからです。なので Linux Mint は最新のハードウェアに対応するために HWE 版が必要なのです。

もしアップデートマネージャーを使って、Linux Mint 18 や 18.1 から 18.2 や 18.3 にアップグレードしたのであればカーネルは 4.4.x LTS シリーズのままです。HWE 版に強制的に切り替わることはありません。

端末でレベルシステムを利用する


最近では端末を使って Linux Mint をアップデートできるようになりました。アップデートマネージャよりも端末で行うほうが手っ取り早いのがメリットです。使うコマンドは mintupdate-tool で、これでもレベルシステムを使うことができます。例えば、レベル 1 から 3 までのすべての更新をインストールし、なおかつカーネルの更新を除外した、すべてのセキュリティ上のバグフィックスをインストールしたい場合は次のように実行します:
sudo mintupdate-tool upgrade -r -l123 -s -nk
-r は APT キャッシュの更新で、-s はセキュリティの更新を含めることを意味し、-nk は --no-kernel、つまりカーネルの更新は全て除外することを意味しています。その他のオプションについてはヘルプを参照してください:
mintupdate-tool -h

レベルシステムを定義するテキストファイル(上級者向け)


レベルシステムを定義するテキストファイルは /usr/lib/linuxmint/mintUpdate/rules です:
xed /usr/lib/linuxmint/mintUpdate/rules
範囲を選択_028
すべての更新はデフォルトではレベル 2 に分類されており、このテキストファイルのルールにマッチした更新パッケージでない限り、レベル 2 です。もし熟練者であれば、このテキストファイルを編集してレベルを変更することができますが、デフォルトの設定が十分すでに妥当な感じなのでオススメはしません。

参考元: Easy Linux tips project, Easy tips for Linux
| Linux |
Linux Mint 18.3 : QR コード生成「qrcode」、QR コード解読「ZBar」、GUI「QtQR」[加筆再up] 06:11
アイキャッチ

QR コード生成


qrcode とは


qrcode は QR コードを生成できる Python モジュールです。QR コードの生成はウェブサービスを使えば簡単に行うことができますが、コマンドの良いところは一度にたくさん処理できるところです。

QR コードとは


myqrcode

QR (Quick Response) コードとは、高速読み取りと比較的大きな記憶容量があるために広く使用されている2次元バーコードです。
QR コードは、白い背景に四角い形に配置された黒いセルで構成されています。
コード化された情報は、バイナリ、英数字、漢字のようなあらゆる種類のデータを構成することができます。

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
次のコマンドを実行します:
sudo apt install -y python-pip
sudo pip install qrcode

使い方


構文はこのようになります:
qr "文字を入力" > 保存名
例えば、このブログの URL を QR コードとして出力したい場合はこうなります:
qr "http://baker-street.jugem.jp" > myqrcode.png
実行するとカレントディレクトリに myqrcode.png が生成されているのが分かります:
範囲を選択_033

SVG 形式の保存にも対応しています:
qr "http://baker-street.jugem.jp" > myqrcode.svg

QR コードの解読


ZBar


ZBar はバーコード、QR コードリーダです。画像ファイルからでも、ウェブカメラからでもバーコードと QRコードをスキャンすることができます。ZBar を使用すると、画像ファイルやウェブカメラからバーコードを解読できます。

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
次のコマンドを実行します:
sudo apt install -y zbar-toolsFirefox の方はこちらをクリックしてもインストールできます:
インストール

使い方


構文はこのようになっています:
zbarimg ファイル名
例えば:
zbarimg myqrcode.png
出力例:
shellingford@linuxmint ~ $ zbarimg myqrcode.png
QR-Code:http://baker-street.jugem.jp
scanned 1 barcode symbols from 1 images in 0.05 seconds


GUI フロントエンド


QtQR とは


Qt と Python で開発された、QR コードを生成したり解読したりするための qrencode のフロントエンドです。内部で上述した ZBar を使用しています。

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
次のコマンドを実行します:
sudo add-apt-repository ppa:qr-tools-developers/qr-tools-stable -y && sudo apt update && sudo apt install qtqr -y

使い方


使い方はとてもシンプルで、[ Select data type ] から url や電話番号など、どのデータをエンコードしたいか選び、文字を入力したら、ピクセルの大きさや誤り補正レベル、余白の大きさを指定し、最後に [ Save QRcode ] で保存します:
範囲を選択_060
QR コードを解読したいときは [ Decode from file ] または [ Decode from webcam ] をクリックしファイルを選ぶか、QR コードをウェブカメラにかざしましょう:
範囲を選択_061
解読できました。ご丁寧にブラウザーで開くかどうか聞いてくれます:
範囲を選択_062
| Linux |
Linux Mint 18.3 : デスクトップ録画ソフト 8+1 選 02:32
アイキャッチ
様々な理由でデスクトップを録画したい時が有ります。ゲームを生放送したり、動画によるチュートリアルを作成したり、保存できない動画を録画したい時などです。今回は、Linux で使えるデスクトップ画面録画ツールを紹介します。録画ツールには動画として出力できるものと GIF アニメーションとして出力できるものが有ります。ここで述べるツールは全て無料でオープンソースです。

動画形式で出力するタイプ


Kazam


範囲を選択_059
Kazam は最小限の機能を備えた素敵な録画ツールです。スクリーンショットにも対応しています。いろいろ設定を弄る必要がない初心者にとってはうってつけです。
主な特徴:
  • シンプル
  • 複数の出力形式に対応
  • 最適な音源(スピーカーまたはマイク)から録音
  • ウィンドウもしくは選択範囲の録画
  • 録画開始を遅らせるタイマー付き
  • ウェブカメラの録画には対応していない

インストール


sudo apt install -y kazam

Open Broadcaster Software Studio


範囲を選択_028
OBS Studio は間違いなく多機能で高度なスクリーンキャプチャーツールです。
主な特徴:
  • シーン間をシームレスに切り替えるトランジッション
  • 映像にフィルターをかけれる
  • オーディオ・ミキサー
  • 多機能で使いやすい設定項目
  • 合理的な設定パネル
  • 生配信に対応
  • おそらくこれだけで多くのニーズに応えられるが専門用語を理解するまで時間を要する

インストール


インストールするために OpenGL 3.2 以上をサポートしているひつようがあります。システムの OpenGL のバージョンを確認するには以下を実行してください:
glxinfo | grep "OpenGL"
FFmpeg も必要です。一緒にインストールします:
sudo add-apt-repository ppa:obsproject/obs-studio -y && sudo apt update && sudo apt install -y ffmpeg obs-studio

SimpleScreenRecorder


範囲を選択_059
名前が示唆している通り、Kazam 同様シンプルな録画ツールですが、Kazam よりは設定項目が豊富です。GUI は Qt で実装されています。
主な特徴:
  • 複数の出力形式に対応
  • 適切な音源ソースから音を録画
  • 選択範囲の録画に対応
  • 録画中に情報を表示
  • 録画中にリアルタイムでプレビューを表示
  • 低スペックのマシンもスムーズに動くように最適化済
  • ホットキーに対応
  • ウェブカメラには対応していない

インストール


sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder -y && sudo apt update && sudo apt install -y simplescreenrecorder

recordMyDesktop


範囲を選択_060
recordMyDesktop そのものは C 言語で実装されたコマンドラインツールです。GTK ベースのフロントエンドと Qt ベースのものが開発されています。
主な特徴:
  • 軽量
  • ウィンドウの録画に対応
  • 出力結果の変更
  • ウェブカメラには未対応
  • 出力形式は選べない

インストール


GTK ベース:
sudo apt install -y gtk-recordmydesktop
Qt ベース:
sudo apt install -y qt-recordmydesktop

VokoScreen


範囲を選択_061
更に別の使いやすいスクリーンキャプチャーツールです。そのシンプルさ故、個人的に Linux で使える録画ツールの中でもおすすめです。
主な特徴:
  • 複数の出力形式に対応
  • 最適な音源から録音
  • ウィンドウまたは選択範囲の録画に対応
  • ウェブカメラに対応
  • 録画する時間を遅らせるタイマー付き
  • ホットキーに対応

インストール


sudo apt install -y vokoscreen

ScreenStudio


範囲を選択_060
Java で書かれたクロスプラットフォーム対応のデスクトップ録画ツールです。
主な特徴:
  • 複数の出力形式に対応
  • 最適な音源から録音
  • Hitbox, Twitch.tv などの様々なストリーミングサービスに対応
  • ウェブカメラに対応
  • 設定項目が豊富
  • 画像や文字のレイヤーを重ねることが可能
  • ホットキーに対応

インストール


sudo add-apt-repository ppa:soylent-tv/screenstudio -y && sudo apt update && sudo apt install -y screenstudio

アニメーション GIF 形式で出力するタイプ


Peek


範囲を選択_059
デスクトップ画面を録画し、アニメーション GIF として出力してくれるシンプルなツールです。
主な特徴:
  • 選択範囲を録画
  • フレームレートの選択可能
  • 録画する時間を遅らせるタイマー付き
  • モダンな UI
  • X11 のみサポート

インストール


GitHub にて AppImage 形式配布されているのでインストールせずともダブルクリックすれば起動するでしょう。PPA 経由でもインストールできます。

Gifine


範囲を選択_062
録画したり、短い GIF 画像や動画にまとめるツールです。
主な特徴:
  • 出力形式は GIF と MP4 の両方に対応
  • 出力する前に成果物をトリミングしたり、編集を加えることが可能
  • Peek よりは機能がある
  • Peek ほどモダンな UI ではない

インストール


インストール方法は少し面倒です。まず依存関係をインストールします:
sudo apt install gifsicle luarocks libgirepository1.0-dev dh-autoreconf git
Gifine のソースをゲットしビルドします:
git clone --depth 1 https://github.com/lolilolicon/xrectsel.git && cd xrectsel && ./bootstrap && ./configure && sudo make install && sudo luarocks install --server=http://luarocks.org/dev gifine
起動は端末で以下を実行します:
gifine

動画ファイルとしても GIF としても出力できるツール


Green Recorder


以前 GreenRecorder について記事を書いています:

端末のセッションを録画


asciinema


asciinema というツールにも触れておきたいと思います。

Linux を使っていれば技術的な支援が必要な時が有ります。一番簡単かつ明瞭なサポートの仕方は端末で解決策を実践している様子を録画して見せてあげることです。SimpleScreenRecorder のような従来のツールではファイルの容量が大きくなりがちであることと、動画に表示される文字列はコピペできないので手動で入力する必要が出てきます。タイポしやすく致命的なエラーを起こすかもしれません。ここで asciinema の出番です。

asciinema は端末で行っている様子をキャプチャーし、自動的に asciinema のウェブサイトにアップロードして、共有するための、その動画の URL を提供してくれるツールです。このツールの最大の利点は動画のコマンドを手動で入力することなく、動画の閲覧者は動画をポーズしてコマンドを選択し自分の端末にコピペできることです。どんな感じかは asciinema のウェブサイト にアクセスし何か動画を再生すれば一目瞭然です。

インストール


Linux Mint(Ubuntu):
sudo apt-add-repository ppa:zanchey/asciinema -y && sudo apt update && sudo apt install asciinema -y
Angergos(Arch):
yaourt -S asciinema
実際に使うときは:
asciinema recで録画を開始し、
Ctrl
+
D
で録画を止めます。

参考元: itsfoss,itsfoss
| Linux |
Linux Mint 18.3 : Python ではじめるコマンドラインツールの作成とパッケージ化 02:32
アイキャッチ
今回、Python でシンプルなコマンドラインツールを作成していくにあたり、pokéapi という、番号でポケモンに関する様々な情報を取得できる REST API を使用します。コマンドラインツールの名前は「pokepy」とし、番号を指定すると、ポケモンの名前、タイプ、特性を返してくれるツールを作成します。タイプや特性の id はその番号のポケモンのタイプと特性を表しているわけではなく、タイプや特性特有の id であることに留意してください。構文は以下のような感じになります:
pokepy (pokemon|type|ability) (--id|-i)=<数字>
サンプルは GitHub にアップロードしています:
ShellingfordX/pokepy: A pokeapi wrapper command line tool

使用するモジュール


コマンドラインツールのオプションをパースするモジュール docopt と HTTP リクエストを送信するためのモジュール requests を使います。コマンドのオプションをパースするモジュールには argparse もありますが、大きな違いは argparse が使用するコマンドのオプションを定義するとヘルプが自動生成されるのに対して、docopt はヘルプを書くことによってコマンドのオプションを自動生成してくれる点です。

もし、argparse で pokepy の引数・オプションを解析しようとすると以下のようになります:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import argparse

parser = argparse.ArgumentParser(description='A simple command line tool that shows pokemon info', version='0.1.0') #パーサーオプジェクトを作成します
parser.add_argument('uri', help='Specify pokemon, type or ability') #位置引数
parser.add_argument('-i','--id', type=int, nargs=1, default=1, help='Specify a pokemon number') #オプション引数

args = parser.parse_args() #引数・オプションを解析します
print "番号:",args.id,"¥n","pokemon? type? ability?:",args.uri #表示しています

実行例:
./pokepy.py pokemon --id 25
実行結果:
番号: [25] 
pokemon? type? ability?: pokemon

少し説明を加えると、位置引数はハイフンがつかない、必須の引数のことです。これを要求するためにこのコードを書いています:
parser.add_argument('uri', help='Specify pokemon, type or ability') #位置引数

同時に、help='Specify pokemon, type or ability' と書くことで、./pokepy.py -h を実行した時のヘルプに表示するようにしています:
positional arguments:
uri Specify pokemon, type or ability

同様にオプション引数も指定しています。ロング形式の --id とショート形式の -i どちらでも使えるようにし、type=int で受け取る値を数値として読み込み、nargs=1 で渡せる値は 1 つ、default=1 で id の指定がなかった場合に代入される値を指定、最後にヘルプに表示するテキストを指定しています。これはこれで便利ですが、今回はヘルプを書いて、引数を自動生成してくれる docopt を使います:
sudo apt install -y python-docopt
また、python-pip もインストールしておきましょう。今回はコマンドラインツールを作成するだけでなく、作成するスクリプトは pip でインストールするからです:
sudo apt install -y python-pip更に、パッケージ化に setuptools モジュールも使います:
sudo apt install -y python-setuptools

ファイル構成


このプロジェクトに必要な最小構成は次のとおりです:

pokepy/
├── pokepy
│ ├── __init__.py
└── setup.py

ですが、README.rst と MANIFEST.in も追加します:
pokepy/
├── pokepy
│ ├── __init__.py
├── setup.py
├── README.rst
└── MANIFEST.in

これからそれぞれのファイルについて述べていきます。

pokepy/__init__.py


pokepy の機能を実装しているスクリプトです。__init__.py はパッケージ化するにあたり必要なファイルで、import して読み込みたいモジュールがある場合、ディレクトリに含める必要が有ります。初期化のコードを書くか空っぽのままで、機能は別のファイルとして分離するようですが最小構成ということでこのなかに書いてしまいます:
'''
Usage:
pokepy (pokemon | type | ability) --id=ID
Options:
-i --id=ID # specify the id of the pokemon, type or ability
-h --help # Show this help
'''


import requests


POKEAPI = 'https://pokeapi.co/api/v2/{path}/{id}'


def get_api_path(arguments):
'''
Get pokemon or type or ability command from command line
arguments.
'''
paths = ['pokemon', 'type', 'ability']
for path in paths:
if arguments[path]:
break
return path


def get_id(arguments):
'''
Get id from command line arguments.
'''
return arguments['--id']


def call_pokeapi(path, id_number, key='name'):
'''
Call the RESTful PokeAPI and parse the response. If pokemon, ability or
type ids are not found than the error message detail is returned.
'''
url = POKEAPI.format(path=path, id=id_number)
response = requests.get(url)
response_json = response.json()
try:
res = response_json[key]
except:
res = response_json['detail']

return res


def __main__():
'''
Entrypoint of command line interface.
'''
from docopt import docopt
arguments = docopt(__doc__, version='0.1.0')
path = get_api_path(arguments)
id_number = get_id(arguments)
print(call_pokeapi(path, id_number))

docopt


このファイルにはコマンドラインツールのエントリーポイント(プログラムの開始となる位置)を含んでいます。後述する setup.py で __main__ 関数がエントリーポイントとなるよう指定します。端末から実行するとき __main__ 関数が実行されるわけです。最初から数行は docopt を使うために、ドキュメントストリングを記述しています。利用者がこの使用法に従わなかった場合、このドキュメントストリングがヘルプとして表示されます。__main__ 関数内の
from docopt import docopt
で docopt モジュールを読み込み、
arguments = docopt(__doc__, version='0.1.0')
としてあげることで、端末から入力された引数を参照することができます。この時、「version=数字」も指定してあげることで --version を指定した時に、指定したバージョン(ここでは 0.1.0)が返されます。docopt は内部で sys.argv を使って引数を読み取り、パースしています。パースされた引数は辞書オブジェクトとして返します。なので以下のように値を取り出すことが出来ます:
arguments = docopt(__doc__, version='0.1.0')
arguments['--id']


requests


3つのユーザー定義関数を定義しています。引数から pokemon か type か ability を得る関数(get_api_path)、引数から id を取得する関数(get_id)、GET リクエスト送り JSON データを取得し必要な情報を返す関数(call_pokeapi)の3つです。
response = requests.get(url)
で GET リクエストを行い、Requests オブジェクトに対して json() メソッドを使うことで JSON 形式のレスポンスの内容を辞書として扱うことが出来ます:
response = requests.get("https://pokeapi.co/api/v2/pokemon/150/")
response_json = response.json()
print response_json['name']

出力例:
mewtwo

もし、クエリ文字を追加したい場合は以下のようにし params キーワードを使って辞書として引数を渡すことが出来ます:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://example.org/get", params=payload)
print r.url

出力例:
http://example.org/get?key2=value2&key1=value1

setup.py


パッケージ化(配布可能に)するのに必要なスクリプトです:
from setuptools import setup, find_packages
from codecs import open
from os import path

here = path.abspath(path.dirname(__file__))

# Get the long description from the README file
with open(path.join(here, 'README.rst'), encoding='utf-8') as f:
long_description = f.read()

setup(
name='pokepy',
version='0.1.0',
description='A Pokeapi wrapper command line tool',
long_description=long_description,
url='https://github.com/ShellingfordX/pokepy',
author='Shellingford',
author_email='example@gmail.com',
license='Apache 2.0',
classifiers=[
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',
'License :: OSI Approved :: Apache License',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.5',
],

keywords='Pokeapi REST client wrapper command line interface',
packages=find_packages(),
install_requires=['docopt', 'requests'],
extras_require={ },
package_data={},
data_files=[],

entry_points={
'console_scripts': [
'pokepy=pokepy:__main__',
],
},
)

ちゃんと動作させる上で大事なのは:
install_requires=['docopt', 'requests'],
entry_points={
'console_scripts': [
'pokepy=pokepy:__main__',
]
です。
pip でインストールする必要がある依存関係は install_requires に指定します。エントリーポイント(プログラムの開始点)としてを指定するには、辞書の console_scripts の値として指定します。上の意味は「端末から pokepy を実行したならば、pokepy モジュールの __main__ 関数を呼び出せ」です。classifiers 引数に指定する値は ここ から選びます。

README.md -> README.rst


README.md は GitHub で管理していれば自動生成してくれます。setup.py では long_description の中身に README ファイルを流用していますが、読み込んでいるファイル形式は README.rst です。PyPL が md (マークダウン) 形式には対応していないため、一般的には rst (reStructuredText) 形式を使うのが普通なようです。そこで、md 形式から rst 形式に変換する必要が有ります。変換するには pandoc を使うのが便利です:
sudo apt install -y pandoc
ワーキングディレクトリを README.md がある場所に移し、以下を実行すれば README.md から README.rst を作成することが出来ます:
pandoc -f markdown -t rst -o README.rst README.md
また、Python ファイルでないもので、インストールに含めたいものは MANIFEST.in に指定する必要が有ります:
include README.rst


インストール & 試用


pokepy ディレクトリ内に入り、pip でインストールします。-e は --editable のショート形式で、開発中はソースを編集したい時もあるので、再インストールする必要なく編集できるようにするためのオプションです:
cd pokepy && sudo pip install -e .
Successfully installed pokepy
と返されたらインストール成功です。
試しに図鑑番号 25 のポケモンの名前を表示してみます:
pokepy pokemon -i 25
出力例:
pikachu

以上で Python で端末で動く API ラッパーを作成する方法を習得しました。このモジュールをテンプレートにして、より便利でより複雑なツールを作ってはいかがでしょうか。

参考元: Datahovel
| 1/105 | >>

Show some apps list:


miku

Follow on your feed reader:


About this blog:

Linux Mint-centric chronicle.
Since 2009.
Info 更新日は土曜日です。

roadtoapython

roadtorubyist

git