tag:blogger.com,1999:blog-7878886210503890202024-03-27T15:35:05.352+09:00おしゃれな気分でプログラミングライフハック?shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.comBlogger31125tag:blogger.com,1999:blog-787888621050389020.post-11290071817047263112023-02-23T15:07:00.223+09:002023-02-26T19:53:30.150+09:00ArchLinuxでお洒落にMariaDBする
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlJ4Ntwn1hzmVX7ltNu1ShXqWKP9JYQ1itnOtkZjImJqiJRjQBBSvfYcOuMC9FDQJuc-Dj4va701adkqa6fmlAD29L_sVYdADjBpC1gZjpisg8C36xyOdBn0da7sCjuQudXIXEL48gKH54FnPEirC8IqYyknHJdDnIldy-b51pZJjLfR1oNAPnRQ_2/s4592/DSC02142.JPG" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="2576" data-original-width="4592" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlJ4Ntwn1hzmVX7ltNu1ShXqWKP9JYQ1itnOtkZjImJqiJRjQBBSvfYcOuMC9FDQJuc-Dj4va701adkqa6fmlAD29L_sVYdADjBpC1gZjpisg8C36xyOdBn0da7sCjuQudXIXEL48gKH54FnPEirC8IqYyknHJdDnIldy-b51pZJjLfR1oNAPnRQ_2/s600/DSC02142.JPG"/></a></div>
<p>
時計システム、BigTable、ブラックホール・・・
この世のすべてを作っている男・エンジニアリング王ジェフ・ディーン。
<br />
<br />
彼の言い放った一言は、人々をπの海へかり立てた。
「オレの暗証番号か?欲しけりゃくれてやる。
探せ!この世のすべてをそこへ置いてきた!!」
男たちは円周率の最後の4桁を目指し、夢を追い続ける。
</p>
<br />
<div style="text-align:center">
<font size="5" color="red">
世はまさに、大データ時代!
</font>
</div>
<br />
<p>
いや、いつか
<a href="https://qiita.com/umegaya/items/ef69461d6f4967d5c623">Jeff Dean</a>
のコピペを書いてみたいと思っていたんだけれど、、、<br />
まぁ大データ時代なのは間違いない!ってことで、
ArchLinuxでMariaDBというデータベースをはじめる時のメモです。
</p>
<h3>MariaDB</h3>
<p>
MariaDBの情報は以下から。
</p>
<figure class="okblogcard">
<a href="https://mariadb.org/" target="_blank">
<div class="okblogcard-content">
<div class="okblogcard-image"><div class="okblogcard-image-wrapper">
<img alt="MariaDB Foundation - MariaDB.org" height="56" loading="lazy" src="https://mariadb.org/wp-content/uploads/2019/01/cropped-mariadb_org_rgb_v-2.png" width="100" />
</div></div>
<div class="okblogcard-text"><p class="okblogcard-title">MariaDB Foundation - MariaDB.org</p><p class="okblogcard-description">
MariaDB Server is one of the most popular open source relational databases. It’s made by the original developers of MySQL and guaranteed to stay open source.
</p></div>
</div>
<div class="okblogcard-footer"><img alt="" height="16" src="https://www.google.com/s2/favicons?domain=https://mariadb.org/" width="16" />https://mariadb.org/</div>
</a>
</figure>
<h3>ArchLinuxでのインストール</h3>
<p>
MariaDBはArchLinuxの公式リポジトリにある
mariadbパッケージでインストール出来ます。
pacmanを使ったインストールコマンドは次の通り。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S mariadb
</code></pre>
<br />
<p>
pacmanコマンドでmariadbパッケージをインストールすると、
他の必要なパッケージ
(mariadb-clientsやmariadb-libs等)
が一緒にインストールされます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE_m8DEQ2h1BcCI75wtieHF66rGWrkwq7AWNp-57VpuizOrPfWLN9-9wuZpR1vkQmkJM8qpEDDhAHO25JLs5x5E3iGJ4HeBpjwHYeGLklcLpe8uqjSJu9ESGpS6-djptguY7INW-iiFmDx1Kjy741QuyVZ0Jri_rv--JC5LhTv1YJmpXZqbFQWMRyE/s1113/sc_window_20230223162104.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="724" data-original-width="1113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE_m8DEQ2h1BcCI75wtieHF66rGWrkwq7AWNp-57VpuizOrPfWLN9-9wuZpR1vkQmkJM8qpEDDhAHO25JLs5x5E3iGJ4HeBpjwHYeGLklcLpe8uqjSJu9ESGpS6-djptguY7INW-iiFmDx1Kjy741QuyVZ0Jri_rv--JC5LhTv1YJmpXZqbFQWMRyE/s600/sc_window_20230223162104.png" width="600" /></a></div>
<br />
<h3>MariaDBのシステムディレクトリ初期化</h3>
<p>
まずは、
pacmanでのインストール時の出力の最後の方に、
<span style="color: red;">
サーバー起動前に行なうべき必須の作業
</span>
の指示があるので確認します。
</p>
<br />
<h4>メッセージに書かれた重要な指示</h4>
<p>
以下がインストール時のpacmanでの出力です。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiX0NlwDZzbLBKz3MszEgva_FTHXwHOINaR1V4_yysHzGhD9UPXuH9YwThuXemJZ_VQy3bwqoWijn3luMQVev__HWC377ZES2jRLm1-Rc-tgjhzPJZN19rV5-8800ouVUm6ptx3PoJjUqxvrx5kHUtA5nOoBtyzjjgxXtMPyEi5KWThYWdvLxKw_qt/s1113/sc_window_20230223173706.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="724" data-original-width="1113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiX0NlwDZzbLBKz3MszEgva_FTHXwHOINaR1V4_yysHzGhD9UPXuH9YwThuXemJZ_VQy3bwqoWijn3luMQVev__HWC377ZES2jRLm1-Rc-tgjhzPJZN19rV5-8800ouVUm6ptx3PoJjUqxvrx5kHUtA5nOoBtyzjjgxXtMPyEi5KWThYWdvLxKw_qt/s600/sc_window_20230223173706.png" width="600" /></a></div>
<p>
出力メッセージの中にある以下の記述に着目しましょう。
</p>
<br />
<blockquote>
<br />
You need to initialize the MariaDB data directory prior to starting
the service. This can be done with mariadb-install-db command, e.g.
:
<br />
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
<br />
</blockquote>
<br />
<p>
ここには、
「サーバー起動する前に
MaridaDBのデータディレクトリを初期化する必要があります。
この初期化は次のように、
mariadb-install-dbコマンドを使って行ないます。」
と書かれています。
ですから、pacmanのインストール直後、指示通りに
</p>
<br />
<div style="text-align:center">
<font size="5" color="red">
以下のコマンドを必ず忘れずに実行しましょう。
</font>
</div>
<br />
<pre class="commandline"><code>$ sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
</code></pre>
<br />
<p>
実際にコマンドを実行すると、次の様な出力がされます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5Fo0RU9GgbfHZnGwyZ3C93n6C_cGYxyIzj6pEv7CLlhwFlm-Cwo2MYn77If2dryrURC1DC07UjZmRwpTWptDcvcVYEL8JsHMly9bjeLwE8tw2q70oJIPhGoHHW-XlQwTXEbFYzDq9Uoeq3P1kXPnFGDMtAAoGBZpKciLkyI8PyCmjw2vYDZrXYqqn/s1062/sc_window_20230223174213.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1033" data-original-width="1062" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5Fo0RU9GgbfHZnGwyZ3C93n6C_cGYxyIzj6pEv7CLlhwFlm-Cwo2MYn77If2dryrURC1DC07UjZmRwpTWptDcvcVYEL8JsHMly9bjeLwE8tw2q70oJIPhGoHHW-XlQwTXEbFYzDq9Uoeq3P1kXPnFGDMtAAoGBZpKciLkyI8PyCmjw2vYDZrXYqqn/s600/sc_window_20230223174213.png" width="600" /></a></div>
<p>
まず、
mariadbを管理するためのシステムテーブルを
/var/lib/mysql に作成した旨が述べられています。
しかし、
更に、メッセージが続いています。
その主な内容は、新しいMariaDBで採用されている、
新しい認証システムについての説明です。
</p>
<br />
<p>
この認証システムの紹介は後の項目で行なうとして、
まずは、サーバーを立ち上げましょう。
</p>
<br />
<h3>MariaDBサーバー起動!!</h3>
<p>
なんにせよ、mariadb-install-dbスクリプトを実行したので、
MariaDBサーバーの初期化作業は完了しています。
とりあえず、MariaDB サーバーを起動してみましょう。
</p>
<br />
<h4>MariaDBをsystemdで立ち上げる</h4>
<p>
先のメッセージの中に、
mariadb.service(systemdのユニットファイル)を
手動でコピーするように指示がありますが、pacmanがしてくれているので
その必要はありません。
また、mariadb デーモンの立ち上げコマンドが紹介されていますが、
ArchLinuxではsystemdから立ち上げるのが普通です。
</p>
<br />
<p>
ですから、以下のコマンドでMariaDBサーバーを立ち上げましょう。
</p>
<br />
<pre class="commandline"><code>$ sudo systemctl start mariadb
</code></pre>
<br />
<p>
サーバーの停止は、上記コマンドの start の部分を
stop にしたものを実行すればOKです。
systemdのsystemctlコマンドに疎い方は、
一度、
<a href="https://wiki.archlinux.jp/index.php/Systemd" target="_blank">ArchWikiのsystemdのページ</a>
を見ておきましょう。
</p>
<br />
<h4>systemd enableで常時起動</h4>
<p>
LinuxのBoot時からのサーバーの自動起動(デーモン)の設定は、
systemctlにenableを渡す以下の様なコマンドを実行することで行なえます。
ちなみに、自動起動のとりやめは、disableです。
</p>
<br />
<pre class="commandline"><code>$ sudo systemctl enable mariadb
</code></pre>
<br />
<p>
systemctl enable を実行しても、
「今」起動するわけではありません。
次回のLinuxブート時に起動する設定であることに注意しましょう。
(サーバー起動のつもりで、
enableして、サーバーが立ち上がらない!!っていう、
systemd 初心者あるある)。
</p>
<br />
<br />
<h3>新しいMariaDBへのログインの仕方</h3>
<p>
先にみた、
mariadb-install-dbスクリプトの実行時に出力されたメッセージの
中に書かれていた、次の部分に着目します。
</p>
<br />
<blockquote>
<br />
Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is mysql@localhost, it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo
<br />
<br />
See the MariaDB Knowledgebase at https://mariadb.com/kb
<br />
</blockquote>
<br />
<p>
ここでは、上記の初期化によって、
「root@localhost」と「mysql@localhost」の
ふたつの特権アカウントが作成された旨が述べられ、
ともにパスワードが設定されていないことが説明されています。
ここで、「 ここでパスワードが設定されていない 」とは、
パスワード無しで誰でもアクセス出来るという意味ではありません。
<span style="color: red;">
パスワードを要求されてアクセスするような方法ではアクセス出来ない
</span>
という意味です。
</p>
<br />
<h4>初心者殺しのMariaDB</h4>
<p>
例えば、
よくあるMySQL等のデータベース初心者ページで
「サーバーへのアクセスの仕方」を見ると
次の様なコマンドが載っています。
</p>
<br />
<pre class="commandline"><code>$ mysql -u root -p
</code></pre>
<br />
<p>
しかし、今、インストールしているArchLinuxのMariaDBでは、
この方法でサーバーにアクセス出来ません。
パスワードのプロンプトに単にエンターキーを押した場合、
以下の様なエラーがでます。
すなわち、
<span style="color: red;">
アクセスが拒否(Access denied)
</span>
されます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUMkfSvlJ0BeOCc5MsqZqBU9vqoHY-Te1RkR2i5FVqc2ritmiixeo856ZHVacukmpOZ56J9sygW_JfBQpSklUAYAK0xgKSgRBg0PhHcsvCdkINJNwhe9oTaAa_s1tkbh0s6JbH7j74nh-Qnhv9hs3laQs38mZ2nuBj8ZAZQqUjhrn-bNLU_az3sBCc/s1010/sc_window_20230223193755.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="532" data-original-width="1010" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUMkfSvlJ0BeOCc5MsqZqBU9vqoHY-Te1RkR2i5FVqc2ritmiixeo856ZHVacukmpOZ56J9sygW_JfBQpSklUAYAK0xgKSgRBg0PhHcsvCdkINJNwhe9oTaAa_s1tkbh0s6JbH7j74nh-Qnhv9hs3laQs38mZ2nuBj8ZAZQqUjhrn-bNLU_az3sBCc/s600/sc_window_20230223193755.png" width="600" /></a></div>
<p>
通常、
初心者として初心者ページを読んでいて、
そこに書いてある通りにやって、
書いてある通りにならない場合、、、
先に進む手段がありません。
</p>
<br />
<p>
が、このノートでは、先に進めるので大丈夫です!
色々読むのが面倒な人は、
初心者ページで`mysql -u root -p`と指示されている所は、
<span style="color: red;">
代りに以下のコマンド
</span>
を使いましょう。
</p>
<br />
<pre class="commandline"><code>$ sudo mysql
</code></pre>
<br />
<p>
-u とか -p とかのオプションは一切いりません。
sudoを使ってroot権限でmysqlを実行するだけです。
</p>
<br />
<h4>同名のシステムアカウント権限でログイン</h4>
<p>
さて、上に書いたsudoコマンドを使う方法、
上手く行かないので無理矢理root権限で動かしているわけではありません。
</p>
<br />
<p>
実は、ちゃんと上述の出力メッセージで
</p>
<br />
<br />
<div style="text-align:center">
<font size="5">
<span style="color: red;"> システムの </span>
rootユーザーとしてアクセスして下さい。
<br />
例えば、`
<span style="color: red;"> sudo mysql </span>
`等で
</font>
</div>
<br />
<br />
<p>
と説明されているのです。
原文は次の通り。
</p>
<br />
<blockquote>
<br />
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
<br />
</blockquote>
<br />
<p>
すなわち、mariadb上のrootアカウントならシステムのrootアカウントとして、
mariadbのmysqlアカウントならシステムのmysqlアカウントとして
mysqlクライアントを実行すると、
パスワード無しでアクセスできるということです。
</p>
<br />
<p>
逆にいえば、
<span style="color: red;">
mariadbアカウントと同名のシステムアカウントからしかアクセス出来ない
</span>
ということであり、
mariadbのデータベースアカウントだけが乗っ取られるということが不可能になるので
セキュアになります。
</p>
<br />
<p>
さてここで使われる
システムの別ユーザー権限になるためのコマンドの例が
<span style="color: red;">
sudo
</span>
コマンドです。
PC-UNIXを使っている方々は、この sudo コマンドを
root権限を得るのに通常使っていてお馴染だと思いますが、
実は、rootに限らずどのユーザーにもなれる
「他人の権限でコマンドを実行するためのコマンド」です。
</p>
<br />
<h4>sudoを使ってログイン</h4>
<p>
ここで、あらためて新しいMariaDBでのログインの仕方を紹介すると、
rootとしてmysqlでmariadbにアクセスするためには、
次のコマンドのようにsudoを使ってシステムのrootユーザーになって、
mysqlを実行すればOKです。
-uや-pのオプションは必要ありません。
</p>
<br />
<pre class="commandline"><code>$ sudo mysql
</code></pre>
<br />
<p>
もちろん、あなたのユーザーアカウントがsudoの権限を持っていないといけません。
sudoコマンドはrootだけでなく、
-uオプションを使って他のユーザーにもなれます。
mysqlクライアントをmysqlユーザーとして実行する場合には、
以下の様にコマンドを実行します。
</p>
<br />
<pre class="commandline"><code>$ sudo -u mysql mysql
</code></pre>
<br />
<p>
以下は、sudoコマンドでrootユーザーとしてmysqlを実行し、
mriadbサーバーに接続している様子です。
パスワード等を聞かれることなく
(sudoでのパスワードは聞かれます)、
ちゃんとアクセス出来ていることが確認出来ます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtYPpH0jPseZbOCz7aNWVl8mpw4GF5ujJZi2Bijo_aFFaO2swNxoDAMI2M4r2Poa6aQKlYG9QtY8b2zdCqyquvEpKB97urqeuA8PmgnzAUxgAUSYhjL9YU625egfa-j3-vtVaSmttN6xDYULYOQIDCFM4BKuYD_SnidiRmsXnGCWPT5K5Y9H9w4sAM/s1001/sc_window_20230223200358.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="690" data-original-width="1001" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtYPpH0jPseZbOCz7aNWVl8mpw4GF5ujJZi2Bijo_aFFaO2swNxoDAMI2M4r2Poa6aQKlYG9QtY8b2zdCqyquvEpKB97urqeuA8PmgnzAUxgAUSYhjL9YU625egfa-j3-vtVaSmttN6xDYULYOQIDCFM4BKuYD_SnidiRmsXnGCWPT5K5Y9H9w4sAM/s600/sc_window_20230223200358.png" width="600" /></a></div>
<h3>高機能な新しいMariaDBのまめ知識</h3>
<p>
上記で紹介した、巷の情報と違うMariaDBの新しい認証方法について、
日本語で紹介されているページが少なそうなので、
MariaDB本家で紹介されている、以下のページを紹介しておきます。
</p>
<br />
<figure class='okblogcard'>
<a href='https://mariadb.com/kb/en/authentication-from-mariadb-104/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://mariadb.com/wp-content/uploads/2018/10/mariadb-social-share.jpg' alt='mysql_secure_installation' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>Authentication from MariaDB 10.4</p><p class='okblogcard-description'>
Authentication changes in MariaDB 10.4.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://mariadb.com/kb/en/authentication-from-mariadb-104/' alt='' width='16' height='16'>https://mariadb.com/</div>
</a>
</figure>
</ br></ br>
<p>
このページに書かれている一番のテーマは、
MariaDBの10.4から各アカウントについて
「
<span style="color: red;">
複数の認証方法
</span>
を設定しておけるようになった」というものです。
</p>
<br />
<p>
まず、「認証方法」とは?ということですが、
例えば、みなさんが直感的にイメージしやすい認証方法は
「
<span style="color: red;">
パスワードでの認証
</span>
」方法です。
<br />
そして、他の認証方法としては、先に紹介した「sudoを使う方法」です。
実際には、MariaDBのアカウントと同名のシステムアカウントからアクセスするというものですが、この方法は「
<span style="color: red;">
unix socket認証
</span>
」と呼ばれています。
更に、これ以外にも認証方法がいくつかあるようです
(実際には、パスワードの認証方法も複数ある)。
</p>
<br />
<p>
そして、実はそもそも、MySQLやMariaDBは幾つかある認証方法の中から
自分の好きなものを一つ選んで設定することが出来ました
(認証プラグインという仕組み)。
しかし、今回の新機能によって、複数を組みあわせた設定、
例えば「まず、unix socket認証を試して、失敗したら、パスワード認証する」
という設定をすることが出来るようになったのです。
</p>
<br />
<h4>パスワード認証に変更できます</h4>
<p>
さて、新機能云々や何故そうなったのかという話はさておき、
まず、重要なことは、
<br />
<br />
<div style="text-align:center">
<font size="5" color="red">
従来通りのパスワード認証を使って問題ない
</font>
</div>
<br />
ということです。
</p>
<br />
<p>
MariaDBのrootアカウントへのアクセスに
unix socket認証ではなく、パスワード認証を使いたいなら、
一旦、sudoを使ってmysqlクライアントを実行し、
そこに次のSQLステートメントを発行します。
</p>
<br />
<pre class="commandline"><code>ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("verysecret")
</code></pre>
<br />
<p>
実際に変更する場合は、
PASSWORD("verysecret")のverysecretの部分をあなたが使う
パスワードに置き換えて実行します。
以下が実際にmysqlクライアントで認証方法をパスワード認証に
変更している様子です。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJWO5sl0C3gavMnUv91HYMjmYXZH8f92NXwtifbTao2F3ch38j1iVyuKfxs6tbp3wLu21FGtJW-XSfLhvUg3kPdzhLPuAB6q5dwDUNYA-lADgmIepgan17D7aWVs24nlk84try10tleN0mHyR5KVsqo5X8FXRGpkqEX8t4l6DX9CkENwC3vxg2qaBI/s1059/sc_window_20230226154707.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="824" data-original-width="1059" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJWO5sl0C3gavMnUv91HYMjmYXZH8f92NXwtifbTao2F3ch38j1iVyuKfxs6tbp3wLu21FGtJW-XSfLhvUg3kPdzhLPuAB6q5dwDUNYA-lADgmIepgan17D7aWVs24nlk84try10tleN0mHyR5KVsqo5X8FXRGpkqEX8t4l6DX9CkENwC3vxg2qaBI/s600/sc_window_20230226154707.png"/></a></div>
<p>
この作業を行なっておけば次回から'mysql -u root -p'で、
今設定したパスワードを使って、
MariaDBのrootにログイン出来るようになります。
</p>
<br />
<h4>初期化時に作られたrootとmysqlアカウントの話をしている</h4>
<p>
さて、ここまで読んで、よくわからないけれど、
新しいMariaDBでは認証方法が変ったらしい事だけは
把握した初心者さんが、
巷の初心者ガイドを片手に色々と勉強していく場合、
「新規ユーザー作成のときの認証方法はどうなるの??」
という不安があるかもしれませんが、大丈夫です!
ガイド通りにやればガイド通りになるはずです。
</p>
<br />
<p>
複数認証の設定は、複数認証を設定するように設定を行います。
そして、rootとmysqlアカウントは、初期化スクリプトで
複数認証できるアカントとして作成したので、
unix socket認証されるようになっているだけです。
</p>
<br />
<h3>mysql_secure_installationスクリプト</h3>
<p>
MariaDBをセキュアに利用するための設定をチェックしてくれる
シェルスクリプトがあり、
これを実行することが推奨されています。
さて、これは`mysql_secure_installation`という名前のスクリプトで、
内容は簡単なインタラクティブ形式で処理を進めるものなのですが、
もともと、MySQLなどはインストール直後、
rootのパスワードが設定されていなかった
(今と違って誰でもアクセスができる)ので、
少くともrootパスワードの設定を促すためのセキュリティスクリプトだったようです。
なので、今はデフォルトでrootアカウントにunix socket認証が設定されており、
昔ほど「必須」というわけでもないのでしょうが、
ネットでのMySQL等のインストールに際して、
このスクリプトが紹介されているので、
みなさんなんの気なしに実行することと思います。
</p>
<br />
<p>
ところが実はこのスクリプト、
認証の強化(先に紹介した「unix socket認証」と「パスワード認証」)
の部分がややこしい(昔の無防備な状態を前提としている)ので、
このノートで紹介したいと思います。
</p>
<br />
<figure class='okblogcard'>
<a href='https://mariadb.com/kb/en/mysql_secure_installation/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://mariadb.com/wp-content/uploads/2018/10/mariadb-social-share.jpg' alt='mysql_secure_installation' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>mysql_secure_installation</p><p class='okblogcard-description'>
Improve the security of a MariaDB installation.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://mariadb.com/kb/en/mysql_secure_installation/' alt='' width='16' height='16'>https://mariadb.com/</div>
</a>
</figure>
</ br></ br>
<p>
スクリプトでは以下の事を行ないます。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>認証の強化</li>
<li>匿名ユーザーの削除</li>
<li>ローカルホスト以外からのrootアカウント接続禁止</li>
<li>匿名ユーザーが接続できるテストテーブルの削除</li>
</ul>
</div>
<br />
<p>
スクリプトはインタラクティブ形式の質問に
答えることで設定を進めて行きます。
ひとつひとつ順番にみて行きましょう。
尚、このスクリプトでは、MariaDBに接続して、その設定を行なうので、
このスクリプトを実行する前に必ず、
<span style="color: red;">
MariaDBサーバーが立ち上がっている
</span>
ことを確認してください。
</p>
<br />
<p>
スクリプトの実行は、次のコマンドで行ないます。
ここでの注意は、
<span style="color: red;">
sudoコマンドを使ってroot権限で実行
</span>
することです。
</p>
<br />
<pre class="commandline"><code>$ sudo mysql_secure_installation
</code></pre>
<br />
<h4>MariaDBへの接続</h4>
<p>
コマンドを実行すると、まず、次ような出力がなされます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEzzHFzozL5e_Kq2H6qbx--J5ojXIxIQrZzlTDSuBDvQoEPEkRaP1Msb-42Xs0QZGHnszvZhlBtgjRXFVt4_nKVnk_NoFoFaIASXmfQWJHAysndlUrQU2XVoNz5BxjzIImHCqs0y5NEaz2xY0sq9n_fkbkUafmCbM4SqJvsr_vi7Rpo1My7Va5HzSg/s1001/sc_window_20230223205610.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="690" data-original-width="1001" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEzzHFzozL5e_Kq2H6qbx--J5ojXIxIQrZzlTDSuBDvQoEPEkRaP1Msb-42Xs0QZGHnszvZhlBtgjRXFVt4_nKVnk_NoFoFaIASXmfQWJHAysndlUrQU2XVoNz5BxjzIImHCqs0y5NEaz2xY0sq9n_fkbkUafmCbM4SqJvsr_vi7Rpo1My7Va5HzSg/s600/sc_window_20230223205610.png"/></a></div>
<p>
はじめに、このスクリプトが推奨事項である説明がなされ、
続いて以下のように書かれています。
</p>
<br />
<blockquote>
<br />
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
<br />
</blockquote>
<br />
<br />
<p>
これは「
MariaDBに接続するために、rootユーザーの現在のパスワードが必要です。
MariaDBをインストールしたばかりで、
まだパスワードを設定していない場合、
rootユーザーのパスワードはありません。
ですから、その場合には、ここで単にエンターキーを押してください。
」と書かれています。
</p>
<br />
<br />
<p>
さて、
<span style="color: red;">
通常MariaDBのインストール直後で何もしていない場合、
</span>
メッセージ通りパスワードが設定されていません。
但し、unix socket認証が効いているので、
セキュアスクリプトがsudoを使ってroot権限で実行されている場合、
<span style="color: red;">
パスワード無し、即ち、エンターキーのみで、
</span>
サーバーにアクセス出来ます。
</p>
<br />
<p>
一方で、
このノートに書いてある方法で
<span style="color: red;">
パスワードを設定して「パスワード認証」にした場合、
</span>
プロンプトに対してさっき自分が設定した
<span style="color: red;">
rootのパスワードを入力
</span>
してサーバーにアクセスすることになります。
</p>
<br />
<p>
どちらにしても、
エンターキーを押すと次の様な出力になります。
</p>
<br />
<br />
<h4>認証の強化</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnRNimJ1B0zgfckLngnl4HGlrUC0cQ7JWQePOSbI_bIVHyOd_OUpbhdDuZ3fvCdYBXWGx7Xv2ddawMS51DIVpNbhF5WkdW99JYY_o8SRXDRaBtxLWxzh6k9zWtIsIr8nruo3meZPexmGbop2-8Oe9zxJuvZ7UGwqrUqciwupE7baOF9zdzg4HrF7Vb/s1001/sc_window_20230223205805.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="690" data-original-width="1001" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnRNimJ1B0zgfckLngnl4HGlrUC0cQ7JWQePOSbI_bIVHyOd_OUpbhdDuZ3fvCdYBXWGx7Xv2ddawMS51DIVpNbhF5WkdW99JYY_o8SRXDRaBtxLWxzh6k9zWtIsIr8nruo3meZPexmGbop2-8Oe9zxJuvZ7UGwqrUqciwupE7baOF9zdzg4HrF7Vb/s600/sc_window_20230223205805.png"/></a></div>
<p>
質問は以下の通りです。
</p>
<br />
<br />
<blockquote>
<br />
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
<br />
<br />
You already have your root account protected, so you can safely answer 'n'.
<br />
<br />
Switch to unix_socket authentication [Y/n]
<br />
</blockquote>
<br />
<br />
<p>
まず、「
rootパスワード、または、unix socketを使った認証を設定する事で、
適正な認証なしにMariaDBのroot権限で誰もログインできないようにします。
」と述べ、次に
「
あなたのrootアカウントは既に保護されているので、
安心して"n"の選択肢を選べます。
」と言った上で、
「
unix soket の認証に切り替えますか?
」と聞いてプロンプトを出しています。
</p>
<br />
<p>
この項目は単純に認証方法を
「unix socket認証」や「パスワード認証」に
<span style="color: red;">
切り替えるため
</span>
の項目ではありません。
</p>
<br />
<p>
実は、この質問自体が、先に話した
「パスワードが無く誰でもアクセス出来た」頃の名残なのです。
つまり、この質問の前提は、
サーバーが「パスワードが無くアクセス出来る状態」であり、
このままでは危険なので、
「unix socket認証」か
「パスワードの設定されたパスワード認証」を設定しましょう。
という項目なのです。
</p>
<br />
<p>
現在は、先の初期化作業が終った段階で、
unix socket認証の設定が行なわれています。
ですから、通常、
<span style="color: red;">
必ず
</span>
「root account protected」の状態になっているのです。
</p>
<br />
<p>
そして、unix socket認証ではなく、
自らパスワード認証に変更した場合、
自分でパスワードを設定しています。
ですから、この場合であってもやはり
「root account protected」の状態になっているのです。
</p>
<br />
<p>
ここで、あらためて、スクリプトで聞かれている質問は、
「unix socket認証に切り替えますか?」です。
</p>
<br />
<p>
既に何かのセキュリティ対策されているものにかえて
「unix socket認証」に切り替えますか?という意図ではないのです。
なので、既にセキュリティ対策はなされている場合、当然、
この質問には「
<span style="color: red;">
n
</span>
」と答えます。
</p>
<br />
<br />
<p>
入力を行なうと、次の出力がされます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoPbhC1KufJtVY2wXhpyD-cQwpis1-ikQ1zm63bb_4YzQ46M7xLEJf4lcQWL1PmShVBCfMq7hI1g0-4hWvF0oLlrEvqOlHlfScmv2WDR8Unt2tKAa8Re3RK8EBUKSIuZxA1vGSnCyASrlIFlM9KKIvhSmZxEVP4RpsQqzR3v_Kfqc8A0tQmw6cV0zk/s1001/sc_window_20230223205956.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="690" data-original-width="1001" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoPbhC1KufJtVY2wXhpyD-cQwpis1-ikQ1zm63bb_4YzQ46M7xLEJf4lcQWL1PmShVBCfMq7hI1g0-4hWvF0oLlrEvqOlHlfScmv2WDR8Unt2tKAa8Re3RK8EBUKSIuZxA1vGSnCyASrlIFlM9KKIvhSmZxEVP4RpsQqzR3v_Kfqc8A0tQmw6cV0zk/s600/sc_window_20230223205956.png"/></a></div>
<p>
同じ文言ですが、最後の質問が、パスワードの設定になっています。
</p>
<br />
<blockquote>
<br />
You already have your root account protected, so you can safely answer 'n'.
<br />
<br />
Change the root password? [Y/n]
<br />
</blockquote>
<br />
<p>
ここでの意図は、「パスワードの設定されていないパスワード認証にパスワードを設定しますか?」という質問なので、
既にセキュリティ対策はなされている場合、当然、
この質問にも「
<span style="color: red;">
n
</span>
」と答えます。
</p>
<br />
<p>
さて、このセキュリティスクリプトでトラブルにならないコツは、
通常、今のMariaDBでの初期化作業では、
「誰でもログインできるパスワード認証」を採用していないので、
上記二つの質問はいつでも「n」で答えることです。
そのうえで、認証方法の切り替えを行いたい場合は、
このスクリプトで切り替えるのではなく、
ちゃんと自分で発行したSQLステートメントで切り換えるようにしましょう。
ずっとトラブルが少なくなるはずです。
</p>
<br />
<h4>匿名ユーザーの削除</h4>
<p>
ここから先は、項目に書いてある通りであり、難しくありません。
適当にやっていきましょう。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwcNgZuZCSPk2oIKfHsUndBQ-naJgXzOPAeaYpseF7sxbNdv-VdOHuM2UEzmbahtPdNWYv1y0bN29_oNjJh0MAN-BN0v53N0RsJTkmrWjnCLlIGH3kuUQyfvYEqpFLCKg3wHaPlqkdlwhrJo-gnUke4fvJH1DrdH7jzixsh9w6Cd7XRYCHHk4zWcoP/s1001/sc_window_20230223210154.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="690" data-original-width="1001" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwcNgZuZCSPk2oIKfHsUndBQ-naJgXzOPAeaYpseF7sxbNdv-VdOHuM2UEzmbahtPdNWYv1y0bN29_oNjJh0MAN-BN0v53N0RsJTkmrWjnCLlIGH3kuUQyfvYEqpFLCKg3wHaPlqkdlwhrJo-gnUke4fvJH1DrdH7jzixsh9w6Cd7XRYCHHk4zWcoP/s600/sc_window_20230223210154.png"/></a></div>
<p>
ここでは、匿名ユーザーの削除について、述べられています。
</p>
<br />
<blockquote>
<br />
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
<br />
<br />
Remove anonymous users? [Y/n]
<br />
</blockquote>
<br />
<p>
「
デフォルトでのMariaDBのインストールでは、
特定のアカウントをもっていなくてもMariaDBにアクセスできる
「匿名ユーザー」が設定されています。
これは、インストールがスムーズに進むようにする、
テスト目的で用意されているものであるので、
本番環境に移行する前には、
この匿名ユーザーは削除しなければなりません。」と述べた上で、
「匿名ユーザーを削除しますか?」とプロンプトを出しています。
</p>
<br />
<p>
この質問には「
<span style="color: red;">
y
</span>
」と答えます。
</p>
<br />
<h4>rootのリモート接続を禁止</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2IopJ5FwGtgW8yw5LzIUtqHRpcKE0zadOlKOwbWfM_vEZMxHkyKcNp8bJMOdAXnNuUHtTl0aC7UPJyuSX4_NusLraTqQQSgR0loYXyfd3uKkwYIvSaygR2ytkvaMm9pYmiawAi_BlStnLQA9Li68lZFtEqgFJieBWnjXJQc6yWZEj_HO2n26szgR0/s1001/sc_window_20230223210225.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="690" data-original-width="1001" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2IopJ5FwGtgW8yw5LzIUtqHRpcKE0zadOlKOwbWfM_vEZMxHkyKcNp8bJMOdAXnNuUHtTl0aC7UPJyuSX4_NusLraTqQQSgR0loYXyfd3uKkwYIvSaygR2ytkvaMm9pYmiawAi_BlStnLQA9Li68lZFtEqgFJieBWnjXJQc6yWZEj_HO2n26szgR0/s600/sc_window_20230223210225.png"/></a></div>
<p>
ここでは、rootのリモート接続の禁止について述べています。
</p>
<br />
<blockquote>
<br />
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
<br />
<br />
Disallow root login remotely? [Y/n]
<br />
</blockquote>
<br />
<p>
ここでは、
「通常、rootユーザーは'localhost'からのみ接続を許されるべきです。
そうする事で、
悪意者によるネットワーク越しのrootパスワード探しを防ぐことができます。
」と述べた上で、
「リモートからのrootログインを禁止しますか?」というプロンプトを出しています。
</p>
<br />
<p>
この質問には「
<span style="color: red;">
y
</span>
」と答えます。
</p>
<br />
<h4>テストテーブルの削除</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVgmVCJM13uqzle68klaCPyhAkmaz-c_XfAEwUPjh0TOuyV8KG_dH5h8Aqu6i6Lqf_Pznl_-gO5xHaaBWFVfFE-Wglh-UNgGfbjDG7kVEwLVjERglDJZfebe3M52toeN1pLz6v09zrAInieNWwaV7vCR8-JZLlJy1zhbnk6tSvtuqp1seSgzZ7I-q-/s1001/sc_window_20230223210329.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="690" data-original-width="1001" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVgmVCJM13uqzle68klaCPyhAkmaz-c_XfAEwUPjh0TOuyV8KG_dH5h8Aqu6i6Lqf_Pznl_-gO5xHaaBWFVfFE-Wglh-UNgGfbjDG7kVEwLVjERglDJZfebe3M52toeN1pLz6v09zrAInieNWwaV7vCR8-JZLlJy1zhbnk6tSvtuqp1seSgzZ7I-q-/s600/sc_window_20230223210329.png"/></a></div>
<p>
ここでは、テストテーブルの削除について述べられています。
</p>
<br />
<blockquote>
<br />
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
<br />
<br />
Remove test database and access to it? [Y/n]
<br />
</blockquote>
<br />
<p>
ここでは、
「
デフォルトでのMariaDBのインストールでは、
'test'と名前の付けられた誰でもアクセス出来るデータベースが
インストールされています。
このtestデータベースはテスト目的のためだけに設置されており、
本番環境へ移行する前に削除しなければなりません。
」と述べた上で、
「testデータベースとそこへのアクセスを削除しますか?」
というプロンプトを出しています。
</p>
<br />
<br />
<p>
この質問には「
<span style="color: red;">
y
</span>
」と答えます。
</p>
<br />
<h4>設定の反映</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUadztGW8Tk_HAOvOFkm_vhcY5go3IR0Dmcgaopdnvkb8UrUVmaYrFlztLDzq-99zDoT4y0cyACArCEI84RaM2e4bBK_NiAAr_wfVl4B2nEIEUngjFNqZzz_kONn5iftn5hfJvxyMblJ8dHdkqs9tVVS8_YbkaZfgW1CcfvHvAbDUfZ50NcByBFlcg/s1001/sc_window_20230223210444.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="690" data-original-width="1001" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUadztGW8Tk_HAOvOFkm_vhcY5go3IR0Dmcgaopdnvkb8UrUVmaYrFlztLDzq-99zDoT4y0cyACArCEI84RaM2e4bBK_NiAAr_wfVl4B2nEIEUngjFNqZzz_kONn5iftn5hfJvxyMblJ8dHdkqs9tVVS8_YbkaZfgW1CcfvHvAbDUfZ50NcByBFlcg/s600/sc_window_20230223210444.png"/></a></div>
<p>
ここでは、ここまでの設定の反映について述べられています。
</p>
<br />
<blockquote>
<br />
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
<br />
<br />
Reload privilege tables now? [Y/n]
<br />
</blockquote>
<br />
<p>
ここでは、
「
権限設定テーブルを再読み込みすることで、
ここまでの変更を今すぐ反映させます。
」と述べた上で、
「ここで権限設定テーブルを再読み込みしますか?」
というプロンプトを出しています。
</p>
<br />
<p>
この質問には「
<span style="color: red;">
y
</span>
」と答えます。
</p>
<br />
<p>
最後は、以下の通りに出力されて、
設定は終了です。
</p>
<br />
<blockquote>
<br />
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
<br />
<br />
Thanks for using MariaDB!
<br />
</blockquote>
<br />
<h3>最後に</h3>
<p>
最近、私事でデータベースを触る機会があったのですが、
さっぱりわからなかったので、
「勉強してみよう!」というモチベーションが出来ました。
素人の僕でも「MySQL」という名前ぐらいは知っていたので、
ArchLinuxにインストールしようと思ったら、
「Arch Linux で選ばれているMySQLの実装は
コミュニティによって開発されているフォークのMariaDBです」
などと書かれており「MySQLの実装って??」と頭をはてなで
埋めながら、「ようわからんけどMariaDBつこたろー」となったわけです。
</p>
<br />
<p>
ネットでは「MariaDB」そのものの初心者向けチュートリアルみたいのが
あまりなくて、しょうがないので、
本家のドキュメントをみるようになったのですが
めちゃめちゃ充実していて、めちゃめちゃわかりやすいです
(実は、はじめはどこにあるのかわからなかったけど)。
</p>
<br />
<div>
<ul style="text-align: left;">
<li><a href="https://mariadb.com/kb/en/documentation/">MariaDB Server Documentation</a></li>
<li><a href="https://mariadb.com/kb/en/training-tutorials/">Training & Tutorials</a></li>
</ul>
</div>
<br />
<p>
データベース全くわからない時に、凄く役に立ったのが以下のページです。
SQLステートめんとのこと殆どしらなかったですが、
凄くわかりやすかったです。
</p>
<br />
<figure class='okblogcard'>
<a href='https://hana-shin.hatenablog.com/entry/2022/06/11/231431' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://ogimage.blog.st-hatena.com/17680117127115851806/13574176438100842398/1656411543' alt='MariaDBの使い方 - hana_shinのLinux技術ブログ' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>MariaDBの使い方 - hana_shinのLinux技術ブログ</p><p class='okblogcard-description'>
1 MariaDBとは?
MySQLの派生として開発されている、オープンソースの関係データベース管理システム (RDBMS) です。
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://hana-shin.hatenablog.com/entry/2022/06/11/231431' alt='' width='16' height='16'>https://hana-shin.hatenablog.com/</div>
</a>
</figure>
</ br></ br>
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-70944128762490912792022-11-21T15:04:00.174+09:002022-11-27T12:28:33.324+09:00Atcoderでお洒落に入茶した話
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmT8rlQc83PncOANqZTSZsdJTupqV40EMusQwbyLE3JsThi_9FqY6DBAZlJtbbXT2qmWhWuFlqYrjG52LZsMfjuts2SivoYv29n-2AwpEAR9m0OZFQ6XgernfAWVM1Hg_nLv-4_63komVfH_o34fLyflASV3C_tvBhpXpME6pDjWrQzVLaIgCnGvJX/s4592/DSC02130.JPG" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="2576" data-original-width="4592" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmT8rlQc83PncOANqZTSZsdJTupqV40EMusQwbyLE3JsThi_9FqY6DBAZlJtbbXT2qmWhWuFlqYrjG52LZsMfjuts2SivoYv29n-2AwpEAR9m0OZFQ6XgernfAWVM1Hg_nLv-4_63komVfH_o34fLyflASV3C_tvBhpXpME6pDjWrQzVLaIgCnGvJX/s600/DSC02130.JPG"/></a></div>
<p>
最近毎週末、僕はAtCoderの主催する
プログラミングコンテストに出場しています。
このコンテスト参加者達はその実力に応じたランク付けがなされていて、
そのランクの強弱は色で表現されています。
まず、初めたばかりの弱い人達は灰色。
そこから、茶、緑、水、青、黄、橙、そして、最も強い人達は赤色が与えられます。
</p>
<br />
<p>
今回僕はランクが灰色から茶色に昇格しました。
そして、代々、AtCoderのコンテスト参加者達は色の変る昇格を果した時、
それまでに自分が行なった努力をブログ等に書かなればならない風習があるらしいので、
僕もこれに習い、お洒落に「色変記事」を記しておこうと思います。
</p>
<br />
<p>
ただ、実際のところ、
好きでAtCoderしている灰色コーダーの人達がやってる事は
多分皆そんなに差はないだろうと思います。
僕はまずはじめ、
AtCoderの解答の提出の仕方を覚えて、
AtCoder Problemsで過去問を解いてその成果を記録出来る事を覚えた後、
暫くはそこで簡単な問題を埋める事に熱中していました。
そして、易しい問題に慣れてくる頃には
「AtCoder」でWebを検索してAtCoderに関する情報を色々と集め、
問題を解く環境(エディタやojやacc)を整備し、
提出用のテンプレートを用意しだしました。
その後は、
ツイッターで飛び交うアルゴリズム勉強の本やサイトの
情報に耳を傾け、「数ってこんな性質あるんやー」とか
「コードってこんなふうに書くんやー」とか
新しい発見に感動し、そういうKnowHowが積み重なっていくのを
素直に楽しいと感じながら、ABCに参加し、過去問をボチボチと解いていました。
</p>
<br />
<p>
つまりは、僕が茶色コーダーになるためにやったことは、
「AtCoderを楽しみながらAtCoderに慣れていった」ってことになると思います。
多分、上に書いたことを「うんうん、そうやんね」と頷き、
AtCoder生活を「楽しい」と思っている灰色コーダーの人は、
遅かれ早かれ茶色になるんだろうなと思います。
一方、うちの嫁様に言わせれば「そんなの良くやってるねー」なので、
やっぱり興味ない人には、続かない(そもそもはじめない)のかなぁ
と思います。
</p>
<br />
<p>
結局のところAtCoderを始めてみて、その時間を楽しめている人は単にコンテス参加を続ければ良いだけです。
だだひとつ、入茶する前にTwitterのAtcoder界隈に生息しておくことはお勧めします。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi27vfqfn8pBzUw2w4WHlWuzG_hI0fLw6sKla73XxyFXMB-tKV54LtwUh3x2wBRfJtaK0Fn67WcblC8GQERVJgHh15xtYRuO0qgAIRw5WEt3gqPncrJW0RCmv_zAbo4wT9Lgx7fzENg8Qg5UxhVuMUMcNEGCuG0i5ppXTpKoqlTB4X18tcr0CZAOj2F/s1918/withbg.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="1918" data-original-width="1262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi27vfqfn8pBzUw2w4WHlWuzG_hI0fLw6sKla73XxyFXMB-tKV54LtwUh3x2wBRfJtaK0Fn67WcblC8GQERVJgHh15xtYRuO0qgAIRw5WEt3gqPncrJW0RCmv_zAbo4wT9Lgx7fzENg8Qg5UxhVuMUMcNEGCuG0i5ppXTpKoqlTB4X18tcr0CZAOj2F/s600/withbg.png"/></a></div>
<p>
僕のTwitter人生で、自分の事でこんなにイイネもらったことありません!
みなさん、ありがとうございました。
</p>
<br />
<h4>この色変記事は</h4>
<p>
さて、私はGo言語でコンテストに参加しています。
しかし、Go言語を使ってる人少いみたいなので、
Go言語でAtCoderに参加する時に役立つかもしれない事をまとめておこうと思います。
</p>
<br />
<p>
後は、AtCoderについて好きなことを幾つか適当に!
</p>
<br />
<p>
ただその前に、やっぱりまずは、「AtCoderって何?」って人へのAtCoderを軽く紹介しておこうと思います。
</p>
<br />
<h3>AtCoder</h3>
<p>
世の中には、普通に参加出来るプログラミングコンテストは幾つかありますが、
その中でも、僕が参加しているプログラミングコンテストはAtCoderです。
</p>
<br />
<figure class='okblogcard'>
<a href='https://atcoder.jp/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://img.atcoder.jp/assets/atcoder.png' alt='AtCoder' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>AtCoder</p><p class='okblogcard-description'>
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://atcoder.jp/' alt='' width='16' height='16'>https://atcoder.jp/</div>
</a>
</figure>
</ br></ br>
<h4>競プロっておもろいよ!</h4>
<p>
僕はもともと、Twitterの中で、パソコンが好きな人達、
特にvimやarchlinux、xmonad、haskell、
go辺りの情報が流れる界隈に生息しています。
この辺りの人達は、「パソコンを触る」事が好きな人が多くいるのですが、
一方で、そのパソコンで実際になにかやる「目的」が見い出せず彷徨っている人もいるように見えます。
特にプログラムを趣味でやっている人は、
「何つくっていいかわからん」という人も多いんじゃないでしょうか?
そんな人達こそ、競技プログラミングに足を踏み入れてみませんか?!
</p>
<br />
<p>
そうすれば、
ArchLinuxの普段使い用途のひとつとして、
AtCoder専用にカスタマイズしたxmonadのワークスペースで、
neovimを使ってコンテストのコーディングが出来ますよ?!
</p>
<br />
<p>
つまりは、競技プログラミングをすれば、
パソコンを触る目的が出来るわけ!
しかも、"I use arch, btw!"とか言いたい人達で、
「俺は、おまえらと違うんだぜ、、悪いが、俺様はハッカーだし」とか、
こっそりと心の中で厨二的なことを呟いたりする種族なのならば、
こっそりする必要はありません!
思う存分AtCoderでハッカー度合いを発揮しましょう!
</p>
<br />
<h4>AtCoderの初め方</h4>
<p>
さて、興味を持ってAtCoderを始めてみようと思ったら、
まずはAtCoderのサイトで自分のアカウントを作成しましょう。
</p>
<br />
<p>
AtCoderのサイトって実はちゃんと必要なページや
初心者向けのリンクも揃っているんですが、
使い始めの頃は何が何処にあるのか見つけられなくて良く迷子になったり、
「何をすりゃいいの?」ってのは、割と初心者あるあるだったりします。
そこで、アカウント作成が完了したら次に見るべきサイトはココです!
そのあたりの事情を汲み取って手取り足取り丁寧に解説してくれています。
</p>
<br />
<figure class='okblogcard'>
<a href='https://qiita.com/snaruse0608/items/9ef0f2f5b190f142cb80' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9QXRDb2RlciVFMyU4MSVBRSVFNSVBNyU4QiVFMyU4MiU4MSVFNiU5NiVCOSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NGI2NmU0NjA3OGE5ZGEyZmU5NDBmOGNkYTJiN2JiYzM&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwc25hcnVzZTA2MDgmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTEwMGUyZDc5MGQyOGUxZTFlMDJjZmM1OTZjYjczNGJi&blend-x=142&blend-y=491&blend-mode=normal&s=fa3c8b6f0dc0eea4a00eaa306b40e39c' alt='AtCoderの始め方 - Qiita' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>AtCoderの始め方 - Qiita</p><p class='okblogcard-description'>
AtCoder登録したけど、ここからどうすれば良いの〜!?
なんか導線がよくわからない〜〜!
ってなったので、同じような人たち向けに。
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://qiita.com/snaruse0608/items/9ef0f2f5b190f142cb80' alt='' width='16' height='16'>https://qiita.com/</div>
</a>
</figure>
</ br></ br>
<p>
AtCoderの問題の見方と回答の仕方、
ジャッジのされ方をマスターすれば、
過去問も本番問題も操作は一緒です!
その後は、上記ページでも紹介されているAtCocder Problemsを活用して
過去問に挑戦し、どんどん問題に慣れていきましょう。
</p>
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">
<a href='https://kenkoooo.com/atcoder/' target='_blank'>AtCoder Problems</a>
</span>
</div>
<br />
<br />
<p>
このサイトにログインして、
メニューのAccount Infoにある
AtCoderUserIDに自分のAtCoderIDを入れておくと、
自分の解いた記録を見る事が出来る様になります。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5iMelYMaAiPCow2hXfJh6FsbccrUhAKJBUvMqMo3wfVb5-Y0L1G2Vxkjx8ruhPxgt9zGcbdfvVQ8yED6vK8VoH8yWat8l5Bvv69auTVJQfBDEO8fIOLIF5hw9Lx_UJoon8KtTqK8KRN0LsHTzUo4cqMqzqNWqeHF9F5H8tgDNTGAjYscjgoPgeXv/s2160/sc_root_20221124004537.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1440" data-original-width="2160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5iMelYMaAiPCow2hXfJh6FsbccrUhAKJBUvMqMo3wfVb5-Y0L1G2Vxkjx8ruhPxgt9zGcbdfvVQ8yED6vK8VoH8yWat8l5Bvv69auTVJQfBDEO8fIOLIF5hw9Lx_UJoon8KtTqK8KRN0LsHTzUo4cqMqzqNWqeHF9F5H8tgDNTGAjYscjgoPgeXv/s600/sc_root_20221124004537.png"/></a></div>
<h4>ABCへの参加</h4>
<p>
AtCoderを始めて、週末がやって来たならば、
ABCコンテストに参加しましょう!
毎週土曜日の夜9時から10時40分までの100分で行なわれています。
</p>
<br />
<p>
その開始前とコンテスト終了後は、
Twitterでコンテスト参加者の呟きが大量にながれます。
それらのツイートを拾えるタイムラインになってくると、
コンテスト開始直前には、今から始まる緊張感がツイートから伝わって決ますし、
コンテスト終了後は、いくつできたとか、どういう解法だったかとか、
レートがあがったさがったの悲喜交々がタイムラインを色採るようになります。
AtCoderの色々なページには、ツイッターにシェアするためのボタンがあるので、
自分の参加や成績をシェアしていると、タイムラインがAtCoder色に染まって行くと思います。
</p>
<br />
<p>
もしかしたらはじめは、AtCoder系のツイートは内輪ネタや専門用語も混じっているため
「楽しそうに話してるのは雰囲気で分るけど、何いってんのかわからん」ってことが
あるかもしれません。
そんな時には、次のページがヒントになります。
</p>
<br />
<figure class='okblogcard'>
<a href='https://kaage.hatenablog.com/entry/2020/05/04/142125' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://cdn-ak.f.st-hatena.com/images/fotolife/k/kaage/20200504/20200504144211.png' alt='2020競プロスラング用語集 - kaage精進録' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>2020競プロスラング用語集 - kaage精進録</p><p class='okblogcard-description'>
2020最新版競プロスラング用語集です。 「FFの競プロerが意味不明な単語を叫んでいてわからない!」 「界隈用語で溢れていて入っていけない!」という方、必見です。 ちょっと内輪ネタが入っているかもしれませんが、競プロ用語は全部内輪ネタみたいなものなので、よしとしましょう。 これであなたも競プロ界隈の仲間入りです。 色 AtCoder, Codeforces, TopCoderなどのコンテストでは、参加者に「レーティング」とそれに応じた「色」がつけられ、実力の指標になります。 サイトによって色は多少異なりますが、どのサイトでも赤が一番強く、「赤コーダー」になることは人々の夢です。 コンテスト …
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://kaage.hatenablog.com/entry/2020/05/04/142125' alt='' width='16' height='16'>https://kaage.hatenablog.com/</div>
</a>
</figure>
</ br></ br>
<h3>Go言語での参加</h3>
<p>
Go言語をばりばり使っているエキスパートの人ならば関係の無い話になりますが、
僕のように、
「Go言語の勉強はじめたから、実践がてらAtCoderでコード書こう!」
とか思う人が結構いるのかなぁ?と思ったりしてます。
なんせ、Go言語ってやっぱり「なんかカッコイイ」でしょ?!
</p>
<br />
<p>
さて、AtCoderでは、問題を解くとき標準入力からデータを取り込みます。
なので、初めに標準入力の処理をマスターしなければなりません。
教科書的な読み込み方法は以下のものです。
</p>
<br />
<pre class="commandline"><code>package main
import "fmt"
func main() {
var s string
fmt.Scan(&s)
fmt.Println(s)
}
</code></pre>
<br />
<p>
しかし、先人達の提出コードを見ると、
あまりこの書き方はされておらず、
なにやら独自のルーチンを定義して
それを使っているはずです。
</p>
<br />
<p>
実は、この教科書的入力の処理方法は、
大量の入力を受ける時に時間が掛かる遅い処理なのです。
なので、AtCoderではこの処理を使わず、
大量の入力でも早く処理出来る方法をあらかじめ準備しておく必要がります。
</p>
<br />
<p>
このあたりをGo言語の知識として勉強して把握しておきたい場合、
次のサイトが凄く頼りになります。
</p>
<br />
<figure class='okblogcard'>
<a href='https://zenn.dev/hsaki/books/golang-io-package/viewer/bufio' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://res.cloudinary.com/zenn/image/upload/s--kqiJRZ6y--/g_center%2Ch_280%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYm9va19jb3Zlci81NTc3N2E4MjhiLmpwZw==%2Cw_200/v1627283836/default/og-base-book_yz4z02.jpg' alt='bufioパッケージによるbuffered I/O|Goから学ぶI/O' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>bufioパッケージによるbuffered I/O|Goから学ぶI/O</p><p class='okblogcard-description'>
標準パッケージの中にbufioパッケージというものがあります。
ドキュメントによると、「bufioパッケージはbuffered I/Oをやるためのもの」と書かれています。
これは普通にI/Oと一体何が違うのでしょうか。
使い方と一緒に解説していきます。
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://zenn.dev/hsaki/books/golang-io-package/viewer/bufio' alt='' width='16' height='16'>https://zenn.dev/</div>
</a>
</figure>
</ br></ br>
<p>
で、とりあえず話さえ読んだらコンテストのためのコードについては、
難しい話はおいておいて、自分で入力用のルーチンを定義して、
テンプレートとして準備しておくようにしましょう。
</p>
<br />
<h4>おしゃれなAtCoder用テンプレート</h4>
<p>
めんどくさがり屋さん用にGo言語でのAtCoder用のテンプレートを以下に紹介します。
</p>
<br />
<script src="https://gist.github.com/nekolinuxblog/2a726af3fb349ebaa68e2d5d257d545c.js"></script>
</ br></ br>
<p>
このテンプレートは、bufioを使った入出力をするための関数を定義した
テンプレートです。
問題を解き初める時に、このファイルをコピーして利用すればOKです。
main関数の外側は気にせずに、
main関数の中に回答コードを書けばOKです。
</p>
<br />
<p>
標準入力からの読み込みの基本はin()関数です。
1ワードをInt型のデータとして読み込みます。
入力の定番パターンとしてよくあるn個のなんたらのために、
整数nを受け取りますが、次のように書くだけでOKです。
</p>
<br />
<pre class="commandline"><code>n := in()
</code></pre>
<br />
<p>
また、良くあるパターンとして整数NとKが初めに渡されたりします。
この時は、in()関数を使って次の用に書きます。
</p>
<br />
<pre class="commandline"><code>n := in()
k := in()
</code></pre>
<br />
<p>
しかし、見易くするために次の関数も用意しています。
</p>
<br />
<pre class="commandline"><code>n,k := in2()
</code></pre>
<br />
<p>
次に文字列を受け取るなら、ins()関数を使います。
</p>
<br />
<pre class="commandline"><code>s := ins()
</code></pre>
<br />
<p>
更に浮動小数点数を受け取るなら、infl()関数を使います。
</p>
<br />
<pre class="commandline"><code>fl := infl()
</code></pre>
<br />
<p>
出力については改行付きの場合、out()関数を使います。
fmt.Println()と同等です。
</p>
<br />
<pre class="commandline"><code>out("Hello World!")
</code></pre>
<br />
<p>
フォーマット式の出力は、outf()関数を使います。
fmt.Printf()と同等です。
</p>
<br />
<pre class="commandline"><code>n := in()
outf("n:%v\n",n)
</code></pre>
<br />
<p>
これらの入出力関数で用いているスキャナ構造体は、
グローバルで宣言して作る建て付けになっているので、
main()関数の外で定義する自作の関数の中でも同じように使えます。
</p>
<br />
<p>
読み込みは文字列として受け取ってから、
各型に変換するので、その変換関数も作っています。
Go言語の場合、基礎関数にある変換関数は、
失敗してるかどうかのフラグも一緒に返すので、
AtCoder用には、単純に変換したものだけ返してくれる
関数として自作しておいたほうが扱いやすく
入出力時だけでなく、必要な時に気軽に使えます。
</p>
<br />
<p>
入出力に関しては、これらを組合せるだけで、だいたい間に合うと思います。
</p>
<br />
<h4>よくあるパターン</h4>
<p>
僕が良く使っている
入力関数を使ったスライスへの受け取りの定番を例示しておきます。
</p>
<br />
<p>
数列等の格納には、スライスを使います。
AtCoderの場合、入力から受け取る場合は、
数列の数がNとして先にわかりますが、
多分ほんとんどの人が、配列ではなくてスライスを使います。
</p>
<br />
<pre class="commandline"><code>n := in()
a := make([]int, n)
for i := 0; i < n; i++{
a[i] = in()
}
</code></pre>
<p>
2次元配列への数値の読み込みパターンは次みたいな感じ。
</p>
<br />
<pre class="commandline"><code>n,m := in2()
a := make([][]int, n)
for i := 0; i < n; i++{
//ここでスライスを作成して入れる
a[i] = make([]int, m)
for j := 0; j < m; j++{
a[i][j] = in()
}
}
</code></pre>
<p>
与えられた文字列の種類を数えたりする時に、
連想記憶配列が重宝します。
</p>
<br />
<pre class="commandline"><code>n := in()
//mapの初期化の仕方の定番
count := map[string]int{}
for i := 0; i < n; i++{
cout[ins()]++
}
</code></pre>
<br />
<h4>準備しておくべき関数</h4>
<p>
C++の場合、
プログラムコンテストで良く使われるような処理の
定番関数が用意されていたりしますが、
Go言語の場合、用意されていないか、
使っている人が少いので用意されているのかどうかが別らなかったりします。
そこで、
簡単で良く使う処理は自作のルーチンをテンプレートに保存しておくと便利です。
例えば、最大値、最小値を返してくれる関数だったり、
絶対値を返してくれる関数は準備しておくと重宝します。
</p>
<br />
<p>
AtCoderでは、先人の提出したコードが見れるので遠慮なく覗いて
勉強させてもらいましょう。
みんな、それぞれ便利ルーチンを持っています。
問題の解き方だけでなく、
その辺りもよさそうなものは真似して、
いいとこどりしましょう!
</p>
<br />
<h3>お得情報</h3>
<p>
自分なりにAtCoder関連で役に立ったり、
面白かったりするものを紹介しときます。
</p>
<br />
<h4>本家AtCoderの中の「便利リンク集」</h4>
<figure class='okblogcard'>
<a href='https://atcoder.jp/posts/261' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://img.atcoder.jp/assets/atcoder.png' alt='便利リンク集 - AtCoder' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>便利リンク集 - AtCoder</p><p class='okblogcard-description'>
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://atcoder.jp/posts/261' alt='' width='16' height='16'>https://atcoder.jp/</div>
</a>
</figure>
</ br></ br>
<p>
結局はここが一番便利だし、役に立つ!!
</p>
<br />
<h4>環境整備のために</h4>
<p>
AtCoderの問題で書かれている、
サンプルの入力とその正解出力は、
atcoder-cliというものを使うと、データとしてローカルに保存できます。
また、自分の書いたコードをAtCoderに送信してコードの提出もしてくれます。
そして、ダウンロードした、サンプルケースとその正解データに基づいて、
自分のコードをチェックしてくれるのがonline-judge-toolsツールです。
</p>
<br />
<p>
LinuxやMacで日常的にシェルを使っているなら、
これらを導入すると色々と楽ちんになるので超おすすめです。
</p>
<br />
<figure class='okblogcard'>
<a href='https://github.com/Tatamo/atcoder-cli' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://opengraph.githubassets.com/b4322f05eb1988a1c5de2b27cb58aebecbfc95c8374d38a14fde7a6535475360/Tatamo/atcoder-cli' alt='GitHub - Tatamo/atcoder-cli' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - Tatamo/atcoder-cli</p><p class='okblogcard-description'>
AtCoder command line tools.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/Tatamo/atcoder-cli' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<figure class='okblogcard'>
<a href='https://github.com/online-judge-tools/oj' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://opengraph.githubassets.com/df2b71cd06e4bfa7ea84a5c4bd575d6d3bd4c0cf2229a48a3c766ff88194eb6a/online-judge-tools/oj' alt='GitHub - online-judge-tools/oj' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - online-judge-tools/oj</p><p class='okblogcard-description'>
Tools for various online judges. Downloading sample cases, generating additional test cases, testing your code, and submitting it. - GitHub - online-judge-tools/oj: Tools for various online judges....
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/online-judge-tools/oj' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
これらの導入を丁寧に解説してくれているページが以下にあります。
</p>
<br />
<figure class='okblogcard'>
<a href='https://qiita.com/NaokiOsako/items/dcbc0a91e1bbca8ee45d' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9QXRDb2RlciVFMyU4MSVBRSVFMyU4MSU5RiVFMyU4MiU4MSVFMyU4MSVBRSVFNyU5MiVCMCVFNSVBMiU4MyVFNCVCRCU5QyVFNiU4OCU5MCUzQSUyMCVFOCU4NyVBQSVFNSU4QiU5NSVFMyU4MyU4NiVFMyU4MiVCOSVFMyU4MyU4OCUyQyUyMCVFMyU4MiVCMyVFMyU4MyU5RSVFMyU4MyVCMyVFMyU4MyU4OSVFNiU4RiU5MCVFNSU4NyVCQSUyMCUyOG9qJTJDJTIwYWNjJTI5JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lMGYzOTdlMTExMTVlOGFmZDVjZDM0ZDZjYmVkOWU0Mg&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwTmFva2lPc2FrbyZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MWJjMDlhMzkwYjhiNTVkNDI0YWY0M2I4MjA3OWYwYzA&blend-x=142&blend-y=491&blend-mode=normal&s=5dc75c9a7a0827fbe26daa861e62aef7' alt='AtCoderのための環境作成: 自動テスト, コマンド提出 (oj, acc) - Qiita' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>AtCoderのための環境作成: 自動テスト, コマンド提出 (oj, acc) - Qiita</p><p class='okblogcard-description'>
問題のsampleの入力をコピーして
IDEに貼り付けてテストして
テストが終わったら自分のプログラムをコピーして
AtCoderに提出って面倒だし, 時間がかかりますよね.
ここではこれらを自動化してくれるツールの導入方...
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://qiita.com/NaokiOsako/items/dcbc0a91e1bbca8ee45d' alt='' width='16' height='16'>https://qiita.com/</div>
</a>
</figure>
</ br></ br>
<p>
うちのパソコンでAtCoder Problemsを解いている様子。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrj7rhilXP1Bquv_N-TLKEpdp3JqAvMO6vAL5xG9eEp82l1ys28-a3VNCpAZhQa3mIgq2HRX5rD19A3QSv1H8SoM3tBAb_M29B0spgnLmFPGpzhOXi8nQySjtOnepq463Z0VcC0azHEa1tvOPY6TqpmbKe-xABikAKWO0dO30AWuasBuzWqWxV7Bvb/s2160/sc_root_20221126130123.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1440" data-original-width="2160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrj7rhilXP1Bquv_N-TLKEpdp3JqAvMO6vAL5xG9eEp82l1ys28-a3VNCpAZhQa3mIgq2HRX5rD19A3QSv1H8SoM3tBAb_M29B0spgnLmFPGpzhOXi8nQySjtOnepq463Z0VcC0azHEa1tvOPY6TqpmbKe-xABikAKWO0dO30AWuasBuzWqWxV7Bvb/s600/sc_root_20221126130123.png"/></a></div>
<h4>あの人だれ?</h4>
<p>
AtCoder界隈でうろうろするようになると、
良く見掛けるようになる人達があらわれますが、
初めは「あの人なんの人なの?」って思うことがあります。
そんな中で、僕の好きなAtCoder有名(?)人を紹介します。
</p>
<br />
<p>
まずは岩井星人さん。
僕はずっと「茶コーダーの人」として認識しています。
ABCのコンテストに参加している様子をYouTubeで配信しています。
実際のコンテストの最中に彼が「何いってるかわからん!」とかぶつぶつ言ってるのを見ると、
「そうそう!あの問題ほんと何いってるかわからんかったよねっ」と
灰色、茶色ランク同士なら解り合える親近感がもてて楽しいです。
</p>
<br />
<figure class='okblogcard'>
<a href='https://www.youtube.com/@yiwiy9' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://yt3.ggpht.com/xQZYonL_UQQh04D2bLXo5rhguC6caMcJxRMg-KToi-qyQ2NO9vUjB0lKm1EZhiMK7FNl73AfMA=s88-c-k-c0x00ffffff-no-rj' alt='unknown title' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>チャンネル岩井星人</p><p class='okblogcard-description'>
ようこそ、岩井の星へ。
こんにちわ。
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://www.youtube.com/@yiwiy9' alt='' width='16' height='16'>https://www.youtube.com/</div>
</a>
</figure>
</ br></ br>
<p>
次はSnukeさん。
ABCが終った晩にYouTubeでライブ解説してくれているあのお兄さんです。
先の岩井さんと対象的にどんな問題も優しく解説してくれてクールにコーディングしてくれます。
クールな解説の合間合間に、なんかおちゃめな事をぼそっと言って笑かしてくれることも多々あります。
Twitterのプロフィールには「アイコンは時計になっています。」とか、もうやってることが人ではありません。
</p>
<br />
<figure class='okblogcard'>
<a href='https://twitter.com/snuke_' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://img.atcoder.jp/icons/5a062bb94eacda39871502ef29840459.jpg' alt='unknown title' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>@snuke_</p><p class='okblogcard-description'>
AtCoderで解説放送してる人です。
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://twitter.com/snuke_' alt='' width='16' height='16'>https://twitter.com/</div>
</a>
</figure>
</ br></ br>
<p>
次はE8さん。
多分、彼は今、全人類を競プロに参加させる的野望を抱いていて、
競プログラミング普及のため、数学やプログラムに疎い人でもアルゴリズムが理解できるように説明した
本を執筆しています。
当然僕も「鉄則本」だけでなく「アルゴリズムX数学」の両方もってます。
</p>
<br />
<figure class='okblogcard'>
<a href='https://twitter.com/e869120' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://avatars.githubusercontent.com/u/30901380?v=4' alt='unknown title' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>@e869120</p><p class='okblogcard-description'>
IOI '18, '19, '20 金メダル🥇/AtCoder 赤 (max. 2950)/東京大学 2 年
著書『アルゴリズム×数学』
著書『競技プログラミングの鉄則』
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://twitter.com/e869120' alt='' width='16' height='16'>https://twitter.com/</div>
</a>
</figure>
</ br></ br>
<p>
E8さんのテレ東Bizってのに出てる動画が好きです。
</p>
<br />
<div class="separator" style="clear: both; text-align: center;"><iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="TqmcWg1aeZc" width="400" height="322" src="https://www.youtube.com/embed/TqmcWg1aeZc"></iframe></div>
</ br></ br>
</ br></ br>
<p>
最後は、chokudaiさん。
</p>
<br />
<figure class='okblogcard'>
<a href='https://twitter.com/chokudai' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://img.atcoder.jp/icons/4fd2d97cb550a125d671f47682153e1e.png' alt='unknown title' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>@chokudai</p><p class='okblogcard-description'>
AtCoder(株)代表取締役社長(競技プログラミングの会社)/競プロ世界ランカー(ICFPC優勝4回等)/筑駒中高→慶應SFC卒/たこやき/ぷよぷよ(PS4 MaxR:2813)/モバマスまゆ小日向でしてP まゆドリフ全一/チュウニズム虹レ/書籍『最強最速アルゴリズマー養成講座』著者/NewsPicksプロピッカー
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://twitter.com/chokudai' alt='' width='16' height='16'>https://twitter.com/</div>
</a>
</figure>
</ br></ br>
<p>
実は昔この人の書いた本を読んだのがきっかけでTopCoderってのにちょっとだけ参加したことがあります。
ただその時、問題文の英語を早くよめるようになりたいと思って英語を勉強しだしたら、
そっちの方がおもしろくて競プロにははまらなかったという経緯があります。
さらに実は、chokudaiさんが、
その本を書いた人ということをついこの間まで知りませんでした。
ごめんなさい。
でもおかげで、今は、パソコンやプログラム関係の英語のドキュメントが
まぁまぁ普通に読める様になって良かったと思っています。
ありがとう、chokudaiさん!!
</p>
<br />shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-85864098876757632372022-06-13T22:03:00.000+09:002022-06-13T22:03:24.161+09:00ArchLinuxでお洒落にShiny Serverする<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx08ZV9yxZvm1FY1nm5qr4UAnsAukFnfreeSRX_f-E26GGkF-qvBiDCLKd15M-aQuU-zXjx8hbQmr7YfibQaIKL4k1bLeaYD8QdkyckhiVxB-Zj7U-qFI6BtMcD2XnDTOnf0qHiG4bn5bmkUzIkZSqAFvUHSEeX7eL0slLGH9EY8xMIPxQlcKUHere/s2000/scshot002.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1122" data-original-width="2000" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx08ZV9yxZvm1FY1nm5qr4UAnsAukFnfreeSRX_f-E26GGkF-qvBiDCLKd15M-aQuU-zXjx8hbQmr7YfibQaIKL4k1bLeaYD8QdkyckhiVxB-Zj7U-qFI6BtMcD2XnDTOnf0qHiG4bn5bmkUzIkZSqAFvUHSEeX7eL0slLGH9EY8xMIPxQlcKUHere/s600/scshot002.jpg"/></a></div>
<p>
<a href="https://shiny.rstudio.com/">
Shiny
</a>
は、RのWebアプリケーションフレームワークです。
ShinyのプログラミングもRStudioで行なっていれば、
RStudio上のボタンひとつで、Webブラウザが起動されて、
そこでWebアプリが動き出します。
そう、始めはこれだけでめちゃめちゃ楽しいのです!
</p>
<br>
<br>
<p>
しかし、この場合、Shinyアプリを利用するためには、
まず、RStudioを起動しなければなりません。
そしてまた、Shinyアプリが利用できるのは、
起動しているローカルのユーザーだけであり
ローカルネットワーク内の他のユーザーからは
利用する事が出来ません。
なので、やがて、
<br>
<br>
<div style="text-align:center">
<font size="5" color="red">
Shinyアプリを普通にWebサービスとして利用したい!
</font>
</div>
<br>
<br>
と思いはじめるのです。
</p>
<br>
<br>
<p>
そこで登場するのが、このノートで紹介する <font color="red">Shiny Server</font> です。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://www.rstudio.com/products/shiny/shiny-server/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://rstudio.com/assets/img/og/shiny-og-fb.jpg' alt='Shiny Server' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>Shiny Server</p><p class='okblogcard-description'>
Put Shiny Web Apps Online.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://www.rstudio.com/products/shiny/shiny-server/' alt='' width='16' height='16'>https://www.rstudio.com/</div>
</a>
</figure>
</ br></ br>
<p>
このノートでは、
archlinuxに、shiny serverをインストールし、
自分で作成したShinyアプリを
ローカルネットワーク上の全てのパソコンから
利用する方法を紹介します。
</p>
<br>
<br>
<h3>ArchLinuxで利用するための手順の概略</h3>
<p>
shiny serverの公式ドキュメントを見ると
ubuntuやCentOS等のディストリビューションに関する説明はあるものの
ArchLinuxに関する説明はありません。
しかし、
shiny serverは、ArchLinux上で、ちゃんと動きます。
そして、しっかりとAURにshiny serverのパッケージがあるので、
ソースを手動でビルドする必要もなく、
インストール自体は、コンパイルに時間が掛るものの
難しい部分はありません。
実際にやるべき作業を列挙すれば、次の通りです。
</p>
<br>
<br>
<div>
<ul style="text-align: left;">
<li>Rをpacmanでインストール</li>
<li>Rでshinyパッケージをシステムにインストール</li>
<li>shiny serverをAURからインストール</li>
<li>shiny serverを設定</li>
<li>shiny serverを起動</li>
</ul>
</div>
<br />
<h3>インストール作業</h3>
<p>
まずは、ArchLinuxのシステムに必要なものを
インストールしていきます。
</p>
<br>
<br>
<h4>Rのインストール</h4>
<p>
R本体をインストールしていない場合、Rをインストールしましょう。
ArchLinuxの公式リポジトリに、
Rパッケージがあるので、
pacmanを使って簡単にインストール出来ます。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S r
</code></pre>
<br /><br />
<h4>Rでshinyパッケージをシステムにインストール</h4>
<p>
次に、Shiny Serverを動かすために、
<font color = "red">
システム(どのユーザーからも見える場所)にshinyパッケージ
</font>
がインストールされている必要があります。
そこで、shinyパッケージを
システムにインストールして行きますが、
これは、archlinuxのパッケージとしてインストールするのではなくて、
Rそのもののコマンドを使ってRの環境にインストールします。
このため、インストール前に、
CRAN(パッケージリポジトリのミラーのようなもの)に関する
設定をしておく必要があります。
次のコマンドでシステム用のR設定ファイル
<font color="red"><code>/usr/lib/R/etc/Rprofile.site</code></font>
を準備します。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo vim /usr/lib/R/etc/Rprofile.site
</code></pre>
<br /><br />
<p>
ファイルの内容は日本のCRANサーバーを指定して、次の様にします。
</p>
<br>
<br>
<script src="https://gist.github.com/nekolinuxblog/33450df0aec6bccdd3ef86ebd968ef27.js"></script>
<br>
<br>
<p>
この作業を行なわずに、
コマンドラインからのインストールを行なうと、
エラーになって作業が進められなくなる事があるので
注意しましょう。
</p>
<br>
<br>
<p>
準備が出来たら、次のコマンドを実行して、
shinyパッケージを
<font color="red">
システムにインストール
</font>
します。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo su - -c "R -e \"install.packages('shiny')\""
</code></pre>
<br /><br />
<p>
以下は、上述のエラーの例です。
エラーの場合、パッケージインストール処理へ進まないので、
すぐにプロンプトに戻ってきます。
はじめてのインストールで、メッセージを読んでいないと、
エラーが出ていることに気が付かないことがあるので注意しましょう。
</p>
<br>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEGJGEu4j9RZglbb_bsl69SUOfAXX5VUyRupnJy2ndI7OXW3YbzMboC02kZ8s5FSDizs1kOoJ5isFllNjb0cayJL3anpkaC_6p3ZscIEsv2UmwQiSHEfFQG9Lw6KLlg8t7hJ7a8s5gPf2ovywWsrwGyrfccFC27xmJM4mRMkYvxKeNlsJWG4oWfAIu/s1058/sc_window_20220613135856.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="1058" data-original-width="980" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEGJGEu4j9RZglbb_bsl69SUOfAXX5VUyRupnJy2ndI7OXW3YbzMboC02kZ8s5FSDizs1kOoJ5isFllNjb0cayJL3anpkaC_6p3ZscIEsv2UmwQiSHEfFQG9Lw6KLlg8t7hJ7a8s5gPf2ovywWsrwGyrfccFC27xmJM4mRMkYvxKeNlsJWG4oWfAIu/s600/sc_window_20220613135856.png"/></a></div>
<h4>Shiny Serverのインストール</h4>
<p>
ArchLinuxへのインストールは、
公式サイトに紹介されているディストリビューションの一覧にはありません。
しかし、AURにShiny Serverのパッケージがあるので、
次のコマンドでインストールが可能です。
</p>
<br>
<br>
<pre class="commandline"><code>$ yay -S shiny-server-git
</code></pre>
<br /><br />
<p>
以上でインストール作業は、終了です。
</p>
<br>
<br>
<h3>Shiny Serverの設定</h3>
<p>
Shiny Serverの管理は、
設定ファイル
<font color="red">
<code>/etc/shiny-server/shiny-server.conf</code>
</font>
で行ないます。
早速、エディタで開いてみましょう。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo vim /etc/shiny-server/shiny-server.conf
</code></pre>
<br /><br />
<p>
内容は、だいたい以下のようになっていると思います。
</p>
<br>
<br>
<pre class="commandline"><code># Instruct Shiny Server to run applications as the user "shiny"
run_as shiny;
# Define a server that listens on port 3838
server {
<font color="red">listen 3838;</font>
# Define a location at the base URL
location / {
# Host the directory of Shiny Apps stored in this directory
<font color="red">site_dir /srv/shiny-server;</font>
# Log all Shiny output to files in this directory
<font color="red">log_dir /var/log/shiny-server;</font>
# When a user visits the base URL rather than a particular application,
# an index of the applications available in this directory will be shown.
directory_index on;
}
}
</code></pre>
<br /><br />
<h4>サーバー起動のテスト</h4>
<p>
まず、shinyアプリを置く場所は、「site_dir」で指定されている
<code>/srv/shiny-server</code>
であることを把握します。
そして、ここに自分が作ったShinyアプリをコピーしましょう。
RStudioのプロジェクトディレクトリ毎にコピーすればOKです。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo cp -r shiny_example001 /srv/shiny-server
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-BcCETp4QG5eyKyQOfnW8sD0__oA7D741JVJaqgnvjsCTXhZob9UII5zQ0JjVr_Q-fqHKz-NTufH9T8n_eRwzs2ogzPTYpZJgzHAYmbaOitbko8o9wyMeYxtTTqlUrS5_oY61HlmYVWCDlt6wxRN0dwm6VBpDUOJ_7VbH5czGMyM5jclJEpHJo_qk/s1920/sc_root_20220613141907.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-BcCETp4QG5eyKyQOfnW8sD0__oA7D741JVJaqgnvjsCTXhZob9UII5zQ0JjVr_Q-fqHKz-NTufH9T8n_eRwzs2ogzPTYpZJgzHAYmbaOitbko8o9wyMeYxtTTqlUrS5_oY61HlmYVWCDlt6wxRN0dwm6VBpDUOJ_7VbH5czGMyM5jclJEpHJo_qk/s600/sc_root_20220613141907.png"/></a></div>
<p>
アプリが配置できたら、
次のコマンドを実行してshiny-serverを起動します。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo /usr/bin/shiny-server
</code></pre>
<br /><br />
<p>
では、webブラウザを立ち上げ、
ローカルホストの3838ポートに接続しましょう。
この3838ポートは、shiny-server.confの「listen」で指定されたものになります。
</p>
<br>
<br>
<div style="text-align:center">
<font size="5" color="red">
<a href="http://localhost:3838/">http://localhost:3838/</a>
</font>
</div>
<p>
<font color="red">
</font>
</p>
<br>
<br>
<p>
webブラウザに、
自分のコピーしたアプリのディレクトリ一覧が表示されるので
そこに移動すれば、各Shinyアプリが起動します。
</p>
<br>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCIfuyKCSEkrR6qWvJmoM3FUKU7p-Ly5VXkh03ktTiswgpFbAWasVBXffxM7IinjbJU8xG5Appg5myJkpBhikrR26UHu85FJFcnyOf7FZH3ZYCUiXhFO9gswQyw6liz_1OsVwtliAv4JfFIT2VgfzyhWjnFY0yzqDJ-aTCB8HiJ6nVQtRNRko9pNwc/s1920/sc_root_20220613142317.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCIfuyKCSEkrR6qWvJmoM3FUKU7p-Ly5VXkh03ktTiswgpFbAWasVBXffxM7IinjbJU8xG5Appg5myJkpBhikrR26UHu85FJFcnyOf7FZH3ZYCUiXhFO9gswQyw6liz_1OsVwtliAv4JfFIT2VgfzyhWjnFY0yzqDJ-aTCB8HiJ6nVQtRNRko9pNwc/s600/sc_root_20220613142317.png"/></a></div>
<p>
上述のスクリーンショットでは、WebブラウザのURL欄に着目してください。
</p>
<br>
<br>
<p>
shinyアプリの起動確認が出来たら、
Shiny Serverを終了しましょう。
起動したコンソールで Ctrl+C キーで終了することが出来ます。
</p>
<br>
<br>
<h4>Shinyアプリを置く場所をホームディレクトリ配下に</h4>
<p>
ここで、各ユーザーが管理者権限を必要とせず、
アプリを簡単にデプロイ(配置)出来るよう、
Shinyアプリの配置場所を各ユーザーディレクトリ以下の
<br>
<br>
<div style="text-align:center">
<font size="5" color="red">
<code>~/ShinyApps/</code>
</font>
</div>
<br>
<br>
というディレクトリとして設定する方法を紹介します。
</p>
<br>
<br>
<p>
再度、設定ファイル
<font color="red">
<code>/etc/shiny-server/shiny-server.conf</code>
</font>
をエディタで開いてみましょう。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo vim /etc/shiny-server/shiny-server.conf
</code></pre>
<br /><br />
<p>
必要に応じて元の内容をバックアップした後、
以下のように書き換えます。
</p>
<br>
<br>
<pre class="commandline"><code><font color="red">run_as :HOME_USER: shiny;</font>
server {
listen 3838;
# グローバルなアプリのデプロイ場所
location / {
site_dir /srv/shiny-server;
log_dir /var/log/shiny-server;
directory_index on;
}
# ユーザー毎のホームディレクトでデプロイ可能
location <font color="red">/user</font> {
<font color="red">user_dirs;</font>
<font color="red">members_of shiny;</font>
directory_index on;
}
}
</code></pre>
<br /><br />
<p>
次に、shinyアプリをホームディレクトリ内にデプロイしたいユーザーを
<font color="red">shinyグループ</font>に追加します。
例えば、ユーザーnekoをshinyグループに追加するならば、
次のコマンドを実行します。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo usermod -aG shiny neko
</code></pre>
<br /><br />
<p>
続いて、shinyアプリをホームディレクトリ内にデプロイしたいユーザーの
ホームディレクトリに
<code>ShinyApps</code>ディレクトリを作成します。
そして、その中にshinyアプリをデプロイしましょう。
</p>
<br>
<br>
<pre class="commandline"><code>$ mkdir ~/ShinyApps
$ cp -r shiny_example001 ~/ShinyApps
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid9TqaNR1vnNAB3CJoixgq9STNwzhDnIRpsqUsYUodkI3WmD6EfNVtO2AtVhjbM67nrf5zqvylfnHtk8HbyWYMkwAiIaQ6K3p7cmUADn1MdSsrEoGaoD8aGtBS824zid58zAUvuAOGZypO2JNF3_YoibWr51DmfQvoYEB61jZkygg2QBVYXO1unDgA/s1920/sc_root_20220613143649.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid9TqaNR1vnNAB3CJoixgq9STNwzhDnIRpsqUsYUodkI3WmD6EfNVtO2AtVhjbM67nrf5zqvylfnHtk8HbyWYMkwAiIaQ6K3p7cmUADn1MdSsrEoGaoD8aGtBS824zid58zAUvuAOGZypO2JNF3_YoibWr51DmfQvoYEB61jZkygg2QBVYXO1unDgA/s600/sc_root_20220613143649.png"/></a></div>
<p>
以上で準備完了です。
shiny serverを起動してみましょう。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo /usr/bin/shiny-server
</code></pre>
<br /><br />
<p>
Webブラウザを起動し、
まずは、先程確認したシステムのデプロイ先にアクセスしてみましょう。
</p>
<br>
<br>
<div style="text-align:center">
<font size="5" color="red">
<a href="http://localhost:3838/">http://localhost:3838/</a>
</font>
</div>
<br>
<br>
<p>
先程同様にアクセス出来ることが確認出来たら、
いよいよ、ユーザー権限でデプロイしたアプリにアクセスします。
ユーザー名がnekoの場合、URLは次のようになります。
</p>
<br>
<br>
<div style="text-align:center">
<font size="5" color="red">
<a href="http://localhost:3838/">http://localhost:3838/user/neko/</a>
</font>
</div>
<br>
<br>
<p>
アクセスすると、アプリのディレクトリ一覧が表示されているはずです。
ディレクトリをクリックすることで
そのアプリが起動されます。
</p>
<br>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRXkNo3D7wjQs8miw0_8SNkBO6VWQCRviUhTzAchFX9B2msSd334lInr39jLtw0TPcWUy3c99jeGBGQaTl45anhS42WYzMdQTWxX3HbEHOeI2TGk8mCQnjyKMP947bcyeS8ZPbEcG5OEETlN8HO8C6N2Ko_9pUd7D31hqTTuqQYzJLdaNjrFHgzqD_/s1920/sc_root_20220613144446.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRXkNo3D7wjQs8miw0_8SNkBO6VWQCRviUhTzAchFX9B2msSd334lInr39jLtw0TPcWUy3c99jeGBGQaTl45anhS42WYzMdQTWxX3HbEHOeI2TGk8mCQnjyKMP947bcyeS8ZPbEcG5OEETlN8HO8C6N2Ko_9pUd7D31hqTTuqQYzJLdaNjrFHgzqD_/s600/sc_root_20220613144446.png"/></a></div>
<p>
先程と同様に、
上述のスクリーンショットでは、WebブラウザのURL欄に着目してください。
</p>
<br>
<br>
<p>
以上で、設定は完了です。
</p>
<br>
<br>
<h3>systemdによるサービスの起動</h3>
<p>
Shiny Serverの起動の管理は、
systemdのsystemctlコマンドにより行います。
</p>
<br>
<br>
<h4>ユニットの編集</h4>
<p>
まず、起動設定の前に
Shiny Server起動用の設定ファイル(ユニット)を編集します。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo vim /usr/lib/systemd/system/shiny-server.service
</code></pre>
<br /><br />
<p>
下記のように
<code>
<font color="red">
User=shiny
</font>
</code>
の行をコメントアウトするために
行頭に<font color="red">#(シャープ)</font>を付けます。
</p>
<br>
<br>
<pre class="commandline"><code>[Unit]
Description=Shiny Server
After=network.target
[Service]
Type=simple
<font color="red">#User=shiny</font>
ExecStart=/usr/bin/shiny-server
[Install]
WantedBy=multi-user.target
</code></pre>
<br /><br />
<p>
この作業は重要です。
通常、Shiny Serverは、
shinyユーザーの権限で実行されるように設定されています。
しかし、このノートで行なっているように、
一般ユーザーのディレクトリ内にアプリをデプロイする場合、
一旦、root権限で起動し、各ユーザー権限に切り替える必要が生じます。
このため、上述のように、ユニットを編集しておく必要があります。
もし、この作業をおこなわないと、
Shiny Serverは起動時にエラーが発生し起動しません。
</p>
<br>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXtGM2psfZZNvEChp7l05E0gO41wOYawDrqkMC3nZeqvVX9lVfwr0K6xbOzg236t9KK283GRnOt1ghrjuuWG5Acrqp5Gt97Dj__AE0jVoztOEtZcqnYctSx3qyD7ds_gYRwbH_PeZzxprVZzqzy9Pnu3WXzD2h_SQdjvorWESgchcJ-8fNHvYcMqwH/s1920/sc_root_20220613160846.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXtGM2psfZZNvEChp7l05E0gO41wOYawDrqkMC3nZeqvVX9lVfwr0K6xbOzg236t9KK283GRnOt1ghrjuuWG5Acrqp5Gt97Dj__AE0jVoztOEtZcqnYctSx3qyD7ds_gYRwbH_PeZzxprVZzqzy9Pnu3WXzD2h_SQdjvorWESgchcJ-8fNHvYcMqwH/s600/sc_root_20220613160846.png"/></a></div>
<p>
上記スクリーンショットがエラーの例です。
Webブラウザでは、アドレスへアクセス出来ない旨が出力され、また、
systemctl statusコマンドの出力に、'shiny' does not have permissions
というエラーメッセージが確認出来ます。
</p>
<br>
<br>
<h4>サービスの起動</h4>
<p>
systemctlコマンドを使って、
サービスの自動起動を設定します。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo systemctl start shiny-server.service
</code></pre>
<br /><br />
<p>
サービスがうまく動いているなら、
次回起動時から自動で起動するように
次のコマンドを実行します。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo systemctl enable shiny-server.service
</code></pre>
<br /><br />
<font color="red">
</font>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdrX6kCHBatiDTfg7MFzDl1d2PrHVvyShv_eGsxLxywYXDpTLs_Mg4a6kJLOurjf1ViWk2EQBfFsBhhoQFal583OVqWy_JF0P12-CXnAnXf1b4jqC8aWkiMxHjQ0agPSarKSAbV7Uzz-sp8YnuX3ypHsbZpW-IgkpnNq_S7B8OpDmxpp-JGdYFX0K_/s1920/sc_root_20220613145520.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdrX6kCHBatiDTfg7MFzDl1d2PrHVvyShv_eGsxLxywYXDpTLs_Mg4a6kJLOurjf1ViWk2EQBfFsBhhoQFal583OVqWy_JF0P12-CXnAnXf1b4jqC8aWkiMxHjQ0agPSarKSAbV7Uzz-sp8YnuX3ypHsbZpW-IgkpnNq_S7B8OpDmxpp-JGdYFX0K_/s600/sc_root_20220613145520.png"/></a></div>
<p>
ここまでの作業で、おうち内の
ローカルネットワークに繋っているパソコンから
Shinyアプリにアクセス出来るようになりました。
</p>
<br>
<br>
<h3>avahiで名前解決</h3>
<p>
次に、ShinyServerが稼動しているホストの名前をスマートに解決するため、
avahiを利用します。
手順は、下記のノートのavahi項目を参照しましょう。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='http://neko-mac.blogspot.com/2022/01/ssh.html' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://blogger.googleusercontent.com/img/a/AVvXsEg1hxSSUdGbR0t7iNBvr9jzON63xFReRT_I40ItHpGli_N-2nB4CT7wL2Mqtvl7jBF5dRdubuunfD0Fd79mOObBzwQDGnOG7wjqWdtW5z00TlB3XpqGYr99TtsxZeL1RcjLGsegikKZuFz2dvU0Kajr0x2uZQpoIB_GTE0NDKtC6CJ8gIZy4E12LciG=w1200-h630-p-k-no-nu' alt='ssh鍵でパソコンへお洒落に侵入する' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>ssh鍵でパソコンへお洒落に侵入する</p><p class='okblogcard-description'>
archlinux環境でsshを使い、リビングのソファーに寝転びながらノートパソコンで 離れた場所にあるデスクトップパソコンを操作しましょう。
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=http://neko-mac.blogspot.com/2022/01/ssh.html' alt='' width='16' height='16'>http://neko-mac.blogspot.com/</div>
</a>
</figure>
</ br></ br>
<p>
Linux側でavahiの設定をしてしまえば、
同一ローカルネットワーク内では、
Windowsパソコンからも、iPhonからも
ホスト名でアクセス出来るようになります。
</p>
<br>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieWfuSoAG94cbwDh6A9v4syQ6alL-2DJ_62-z6emEDxi-WYb6ip3HP2tQHAXropUkYxOB1PHaaSv1Pc3ZDIHfG5GyGTNBReuSgVJukaB0UDgcgHv-dpzq4lTP86CBEHoVCNnkdRR2tkTA3OfNYHeVwbJAnCFg-2LKMh7ShxPeQpYYjVXWHKzozBvC_/s1920/sc001jpg.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieWfuSoAG94cbwDh6A9v4syQ6alL-2DJ_62-z6emEDxi-WYb6ip3HP2tQHAXropUkYxOB1PHaaSv1Pc3ZDIHfG5GyGTNBReuSgVJukaB0UDgcgHv-dpzq4lTP86CBEHoVCNnkdRR2tkTA3OfNYHeVwbJAnCFg-2LKMh7ShxPeQpYYjVXWHKzozBvC_/s600/sc001jpg.jpg"/></a></div>
<h3>最後に</h3>
<h4>色々とライブラリを呼び出すShinyアプリの例</h4>
<p>
僕が最近書いているShinyアプリの一つを例として宣伝します。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/syunsuke/koala' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://opengraph.githubassets.com/c081fcb0f55b43efe7195fb4c8079c0d51110f400970779098fd44eb6e52b367/syunsuke/koala' alt='GitHub - syunsuke/koala' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - syunsuke/koala</p><p class='okblogcard-description'>
koara is KOuji price anALizing mAp.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/syunsuke/koala' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
この「koala」は、
国土交通省が公示している、
全国の不動産の価格(地価公示)を閲覧するためのShinyアプリです。
地図閲覧なので、leafletをはじめ、Tidyverse等のパッケージを読み込みます。
</p>
<br>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_6eTfGbo4SnHhA8deANpR6Fp4w8Q3GsGYk_a7xNqeqnae37JSHeQVT90YDDsJXoGqx7cvbiXPBL5HYcWMYLRA2dtAYP325FLqfWwu8SvKe5OTJpe7t758aprWot_Zsqn8mDuXQyOPH7nLgigEH1R5vRFQI-BiEmWjDOvX08seHWJUmlv4wrOQmdqQ/s1920/sc002.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_6eTfGbo4SnHhA8deANpR6Fp4w8Q3GsGYk_a7xNqeqnae37JSHeQVT90YDDsJXoGqx7cvbiXPBL5HYcWMYLRA2dtAYP325FLqfWwu8SvKe5OTJpe7t758aprWot_Zsqn8mDuXQyOPH7nLgigEH1R5vRFQI-BiEmWjDOvX08seHWJUmlv4wrOQmdqQ/s600/sc002.png"/></a></div>
<p>
実際にためしてみる場合は、
githubからクローンし、
RStudio内で必要ライブラリ等
(app.Rのlibrary()を直接参照してくださいね)を
インストールして動くことを確認してから、
shiny serverへディプロイしましょう。
</p>
<br>
<br>
<p>
次の後書きでも述べますが、
このアプリを開発しながら簡単に使えるように、
ShinyServerでホームディレクトリ以下でデプロイ出来るように
使っています。
</p>
<br>
<br>
<h4>ノート後書き</h4>
<p>
このノートでは、面倒臭がり屋の人でも実践しやすいように、
典型的なやり方を一本道で紹介しました。
例えば、Shinyパッケージのグローバルへのインストールは、
直接コマンドラインのオプションとして指定することももちろん出来ます。
また、Webブラウザでディプロイディレクトリのルートにアクセスしたときの
一覧表示も本来のセキュリティ観点からは、よろしくなさそうですが、
はじめてShinyServerのデプロイを行なうときには、
ディレクトリ構造を把握しやすいので、みえるようにしてあります。
更に、systemdでのユニット編集に関しては、
直接ファイルを書き換えると、
パッケージアップデートの際に手間が必要になるので、
systemdの上書き設定作法に従った方が良いです。
(みんな大好きArchWiki参照)
これらは、いずれ慣れてきたら、
設定ファイルで適切に設定しなおす必要があるかもしれません。
さて、そんな色々はあるのですが、
このノートをまとめようと思ったきっかけは次のものです。
</p>
<br>
<br>
<p>
shiny serverを利用する時、
デプロイ場所が、/srv/shiny-server/という
グローバルでもよいのですが(これでOKの場合、デフォルト設定でいけるので何もする必要が無く簡単)、
グローバルで起動する場合、
そのアプリが参照するライブラリパッケージが
グローバルの場所から見えるところにインストールされていなければなりません。
</p>
<br>
<br>
<p>
ここで、Rのプロジェクトは通常、
各ユーザーが利用するRStudioで行なわれ、
パッケージの管理も同様にRStudioで行なわれて、
ユーザー毎のホームディレクト以下に保存されます。
あわせて、LinuxでRを使う場合、
パッケージのインストール時にコンパイル作業があるので
結構時間が掛ります。
</p>
<br>
<br>
<p>
以上の事から、
ユーザーが開発したものを、
グローバルな場所に置きなおすと、
改めてパッケージライブラリをインストールしなおさなければならないので
面倒臭いのです。
</p>
<br>
<br>
<p>
そこで、このノートです!
まぁ、プロの方々は別として、
趣味でやっている者にとっては、
やっぱり、おうちサーバーは動いているだけで興奮です。
公式にArchLinuxの表記がなくったって、
ちゃんとArchLinuxでも動きます。
このノートを活用して、
自作Shinyアプリをローカルネットワーク内に公開し、
みんなに自慢しちゃいましょう!!
</p>
<br>
<br>
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-12210324094472723882022-05-07T11:00:00.016+09:002022-06-13T22:43:46.257+09:00UnixPornをお洒落に楽しむ<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTpZHy-Mnus6g6WFLhtOH-6MGojv9aGMMhLWWUHtUPtj7P-8wNUu1KF4he5Mu9qngZNtCkeSnbDfP4D-wcoRi2xgCkEIcJtkx-JYTNXZIPUx_mN1I0bhB0lkt1B8T75vpHR4nkNdiUFxasSxoPc9MP9p4LkxKecOtuA0qNAnnsDL1N2t8RdokBzhEp/s1920/sc_root_20220506145622.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTpZHy-Mnus6g6WFLhtOH-6MGojv9aGMMhLWWUHtUPtj7P-8wNUu1KF4he5Mu9qngZNtCkeSnbDfP4D-wcoRi2xgCkEIcJtkx-JYTNXZIPUx_mN1I0bhB0lkt1B8T75vpHR4nkNdiUFxasSxoPc9MP9p4LkxKecOtuA0qNAnnsDL1N2t8RdokBzhEp/s600/sc_root_20220506145622.png"/></a></div>
<h3>UnixPornとは?</h3>
<p>
「UnixPorn」というワードを見かけた事はありますか?
もし、初耳だという方は「UnixPorn」をgoogleで画像検索してみましょう。
</p>
<br>
<br>
<p>
大雑っぱに言えば、「UnixPorn」とは、
PC-UNIXのカスタマイズされたデスクトップスクリーンショットのことや、
そのスクリーンショットが沢山投稿されているredditの板のことを指しています。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://www.reddit.com/r/unixporn/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://styles.redditmedia.com/t5_2sx2i/styles/communityIcon_7fixeonxbxd41.png?width=256&s=1ecde8d0f7197fe3aa1b9d6eef5936f7401db607' alt='unknown title' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>r/unixporn</p><p class='okblogcard-description'>
Submit screenshots of all your *NIX desktops, themes, and nifty configurations, or submit anything else that will make ricers happy.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://www.reddit.com/r/unixporn/' alt='' width='16' height='16'>https://www.reddit.com/</div>
</a>
</figure>
<br><br>
<p>
そして、「UnixPorn」は、このちょっといかがわしげなPornという文字と、
ダークでハッカーチックなトーンのデスクトップ画像が
厨二ごころをめちゃめちゃ擽ぐってくるのです。
</p>
<br>
<p>
このノートでは、そんなUnixPornでよく使われている
お洒落なプログラム達を紹介してみます。
</p>
<br>
<br>
<h3>ウィンドウマネージャー</h3>
<p>
UnixPornは結局のところ、
様々な「 <font color="red"> 自分ちのウィンドウマネージャー自慢 </font> 」なのです。
また、UnixPornでは、「タイリング型ウィンドウマネージャー」の人気が高目です。
ウィンドウマネージャ(WindowManager、略してWM)は、X等のGUI環境で、ウィンドウ描画や配置を制御して司るプログラムです。
</p>
<br>
<br>
<h4>xmonad</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUOAtO2Te9XukNYeQnc-yiPnRYGjJhMfIyFkzkY1t0g53KytMzLEfchvrUT_7kjaYC-5VKH-BJPfg-s4XfnGJOaceutDCOtfuQkVXglPiL5jyapY7NBWXldFL0AyFyPypF5Clfgkm-79-0vjcnBUe4iZCUNqmCSxgtU8Djq7SGBeF42nXLqQPdzny8/s1920/sc_root_20220423120537.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUOAtO2Te9XukNYeQnc-yiPnRYGjJhMfIyFkzkY1t0g53KytMzLEfchvrUT_7kjaYC-5VKH-BJPfg-s4XfnGJOaceutDCOtfuQkVXglPiL5jyapY7NBWXldFL0AyFyPypF5Clfgkm-79-0vjcnBUe4iZCUNqmCSxgtU8Djq7SGBeF42nXLqQPdzny8/s600/sc_root_20220423120537.png"/></a></div>
<p>
タイリング型WMの代表の一つであるxmonad。
関数型のプログラミング言語haskellでコードを
書いて設定を行う必要があるので、「難しい」と噂のWMなのです。
つまりは、使っているだけで自慢できる
UnixPornにうってつけのWMだったりします。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://xmonad.org' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://xmonad.org/images/logo.svg' alt='home' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>XMonad</p><p class='okblogcard-description'>
A dynamically tiling X11 window manager that is written and configured in Haskell.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://xmonad.org' alt='' width='16' height='16'>https://xmonad.org</div>
</a>
</figure>
</ br></ br>
<p>
xmonadに興味のある方は、是非、「
<a href="https://ok-xmonad.blogspot.com/" target="_blank">
おしゃれな気分でxmonad
</a>
」を参考にしてみてください。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://ok-xmonad.blogspot.com/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXSUDEFnNmyHgEt2aZENfDtywSIuvQyg6jKRiF85cQis4SPxWNorPwKO9i7uX8EtEJviKwg26WmmYc58trU0u1OoSyPxbPUcrBCDqOo3GrnsnZ19EcRBcZqUI-j7WHY85dVYvz_q_ittc/s640/IMG_2997.jpg' alt='おしゃれな気分でxmonad' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>おしゃれな気分でxmonad</p><p class='okblogcard-description'>
xmonadのインストールをはじめ、カスタマイズ、
haskellの基礎、一緒に使うプログラムの紹介等のおしゃれな情報満載ノート
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://ok-xmonad.blogspot.com/' alt='' width='16' height='16'>https://ok-xmonad.blogspot.com/</div>
</a>
</figure>
</ br></ br>
<p>
この他のWMについて、
UnixPornで良く見かけるもののリンクを紹介しておきます。
GNOME、KDEをはじめとするDEも多くみられますが、
やっぱりタイリングWMの投稿が多く、
その中でも、
ちょっと前は、i3-gapsが多かった気がしますが、
最近だとbspwmが目立っているようです。
</p>
<br>
<br>
<div>
<ul style="text-align: left;">
<li> <a href="https://i3wm.org/" target="_blank">i3</a> </li>
<li> <a href="https://github.com/Airblader/i3" target="_blank">i3-gaps</a> </li>
<li> <a href="https://github.com/baskerville/bspwm" target="_blank">bspwm</a> </li>
<li> <a href="http://dwm.suckless.org/" target="_blank">dwm</a> </li>
<li> <a href="https://awesomewm.org/" target="_blank">awesome</a> </li>
</ul>
</div>
<br>
<p>
さて、タイリングWMには、別途ステータスバーを付ける必要があるものがあり、
xmonadにも、ステータスバーがありません。
そこで、Unix Pornで一般的に良く使われているのが、polybarです。
</p>
<br>
<br>
<h4>polybar</h4>
<p>
polybar自身の公式ページは次のとおり。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/polybar/polybar' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://opengraph.githubassets.com/df4ab9875409e6a5d4d69e9a1a753cd2f99487ba0b64bcbd34a7c8c67c81c403/polybar/polybar' alt='GitHub - polybar/polybar: A fast and easy-to-use status bar' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - polybar/polybar</p><p class='okblogcard-description'>
A fast and easy-to-use status bar.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/polybar/polybar' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
polybarとxmonadの連携について興味があれば「
<a href="https://ok-xmonad.blogspot.com/2021/02/polybarxmonad.html" target="_blank">polybarとxmonadをおしゃれに連携させる</a>
」を参考にしてみて下さい。
</p>
<br>
<figure class='okblogcard'>
<a href='https://ok-xmonad.blogspot.com/2021/02/polybarxmonad.html' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieANMamTZ2G_fZgFEzwicXjaBPNXgtRoS_DlvX54edb3VvwApckZbQbTqv763DRLVJZWhwO8qn9_VslEIvulBPhF24cwtQp_YyGSx7Ti7TXGsBdYf_1HpIDwf53wW7xUuFqMAWWVn0cOI/w1200-h630-p-k-no-nu/DSC01980.JPG' alt='polybarとxmonadをおしゃれに連携させる' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>polybarとxmonadをおしゃれに連携させる</p><p class='okblogcard-description'>
polybarの紹介、及び、xmonadとpolybarを連携させる方法
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://ok-xmonad.blogspot.com/2021/02/polybarxmonad.html' alt='' width='16' height='16'>https://ok-xmonad.blogspot.com/</div>
</a>
</figure>
</ br></ br>
<p>
そして、その続きとして、
お洒落にカスタマイズされたpolybarテーマの使い方の紹介を「
<a href="https://ok-xmonad.blogspot.com/2021/02/xmonadpolybar.html" target="_blank">xmonadでもpolybarをおしゃれに使いこなす</a>
」で行っています。
</p>
<br>
<figure class='okblogcard'>
<a href='https://ok-xmonad.blogspot.com/2021/02/xmonadpolybar.html' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUlYJ8KEnwxcTNZmLDSsEWycnUfuksz7IpRsa2O3LzZ9gnGSHDasGiQ-P8Y6sAMp6R1W55VTKjxiklUV753nbsl_SXnEbopVA2CxHpBzo-Tkf4PxYfClHQfybmxLQJP0dYr-WOedaZn6Q/w1200-h630-p-k-no-nu/DSC01983.JPG' alt='xmonadでもpolybarをおしゃれに使いこなす' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>xmonadでもpolybarをおしゃれに使いこなす</p><p class='okblogcard-description'>
xmonadでおしゃれなpolybarのテーマを使う方法
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://ok-xmonad.blogspot.com/2021/02/xmonadpolybar.html' alt='' width='16' height='16'>https://ok-xmonad.blogspot.com/</div>
</a>
</figure>
</ br></ br>
<p>
更に、xmonadの新しいバージョン(0.17系統)に挑戦している方は、
新しい方法でpolybarと連携する方法について「
<a href="https://ok-xmonad.blogspot.com/2022/02/xmonad-017-polybar.html" target="_blank">新しいxmonad 0.17 で、お洒落にpolybarする</a>
」で紹介しているので参考にしてみてください。
</p>
<br>
<figure class='okblogcard'>
<a href='https://ok-xmonad.blogspot.com/2022/02/xmonad-017-polybar.html' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://blogger.googleusercontent.com/img/a/AVvXsEgHhNk62W_M3qcKQyZsyQpuOqPGvQyWRprkHnQTHwyBcpNAKfDbqWhpPr9QdFwsHfUS8s79i_3r_X04J2J4zILrSwNbs8-y85o-7pn3Aul47FhcUPEifL9u80eYwXVzTJ8taOGVwwIyxErtXYU40F2T09bVENgHARm-iWe0SWg2hTQBRsk3SMwASgZ2=w1200-h630-p-k-no-nu' alt='新しいxmonad 0.17 で、お洒落にpolybarする' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>新しいxmonad 0.17 で、お洒落にpolybarする</p><p class='okblogcard-description'>
xmonadの新しいバージョン0.17でpolybarを使う方法
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://ok-xmonad.blogspot.com/2022/02/xmonad-017-polybar.html' alt='' width='16' height='16'>https://ok-xmonad.blogspot.com/</div>
</a>
</figure>
</ br></ br>
<p>
他ステータスバーの選択肢としてxmobarを使う場合は「
<a href="https://ok-xmonad.blogspot.com/2020/09/xmobar.html" target="_blank"> xmobarをおしゃれに設置する </a>
」も参考にしてみて下さい。
</p>
<br>
<figure class='okblogcard'>
<a href='https://ok-xmonad.blogspot.com/2020/09/xmobar.html' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpHFgvkwzz6oBoLOQjz6G0ZlSq7Ht5or8ZhkK-Qxv3b-B2fFkY_27-IF5Rdito7EyWSNLKiZ_qURuK0HwBB7i1I1BvjX_QGDv84gDu9xIcZ6KinP0x9ixPi3gzOImhCD90ThFIZI2g4-w/w1200-h630-p-k-no-nu/blogtop.jpg' alt='xmobarをおしゃれに設置する' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>xmobarをおしゃれに設置する</p><p class='okblogcard-description'>
xmobarの使い方、設定の仕方、フォントをアイコンの代わりに使う方法
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://ok-xmonad.blogspot.com/2020/09/xmobar.html' alt='' width='16' height='16'>https://ok-xmonad.blogspot.com/</div>
</a>
</figure>
</ br></ br>
<h3>ターミナルエミュレーター</h3>
<p>
UnixPornでは、GUIアプリではなくて、
<font color="red">
ターミナル上で動くプログラムを見せる
</font>傾向にあります。
そこで、それらコンソールプログラムの出力させることになる「ターミナルエミュレータ」選びは重要になります。
</p>
<br>
<br>
<h4>kitty</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtvZ9EK-d0rY7N57nNpBlE1VYrdHLiycA1trXsGEM5ydDxDC50fmhuZAsh0h0_XKJkost0FqQxcvC8IKyYUe1UzmPgU7Z8zMGvvhAfPexw_RKWALjr6EgjJ6i-0gzI4d7YAmbxXt_Lci_7avDgKow2KfqO-yx5ozvRfRRhQV5-SuS0YjZaX4-2XHvt/s841/sc_window_20220421190358.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="658" data-original-width="841" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtvZ9EK-d0rY7N57nNpBlE1VYrdHLiycA1trXsGEM5ydDxDC50fmhuZAsh0h0_XKJkost0FqQxcvC8IKyYUe1UzmPgU7Z8zMGvvhAfPexw_RKWALjr6EgjJ6i-0gzI4d7YAmbxXt_Lci_7avDgKow2KfqO-yx5ozvRfRRhQV5-SuS0YjZaX4-2XHvt/s600/sc_window_20220421190358.png"/></a></div>
<p>
ここで紹介する kitty は、UnixPornのでよく見るターミナルエミュレーターの定番の一つです。
豊富な色表示と透過機能があり、
特にコンソール上に単独で画像表示も出来、リガチャフォントが利用出来る点は、
見た目を華やかに出来ます。
</p>
<br>
<br>
<p>
公式ページは以下の通り。
kittyは見た目以外に、実際に使う上での便利な機能が豊富な素敵なターミナルエミュレーターです。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://sw.kovidgoyal.net/kitty/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://sw.kovidgoyal.net/kitty/_static/kitty.svg' alt='kitty' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>kitty</p><p class='okblogcard-description'>
The fast, feature-rich, GPU based terminal emulator Fast Offloads rendering to the GPU for lower system load, Uses threaded rendering for absolutely minimal latency, Performance tradeoffs can be tu...
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://sw.kovidgoyal.net/kitty/' alt='' width='16' height='16'>https://sw.kovidgoyal.net/</div>
</a>
</figure>
</ br></ br>
<p>
また、kittyの紹介ページである「
<a href="https://ok-xmonad.blogspot.com/2021/02/kittyxmonad.html" target="_blank">
おしゃれなkittyでxmonad
</a>
」も参考にしてみてください。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://ok-xmonad.blogspot.com/2021/02/kittyxmonad.html' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2xbM8FoxmyiQUJp05TW7Y9c0l2j2ytBBhVrlht5c041FpEE4zj0vkzGiW5fW4qNaoiWrjZRpo00PAZppqSXYcpangYlFjKWqVOqBfJimYaIFvY5TDSUgUMVE5D1ojW6jlUWrUGz596S8/w1200-h630-p-k-no-nu/DSC01967.JPG' alt='おしゃれなkittyでxmonad' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>おしゃれなkittyでxmonad</p><p class='okblogcard-description'>
ターミナルエミュレータkittyの紹介。何処がモダンフィーチャーでどんな魅力があるのかを説明
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://ok-xmonad.blogspot.com/2021/02/kittyxmonad.html' alt='' width='16' height='16'>https://ok-xmonad.blogspot.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S kitty
</code></pre>
<br><br>
<h4>pywal</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVC8H2U2NVJPcI9QAw1CJPYIXs1RiUOFPzTHRL1z8Ra6lzoHQIql3zdauyWFOOlh05pm6ZCbUQ8ZPiDyDA4mbmL5g7LH7VTkCyL1d8MN-bcVek_OUV9UBuAO4dFbNJq3ncUN8lfRrsFBtBbo7PQEZUvZKAyFpjqEJUcXWTrINoJXYqCH3gUNBuaQhO/s1920/sc_root_20220506142502.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVC8H2U2NVJPcI9QAw1CJPYIXs1RiUOFPzTHRL1z8Ra6lzoHQIql3zdauyWFOOlh05pm6ZCbUQ8ZPiDyDA4mbmL5g7LH7VTkCyL1d8MN-bcVek_OUV9UBuAO4dFbNJq3ncUN8lfRrsFBtBbo7PQEZUvZKAyFpjqEJUcXWTrINoJXYqCH3gUNBuaQhO/s600/sc_root_20220506142502.png"/></a></div>
<p>
これは、ターミナルエミュレータではなく、
ターミナルのカラースキームを壁紙と同系統に設定してくれるプログラムです。
実際の見易さは横においておいて、
Unix Pornでは、デスクトップの統一感を出すために、
良く利用されています。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/dylanaraps/pywal' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://camo.githubusercontent.com/9b7a3c3b4f5830992182dc1f11b9899ec31e7e190b4adc25ad86efa558685026/68747470733a2f2f692e696d6775722e636f6d2f3557674d4143652e676966' alt='GitHub - dylanaraps/pywal' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - dylanaraps/pywal</p><p class='okblogcard-description'>
Generate and change color-schemes on the fly.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/dylanaraps/pywal' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S python-pywal
</code></pre>
<br><br>
<h4>powerlevel10k</h4>
<p>
シェルの顔はやはりプロンプト。
シェルプロンプトは普段使いする場合、
スマートな方が好みという方も多いと思います。
しかし、当然、ド派手なプロンプトの方がunixpron映えします。
</p>
<br>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIIx6jiOplw9NPGuzePDsEA1d1Y379_DfgUp0Q-8SS8kAY2MjrHI2za7uuimzgStclT4k-_ccAXfcvzioTdDE8-KeLYKUoGL2pgm1B2GAlFSspfZecFdN6xXP7CZRK0fR2dqdLVzASRBreWCq4d7FhIuC096PzTS5P3MMLxjYGMmp6l8zP4qT5f8kP/s1035/sc_window_20220425183520.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="554" data-original-width="1035" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIIx6jiOplw9NPGuzePDsEA1d1Y379_DfgUp0Q-8SS8kAY2MjrHI2za7uuimzgStclT4k-_ccAXfcvzioTdDE8-KeLYKUoGL2pgm1B2GAlFSspfZecFdN6xXP7CZRK0fR2dqdLVzASRBreWCq4d7FhIuC096PzTS5P3MMLxjYGMmp6l8zP4qT5f8kP/s600/sc_window_20220425183520.png"/></a></div>
<p>
zshの定番お洒落プロンプトパッケージです。
カスタマイズ用のスクリプトを起動すし、
選択肢に従うだけで、お洒落プロンプトを完成してくれます。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/romkatv/powerlevel10k' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://opengraph.githubassets.com/c2d6c5b09476c371e9f4897aca89b8fa07baef1c9b04c82f419a3f76008d236c/romkatv/powerlevel10k' alt='GitHub - romkatv/powerlevel10k' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - romkatv/powerlevel10k</p><p class='okblogcard-description'>
A Zsh prompt theme.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/romkatv/powerlevel10k' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
公式リポジトリにも zsh-theme-powerlevel10k パッケージがあるのですが、
公式ページのREADMEによれば、AURのパッケージが勧められています。
</p>
<br>
<br>
<pre class="commandline"><code>$ yay -S zsh-theme-powerlevel10k-git
</code></pre>
<br><br>
<h3>見栄えのするRiceパーツ</h3>
<p>
UnixPornで見掛ける定番プログラムのうち、コンソールベースのものを主として幾つか紹介しましょう。
</p>
<br>
<br>
<h4>neofetch</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnL1u5obVhaR1IXaqbw13sppKVGtFt_Ln_KAOpzUs3d5CYyZnwa8SwQkolsWFd5PUsuqMl4wst-ownnnG2QtlcNo3_5nZYX4RJonOhlREvs7e-DjN604C2OYFJLcVHqQhAPAZZtHlNrU0OLue2pXbbCo4cIDif5bBE34M_iwclabVRbKRF7vxU4XEa/s911/sc_window_20220420185006.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="594" data-original-width="911" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnL1u5obVhaR1IXaqbw13sppKVGtFt_Ln_KAOpzUs3d5CYyZnwa8SwQkolsWFd5PUsuqMl4wst-ownnnG2QtlcNo3_5nZYX4RJonOhlREvs7e-DjN604C2OYFJLcVHqQhAPAZZtHlNrU0OLue2pXbbCo4cIDif5bBE34M_iwclabVRbKRF7vxU4XEa/s600/sc_window_20220420185006.png"/></a></div>
<p>
起動しているOSやそのバージョン、ディストリビューションを初めとして、
システム情報を出力してくれるプログラムです。
デフォルトでディストリビューションのロゴが表示してくれるので、
riceでは欠かせない存在です。
以下のgithubリポジトリにwikiがあります。
カスタマイズ要素が豊富なので、~/.config/neofetch/config.confをじっくり編集しましょう。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/dylanaraps/neofetch' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://camo.githubusercontent.com/82b03feab20083a17944229ea151c0fbd521cae0ecb44a8b2f3934ebce2e1e91/68747470733a2f2f692e696d6775722e636f6d2f47466d433541642e706e67' alt='' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - dylanaraps/neofetch</p><p class='okblogcard-description'>
A command-line system information tool written in bash 3.2
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/dylanaraps/neofetch' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S neofetch
</code></pre>
<br><br>
<h4>ranger</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhmil48vQpdfjN4MC5rfvi96chf2HWOKojQXHvSARwFiu92oDfCUwxewjHDjam4lCTxFUCDkjPrd5scABVFd326IdZeIN3NFyneyIpwJwCYuZ5yKc_FGCqCVJSCIMzjVa10IQ_Xd1frxqE3pNq-Ent1Rf2dr4kobZS8MVTaJMgkVTPT0COtIdgfGFY/s1411/sc_window_20220421182822.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="801" data-original-width="1411" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhmil48vQpdfjN4MC5rfvi96chf2HWOKojQXHvSARwFiu92oDfCUwxewjHDjam4lCTxFUCDkjPrd5scABVFd326IdZeIN3NFyneyIpwJwCYuZ5yKc_FGCqCVJSCIMzjVa10IQ_Xd1frxqE3pNq-Ent1Rf2dr4kobZS8MVTaJMgkVTPT0COtIdgfGFY/s600/sc_window_20220421182822.png"/></a></div>
<p>
ターミナルで動くファイラです。
ターミナル上で画像ファイルのプレビューさえも出来ます。
ファイルとそれを実行するプログラムの紐付けも細かく設定可能なのです。
以下の公式ページを参考にしてください。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://ranger.github.io/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://ranger.github.io/ranger_logo.png' alt='ranger' width='180' height='100' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>ranger</p><p class='okblogcard-description'>
ranger is a console file manager with VI key bindings.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://ranger.github.io/' alt='' width='16' height='16'>https://ranger.github.io/</div>
</a>
</figure>
</ br></ br>
<p>
また、rangerの紹介ページである「
<a href="http://malkalech.com/ranger_filer" target="_blank">
CLI で Linux ファイルマネージャ ranger を使うことのメモ
</a>
」は、
日本語で詳しく書かれているので必見です。
</p>
<br>
<br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S ranger
</code></pre>
<br><br>
<h4>cbonsai</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQJavuwRw-C5_A-eralKESxUGx3j5SqP3JiDzEoPggRESPOLkr-iPpPDG8ECTxndL2MCrMQKT8rVZ299Evjl9_CzQONTikH6ymuYul5iw20321Uf810uU2pZ9bOsJSKp9f4IvQq8rBfYwjxoI0PAgaXvLCy8LoFzWP7Xq_F7Rk8xtql0Qbt9FKBoHa/s878/sc_window_20220422185524.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="619" data-original-width="878" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQJavuwRw-C5_A-eralKESxUGx3j5SqP3JiDzEoPggRESPOLkr-iPpPDG8ECTxndL2MCrMQKT8rVZ299Evjl9_CzQONTikH6ymuYul5iw20321Uf810uU2pZ9bOsJSKp9f4IvQq8rBfYwjxoI0PAgaXvLCy8LoFzWP7Xq_F7Rk8xtql0Qbt9FKBoHa/s600/sc_window_20220422185524.png"/></a></div>
<p>
ターミナルの中で盆栽を育てます。
比較的新しいeye candyで、最近のUnixPornで良くみかけます。
公式ページは以下の通り。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://gitlab.com/jallbrit/cbonsai' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://user-content.gitlab-static.net/516ebf93882a9132c52dfbd25843c529d6f7ce95/68747470733a2f2f692e696d6775722e636f6d2f726e714a7833502e676966' alt='John Allbritten / cbonsai · GitLab' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>John Allbritten / cbonsai · GitLab</p><p class='okblogcard-description'>
grow bonsai trees in your terminal
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://gitlab.com/jallbrit/cbonsai' alt='' width='16' height='16'>https://gitlab.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでは、AURにパッケージがあるので、インストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ yay -S cbonsai
</code></pre>
<br><br>
<h4>cmatrix</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiteViyOl3PzvggbbdpVUJRHRjLOe2CnEz0vzt5uK8O8KhwL-lW1FzVxUqO-9hWCsnK63bI8ha04F_uIelf6larDw_Fs7xmiZnQzMAKTSGB4D5I1J8cgFpLHoCsOujfMgd5czIyQi0lRtpZMKXjD1NEkcK7ZPIunhnG-qpoVNQaR7jb3J8iWdyXQEbf/s878/sc_window_20220422185434.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="619" data-original-width="878" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiteViyOl3PzvggbbdpVUJRHRjLOe2CnEz0vzt5uK8O8KhwL-lW1FzVxUqO-9hWCsnK63bI8ha04F_uIelf6larDw_Fs7xmiZnQzMAKTSGB4D5I1J8cgFpLHoCsOujfMgd5czIyQi0lRtpZMKXjD1NEkcK7ZPIunhnG-qpoVNQaR7jb3J8iWdyXQEbf/s600/sc_window_20220422185434.png"/></a></div>
<p>
映画「マトリックス」のあれです。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/abishekvashok/cmatrix' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://raw.githubusercontent.com/abishekvashok/cmatrix/master/data/img/capture_orig.gif' alt='GitHub - abishekvashok/cmatrix: Terminal based "The Matrix" like implementation' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - abishekvashok/cmatrix</p><p class='okblogcard-description'>
Terminal based "The Matrix" like implementation.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/abishekvashok/cmatrix' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S cmatrix
</code></pre>
<br><br>
<p>
Archlinuxでは、派生プログラムtmatrixやncmatrixもAURにあります。
</p>
<br>
<br>
<h4>pipes.sh</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAoZ7xYuGNA4ZYyBTo2oXt8_W__aXm0BZygSlQC3O-fUYabPpCdxIKiyLX_p9X3BYa_oAfe9ZarUJ_kliHHcnA4KB1r3kp5d__PS7w7qm3AecJqWICxSsxQIu_dDjFH76m932fN240XlGGbZ_w19KDz_1H4Jy-ieXUQAvvB69aPZKR_qyZgU4WH-1e/s878/sc_window_20220422185501.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="619" data-original-width="878" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAoZ7xYuGNA4ZYyBTo2oXt8_W__aXm0BZygSlQC3O-fUYabPpCdxIKiyLX_p9X3BYa_oAfe9ZarUJ_kliHHcnA4KB1r3kp5d__PS7w7qm3AecJqWICxSsxQIu_dDjFH76m932fN240XlGGbZ_w19KDz_1H4Jy-ieXUQAvvB69aPZKR_qyZgU4WH-1e/s600/sc_window_20220422185501.png"/></a></div>
<p>
ターミナルの中にカラフルなパイプがひたすら敷かれて行くデモ。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/pipeseroni/pipes.sh' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://raw.githubusercontent.com/pipeseroni/pipes.sh/master/i/pipes.png' alt='GitHub - pipeseroni/pipes.sh: Animated pipes terminal screensaver' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - pipeseroni/pipes.sh</p><p class='okblogcard-description'>
Animated pipes terminal screensaver.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/pipeseroni/pipes.sh' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのパッケージはAURにあるので、インストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ yay -S pipes.sh
</code></pre>
<br><br>
<p>
Archlinuxでは、リネーム用のパッケージ、bash-pipesもAURにあります。
</p>
<br>
<br>
<h4>cava</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz8emK7dq-iv5SM_4zT_r5SK-sbL1PRJVGLNHbnDJuGMo6eiEv3yXXnIB9HXtpRqkQhIWYIhUyinRTfkg3t1OcQ-jxlh2YaNNphTWDr7eNA_8aSNVuxGk-AjgeHF-fhpSMEEC192Rj57pCFlKMncs7NWpCXbR-G7Jb7ZTKxB9PE8MbGoyefwp62ajt/s884/sc_window_20220422185251.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="329" data-original-width="884" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz8emK7dq-iv5SM_4zT_r5SK-sbL1PRJVGLNHbnDJuGMo6eiEv3yXXnIB9HXtpRqkQhIWYIhUyinRTfkg3t1OcQ-jxlh2YaNNphTWDr7eNA_8aSNVuxGk-AjgeHF-fhpSMEEC192Rj57pCFlKMncs7NWpCXbR-G7Jb7ZTKxB9PE8MbGoyefwp62ajt/s600/sc_window_20220422185251.png"/></a></div>
<p>
音楽にあわせて、バーが動くサウンドビジュアライザです。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/karlstav/cava' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://raw.githubusercontent.com/karlstav/cava/master/example_files/cava.gif' alt='GitHub - karlstav/cava: Console-based Audio Visualizer for Alsa' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - karlstav/cava</p><p class='okblogcard-description'>
Console-based Audio Visualizer for Alsa.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/karlstav/cava' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのパッケージはAURにあるので、インストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ yay -S cava
</code></pre>
<br><br>
<h4>figletとlolcat</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2UmTrf_I6Pe5-xv6LexODlMEEY9Yu98iNw6MNR36P8FBOiadoRmx4c6rxt2jC3w_9HdA3W8uvApZdw1BEyZRVpx5Mxd4fGCgodgUex5MQ2pBSQkqzxDCkznpsH0DxYY621zxMziQicbS31FI2c7cOraizl2jziAmIFgK4QZLkfbT-ijbSvQE2-ROJ/s927/sc_window_20220422193850.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="353" data-original-width="927" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2UmTrf_I6Pe5-xv6LexODlMEEY9Yu98iNw6MNR36P8FBOiadoRmx4c6rxt2jC3w_9HdA3W8uvApZdw1BEyZRVpx5Mxd4fGCgodgUex5MQ2pBSQkqzxDCkznpsH0DxYY621zxMziQicbS31FI2c7cOraizl2jziAmIFgK4QZLkfbT-ijbSvQE2-ROJ/s600/sc_window_20220422193850.png"/></a></div>
<p>
figletは、ターミナルの中に、キャラクタで作った文字を書くプログラム。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='http://www.figlet.org/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
no image
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>Figlet</p><p class='okblogcard-description'>
FIGlet is a program for making large letters out of ordinary text
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=http://www.figlet.org/' alt='' width='16' height='16'>http://www.figlet.org/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S figlet
</code></pre>
<br><br>
<p>
更に、lolcatは、ターミナルの中キャラクタの色を虹色変換してくれます。
</p>
<br><br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC3fOpXwN-awAA_Q0lsOoO6KKgDktsv9fV6CjJcq-Fw64QfKqpPGNSzcjQWN1-oaC7EcnElEdLsTBTlO7H5qlWxj_mGzxu5NeEXTLGRI5AGjcELVq_TfYMorZFEKjLoFJimBR6FTFLfmAPH0IA5gYps4EgV-xcYd6W-gs9OGx8TbYYCqK6qnowRzMt/s927/sc_window_20220422193930.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="353" data-original-width="927" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC3fOpXwN-awAA_Q0lsOoO6KKgDktsv9fV6CjJcq-Fw64QfKqpPGNSzcjQWN1-oaC7EcnElEdLsTBTlO7H5qlWxj_mGzxu5NeEXTLGRI5AGjcELVq_TfYMorZFEKjLoFJimBR6FTFLfmAPH0IA5gYps4EgV-xcYd6W-gs9OGx8TbYYCqK6qnowRzMt/s600/sc_window_20220422193930.png"/></a></div>
<figure class='okblogcard'>
<a href='https://github.com/busyloop/lolcat' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://raw.githubusercontent.com/busyloop/lolcat/master/ass/nom.jpg' alt='GitHub - busyloop/lolcat: Rainbows and unicorns!' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - busyloop/lolcat</p><p class='okblogcard-description'>
Rainbows and unicorns!
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/busyloop/lolcat' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S lolcat
</code></pre>
<br><br>
<h4>pingu</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuAl7m6GsXWmGk0EfniEJFPKNGtExQeJ98eqcbbkMeDNHEk2JmjxhvMBQLsgMlgaLzQb_Fiz_iE7FSc2trBmQIau_EvENnYtZyo2brhrtwYoi9Uqgmz5PhrY4Tc9Owr1mqEXuM71CVOqPZ6YndDtxVgUnIa0gpMduWVMeZOSrx2Civu2liTskDPYnH/s1079/sc_window_20220613221357.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="657" data-original-width="1079" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuAl7m6GsXWmGk0EfniEJFPKNGtExQeJ98eqcbbkMeDNHEk2JmjxhvMBQLsgMlgaLzQb_Fiz_iE7FSc2trBmQIau_EvENnYtZyo2brhrtwYoi9Uqgmz5PhrY4Tc9Owr1mqEXuM71CVOqPZ6YndDtxVgUnIa0gpMduWVMeZOSrx2Civu2liTskDPYnH/s600/sc_window_20220613221357.png"/></a></div>
<p>
ペンギン(pinguin)が出てくるpingコマンドの代替コマンド
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/sheepla/pingu' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://repository-images.githubusercontent.com/502349596/db5717c9-9c92-4836-bce8-0461d5fecb5d' alt='GitHub - sheepla/pingu' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - sheepla/pingu</p><p class='okblogcard-description'>
🐧ping command but with pingu.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/sheepla/pingu' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
インストールは、githubページの指示に従い、レポジトリをクローンして、go installするだけ。簡単です。
</p>
<br>
<br>
<h3>システムモニタ TOP 系統</h3>
<p>
もともとlinuxには「top」と呼ばれるシステムモニタコマンドがありますが、
このtopには幾つもの派生プログラムがあります。
ここでは、UnixPornでよく見かける次のプログラムを紹介します。
いずれも、何を表示するか等のカスタマイズは豊富です。
</p>
<br>
<br>
<h4>htop</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Ae2TgG988jnadwrf6bfJGU_NtFQf0emBxCRO1_YAS1lk6lkR_13jPps-ZJdEtoQmlcPNkHlR1RnEtE_reZH8LLW7k2oVgManBom4nLHqLO9fH7KweUKuk4KBHqf14Wh1gVfCW_QX5-Vx5OWvp9EyHONcNuyOULr-2QT7u5R_Umc9XKFyIPi9ngMI/s932/sc_window_20220422185042.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="666" data-original-width="932" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4Ae2TgG988jnadwrf6bfJGU_NtFQf0emBxCRO1_YAS1lk6lkR_13jPps-ZJdEtoQmlcPNkHlR1RnEtE_reZH8LLW7k2oVgManBom4nLHqLO9fH7KweUKuk4KBHqf14Wh1gVfCW_QX5-Vx5OWvp9EyHONcNuyOULr-2QT7u5R_Umc9XKFyIPi9ngMI/s600/sc_window_20220422185042.png"/></a></div>
<p>
top系プログラムのUnixPorn定番はhtop。
topよりもカラフルで、情報表現の方法も多彩になっています。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://htop.dev/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://htop.dev/images/htop-2.0.png' alt='unknown title' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>HTOP</p><p class='okblogcard-description'>
This is htop, a cross-platform interactive process viewer. It is a text-mode application (for console or X terminals) and requires ncurses.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://htop.dev/' alt='' width='16' height='16'>https://htop.dev/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S htop
</code></pre>
<br><br>
<h4>gotop</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGbW9lLbAQ5hJhPV9bZTMhsbbgpNGcsILVIy17Gsf52iOkdTXZE06-7TWIgPTa9n67LtXJVHf7Bn5oxWgElaVkuCobfOLjbkyU3LxUaQ4eZIkN1YLuMzQdOCeGhOccPbFqZoP-T-4XNXX_YP9BIhleMJR5RF5PkAeArveRHLsk4-IatmVRqDBLlEiH/s1266/sc_window_20220422185001.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="920" data-original-width="1266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGbW9lLbAQ5hJhPV9bZTMhsbbgpNGcsILVIy17Gsf52iOkdTXZE06-7TWIgPTa9n67LtXJVHf7Bn5oxWgElaVkuCobfOLjbkyU3LxUaQ4eZIkN1YLuMzQdOCeGhOccPbFqZoP-T-4XNXX_YP9BIhleMJR5RF5PkAeArveRHLsk4-IatmVRqDBLlEiH/s600/sc_window_20220422185001.png"/></a></div>
<p>
比較的新しいtop系プログラム。
go言語で書かれたお洒落なtopで、
グラフの表示が格好いいです。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/xxxserxxx/gotop' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://raw.githubusercontent.com/xxxserxxx/gotop/master/assets/logo/logo.png' alt='GitHub - xxxserxxx/gotop: A terminal based graphical activity monitor inspired by gtop and vtop' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - xxxserxxx/gotop</p><p class='okblogcard-description'>
A terminal based graphical activity monitor inspired by gtop and vtop
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/xxxserxxx/gotop' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのパッケージはAURにあるので、インストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ yay -S gotop
</code></pre>
<br><br>
<h4>bashtop</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9hUoPMFM_ZLHI_uv-K6CGyWY_-9yOiTI88_5fqfTjvrhmBIT9JBu5KAf-ko7-ou7jTGvKAGxhPChTfE8RNmqeLbnbnjMv8u1Hbeyn5-y9Oq86BP62mhwesYrgNJAticnTvsNKf9gsYepNLwDrz6XTxVnorDWGfUd4a_xjMnY_kq0i9yzEVEfM0STb/s1246/sc_window_20220423101940.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="699" data-original-width="1246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9hUoPMFM_ZLHI_uv-K6CGyWY_-9yOiTI88_5fqfTjvrhmBIT9JBu5KAf-ko7-ou7jTGvKAGxhPChTfE8RNmqeLbnbnjMv8u1Hbeyn5-y9Oq86BP62mhwesYrgNJAticnTvsNKf9gsYepNLwDrz6XTxVnorDWGfUd4a_xjMnY_kq0i9yzEVEfM0STb/s600/sc_window_20220423101940.png"/></a></div>
<p>
最近のUnixPornで良く見掛ける、
一番派手でお洒落なtopです。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/aristocratos/bashtop' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://raw.githubusercontent.com/aristocratos/bashtop/master/Imgs/main.png' alt='GitHub - aristocratos/bashtop: Linux/OSX/FreeBSD resource monitor' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - aristocratos/bashtop</p><p class='okblogcard-description'>
Linux/OSX/FreeBSD resource monitor.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/aristocratos/bashtop' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
また、C++で書きなおされた軽快に動く派生のbtopもあります。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S bashtop
</code></pre>
<br><br>
<h3>時計</h3>
<p>
コンソールに時刻を表示したり、
カウントダウンタイマーを表示したりするプログラムです。
</p>
<br>
<br>
<h4>tty-clock</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUrzxJot0iefhpfW8gYRcQDZK0R1JG1nWtz9G9xLezfh89U902MAGIZKlv767zr3TRhPyy8vsJRDqPQR9yGS9fInVW_MNucdTUWnIQoXjZTKN50LLYfKESZBeEc_eEJoK3YAdXT2CSjVmMBRXXmBT2l-4owwuX7FORwsLBzCqL9oy63DPUpNJXDApU/s980/sc_window_20220506130025.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="544" data-original-width="980" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUrzxJot0iefhpfW8gYRcQDZK0R1JG1nWtz9G9xLezfh89U902MAGIZKlv767zr3TRhPyy8vsJRDqPQR9yGS9fInVW_MNucdTUWnIQoXjZTKN50LLYfKESZBeEc_eEJoK3YAdXT2CSjVmMBRXXmBT2l-4owwuX7FORwsLBzCqL9oy63DPUpNJXDApU/s600/sc_window_20220506130025.png"/></a></div>
<p>
コンソールに時刻を表示します。
</p>
<br>
<br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S tty-clock
</code></pre>
<br><br>
<h4>termdown</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxH7ghBhFAuIkcPkfV7rIEgCVrLGE8wnAzlH9JOWKkRt--7o4_ZejNdieHbirw_sMB3Z5uMzoEXWFOAhxFiD5oe3WQJLK9cqXMWAeiz6CRA25KzrKxze3HS4dwo8t3RFj92M308gv0r5WsyD9vUYwMBFmp5nURKzpkgg-aQUJBtgKqG9RXanFwbfxk/s980/sc_window_20220506130652.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="544" data-original-width="980" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxH7ghBhFAuIkcPkfV7rIEgCVrLGE8wnAzlH9JOWKkRt--7o4_ZejNdieHbirw_sMB3Z5uMzoEXWFOAhxFiD5oe3WQJLK9cqXMWAeiz6CRA25KzrKxze3HS4dwo8t3RFj92M308gv0r5WsyD9vUYwMBFmp5nURKzpkgg-aQUJBtgKqG9RXanFwbfxk/s600/sc_window_20220506130652.png"/></a></div>
<p>
ターミナルにカウントダウンタイマーを表示します。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/trehn/termdown' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://raw.githubusercontent.com/trehn/termdown/master/termdown.gif' alt='GitHub - trehn/termdown: Countdown timer and stopwatch in your terminal' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - trehn/termdown</p><p class='okblogcard-description'>
Countdown timer and stopwatch in your terminal.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/trehn/termdown' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ sudo pacman -S termdown
</code></pre>
<br><br>
<h4>peaclock</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikGM2TFVAxRdcgQe1RZfpJcB08jUVhIxV4jZaFjSLzJaFm-4mMBpGeYLJV_ABL_oSXWG06zu_K7RBj2oN-Ve4AzcW4NEDyImbY8iPunfQtC6OBTUk8BZOyj-2Ni_rb21Hhsy_bHXg8DtfKjTeHqidIYg2z0nymrDlwwJXqoVjfJ5P-kmIM7kTO-7mM/s980/sc_window_20220506134201.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="544" data-original-width="980" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikGM2TFVAxRdcgQe1RZfpJcB08jUVhIxV4jZaFjSLzJaFm-4mMBpGeYLJV_ABL_oSXWG06zu_K7RBj2oN-Ve4AzcW4NEDyImbY8iPunfQtC6OBTUk8BZOyj-2Ni_rb21Hhsy_bHXg8DtfKjTeHqidIYg2z0nymrDlwwJXqoVjfJ5P-kmIM7kTO-7mM/s600/sc_window_20220506134201.png"/></a></div>
<p>
時刻、タイマー、ストップウォッチを
数値表示だけでなく、バイナリ表示してくれる
お洒落な時計プログラム
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://github.com/octobanana/peaclock' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://opengraph.githubassets.com/c0b82dbdf8b3c04b97ab9ba551f896695ff36daf8fd0edeb7e9f2b7d7e8b1cd9/octobanana/peaclock' alt='GitHub - octobanana/peaclock: A responsive and customizable clock, timer, and stopwatch for the terminal.' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - octobanana/peaclock</p><p class='okblogcard-description'>
A responsive and customizable clock, timer, and stopwatch for the terminal.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/octobanana/peaclock' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのインストールはパッケージがAURにあるので、
yayを使って次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ yay -S peaclock
</code></pre>
<br><br>
<h3>描画の効果を司るコンポジタプログラム</h3>
<p>
X11でのコンポジタです。
ウィンドを透過したり、ウィンドの動作にアニメーション効果を付けたりします。
X11のコンポジタは、今まで沢山のforkが重ねられてきており、
過去にはxcompmgrやcomptonが使われていましたが
ここ最近ではpicomが定番になっています。
そして、更にpicom自体にも色々なforkがあります。
</p>
<br>
<br>
<h4>jonaburg/picom</h4>
<p>
ここでは、picomの中でも一番機能がてんこもりで、
ウィンドウ透過と影つけは当たり前で、
更に、ウィンドウの角を丸めたり、
ウィンド動作のアニメーション、
透過時のぼかし等の効果を利用出来る
jonaburg/picomをお勧めします。
</p>
<br>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN_mQ_dBQ3f2hXQ0XuxuRF6OChuxliT7Apus7csfYxu-ZfFnZskJFx80_d3Ocz4Ep82crVZJhPP3YGiK4Nqhzdu8hMWuEQisEEImWmz5-HdeJCKpGKhrS3XoEFVXmoQ5JlEzEd5rsGTqm2S3-6_QJC9YxWfuNTN0M1s8Gp1Qldj3EeFZ8g_3LQk_JD/s1391/sc_window_20220423105159.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="886" data-original-width="1391" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN_mQ_dBQ3f2hXQ0XuxuRF6OChuxliT7Apus7csfYxu-ZfFnZskJFx80_d3Ocz4Ep82crVZJhPP3YGiK4Nqhzdu8hMWuEQisEEImWmz5-HdeJCKpGKhrS3XoEFVXmoQ5JlEzEd5rsGTqm2S3-6_QJC9YxWfuNTN0M1s8Gp1Qldj3EeFZ8g_3LQk_JD/s600/sc_window_20220423105159.png"/></a></div>
<figure class='okblogcard'>
<a href='https://github.com/jonaburg/picom' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://opengraph.githubassets.com/9de5e2420151b8340b30754f547babbd90352da122eb258b0ed2c1eb67423177/jonaburg/picom' alt='GitHub - jonaburg/picom: A lightweight compositor for X11 (previously a compton fork)' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - jonaburg/picom</p><p class='okblogcard-description'>
A lightweight compositor for X11 (previously a compton fork)
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/jonaburg/picom' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ArchLinuxでのパッケージはAURにあるので、インストールは次の通り。
</p>
<br>
<br>
<pre class="commandline"><code>$ yay -S picom-jonaburg-git
</code></pre>
<br><br>
<h3>壁紙</h3>
<p>
デスクトップの雰囲気を決める大きな要素になるのは、やっぱり壁紙です。
unix pornのコメントでも
「その壁紙どこで手に入れたの?」的なやりとりも良く見られ、
配布元を教えてくれてたりするので、
それらポストのメッセージも参考にしてみましょう。
</p>
<br>
<br>
<h4>r/wallpaper</h4>
<p>
コメントを参考にするのも良いですが、
その時によくredditの壁紙板が紹介されるので、
それ自体もおさえておきましょう。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='https://www.reddit.com/r/wallpaper/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://a.thumbs.redditmedia.com/APweUko3qLJ0prsQI1giluMwBdcVnokw9_yZcby4SB8.png' alt='unknown title' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>r/wallpaper</p><p class='okblogcard-description'>
Wallpaper - computer desktops / background images
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://www.reddit.com/r/wallpaper/' alt='' width='16' height='16'>https://www.reddit.com/</div>
</a>
</figure>
</ br></ br>
<h4>自作壁紙</h4>
<p>
しかし、うちでは自分で撮った写真を壁紙にしています。
壁紙を作る時の定番作業をスクリプト化するノートがあるので、
興味のある人は参考にしてみてください。
</p>
<br>
<br>
<figure class='okblogcard'>
<a href='http://neko-mac.blogspot.com/2022/04/archlinux.html' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcEvwveywiVSU0_6HV8XUP0UWT1OgaH-iOn-WWCTisjL_eo59TBs7JS4VWD78QidOtR-E1wEipT4iQC7vIflZimRqkmU7ExGscD6_y4UiP9kOP1HegaIMzou0dcB3nB_SBVAZo7JWG2lgEIUmmfvNHWTxF7kHlmK0g6ZRZF-ZBZAAH75Y-_cJ2qdA/w1200-h630-p-k-no-nu/sample_taiyou.png' alt='ArchLinuxでお洒落に壁紙づくりを楽しむ' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>ArchLinuxでお洒落に壁紙づくりを楽しむ</p><p class='okblogcard-description'>
僕は、iPhoneやデジカメでよく、風景やガチャガチャのおまけの 写真なんかを撮ったりしているのですが、 綺麗に撮れた時はパソコンの壁紙に設定したくなります。 そんな時、特に何のこだわりもなければ、 壁紙設定プログラムの nitrogen を使えば 簡単に壁紙として設...
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=http://neko-mac.blogspot.com/2022/04/archlinux.html' alt='' width='16' height='16'>http://neko-mac.blogspot.com/</div>
</a>
</figure>
</ br></ br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjv_NxqjzWn3OC1WKhe1ciREoLghZXaPmwEm-FlVBO4wlNxWm_ZDu2X-97qSKVnzWBS3cBJrowbzMs1_zDvg8uaE3LiMJHWMEmVErm_5sr0SMtm-teolk-r_M6iR233ucS55-2yHLFHHjbQsAv6OPby2mX_Mlmqg6Zpht4WI1Nx5PA_IGqZNPHX5Nl/s1920/wallpaper_1920x1080_IMG_1542.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjv_NxqjzWn3OC1WKhe1ciREoLghZXaPmwEm-FlVBO4wlNxWm_ZDu2X-97qSKVnzWBS3cBJrowbzMs1_zDvg8uaE3LiMJHWMEmVErm_5sr0SMtm-teolk-r_M6iR233ucS55-2yHLFHHjbQsAv6OPby2mX_Mlmqg6Zpht4WI1Nx5PA_IGqZNPHX5Nl/s600/wallpaper_1920x1080_IMG_1542.jpg"/></a></div>
<h3>Pornとrice</h3>
<p>
ちょこっと蘊蓄(うんちく)を紹介。
</p>
<br>
<br>
<h4>Porn(ポルノ)</h4>
<p>
ノートの始めで「unixpornをgoogleで画像検索」してもらった時に、
中には、「思ってたのと、ちがーーーうっ」って人もいたことでしょう。
</p>
<br>
<br>
<p>
Pornという単語は、まさに間違いなく、あの「ポルノ」です。
</p>
<br>
<br>
<p>
しかし、ここでの「ポルノ」の意味はあなたの思っているその「ポルノ」の意味とは異ります。
英語の「ポルノ」という単語には
日本人の良く知る「性的な」感覚を掻きたてるものという意味だけでなく、
「性的なもの以外」についても感覚を掻きたてるものに普通に使われるのです。
ですから、「うぉー!まじかっ?!!これすげーー!!!」と、
感じさせるようなものには、
エロもエロ以外も全て、「ポルノ」という単語で表現され、
そのジャンルによって「○○ポルノ」という風に使われているようです。
</p>
<br>
<br>
<p>
ですから、単純に
</p>
<br>
<br>
<div style="text-align:center;">
<font color="red" size="5">
「これすげーー!!」
<br>
<br>
イコール
<br>
<br>
「ポルノ」
</font>
</div>
<br>
<br>
<p>
なのです。
</p>
<br>
<br>
<p>
まぁ、実際のところ、英語でも誤解を招きそうな場面では、
「SFW Porn」と表記されているようです。
SFWは Safe For Work の略で、「職場で閲覧しても安全」という意味で使われています。
つまり、「職場で閲覧しても安全な方の意味のポルノ」ってことです。
</p>
<br>
<br>
<h4>riceって?</h4>
<p>
さて、Unix Pornは、「reddit」とよばれる英語版の2ちゃんねる様なウェブサービスの中にあるコミュニティーのひとつであり、
その投稿内容は、ほとんど英語です。
そんな英語のやりとりの中で、「rice」という単語が目立って飛び交っています。
英語のriceは、「ライス」であり、すなわち「米」です。
しかし、文脈からして明かに「米」としての意味はなく、
「デスクトップを飾り付ける」という意味っぽいのです。
</p>
<br>
<br>
<p>
普通の辞書で調べてもriceは、米ですが、良く良く調べると、
次の記事がひっかかります。
</p>
<br>
<br>
<div style="text-align:center;">
<font size="5">
<a href="https://www.reddit.com/r/unixporn/comments/45l5if/what_is_the_etymology_of_the_word_rice/">
What is the etymology of the word "rice"?
</a>
</font>
</div>
<br>
<br>
<p>
「なんで、riceって単語を使うようになってんの?」というredditでの投稿です。
実は、riceを使っている人達も何故riceって単語を使うのかの由来を知らない人が多く、
「どういうこと?」と思っている人も少なからずいたようです。
で、記事の内容を読むと、「Race Inspired Cosmetic Enhancements(R.I.C.E)」と説明され、
この頭文字ということがわかります。
で、これは、なんのことかといえば、「レースカーの見た目の改造」のことです。
記事の説明に寄れば次のようにかかれています。
</p>
<br>
<br>
<p>
「Parts put on cars to make them look fast, when they have no internal tuning, and are actually slow as hell.
(中身の改造をすることなく、車に
<font color="red">速そうに見える</font>
パーツを付けること。
そして、実際には、めっちゃ遅くなること。)」
</p>
<br>
<br>
<p>
どういうことかといえば、「rice car」をgoogleで画像検索してみてください。
イメージとしては、北関東でブイブイいってそうな昭和な族車でしょうか。
イメージですよ?イメージ。
結局、結論としては、「rice = おおげざなカスタム」な感じで使えばいいんじゃない?ってことのようです。
まぁ、もとは「意味のないおおげさな」改造ってことを揶揄している言葉なのですが、
UnixPorn板では、一応、効率的なデスクトップUIも目指したカスタマイズを楽しんでいるようです。
</p>
<br>
<br>shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-30641525329808505392022-04-03T17:08:00.124+09:002022-04-08T13:30:43.717+09:00ArchLinuxでお洒落に壁紙づくりを楽しむ
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcEvwveywiVSU0_6HV8XUP0UWT1OgaH-iOn-WWCTisjL_eo59TBs7JS4VWD78QidOtR-E1wEipT4iQC7vIflZimRqkmU7ExGscD6_y4UiP9kOP1HegaIMzou0dcB3nB_SBVAZo7JWG2lgEIUmmfvNHWTxF7kHlmK0g6ZRZF-ZBZAAH75Y-_cJ2qdA/s4032/sample_taiyou.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="3024" data-original-width="4032" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcEvwveywiVSU0_6HV8XUP0UWT1OgaH-iOn-WWCTisjL_eo59TBs7JS4VWD78QidOtR-E1wEipT4iQC7vIflZimRqkmU7ExGscD6_y4UiP9kOP1HegaIMzou0dcB3nB_SBVAZo7JWG2lgEIUmmfvNHWTxF7kHlmK0g6ZRZF-ZBZAAH75Y-_cJ2qdA/s600/sample_taiyou.png"/></a></div>
<p>
僕は、iPhoneやデジカメでよく、風景やガチャガチャのおまけの
写真なんかを撮ったりしているのですが、
綺麗に撮れた時はパソコンの壁紙に設定したくなります。
そんな時、特に何のこだわりもなければ、
壁紙設定プログラムの
<a href="https://github.com/l3ib/nitrogen/">nitrogen</a>
を使えば
簡単に壁紙として設定できます。
</p>
<br />
<p>
しかし、自分の撮った写真の縦横比とパソコンの画面の縦横比が違うと、
変な風に引き延されたり、
入って欲しい部分がはみ出して見えなくなったりすることがあります。
また、せっかくの壁紙ですから、
格好良く ArchLinux のロゴを入れたくなったりもします。
</p>
<br />
<p>
そこで、このノートでは、
「自分で撮影した写真をパソコンの壁紙にする」ということをテーマにして、
そのために必要になることやアイディアをまとめてみようと思います。
そして、最後には、それら知識を活用して、
壁紙作成シェルスクリプト「なんでもArchLinuxの壁紙にしてやるー」の作成に挑戦してみましょう。
</p>
<br />
<h3>モニタの解像度を調べる</h3>
<p>
自分のデスクトップにぴったりの壁紙を作成するためには、
自分のデスクトップのサイズを知る必要がありますが、
Xの場合、xrandrコマンドで調べることが出来ます。
もし、インストールされていないなら、archlinuxでは、
xorg-xrandrパッケージに含まれているので、
次のコマンドでインストールしましょう。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S xorg-xrandr
</code></pre>
<br /><br />
<p>
では、xrandrコマンド実行して、出力を確認しましょう。
</p>
<br />
<pre class="commandline"><code>$ xrandr
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEgQTeQueUrTYBeC2--bZ5E9OtPA901Y70sJHbYmNZtNpsCo6wJuJEKxe7HkU5RMITNxVSMNs9fVeclBhQ25uzWRi3ran5AJLVBWfVAYq39T2RgR3cFt6J-JN7gP28pkC-8eq4_jw3yCwp7eF-LNpi_t4Urwe9Dtvy8hCyx1KBD0MkCtLwe6_PwXE5/s860/sc_window_20220403202640.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="682" data-original-width="860" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEgQTeQueUrTYBeC2--bZ5E9OtPA901Y70sJHbYmNZtNpsCo6wJuJEKxe7HkU5RMITNxVSMNs9fVeclBhQ25uzWRi3ran5AJLVBWfVAYq39T2RgR3cFt6J-JN7gP28pkC-8eq4_jw3yCwp7eF-LNpi_t4Urwe9Dtvy8hCyx1KBD0MkCtLwe6_PwXE5/s600/sc_window_20220403202640.png"/></a></div>
<p>
上記の例をみると current の右側に書かれている 1920 x 1080 が解像度になります。
xrandrは、モニタ毎の出力設定をするためのプログラムで、
複数モニタの場合には、現在使っているeDP1の他、
HDMI1等の部分(例ではdisconnectedになっている)にも解像度表示がされます。
</p>
<br />
<p>
この数値を知ることで、モニタ毎の作るべき壁紙のサイズを知ることが出来ます。
</p>
<br />
<h3>定番画像ビューアー feh </h3>
<p>
画像を扱う作業をする場合、画像を確認するための画像ビューアーは必須になります。
Linuxにも画像ビューアーは沢山ありますが、
その中でもコマンドラインから簡単に呼び出せる feh は、
軽量で必要十分な機能を持っているのでお勧めです。
</p>
<br />
<br />
<div style="text-align:center">
<font size="5">
<a href="https://feh.finalrewind.org/">feh - a fast and light image viewer</a>
</font>
</div>
<br />
<br />
<p>
archlinuxの公式リポジトリにあるので、インストールしておきましょう。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S feh
</code></pre>
<br /><br />
<p>
fehは、引数に画像ファイルを与えて実行するだけです。
</p>
<br />
<pre class="commandline"><code>$ feh image.jpg
</code></pre>
<br /><br />
<p>
但し、画像ファイルのサイズが大きいと、
画像の一部しか表示されません。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIz2MXIA1nhZ5WKWOtXrtVK2sdZ6PWCqoqqJsKSAi-lfv3Ppl5-kFNZualHP0Lx6MV8oV7W1eKM19Baw1lpeJMYJjmT2TCDWCdFtFelftC74Kmag35m4FL4ygAeE8g_bsw2YtQK_eiBuz3LMxxO08S6WuF2YHVi5rWVaHT4Hr1J0m4lmqxRJLGoT6-/s1920/sc_root_20220403192531.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIz2MXIA1nhZ5WKWOtXrtVK2sdZ6PWCqoqqJsKSAi-lfv3Ppl5-kFNZualHP0Lx6MV8oV7W1eKM19Baw1lpeJMYJjmT2TCDWCdFtFelftC74Kmag35m4FL4ygAeE8g_bsw2YtQK_eiBuz3LMxxO08S6WuF2YHVi5rWVaHT4Hr1J0m4lmqxRJLGoT6-/s600/sc_root_20220403192531.png"/></a></div>
<p>
この状態では、マウスを使って画像見える位置を調節できますが、
単純に全体を見渡したいなら、「f」キーを押します。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgym-Wh_SqQhqlf2NA8r7RERl5vGjDagnwLvEPlRdM57urB5RYmspPmt4A1cqUr4sTTLq2Eko_soeMPhBYmaeKbv9qupS4SBuhprYs4rQmSt-uPFCYRBW4xqKX0PO9MWHR2cfxcPswSk9t5bJOkumL5rWTnWOVPwKrcsoW6da2l0fW_6tQ1DxFZyVmN/s1920/sc_root_20220403192543.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgym-Wh_SqQhqlf2NA8r7RERl5vGjDagnwLvEPlRdM57urB5RYmspPmt4A1cqUr4sTTLq2Eko_soeMPhBYmaeKbv9qupS4SBuhprYs4rQmSt-uPFCYRBW4xqKX0PO9MWHR2cfxcPswSk9t5bJOkumL5rWTnWOVPwKrcsoW6da2l0fW_6tQ1DxFZyVmN/s600/sc_root_20220403192543.png"/></a></div>
<p>
もう一度「f」キーを押すと、もとの状態に戻ります。
</p>
<br />
<p>
さて、fehは複数の画像ファイル、
もしくは、ディレクトリを引数として渡すと
画像を順番に表示してくれます(slideshow mode)。
すなわち、画像がひとつでも、複数でも、ディレクトリでも
気にせず、とりあえず、feh コマンドに渡してしまえば適当にやってくれるのです。
また、普段使いする場合は、
いつでもオプションとして、画像全体を表示するFと、
ファイル名を表示するdを付けるのがお勧めです。
</p>
<br />
<p>
早速、複数の画像ファイルが入ったディレクトリで
次のコマンドを試してみましょう。
</p>
<br />
<pre class="commandline"><code>$ feh -Fd *
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD7qoZsebOlfcxYBPM0exT2FSay1-W6gkcf8GcgiyPnGC2Z9GoGQiig3sJZdbxDkkbGzxw8f40ZxWz2DfLmyZohdMF2WGofY9kT5rCtE2nP58VrphudUHIEuXL6GS0tDSv9gQI2FIhWhB_t6_1mBUJNJjsoibkMV-oTcLAo1BueuiB0a3X2SONRmb0/s1920/sc_root_20220403195814.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD7qoZsebOlfcxYBPM0exT2FSay1-W6gkcf8GcgiyPnGC2Z9GoGQiig3sJZdbxDkkbGzxw8f40ZxWz2DfLmyZohdMF2WGofY9kT5rCtE2nP58VrphudUHIEuXL6GS0tDSv9gQI2FIhWhB_t6_1mBUJNJjsoibkMV-oTcLAo1BueuiB0a3X2SONRmb0/s600/sc_root_20220403195814.png"/></a></div>
<p>
スライドショウモードでは、
カーソルキーで画像移動し、qキーで終了です。
</p>
<br />
<h3>ImageMagickで画像編集</h3>
<p>
Linuxで画像編集といえば「GIMP」が定番ですが、
今回はコマンドで画像編集を行なうためにImageMagickという、
画像編集の定番プログラムを利用します。
</p>
<br />
<br />
<br />
<div style="text-align:center">
<font size="5">
<a href="https://imagemagick.org/index.php">
ImageMagick
</a>
</font>
</div>
<br />
<br />
<p>
archlinuxの公式リポジトリにImageMagickはあるので、
次のコマンドでインストール出来ます。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S imagemagick
</code></pre>
<br /><br />
<p>
ImageMagickで簡単に出来ることを紹介しましょう。
はじめに把握しておくべき事として、
ImageMagickは、コマンドの名前でありません。
ImageMagickには、機能に応じた幾つかのコマンドが含まれています。
まず、はじめに使うのは、何かを変換するconvertコマンドです。
</p>
<br />
<h4>iPhoneのカメラで撮ったHEIC画像をJPGやPNGに変換する convert</h4>
<p>
ImageMagickでは、convertコマンドを使って、
画像形式を簡単に変換することが出来ます。
convertコマンドの使い方は次の通り。
この時、出力ファイル名の拡張子に応じて画像形式が変更されます。
</p>
<br />
<pre class="commandline"><code>$ convert 入力ファイル名 出力ファイル名
</code></pre>
<br /><br />
<p>
例えば、iPhoneで写真を撮ると、HEIC形式で保存されることがあります。
ImageMagickでは、これを簡単にJPGやPNGに変換することが出来るのです。
次の様に、変換したい画像形式の拡張子が付いた出力ファイル名を
引数に渡すだけです。
</p>
<br />
<pre class="commandline"><code>$ convert inputImage.HEIC outputImage.png
</code></pre>
<br /><br />
<p>
もちろん、jpgだって、OKです。
</p>
<br />
<pre class="commandline"><code>$ convert inputImage.HEIC outputImage.jpg
</code></pre>
<br /><br />
<h4>画像の大きさを知る identify</h4>
<p>
まずは、サンプルとして、次の画像を保存してみてください。
この画像のファイル名を以下「sample_tiyou.png」とします。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcEvwveywiVSU0_6HV8XUP0UWT1OgaH-iOn-WWCTisjL_eo59TBs7JS4VWD78QidOtR-E1wEipT4iQC7vIflZimRqkmU7ExGscD6_y4UiP9kOP1HegaIMzou0dcB3nB_SBVAZo7JWG2lgEIUmmfvNHWTxF7kHlmK0g6ZRZF-ZBZAAH75Y-_cJ2qdA/s4032/sample_taiyou.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="3024" data-original-width="4032" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixcEvwveywiVSU0_6HV8XUP0UWT1OgaH-iOn-WWCTisjL_eo59TBs7JS4VWD78QidOtR-E1wEipT4iQC7vIflZimRqkmU7ExGscD6_y4UiP9kOP1HegaIMzou0dcB3nB_SBVAZo7JWG2lgEIUmmfvNHWTxF7kHlmK0g6ZRZF-ZBZAAH75Y-_cJ2qdA/s600/sample_taiyou.png"/></a></div>
<p>
ImageMagickのidentifyコマンドを使うと、
画像の縦横のサイズを含めた画像の情報を知ることが出来ます。
早速、identifyコマンドを使って、sample_taiyou.pngのサイズを調べてみましょう。
</p>
<br />
<pre class="commandline"><code>$ identify sample_taiyou.png
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8myIw851ixeAmvFBbHM5LxeXT9iWqTE5C5Dwp2EgexWiPUH0bdE7MxgLzgKGOKKyVJI6LLdkUug3IWazXM3mdfc9lUGfueb0xl9b8hByDnuQXGNLrW9qTLgcsmIb4xTNNlvWkvj0M7cuv_SQ2YD5MedldvAaD7f7rrjHcCbqxxfezK4FAICZINyOC/s1920/sc_root_20220403213612.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8myIw851ixeAmvFBbHM5LxeXT9iWqTE5C5Dwp2EgexWiPUH0bdE7MxgLzgKGOKKyVJI6LLdkUug3IWazXM3mdfc9lUGfueb0xl9b8hByDnuQXGNLrW9qTLgcsmIb4xTNNlvWkvj0M7cuv_SQ2YD5MedldvAaD7f7rrjHcCbqxxfezK4FAICZINyOC/s600/sc_root_20220403213612.png"/></a></div>
<p>
上記の例では、4032x3024 となっている部分がサイズです。
</p>
<br />
<h4>画像サイズを拡大縮小する convert</h4>
<p>
identifyコマンドで確認した通り、
画像sample_taiyou.pngのサイズは4032x3024ありますが、
うちのモニタのサイズは1920x1080なので、
sample_taiyou.pngの大きさをこのサイズに縮小することにします。
</p>
<br />
<p>
ImageMagickで画像サイズの拡大縮小を行なうには、
画像形式を変換するのに使ったのと同じ、convertコマンドを使います。
</p>
<br />
<pre class="commandline"><code>$ convert sample_taiyou.png \
-resize 1920x1080 \
sample_taiyou_small.jpg
</code></pre>
<br /><br />
<p>
-resizeオプションに画像サイズを幅x高さで表現して渡します。
また、出力ファイル名は必須です。
この時、入力ファイルと同じ名前にすると、上書きされます。
先と同じ様に拡張子を変更すると、
画像形式も同時に変換されます。
</p>
<br />
<p>
covertコマンドの基本的な引数の並べ方は次の様になっています。
</p>
<br />
<pre class="commandline"><code>$ convert [入力ファイル名] \
[変換のためのオプション] \
[出力ファイル名]
</code></pre>
<br /><br />
<p>
コマンドを実行したら、
fehとidentifyコマンドを使って結果を確認してみましょう。
</p>
<br />
<p>
変換したsample_taiyou_small.jpgをidentifyコマンドで確認したら、
そのサイズが 1440x1080 となっていて、
指定した
<font color="red">
1920x1080 になっていない
</font>
ことがわかります。
実は、convertコマンドによる変換では、
<font color="red">
縦横比が変らない、且つ、指定されたサイズに全てが入る
</font>
ように変換されます。
</p>
<br />
<h3>モニタサイズぴったりの画像を作る</h3>
<p>
ここまでの作業で、ImageMagickを使うと、
コマンドラインから画像の編集が出来ることがわかったと思います。
ここから、
これらのツールを使って
格好の良い壁紙をどんな風に作るかを考えていきましょう。
</p>
<br />
<p>
まずは、モニタのサイズと同じサイズの画像をどうやって作るかを考えます。
</p>
<br />
<h4>fehで壁紙を設定して確認</h4>
<p>
fehコマンドには、壁紙を設定する機能があります。
実際に画像を壁紙に設定してどんな風に見えるのかを確認しながら、
作業を進めて行きましょう。
fehで壁紙を設定するには、次のオプションを付けてコマンドを実行します。
</p>
<br />
<pre class="commandline"><code>$ feh --bg-center sample_taiyou_small.jpg
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP3RMCGJlFXgUHfhZDf8-G5Wr2sExRe6RIJn--_uDq4Iw8szuzocs0t5YV1-D4GlcDBWRXOOQQgjjvLezaT4mR9I5trlencNeXsWi7ET2CNtXWbNUSRc8AeiOogVUGPmncCrlmkXrif7iUlLFpeK6t4rKIJwyHGap73iO3OW_CjipvPCKWodeI4wKj/s1920/sc_root_20220405165417.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP3RMCGJlFXgUHfhZDf8-G5Wr2sExRe6RIJn--_uDq4Iw8szuzocs0t5YV1-D4GlcDBWRXOOQQgjjvLezaT4mR9I5trlencNeXsWi7ET2CNtXWbNUSRc8AeiOogVUGPmncCrlmkXrif7iUlLFpeK6t4rKIJwyHGap73iO3OW_CjipvPCKWodeI4wKj/s600/sc_root_20220405165417.png"/></a></div>
<p>
既にidentifyコマンドで確認した通り、
モニタのサイズと画像のサイズが異なっていて、
画像の横幅がモニタの横幅よりも小さいので、
実際に壁紙として設定すると、
左右に画像の無い黒色の部分が出来てしまいます。
</p>
<br />
<h4>横幅だけを指定して拡大縮小</h4>
<p>
ここで、黒い部分が出ないようにするためには、
元の画像の横幅を1920にリサイズする必要があります。
convert の -resize オプションは、
横幅だけ、もしくは、高さだけを指定することができます。
次のコマンドで、横幅に1920を指定して元画像をリサイズしてみましょう。
横幅は指定はxの左側だけ数値を書き、右側は何も無い状態にします。
変換できたら、ついでに、変換された画像のサイズも確認します。
</p>
<br />
<pre class="commandline"><code>$ convert sample_taiyou.png \
-resize 1920x \
sample_taiyou_yoko1920.jpg
$ identify sample_taiyou_yoko1920.jpg
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUORYcw2tj7ik7ki_fFs6jstdFsW6UL3wFG1KJKlQf6Xs9qeMacK5hiyfvg6Z67Qg6bqOdSdR9Oc3_Oq53XCZK3uwZXWCyvDXeHkjhlZn3iuFClFyggQ0ZC1KaDMrZ-_jPv2Ez-6I3iTba6g3Zugb4sv7czTbPA58-2k2ZS_oSmpTw5UqSaZ2FOLdH/s738/sc_window_20220406002920.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="570" data-original-width="738" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUORYcw2tj7ik7ki_fFs6jstdFsW6UL3wFG1KJKlQf6Xs9qeMacK5hiyfvg6Z67Qg6bqOdSdR9Oc3_Oq53XCZK3uwZXWCyvDXeHkjhlZn3iuFClFyggQ0ZC1KaDMrZ-_jPv2Ez-6I3iTba6g3Zugb4sv7czTbPA58-2k2ZS_oSmpTw5UqSaZ2FOLdH/s600/sc_window_20220406002920.png"/></a></div>
<p>
画像サイズは、1920x1440となっているので、モニタの縦サイズ1080を超ています。
fehで、この変換した画像を壁紙に設定しましょう。
</p>
<br />
<pre class="commandline"><code>$ feh --bg-center sample_taiyou_yoko1920.jpg
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihMIftNIfhe2VCm-TUJtb6q0vNvjSwM8j3iD2ToekmXE-Px-OTEGqFCTS7gu0YfojWU7C6Yr8eVNNoOvu0fbeNhWW0qncCfZxJDI53y3AAQNC1sHrgNWVk9rUPgNrOapCU5nBjWlS_4WaTwRXs_1Wg8pFWxTNlBR3FGCaWLyjSYtcUIYLCYzPvryoI/s1920/sc_root_20220406003334.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihMIftNIfhe2VCm-TUJtb6q0vNvjSwM8j3iD2ToekmXE-Px-OTEGqFCTS7gu0YfojWU7C6Yr8eVNNoOvu0fbeNhWW0qncCfZxJDI53y3AAQNC1sHrgNWVk9rUPgNrOapCU5nBjWlS_4WaTwRXs_1Wg8pFWxTNlBR3FGCaWLyjSYtcUIYLCYzPvryoI/s600/sc_root_20220406003334.png"/></a></div>
<p>
この様に横幅であわせると、画像の一部がみえなくなります。
ここでは、feh に中心あわせのオプションを指定しているので、
上下ともに一部がはみ出して見えなくなっています。
</p>
<br />
<p>
つまり、モニタの縦横比と異なる縦横比の画像を壁紙にする場合、
</p>
<br />
<div>
<ul style="text-align: left;">
<li>画像が無い部分(黒くなる部分)があることを許す</li>
<li>画像の一部を捨てる</li>
</ul>
</div>
<br />
<p>
のどちらかを選択する必要があります。
</p>
<br />
<p>
もし、画像が無い部分を許す場合には、
特になにもする必要はありません。
先に例示した通り、
convert コマンドにモニタサイズを渡してリサイズすれば出来上がりです。
</p>
<br />
<h4>一部切り取りでぴったりサイズを作る</h4>
<p>
ここからは、もうひとつの選択肢である「画像の一部を捨てる」方法について
考えて行きます。
</p>
<br />
<p>
先に紹介した通り、画像sample_taiyou_yoko1920.jpgのサイズは、
1920x1440となっているので、モニタの縦サイズ1080を超ています。
そこで、この画像の内、1920x1080の部分を切り出せば、
ちょうどのサイズの画像が出来るわけです。
</p>
<br />
<p>
ImageMagickを使って、画像の一部を切り出すには、
convertコマンドに
<font color="red">
-crop オプション
</font>
を渡して行ないます。
sample_taiyou_yoko1920.jpgから 1920x1080のサイズを切り出すには、
次のコマンドを実行して下さい。
</p>
<br />
<pre class="commandline"><code>$ convert sample_taiyou_yoko1920.jpg \
-crop 1920x1080+0+0 \
sample_taiyou_1920x1080.jpg
</code></pre>
<br /><br />
<p>
-crop オプションに渡す引数の書式は次の通りです。
</p>
<br />
<div style="text-align:center">
<font size="4", color="red">
[横幅]x[高さ]+[基準点からx方の距離]+[基準点からy方の距離]
</font>
</div>
<br />
<br />
<p>
-crop オプションでは、切り抜くサイズだけでなく、
<font color="red">
どこを
</font>
切り抜くかを指定する必要があり、
これを基準点(元画像の左上端)からの距離で表現します。
上述の例では、横幅は全体を使いますが、
縦方向では、上端から1080までを切り出すことになります。
</p>
<br />
<p>
先に、画像sample_taiyou_yoko1920.jpgを
fehで壁紙に設定した時、
太陽の塔の首から上がはみ出していました。
これは、画像sample_taiyou_yoko1920.jpgの中で
太陽の塔が上側に配置されているのに、
画像の中心部付近だけの取り出したからです。
この様な配置の画像の場合には、
上側の部分を取り出してあげると、
太陽の塔もちゃんと構図の中におさまります。
実際に壁紙に設定して確かめてみましょう。
</p>
<br />
<pre class="commandline"><code>$ feh --bg-center sample_taiyou_1920x1080.jpg
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Pcnqu58_XgACj964cJYOu_AhA4SVwvQffn78FT7wszKeU65U6xlNNJ7PtYjUsD0zkYboVRomAT3OC-aOo3-t0Iw6ySvwWiJxVGyCxa-Vm_XUpw8OFVR9eaEDZ-tMuilrNlfUgtXf-Ll3dXzC_N_hAY99kVHsZVlH2bTjd3d7OOGV6-m1j0Lhpx89/s1920/sc_root_20220406183809.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Pcnqu58_XgACj964cJYOu_AhA4SVwvQffn78FT7wszKeU65U6xlNNJ7PtYjUsD0zkYboVRomAT3OC-aOo3-t0Iw6ySvwWiJxVGyCxa-Vm_XUpw8OFVR9eaEDZ-tMuilrNlfUgtXf-Ll3dXzC_N_hAY99kVHsZVlH2bTjd3d7OOGV6-m1j0Lhpx89/s600/sc_root_20220406183809.png"/></a></div>
<p>
ちゃんと太陽の塔が見えるようになりました。
</p>
<br />
<p>
しかし、当然、真ん中あたりで画像を切り抜きたい場合も多く、
その時に、いちいち、基準点からの距離を計算して、
その数値をオプションに書くのも面倒なはなしです。
</p>
<br />
<p>
そこで、convertには基準点自身を変更するオプション -gravity
があります。
先に紹介した通り、基準点は原則、左上端(northwest:北西)にあります。
これを東西南北の8方位、及び、centerに基準点を変更出来ます。
使い方は、-gravityオプションに方位を与え、
-cropオプションの前に置きます。
</p>
<br />
<p>
例えば、-gravity centerを次の様に使えば、
数値を用いることなく、簡単に真ん中あたりを切り抜くことが出来ます。
</p>
<br />
<pre class="commandline"><code>$ convert sample_taiyou_yoko1920.jpg \
-gravity center
-crop 1920x1080+0+0 \
sample_taiyou_1920x1080_center.jpg
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixij2G_OWFaZ1BItl8vzmGduqJPPlApOI1kp2tB1wmHiTSozwGNiCkdBPtW2tDov9TW1D6TeM7B5Q3zO-iU-kkCmiXtMFo-t6i8zmBKY0Q_YSYaC6JwrpFmuMeQgMCEfKJ2j570nW-NDl_5m39iosY-fErpNj4ov9WFkUM9mxTG08TGjtp-LAQMfkm/s1920/sc_root_20220406191824.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixij2G_OWFaZ1BItl8vzmGduqJPPlApOI1kp2tB1wmHiTSozwGNiCkdBPtW2tDov9TW1D6TeM7B5Q3zO-iU-kkCmiXtMFo-t6i8zmBKY0Q_YSYaC6JwrpFmuMeQgMCEfKJ2j570nW-NDl_5m39iosY-fErpNj4ov9WFkUM9mxTG08TGjtp-LAQMfkm/s600/sc_root_20220406191824.png"/></a></div>
<p>
みごと真ん中あたりを切り抜くことが出来たので、
ちゃんと見切れ画像が出来ました。(笑)
</p>
<br />
<h4>サイズぴったり画像の作り方まとめ</h4>
<p>
まず、壁紙を貼り付けたいモニタのサイズを確認します。
</p>
<br />
<p>
次に、お気に入りの写真の横幅をモニタの横幅まで縮小します。
</p>
<br />
<p>
それから、縮小した画像の高さがモニタの高さより大きい場合、
自分の好きな位置で、モニタの高さ分だけ切り出して、
モニタサイズとぴったり同じサイズの画像を作成します。
</p>
<br />
<p>
もし、画像の高さがモニタの高さより小さい時は、
元画像をモニタの高さまで縮小した画像を使って、
モニタの横幅分だけ画像を切り出してぴったりのサイズの
画像を作成します。
</p>
<br />
<p>
以上の手順で、モニタ毎にぴったりサイズの画像を作成出来ます。
</p>
<br />
<h3>画像にarchlinuxロゴを貼り付ける</h3>
<p>
やっぱり壁紙にはアクセントとして、
ロゴの様なものがあったほうが恰好良くみえます。
そこで、archlinuxのロゴを付けてみましょう。
</p>
<br />
<h4>archlinuxのロゴを準備する</h4>
<p>
archlinuxのロゴはAURにあるので、yay等を使ってインストールしましょう。
</p>
<br />
<pre class="commandline"><code>$ yay -S archlinux-artwork
</code></pre>
<br /><br />
<p>
インストール先は、
<code>/usr/share/archlinux/logos/</code>
です。feh で確認してみましょう。
黒い画像もあるので、fehにバックグラウンド色指定のオプション -B grey を渡しています。
</p>
<br />
<pre class="commandline"><code>$ feh -B grey -Fd /usr/share/archlinux/logos/
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPcWE0GIHPzbKaPJq_aFXHu4Ozn6OWfRcIrJPD_8ThBaYD4cQch0yp4TL6Pi8xykc7NHrILCZ2jpJjUubzmNZ01rL_ANc1VH2iUjUHTT2d-Unv_5xZWfEG7PlVIpfm_WKBhzE4cOM3CoRoKHmrDT5TUUvABiWW5IW0GFGb6AO7laxe0anRZFqH1O1j/s1920/sc_root_20220406200841.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPcWE0GIHPzbKaPJq_aFXHu4Ozn6OWfRcIrJPD_8ThBaYD4cQch0yp4TL6Pi8xykc7NHrILCZ2jpJjUubzmNZ01rL_ANc1VH2iUjUHTT2d-Unv_5xZWfEG7PlVIpfm_WKBhzE4cOM3CoRoKHmrDT5TUUvABiWW5IW0GFGb6AO7laxe0anRZFqH1O1j/s600/sc_root_20220406200841.png"/></a></div>
<p>
好きなロゴを決めて、作業ディレクトリにコピーします。
</p>
<br />
<pre class="commandline"><code>$ cp /usr/share/archlinux/logos/archlinux-grad1-light.svg archlogo.svg
</code></pre>
<br /><br />
<h4>画像を合成するcompositeオプション</h4>
<p>
ImageMagickのconvertコマンドでは、
-compositeオプションを使って、
2つの画像を重ねて1つの画像を作成することができます。
</p>
<br />
<p>
そして、基本の引数の並びは次の様になります。
</p>
<br />
<pre class="commandline"><code>$ conver [下地画像名] [貼付け画像名] -compotite [出力画像名]
</code></pre>
<br /><br />
<p>
これを具体的に書くと次の様になります。
</p>
<br />
<pre class="commandline"><code>$ conver \
sample_taiyou_1920x1080.jpg archlogo.svg \
-composite \
archlogo_wallpaper001.jpg
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicbnVpetqhNj7BwBlO6NwjfCXQjBOqFAjXRw7YjV4itNbeUzByqYzcnDDj-RZu4RgP7-mdDC7-Ba5XOjwl55FZWkg1gNWd57Hk9zJ5o8bmqc4qOpAOnmhLUyaiRmRphqyNONYknSD_dqWbD-Au0swPfCfiRqsOyaTH8XefMEWTR0awgPjue9vygYTI/s1920/sc_root_20220407151412.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicbnVpetqhNj7BwBlO6NwjfCXQjBOqFAjXRw7YjV4itNbeUzByqYzcnDDj-RZu4RgP7-mdDC7-Ba5XOjwl55FZWkg1gNWd57Hk9zJ5o8bmqc4qOpAOnmhLUyaiRmRphqyNONYknSD_dqWbD-Au0swPfCfiRqsOyaTH8XefMEWTR0awgPjue9vygYTI/s600/sc_root_20220407151412.png"/></a></div>
<p>
壁紙画像の上にロゴ画像を貼り付けた合成画像が作成できました。
しかし、svgファイルの透明部分が反映されていません。
また、ロゴも好きな位置に貼り付けたいでしょう。
そこで、上述の基本的な合成の書式に「透過」のためのオプション、
ベクタ画像のための「DPI指定オプション」、
及び、合成の「位置を指定」するためのオプションを付け加えると次の様になります。
</p>
<br />
<pre class="commandline"><code>$ conver \
-background none \
-density 96 \
sample_taiyou_1920x1080.jpg archlogo.svg \
-gravity south -geometry +0+100 \
-composite \
archlogo_wallpaper002.jpg
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuJ0xkDIeTUFJPSyADYV4UZRGPtE5e-mn7C_Ft7Wg7OaewNITkSM49CHb8-_Tl7PKVxG7ZZ2DiDhvLpvG37vIxoLsKFyI5rFC28d2Kr2JESudyGDVaclaw80DlIOOh6IBTANZ1rGSeEsaqzziyx-Yuk-sBbe3dEgjToP-c1AkRGU17KwnSy2RZsvBS/s1920/sc_root_20220407164935.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuJ0xkDIeTUFJPSyADYV4UZRGPtE5e-mn7C_Ft7Wg7OaewNITkSM49CHb8-_Tl7PKVxG7ZZ2DiDhvLpvG37vIxoLsKFyI5rFC28d2Kr2JESudyGDVaclaw80DlIOOh6IBTANZ1rGSeEsaqzziyx-Yuk-sBbe3dEgjToP-c1AkRGU17KwnSy2RZsvBS/s600/sc_root_20220407164935.png"/></a></div>
<p>
だいたい、格好良い壁紙になりました。
</p>
<br />
<p>
ImageMagickのコマンドの引数の位置は独特のクセを持っています。
背景透過やDPI設定のオプションは、一番はじめに書くと良いようです。
-gravity オプションで基準点の位置を変更し、
-geometry オプションで基準点からのズレを指定しますが、
変換系のオプション、ここでは-compositeの前に置くのが良いようです。
</p>
<br />
<h4>影付きのロゴにする</h4>
<p>
ここで作った、archlogo_wallpaper002.jpg画像は、
ロゴがしっかりと見えていますが、
ベースになる写真の色が、ロゴの色と似ている場合、
見え辛くなることもあります。
そんな時でも、ロゴに影が付いていれば、
いつでも見えやすくなりますし、
何よりロゴが格好良くなります。
</p>
<br />
<p>
ImageMagickに「影を付ける」というそのもののオプションはありませんが、
定番の書式があります。
</p>
<br />
<pre class="commandline"><code>$ convert \
-background none -density 96 <font color="red">archlogo.svg</font>
\( +clone -background "#000000" -shadow <font color="red">100x5+5+5</font> \) \
+swap -background none -layers merge +repage <font color="red">archlogo.png</font>
</code></pre>
<br /><br />
<p>
影付きのロゴをfehで確認する場合は、背景色をgreyにしましょう。
</p>
<br />
<pre class="commandline"><code>$ feh -B grey -Fd archlogo.png
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRUShAiV9WTBMSIjs38Uo7SUJGWaQYX1sVHsYcRSGZR78rd6_V68rfVb1FNn7hTKhAXM593XSj_E6N_enElz6uUByWJe7JPBaF_rtUQjJTCphZXFW4wJjIWoDmxyUAUwCwdMveCwv_ISL-1HIt-uducB-dFgrnKUHKe43D3V9ZaBlZa8Pfs3hhC2Xe/s1920/sc_root_20220407174314.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRUShAiV9WTBMSIjs38Uo7SUJGWaQYX1sVHsYcRSGZR78rd6_V68rfVb1FNn7hTKhAXM593XSj_E6N_enElz6uUByWJe7JPBaF_rtUQjJTCphZXFW4wJjIWoDmxyUAUwCwdMveCwv_ISL-1HIt-uducB-dFgrnKUHKe43D3V9ZaBlZa8Pfs3hhC2Xe/s600/sc_root_20220407174314.png"/></a></div>
<p>
はじめは上記をコピペでOKです。
入力ファイル archlogo.svg や出力ファイル archlogo.pngを自分の都合で書きかえましょう。
但し、出力ファイルは透過が使えるようにPNG形式にしておきましょう。
また、影について調整したいなら、100x5+5+5の部分の数値を色々と変えてみましょう。
</p>
<br />
<p>
影付きロゴが完成したら、壁紙に合成します。
</p>
<br />
<pre class="commandline"><code>$ conver \
-background none \
sample_taiyou_1920x1080.jpg archlogo.png \
-gravity northwest -geometry +100+100 \
-composite \
archlogo_wallpaper003.jpg
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ2kYFIkL-EMBZktgRIz93akeYTM30HfApdcZ9O5Esj60FFuU16Y9aIRbvHREk3tPqD8LcXrzQtWfR_zSQi7g3Qn3uXDhjBBRTwfkb4wR_tIqaKeDIa6FUcwEm-wsv1Y1ODcMVwS_trtEXXPNLGE6hesGz3CkWp0nKXLO17B7nePDBbHR7ZY55vuLp/s1920/sc_root_20220407174730.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ2kYFIkL-EMBZktgRIz93akeYTM30HfApdcZ9O5Esj60FFuU16Y9aIRbvHREk3tPqD8LcXrzQtWfR_zSQi7g3Qn3uXDhjBBRTwfkb4wR_tIqaKeDIa6FUcwEm-wsv1Y1ODcMVwS_trtEXXPNLGE6hesGz3CkWp0nKXLO17B7nePDBbHR7ZY55vuLp/s600/sc_root_20220407174730.png"/></a></div>
<br />
<h3>「なんでもArchLinuxの壁紙にしてやるー」スクリプト</h3>
<p>
ここまでの知識を総動員した上で、
そこにちょこっとシェルの便利機能を追加して、
自動で壁紙を適当に作ってくれるスクリプトを紹介します。
</p>
<br />
<script src="https://gist.github.com/nekolinuxblog/c9591d1a3bf4c4100528c1fd678c0a18.js"></script>
<br /><br />
<p>
基本は、シェルスクリプトに画像ファイルを渡すだけ。
</p>
<br />
<pre class="commandline"><code>$ easywpmaker.sh sample_taiyou.png
</code></pre>
<br /><br />
<p>
もし、切り取り部分が気に入らなければ、-p オプションに -gravityっぽい値を渡します。(スクリプト参照)
</p>
<br />
<pre class="commandline"><code>$ easywpmaker.sh -p top sample_taiyou.png
</code></pre>
<br /><br />
<p>
さらに、壁紙作成と同時に壁紙に設定したい場合は、-b オプションを渡します。
</p>
<br />
<pre class="commandline"><code>$ easywpmaker.sh -b -p top sample_taiyou.png
</code></pre>
<br /><br />
<p>
このスクリプトを雛形にして、
モニタサイズの変更オプションを付け加えたり、
お気に入りのロゴを読み込めるようにしたり、
自分専用の壁紙作成スクリプトに進化させちゃいましょう。
そして、そのスクリプトで、なんでもarchlinuxの壁紙にしちゃいましょう!
</p>
<br />shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-88169575732748905022022-03-22T10:29:00.065+09:002022-12-16T18:45:26.963+09:00rcloneでGoogleDriveとかDropBoxとかをお洒落にマウントする
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFMmQQmljiIILHuNfCHNDdJh6yA14OsF0Xp49MJOhljg2S05j2zQUTXJLVBXSeMdH-lIgRngZy9RdIM9QZ9iGISz-1GYNC1aElwFmEJ_7FUBuskPI0nTLeoG3aDkq17B-44jGv5QHKmuQ9Hf2PafcdP9KpT7AW__zduA6BYQqT17dqDxsvaNklUEhE/s999/tuutenkaku.JPG" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="999" data-original-width="999" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFMmQQmljiIILHuNfCHNDdJh6yA14OsF0Xp49MJOhljg2S05j2zQUTXJLVBXSeMdH-lIgRngZy9RdIM9QZ9iGISz-1GYNC1aElwFmEJ_7FUBuskPI0nTLeoG3aDkq17B-44jGv5QHKmuQ9Hf2PafcdP9KpT7AW__zduA6BYQqT17dqDxsvaNklUEhE/s600/tuutenkaku.JPG"/></a></div>
<p>
クラウドストレージを自分のパソコンにマウントすると、
ローカルのディレクトリツリーに組込まれるので、
速度は別としてもクラウドストレージであることを意識しなくてよくなり、
とても便利に使うことが出来るようになります。
</p>
<br />
<p>
そして、これを実現してくれるのがrcloneです。
このノートでは、archlinuxでrcloneを利用し、
クラウドストレージをマウントして活用する具体的な方法を紹介します。
</p>
<br />
<p>
さて、
巷には、無料でも利用できるクラウドストレージ、例えば、GoogleDriveやDropBoxがあります。
このノートを読み始める前に、クラウドストレージをrcloneに登録しておいて下さい。
rcloneへクラウドストレージを登録する方法は、
「 <a href="https://neko-mac.blogspot.com/2022/03/rclone.html" target="_blank">rcloneでお洒落にクラウドストレージを扱う</a> 」
でGoogle driveでの登録例を紹介しています。参考にして下さい。
</p>
<br />
<figure class='okblogcard'>
<a href='https://neko-mac.blogspot.com/2022/03/rclone.html' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxH74EZp4JZgmwWOZigxzRUht9VAJl4oi7LHGU7I0LAlTCvPNlFkxNRZI1NyulXgPZNv8bOyfAolHDnoONz2UfLtKNL-HUvwE88Dewzyogj5WHYHBGZESb8swgaP_Zl1FNLP72ka2Iiaa_qyUN1oRz3P3VaXy78CDaAsKdXxprvdlzWOaOCwbxutL6/w1200-h630-p-k-no-nu/DSC02028_s.png' alt='rcloneでお洒落にクラウドストレージを扱う' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>rcloneでお洒落にクラウドストレージを扱う</p><p class='okblogcard-description'>
あなたは普段、どこのクラウドストレージを使っていますか? Googleドライブ? DropBox? マイクロソフトのOneDriveでしょうか? 巷には、無料でも使えるクラウドストレージがいくつもあるので、 きっと何かしらのクラウドストレージを使ってみたことがある人がほと...
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://neko-mac.blogspot.com/2022/03/rclone.html' alt='' width='16' height='16'>https://neko-mac.blogspot.com/2022/03/rclone.html</div>
</a>
</figure>
</ br></ br>
<h3>rcloneのmountコマンド</h3>
<p>
まず、rcloneには、クラウドストレージをマウントするコマンドがあります。
登録したクラウドストレージの名前を「okgstrage」とし、
マウントする場所を ~/GoogleDrive/ ディレクトリとすると、
マウントするためのrcloneコマンドは、次の様になります。
</p>
<br />
<pre class="commandline"><code>$ rclone mount okgstrage: ~/GoogleDrive/
</code></pre>
<br /><br />
<p>
このコマンドを実行すると、マウント処理がフォアグラウンドで行なわれるため、
プロンプトが戻ってきません。
別のターミナルを開いて、~/GoogleDrive/をlsコマンド等で確認してみて下さい。
</p>
<br />
<p>
マウントを終了するには、rcloneを実行したターミナルで、
<font color="red">Ctrl+C</font>
を押します。
</p>
<br />
<p>
または、別のターミナルで、
<font color="red">umount</font>
コマンドを実行します。
</p>
<br />
<pre class="commandline"><code>$ umount ~/GoogleDrive/
</code></pre>
<br /><br />
<h4>バックグラウンドでの起動と終了</h4>
<p>
バックグラウンドで実行させる場合は &をコマンドの末尾に付けるか、
--daemonオプションを付けます。
</p>
<br />
<pre class="commandline"><code>$ rclone mount okgstrage: ~/GoogleDrive/ &
</code></pre>
<br /><br />
<p>
または、
</p>
<br />
<pre class="commandline"><code>$ rclone mount okgstrage: ~/GoogleDrive/ --daemon
</code></pre>
<br /><br />
<p>
バックグラウンドで実行されている場合は、umountコマンドでアンマウントします。
</p>
<br />
<pre class="commandline"><code>$ umount ~/GoogleDrive/
</code></pre>
<br /><br />
<h4>rclone mountのオプション</h4>
<p>
rcloneで、クラウドストレージを利用する場合、
Virtual File Systemの機能を十分活用するために、
<code>--vfs-cache-mode</code>オプションを付ける必要があります。
</p>
<br />
<p>
まずは、適当な場所にキャッシュ用のディレクトリを作成します。
</p>
<br />
<pre class="commandline"><code>$ mkdir -p ~/.local/var/rclone
</code></pre>
<br /><br />
<p>
rclone mountコマンドを実行する時、
vfsキャッシュを利用するために、次のオプションを付けるようにします。
</p>
<br />
<pre class="commandline"><code>$ rclone mount okgstrage: ~/GoogleDrive/ --daemon \
--cache-dir ~/.local/var/rclone \
--vfs-cach-mode full
</code></pre>
<br /><br />
<h4>マウントはrcloneだけで出来るが、、</h4>
<p>
この様に、rcloneには、マウントをするためのコマンドが用意されており、
これを使えば簡単にマウントすることが出来ます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjixcpaX4Zyf0pM9u3mr_cJn_qnZ7MH8U-4Lr8f4eu0FGfI7-SOTSzvUFeKmXZLK2k3utJLLXcZDzteDXm2XaRa54uwlrar0zRRNhpK1gCmRjK66XEnJDL-zaplJBGaqTaBi4aOlzJ91_r0icLKddHuWsFERwUk3i5W9699Lqj3JQLAwUXHSJCccT4m/s1108/sc_window_20220323095114.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="742" data-original-width="1108" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjixcpaX4Zyf0pM9u3mr_cJn_qnZ7MH8U-4Lr8f4eu0FGfI7-SOTSzvUFeKmXZLK2k3utJLLXcZDzteDXm2XaRa54uwlrar0zRRNhpK1gCmRjK66XEnJDL-zaplJBGaqTaBi4aOlzJ91_r0icLKddHuWsFERwUk3i5W9699Lqj3JQLAwUXHSJCccT4m/s600/sc_window_20220323095114.png"/></a></div>
<p>
しかし、マウントは自動的にされた方がやはり便利です。
通常、ローカルストレージは、
archlinuxの場合、systemdによって自動的にマウントされています。
そして実は、rcloneで管理するクラウドストレージも
systemdで管理して、自動的にマウントする事が出来ます。
次の項目から、systemdでの管理の仕方を紹介します。
</p>
<br />
<h3>mountコマンドとrclone mountコマンド</h3>
<p>
Unix系のシステムでマウントするために使われる/bin/mountコマンドは、
-t FSTYPEオプション毎に/bin/mount.FSTYPEが呼び出されるようになっています。
そこで、rcloneについて、以下のシンボリックリンクを張ることで、
mountコマンドでrcloneを呼び出すことが出来るようになります。
</p>
<br />
<pre class="commandline"><code>$ sudo ln -s /usr/bin/rclone /bin/mount.rclone
</code></pre>
<br /><br />
<p>
2022年12月現在のarchlinuxのパッケージでrcloneをインストールする場合、
このシンボリックリンクも自動的に作られているはずです。
一方、以前にこの記事を読んで自分でシンボリックリンクを張った場合、
rcloneパッケージのアップデートしようとした時にコンフリクトのエラーが出るので、
その場合は、自分で張ったシンボリックリンクを一旦削除してから、アップデートをしましょう。
</p>
<br />
<p>
シンボリックリンクが張れたら、mountコマンドに
<code>-t rclone</code>
オプションを渡して、
マウントしてみましょう。
</p>
<br />
<pre class="commandline"><code>$ mount okgstrage: ~/GoogleDrive -t rclone
</code></pre>
<br /><br />
<p>
mountコマンド経由で、rclone mountのオプションを渡す事が出来ますが、
書式がmountのものになります。先に示した
<code>--cache-dir</code>や
<code>--vfs-cache-mode</code>の書き方は次のようになります。
</p>
<br />
<p>
<pre class="commandline"><code>$ mount okgstrage: ~/GoogleDrive -t rclone \
-o cache-dir="~/.local/var/rclone",vfs-cach-mode=full
</code></pre>
<br /><br />
<p>
以上の様に、rclone mountは、システムの中で、
mountコマンドで置き換える事が出来るようになりました。
つまり、システムは、mountコマンドを使って、
他のファイルシステムと同じ様に、
GoogleDriveやDropBoxをマウント出来るようになったのです。
どういうことかと言えば、
<code>/etc/fstab</code>に
クラウドストレージとマウントポイントとオプションを書いておけば、
システムが自動でマウントしてくれるということです。
</p>
<br />
<p>
ですから、rclone mountでクラウドストレージを自動でマウントする場合、
自分で自動マウント用のスクリプトなんかを書いたりはしないのです。
rcloneによって、mountで扱えるファイルシステムを拡張するイメージです。
「自動マウント」自体は、システムがmountのために使っている、
systemdを利用します。
</p>
<br />
<h3>systemd --userを設定</h3>
<p>
systemdについて、さっぱり解らないという人は、
「 <a href="https://wiki.archlinux.jp/index.php/Systemd" target="_blank">systemd archwiki(jp)</a> 」
を見てみましょう。
</p>
<br />
<p>
systemdには、システム全体を設定するものと、
各ユーザーが自分のために起動できるものの2種類があります。
</p>
<br />
<p>
一般的に、ストレージデバイスのマウントは、
システム全体の話なので、システム全体の設定として行なわれます。
先に紹介したように、実際、
<code>/etc/fstab</code>に書かれた設定から、
マウントを行なうのは、システムの設定を行なうsystemdが行なっています。
</p>
<br />
<p>
しかし、個人的なクラウドストレージのマウントの場合、
特定のユーザーが自分のために、
自分のホームディレクトリ以下のどこかのディレクトリに
マウント出来るほうが自然ですし、
それをユーザーが自分の権限で出来るようにしたほうが便利です。
</p>
<br />
<p>
ですから、ここでは、ユーザーサービスとしてのsystemdでの管理を紹介します。
</p>
<br />
<h4>systemdのユーザー用のユニットファイルを置く場所</h4>
<p>
systemdでは、各設定の単位を「ユニット」と呼んでいるので、
設定ファイルのことも「ユニットファイル」と呼んでいます。
</p>
<br />
<p>
ユーザー用のユニットファイルは、
<font color="red">
<code>~/.config/systemd/user/</code>
</font>
ディレクトリ以下に配置します。
</p>
<br />
<h4>ユニットファイルの名前</h4>
<p>
実は、マウントに関するユニットファイルは、
そのファイル名がマウントポイントのパスを表わします。
ですから、作業を始める前に、マウントポイントを決めておきましょう。
うちでは、
<code>/home/neko/GoogleDrive</code>
です。
</p>
<br />
<p>
この場合のユニットファイル名は、
<code>home-neko-GoogleDrive.mount</code>
になります。
パス区切りをハイフンにして、拡張子を.mountにします。
このユニットファイルを
<code>~/.config/systemd/user/</code>
に作成します。
</p>
<br />
<pre class="commandline"><code>$ vim ~/.config/systemd/user/home-neko-GoogleDrive.mount
</code></pre>
<br /><br />
<h4>ユニットファイルの中身</h4>
<p>
このユニットファイルの雛形は、以下のようになります。
</p>
<br />
<pre class="commandline"><code>[Unit]
After=network-online.target
[Mount]
Type=rclone
What=<font color="red">okgstrage</font>:
Where=<font color="red">/home/neko/GoogleDrive</font>
Options=vfs-cache-mode=full,cache-dir=<font color="red">/home/neko/.local/var/rclone</font>
[Install]
WantedBy=default.target
</code></pre>
<br /><br />
<p>
雛形の中で自分の環境に合せて書き換える必要がある部分は、
まず、「What」項目です。rcloneに登録したクラウドストレージ名にします。
そして、セミコロンを忘れないようにしましょう。
</p>
<br />
<p>
次は、「Where」項目です。自分で決めたマウントポイントに書き換えます。
</p>
<br />
<p>
最後は、「Options」項目です。
先に紹介したとおり、rcloneでは、
Virtual File System用のキャッシュが必要で、
そのために作った自分用のディレクトリパスに書き換えます。
</p>
<br />
<h3>ユニットの起動と終了</h3>
<p>
ユニットの起動は、
<font color="red">systemctl</font>コマンドで行ないます。
</p>
<br />
<pre class="commandline"><code>$ systemctl --user start /home/neko/GoogleDrive
</code></pre>
<br /><br />
<p>
引数で渡している、マウントポイントのパスは各自のマウントポイントのパスに書き換えて下さい。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf7GkcSJzU30uBJgRWd-eziHwCQuasZFJByyINftFbuRMCGPPJvqaX6OJvTXh9K1Sq_m-fbZwoC34btUR-GMAe1nv1EXUnjq8FFyKD10ysRiMRWzxpJwHuQozSjpJOmIaGNH8JK4zZcxWFMFW_jEhCcTfECE8rC6aPsjbfCfw1BAthTulwcwNs7ZXO/s1920/sc_root_20220323101254.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf7GkcSJzU30uBJgRWd-eziHwCQuasZFJByyINftFbuRMCGPPJvqaX6OJvTXh9K1Sq_m-fbZwoC34btUR-GMAe1nv1EXUnjq8FFyKD10ysRiMRWzxpJwHuQozSjpJOmIaGNH8JK4zZcxWFMFW_jEhCcTfECE8rC6aPsjbfCfw1BAthTulwcwNs7ZXO/s600/sc_root_20220323101254.png"/></a></div>
<p>
ユニットの終了は、次の様になります。
</p>
<br />
<pre class="commandline"><code>$ systemctl --user stop /home/neko/GoogleDrive
</code></pre>
<br /><br />
<h3>ユニットの自動起動</h3>
<p>
上記の作業で、マウントが上手く出来ることが確認できたら、
システムが起動したときに、いつでも自動でマウントしてくれるようにします。
次のコマンドを実行しましょう。
</p>
<br />
<pre class="commandline"><code>$ systemctl --user enable home-neko-GoogleDrive.mount
</code></pre>
<br /><br />
<p>
他のコマンドのように、マウントポイントで指定するとエラーになるようなので、
引数にマウントポイントでは無く、<font color="red">ユニットファイル名</font>を指定します。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG4g8lZ46J9Y6AD1HPRLQf0eLDt3TaOl3U7XdQ3J6Wb3YfTsqhrTwett4mzIS96P5Eqj_5nm72PdOFx0udeNIOys9-qjmAmeqxZefYZPsGNf63BbVc6NXFgzx862EzZgb_KL_mlK4571oqhYjhqKts26qwd7uQ0Lpqmr7gdQ2AYBsNAyFQx9I8Rk9u/s897/sc_window_20220323120346.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="452" data-original-width="897" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG4g8lZ46J9Y6AD1HPRLQf0eLDt3TaOl3U7XdQ3J6Wb3YfTsqhrTwett4mzIS96P5Eqj_5nm72PdOFx0udeNIOys9-qjmAmeqxZefYZPsGNf63BbVc6NXFgzx862EzZgb_KL_mlK4571oqhYjhqKts26qwd7uQ0Lpqmr7gdQ2AYBsNAyFQx9I8Rk9u/s600/sc_window_20220323120346.png"/></a></div>
<p>
上記の様なエラーが出た場合、慌てず、ユニットファイル名で指定しなおしてあげればOKです。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGJnY5HefEiLoXTf_Up5l63hfQJDA0qzWYoIkGv7bHz56QqeVPk0rIvX9WpeXfyDnFMzoWiHM-ewEaAGXgh-NBx420oM4hrRw1-9srFW-K1cQ2Tq-ei-lurj2ZSufM0ewfo66kVL0Tc598FOkrQ_vcFIU7x-5cOwzcEnev3gFbLyiiDtEh5q9zoEga/s897/sc_window_20220323120408.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="452" data-original-width="897" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGJnY5HefEiLoXTf_Up5l63hfQJDA0qzWYoIkGv7bHz56QqeVPk0rIvX9WpeXfyDnFMzoWiHM-ewEaAGXgh-NBx420oM4hrRw1-9srFW-K1cQ2Tq-ei-lurj2ZSufM0ewfo66kVL0Tc598FOkrQ_vcFIU7x-5cOwzcEnev3gFbLyiiDtEh5q9zoEga/s600/sc_window_20220323120408.png"/></a></div>
<p>
enableコマンドは、「今」ユニットを起動するコマンドでは無いことに注意が必要です。
システムを再起動してみましょう。
</p>
<br />
<p>
ユニットの状況については、systemctl statusコマンドで確認できます。
</p>
<br />
<pre class="commandline"><code>$ systemctl --user status /home/neko/GoogleDrive
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK_u3_PaxF3NznvZSyrrCrbSCs7ESJDavIg-SlS_XfZqvXS4Nk-zv3ay7_s_j3yVmiSna2J1hKVNo0EiH9Rd3l2tbiMrppqmw6xxOpxS0ijZjSzU07uzPPGvZErTTJCEo2OdJRlKIFRcJoRH2F2JQb3IzNI1LV4kC4FBl5p5zQ9qy1c6vcSFlEI7LQ/s922/sc_window_20220323101849.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="614" data-original-width="922" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK_u3_PaxF3NznvZSyrrCrbSCs7ESJDavIg-SlS_XfZqvXS4Nk-zv3ay7_s_j3yVmiSna2J1hKVNo0EiH9Rd3l2tbiMrppqmw6xxOpxS0ijZjSzU07uzPPGvZErTTJCEo2OdJRlKIFRcJoRH2F2JQb3IzNI1LV4kC4FBl5p5zQ9qy1c6vcSFlEI7LQ/s600/sc_window_20220323101849.png"/></a></div>
<p>
また、自動起動をやめたい場合は、systemctl disableコマンドを使います。
</p>
<br />
<pre class="commandline"><code>$ systemctl --user disable home-neko-GoogleDrive.mount
</code></pre>
<br /><br />shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-89262400542307301142022-03-21T13:38:00.053+09:002022-03-23T12:13:49.689+09:00rcloneでお洒落にクラウドストレージを扱う
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxH74EZp4JZgmwWOZigxzRUht9VAJl4oi7LHGU7I0LAlTCvPNlFkxNRZI1NyulXgPZNv8bOyfAolHDnoONz2UfLtKNL-HUvwE88Dewzyogj5WHYHBGZESb8swgaP_Zl1FNLP72ka2Iiaa_qyUN1oRz3P3VaXy78CDaAsKdXxprvdlzWOaOCwbxutL6/s1940/DSC02028_s.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1088" data-original-width="1940" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxH74EZp4JZgmwWOZigxzRUht9VAJl4oi7LHGU7I0LAlTCvPNlFkxNRZI1NyulXgPZNv8bOyfAolHDnoONz2UfLtKNL-HUvwE88Dewzyogj5WHYHBGZESb8swgaP_Zl1FNLP72ka2Iiaa_qyUN1oRz3P3VaXy78CDaAsKdXxprvdlzWOaOCwbxutL6/s600/DSC02028_s.png"/></a></div>
<p>
あなたは普段、どこのクラウドストレージを使っていますか?
Googleドライブ? DropBox? マイクロソフトのOneDriveでしょうか?
巷には、無料でも使えるクラウドストレージがいくつもあるので、
きっと何かしらのクラウドストレージを使ってみたことがある人がほとんどだと思います。
</p>
<br>
<p>
しかし、実際にこれらのサービスを使ってみると、
これらストレージへのアクセスの仕方は、
Webブラウザ経由であったり、専用のアプリが用意されていたり、それぞれのサービス毎に異なっています。
つまりは、複数のクラウドストレージを扱うことは、それぞれ操作の仕方が異るので、結構面倒臭いのです。
</p>
<br>
<h3>Rcloneで全部解決</h3>
<p>
rcloneは、コマンドラインからクラウドストレージ等のファイルを扱うコマンドで、
上述の様な面倒を全部あっさり片づけてくれます。
</p>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlN5rXB4J6hNnGkFhouPBPuW1VIfQCxH1z03Mg4XkbWtgQkshLvFKZsXcHmUvoDvKr4A1gwtlF3t_lo77kDTxXUYy0POGnQLpuu6hSvgZF7pnvq-dUVFC1aHK704ZFhJ1PaMLwRDCycIDY1fH2A5F0pzP2EZFsyMPETXFftQGvwqE9iNrAzhfv2_bl/s1081/sc_window_20220321172714.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="833" data-original-width="1081" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlN5rXB4J6hNnGkFhouPBPuW1VIfQCxH1z03Mg4XkbWtgQkshLvFKZsXcHmUvoDvKr4A1gwtlF3t_lo77kDTxXUYy0POGnQLpuu6hSvgZF7pnvq-dUVFC1aHK704ZFhJ1PaMLwRDCycIDY1fH2A5F0pzP2EZFsyMPETXFftQGvwqE9iNrAzhfv2_bl/s600/sc_window_20220321172714.png"/></a></div>
<center>
<a href="https://rclone.org/" target="_blank">https://rclone.org/</a>
</center>
<br>
<p>
ArchLinuxの場合、公式リポジトリにrcloneパッケージがあるので、
インストールは簡単!
次のコマンドですぐにインストール出来ます。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S rclone
</code></pre>
<br />
<p>
rcloneは、事前にクラウドストレージ毎の登録設定を行なっておくことで、
どのクラウドストレージであっても、コマンドライン上では、同じように扱うことが出来るようになります。
</p>
<br>
<p>
rcloneでストレージの登録設定を行なう時に、ストレージの名前を付けます。
そして、rcloneのコマンドでは、各クラウドストレージをこの名前で扱います。
例えば、自分のもっているGoogleDriveを「nekogoogledrive」と名付け、
そこへ、~/Documentsをバックアップする場合、次の様なコマンドになります。
</p>
<br>
<pre class="commandline"><code>$ rclone sync ~/Documents nekogoogledrive:
</code></pre>
<br /><br />
<p>
一方で、自分のもっているdropboxのクラウドストレージを「nekodropbox」と名付け、
そこへ、~/Documentsをバックアップする場合、次の様なコマンドになります。
</p>
<br>
<pre class="commandline"><code>$ rclone sync ~/Documents nekodropbox:
</code></pre>
<br /><br />
<p>
この様に、rcloneを使えば、クラウドストレージの種類を気にする事なく、
コマンドラインから皆おなじように使うことが出来るようになります。
</p>
<br>
<h3>Rcloneにクラウドストレージを登録する</h3>
<p>
rcloneを使う場合に一番はじめにすることは、自分の使っているクラウドストレージをrcloneに登録することです。
rcloneのウェブページでは40以上のクラウドストレージに対応していると書かれています。
</p>
<br>
<p>
rcloneの設定は、
コンソール上で次のコマンドを実行して始める事が出来ます。
</p>
<br />
<pre class="commandline"><code>$ rclone config
</code></pre>
<br />
<p>
rclone configは、ターミナル上で対話形式で設定を行っていきます。
まずは、名前を決め、
自分の扱うクラウドストレージの種類を選択し、
そのストレージ毎に設定すべき項目(ストレージアクセスの認証方法等)を設定していきます。
</p>
<br />
<h3>GoogleDriveをrcloneに登録</h3>
<p>
設定の例として、GoogleDriveを登録設定を紹介しましょう。
GoogleDriveは、誰でも簡単に無料で利用できるクラウドストレージのひとつです。
Googlelアカウントを作成すれば利用出来るようになります。
</p>
<br>
<h4>新しい設定</h4>
<p>
rclone configコマンドを実行すると、
一番始めに、設定のメニューが出ます。
ここで、プロンプトに「 <font color="red">n</font> 」を入力して、
新しいリモートストレージ設定を開始します。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj3LQz6D5AhUcloHHnurNXgfHy_Wcxwpb84Va4Z7SM5J28LbhGx1L-bzjdekcuVyNXCEc8kfWRHb8mdptyufkgAzYct-NzREyV69iz2ysDaWTV-r5aQl2n9bseh11sll23dRCwWL2n74Kp4k7boahI4anuJ3LmVS6CkTAdS7Z_JhbAg2eD13swI7eoo=s916" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="563" data-original-width="916" src="https://blogger.googleusercontent.com/img/a/AVvXsEj3LQz6D5AhUcloHHnurNXgfHy_Wcxwpb84Va4Z7SM5J28LbhGx1L-bzjdekcuVyNXCEc8kfWRHb8mdptyufkgAzYct-NzREyV69iz2ysDaWTV-r5aQl2n9bseh11sll23dRCwWL2n74Kp4k7boahI4anuJ3LmVS6CkTAdS7Z_JhbAg2eD13swI7eoo=s600"/></a></div>
<h4>名前を付ける</h4>
<p>
一番始めに、このストレージの名前を決めます。
nameプロンプトに好きな文字列を入力します。
つまり、先に紹介した様にrcloneコマンドライン上でのクラウドストレージの呼び名になります。
</p>
<br />
<p>
例えば「お洒落な気分でGoogleストレージ」を略して、
「<font color="red">okgstrage</font>」とするならば、プロンプトに次のように入力します。
</p>
<br />
<pre class="commandline"><code>name> <font color="red">okgstrage</font>
</code></pre>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi11i2gqhFl7HArCwO9Wg8yIpUDGk4xoffFCxLEEQ5HbcD2-xElqXAf0Z8QvF4vlcVFbtZKGCF_YKrzxJkbyTEtXjc-skrtX6qe1HsKWRehCOke4iflgyhqpaHY0F8Ym7TKAKHlf2NcFjaBFhpB3P0dS61k4ejkonx5mQASjKO1YAH5GXMXvLRp37Jn=s916" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="563" data-original-width="916" src="https://blogger.googleusercontent.com/img/a/AVvXsEi11i2gqhFl7HArCwO9Wg8yIpUDGk4xoffFCxLEEQ5HbcD2-xElqXAf0Z8QvF4vlcVFbtZKGCF_YKrzxJkbyTEtXjc-skrtX6qe1HsKWRehCOke4iflgyhqpaHY0F8Ym7TKAKHlf2NcFjaBFhpB3P0dS61k4ejkonx5mQASjKO1YAH5GXMXvLRp37Jn=s600"/></a></div>
<p>
そして、このokgstrageが、rcloneコマンドライン上でのクラウドストレージの呼び名になるので、
先に紹介したバックアップのコマンドならば、具体的に次の様に使われる様になります。
</p>
<br />
<pre class="commandline"><code>$ rclone sync ~/Documents <font color="red">okgstrage</font>:
</code></pre>
<br /><br />
<h4>google driveを選択する</h4>
<p>
名前の入力が終ると、
rcloneで扱うことの出来る世界中のストレージサービスの一覧が表示されます。
google driveもこの中に記載されているはずですが、
ターミナルの上の方へ流れてしまっているかもしれません。
ターミナルのスクロール機能で戻って確認してみて下さい。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhod5FybjkT6B7qWRY9lipkq3yYuk_PzNVPeJYFaJ5lGha_IYBmwxJogsnAYrZpaxBEpaGS2tHS0BlzpKKIa1UIDQ55Q3HleQPQYfR1KXUMxHSOLUAB0gaWZagz6IDfY2NPNCPBHqSpJruNE5o0W6w9L9GJasvMGAjN4sOKQ65SB142jW4fzUHhh6D9=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEhod5FybjkT6B7qWRY9lipkq3yYuk_PzNVPeJYFaJ5lGha_IYBmwxJogsnAYrZpaxBEpaGS2tHS0BlzpKKIa1UIDQ55Q3HleQPQYfR1KXUMxHSOLUAB0gaWZagz6IDfY2NPNCPBHqSpJruNE5o0W6w9L9GJasvMGAjN4sOKQ65SB142jW4fzUHhh6D9=s600"/></a></div>
<p>
ここで、Strageと書かれたプロンプトには、該当する「数字」か「文字列」のどちらかを入力します。
Google Driveの場合、数字ならば16(数字はいつも16に決っているわけではないので、必ず一覧で確認が必要です)、
文字列ならば drive と入力します。
</p>
<br />
<pre class="commandline"><code>Strage> drive
</code></pre>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhcDv2WYXtkmhSLCVmvLvfX2NPIbiqDnXHBkd7RrjnxtG-EXdp-YHe__Wxf4llFMMo44XnlyFTzr66jEalC-uMNDrHCwi4FkBs75u9H3eajNYB0t9mf9UaF6_eMVONwUJ6FkcfVt_Iq5g8fbdzW07ez8xopSBUMj1b_tAvihRL7ljO9_UFBs69nc4SI=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEhcDv2WYXtkmhSLCVmvLvfX2NPIbiqDnXHBkd7RrjnxtG-EXdp-YHe__Wxf4llFMMo44XnlyFTzr66jEalC-uMNDrHCwi4FkBs75u9H3eajNYB0t9mf9UaF6_eMVONwUJ6FkcfVt_Iq5g8fbdzW07ez8xopSBUMj1b_tAvihRL7ljO9_UFBs69nc4SI=s600"/></a></div>
<h4>Google APIを利用するためのコード</h4>
<p>
何かのプログラムがGoogle Driveに接続するAPIを利用する際、
そのサービスを受けるためのIDとパスワードが必要となります。
次の設定項目ではそのためのIDとパスワードの入力が促されます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg3wEQ9o5Y3KFCwf1M9TxB5djzxhVPNl_y--aXeq5dhiwBe8IFl0IK7RsRSvlqIjS-y5NRN1cwcx-3gimzX6T-HHjYYal01PBSTUz4U6MgxtSS_7cDmv_rZxzrHdMhKtdcurL0AVundyt30wRK-7zJKmq-3QlB7wguRHk1kvQcuKWf9XSgiAxF-LWhz=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEg3wEQ9o5Y3KFCwf1M9TxB5djzxhVPNl_y--aXeq5dhiwBe8IFl0IK7RsRSvlqIjS-y5NRN1cwcx-3gimzX6T-HHjYYal01PBSTUz4U6MgxtSS_7cDmv_rZxzrHdMhKtdcurL0AVundyt30wRK-7zJKmq-3QlB7wguRHk1kvQcuKWf9XSgiAxF-LWhz=s600"/></a></div>
<p>
しかし、これらIDとパスワードをrclone自体が内部で用意してくれているので、
まずは、それを利用することとします。
(このIDとパスワードは、自分の持っているGoogleDriveにアクセスするためのID、パスワードではありません)
そこで、client_idプロンプトについては空欄のままエンターキーを押します。
続いて、client_secretプロンプトも同様に空欄のままエンターキーを押します。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEja3uCMGOSRnRPf0swnwC1hkO37dbu4v3Sn-gn3V0Jexib2OBr9NuAf0NGDuSDFBJCpkdZ5DTXcPmBpKIqho3jcVKthyAfquUvp21SXCfX20H3cy4wn4spbGf5Kc5GqmSLYZxCdQ_Kczg2A-j7l5hzvKg-0z7CD3L7NgpLHGDYWmdUAr81iW7Ou1k9o=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEja3uCMGOSRnRPf0swnwC1hkO37dbu4v3Sn-gn3V0Jexib2OBr9NuAf0NGDuSDFBJCpkdZ5DTXcPmBpKIqho3jcVKthyAfquUvp21SXCfX20H3cy4wn4spbGf5Kc5GqmSLYZxCdQ_Kczg2A-j7l5hzvKg-0z7CD3L7NgpLHGDYWmdUAr81iW7Ou1k9o=s600"/></a></div>
<p>
これで、rclone自身が用意しているIDとパスワードで、
Google driveの接続APIが利用出来る様になります。
</p>
<br />
<p>
但し、rclone自身が用意しているIDとパスワードは、
rcloneを利用する人すべてで共有することになり、
Google側での時間単位での利用量制限等にひっかかると思われ、
パフォーマンスが落ちることが予想されます。
</p>
<br />
<p>
ですから、設定が終ってrcloneが動くことが確認できたら、
自分用のAPI利用のためのIDとパスワードを取得して、
これに再設定することで、パフォーマンスを改善することが出来ます。
</p>
<br />
<p>
自分用のAPI利用のためのIDとパスワード(client id, client secret)の取得については、
<a href="https://rclone.org/drive/#making-your-own-client-id" target="_blank" >https://rclone.org/drive/#making-your-own-client-id</a>
に説明がありますが、日本語では、次のサイトが参考になります。
</p>
<br />
<ul>
<li><a href="https://www.nextdoorwith.info/wp/se/how-to-control-google-drive-from-linux-rclone/" target="_blank">LinuxでGoogle Driveを操作(rcloneの使い方)</a></li>
<li><a href="https://blog.serverworks.co.jp/2021/01/08/130956" target="_blank">GoogleAPI、OAuth2.0の有効化の手順</a></li>
</ul>
<br />
<br />
<p>
自分でAPIを利用したプログラムを開発するわけではないので、詳しくOAuth2.0のことを理解する必要はありません。
Google Cloud Platformのページから、rclone用のクライアントIDとクライアントシークレットと呼ばれるものを入手できれば、
それでOKです。
ここでのアカウントは、利用するGoogleDriveのアカウントとは関係ありません。
同じでも良いですし、開発用(例えば、google apiの管理用に使っているアカウント)のものでもかまいません。
Google Cloud Platformで、rclone用のプロジェクトを作成し、google drive 用のapiを有効にし、
OAuth2の認証設定を行なうことで、クライアントIDとクライアントシークレットを手に入れることが出来ます。
</p>
<br />
<h4>アクセス権限の範囲</h4>
<p>
次の設定は、
Google Driveの操作について、
読み込みのみ可能で書き込み禁止等の制限の範囲を決定します。
ここではフルアクセス可能な1番でいきましょう。
scopeプロンプトに数字の1を入力します。
ここの入力も文字列でも可能です。文字列の場合は「drive」です。
</p>
<br />
<pre class="commandline"><code>scope> 1
</code></pre>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEilQMuNWOWCViZqpF5wXrmqstdoT-fPlpMRhzWak_i24XIiHwwqkwxEt4B0d13VsTAFIKNz3zuf3zvkHdnX8biu4M8VMl19T9ISC8UTBs3AOWIqweDCZbE-3Fvd5HynyYTnVWa9adri-9DlPcKqN_-toWY6y-d1-1feXcDn5S4kceT8LD1fJ23mRTAq=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEilQMuNWOWCViZqpF5wXrmqstdoT-fPlpMRhzWak_i24XIiHwwqkwxEt4B0d13VsTAFIKNz3zuf3zvkHdnX8biu4M8VMl19T9ISC8UTBs3AOWIqweDCZbE-3Fvd5HynyYTnVWa9adri-9DlPcKqN_-toWY6y-d1-1feXcDn5S4kceT8LD1fJ23mRTAq=s600"/></a></div>
<h4>rootフォルダの設定</h4>
<p>
接続するGoogle Driveのrootフォルダを変更する場合には、
ここで設定をおこないます。
普通は変更しないのでroot_folder_idプロンプトは
空欄のままエンターキーを押せばOKです。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEirJLP_qRjnj8ZZt97_xQmSrBv0sDYHKuGEXs28KJiTotxPjcMsLPMylzoaBsVpiNfRh2vgVAjxuL0uVo9anNIJXJrqweoqGk-xnM__x1tlko2sHCOt4xT8Y7REZ51K5tkIVa3ovg9V1TsPgY0fo5HW_CEokudDj6Izd7nMeyCYMSyKryQLx4svCkqS=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEirJLP_qRjnj8ZZt97_xQmSrBv0sDYHKuGEXs28KJiTotxPjcMsLPMylzoaBsVpiNfRh2vgVAjxuL0uVo9anNIJXJrqweoqGk-xnM__x1tlko2sHCOt4xT8Y7REZ51K5tkIVa3ovg9V1TsPgY0fo5HW_CEokudDj6Izd7nMeyCYMSyKryQLx4svCkqS=s600"/></a></div>
<h4>サービスアカウントファイルの設定</h4>
<p>
サーバーマシンのように、インタラクティブ環境の無いマシンでの認証のために
サービスアカウントファイルというものがあり、
それを利用する場合にそのファイルパスを設定します。
しかし、通常はこれを利用しないので、
service_account_fileプロンプトに対しては、
空欄のままエンターキーを押せばOKです。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjuXPEmxICu3bzJDk8HbDHrqVpw6xyo01SitIr2r5EOhdp9OSzCwBYeUGYY99WhYH5Sfb4alfSIenApifsi9aGH4mrgLpuj4qmXUn6DLjDMrIMYqUjsXEVkK_i3L0K_fYC7SkHGgYcAMIFnxkvuSOACYjCPOCjOuk6NrxpFXqyiLQSoAKrTrHA4rQuN=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEjuXPEmxICu3bzJDk8HbDHrqVpw6xyo01SitIr2r5EOhdp9OSzCwBYeUGYY99WhYH5Sfb4alfSIenApifsi9aGH4mrgLpuj4qmXUn6DLjDMrIMYqUjsXEVkK_i3L0K_fYC7SkHGgYcAMIFnxkvuSOACYjCPOCjOuk6NrxpFXqyiLQSoAKrTrHA4rQuN=s600"/></a></div>
<h4>詳しい設定</h4>
<p>
より詳細な設定として advanced config を行なうか聞かれます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgOO71jCq43pCXDkU1ZXX6YMhWQz4J3pd4RJe3kbJeUyX2XYMeDj_YbFGUcDun1V0uD_-awiB5MvfdT5vQZtdT8aGEbUQbFmJxrVezXk6_Ocdah6hO-ecn723HJSUVaRlA2KlW7p4Hiy8JnNVwL_toVKlsUt0Y7N5JDIuDf-tAnK_-rouI9snUNAknD=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEgOO71jCq43pCXDkU1ZXX6YMhWQz4J3pd4RJe3kbJeUyX2XYMeDj_YbFGUcDun1V0uD_-awiB5MvfdT5vQZtdT8aGEbUQbFmJxrVezXk6_Ocdah6hO-ecn723HJSUVaRlA2KlW7p4Hiy8JnNVwL_toVKlsUt0Y7N5JDIuDf-tAnK_-rouI9snUNAknD=s600"/></a></div>
<p>
ここでは特に設定する必要が無いので、プロンプトに対して n を入力します。
</p>
<br />
<pre class="commandline"><code>y/n> n
</code></pre>
<br />
<h4>GoogleDriveアカウントの認証</h4>
<p>
接続するGoogleDriveアカウントの認証を行ないます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi6k2CGsmKaiVwNnmddTrinC_tkSjtym9YB_Wz9xyAyakhdPbubRRgqRaYYHiKIuW_c5kaL5blANsXuujOKDfk7rhKqLBgoEiOhFL_dND7uKnSb9OTyyui20yY02075FnTsbSxwh7d_vyjYC-irid0dKsp6lfyuCzLzn76ujobZ4eT3-1zzqdLirYja=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEi6k2CGsmKaiVwNnmddTrinC_tkSjtym9YB_Wz9xyAyakhdPbubRRgqRaYYHiKIuW_c5kaL5blANsXuujOKDfk7rhKqLBgoEiOhFL_dND7uKnSb9OTyyui20yY02075FnTsbSxwh7d_vyjYC-irid0dKsp6lfyuCzLzn76ujobZ4eT3-1zzqdLirYja=s600"/></a></div>
<p>
認証のための手続きをrcloneに自動でやってもらうために、
プロンプトには y を入力します。
</p>
<br />
<pre class="commandline"><code>y/n> y
</code></pre>
<br />
<p>
そうすると、自動的にブラウザが起動され、
googleアカウントへのログインページが開かれます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhtQw3CHwtQLO0r8pJ_KV75nlZ5yY7B_u8D0PzMDV-aQFncTwSwpVEMGPuBEemrzdHzk5hrfkW-hqHU8USCqIbHLFAal-i58GLFsmVzhbFEgL05HdLvhVN0E3keOeDx_BzKvLbPXWXRgkIXXMmi0BLEEvkvTGDIH-2C2QiuWYUofSSSR1JnYHt1M57M=s830" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="830" data-original-width="802" src="https://blogger.googleusercontent.com/img/a/AVvXsEhtQw3CHwtQLO0r8pJ_KV75nlZ5yY7B_u8D0PzMDV-aQFncTwSwpVEMGPuBEemrzdHzk5hrfkW-hqHU8USCqIbHLFAal-i58GLFsmVzhbFEgL05HdLvhVN0E3keOeDx_BzKvLbPXWXRgkIXXMmi0BLEEvkvTGDIH-2C2QiuWYUofSSSR1JnYHt1M57M=s600"/></a></div>
<p>
Google Driveを利用するアカウントのIDとパスワードを入力します。
すると、次のようにrcloneがこのアカウントのGoogle Driveを操作することを許可するかどうか尋ねる画面になります。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgkdpfZPVmvmiyO_K8rF8Ea5PMGMUhhn9Gd9vBlzw_zorXwRiamTDkSRWF6JEhkuwVBH8gB1llj56ynP6u4wW86I8CyJiSd9-hVYOmMSLYoBjs6KP1uT2Rbz1VMWHjVOWpXSVJU2NKHXMEdTzs8u2oAHlBbrmaDOarPuFc_q7f9LTP1m0pUiE03CD0t=s830" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="830" data-original-width="802" src="https://blogger.googleusercontent.com/img/a/AVvXsEgkdpfZPVmvmiyO_K8rF8Ea5PMGMUhhn9Gd9vBlzw_zorXwRiamTDkSRWF6JEhkuwVBH8gB1llj56ynP6u4wW86I8CyJiSd9-hVYOmMSLYoBjs6KP1uT2Rbz1VMWHjVOWpXSVJU2NKHXMEdTzs8u2oAHlBbrmaDOarPuFc_q7f9LTP1m0pUiE03CD0t=s600"/></a></div>
<p>
ここで、下の方にある「Allow(許可)」ボタンをクリックします。
</p>
<br />
<p>
認証手続が自動的に行なわれ、
認証に成功すると、ブラウザに次の様な表示があらわれます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgpAqcWD9bTaMRwIqpcRBqXNJiJ8z9V5xlSi74fwMKL_nFXLkbf8qMk05v5c1DkiC4099_VjLXaS7Rsuc71i0rGm_9TOKcsVAJW3sXEjWx19QQcIuprI2AlKBneleuclA4xdpIklY-S87rVcH4y8ykuj4yWAp7D7bbCGAZo5jOoe__SX0I03nOhvd7j=s830" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="830" data-original-width="802" src="https://blogger.googleusercontent.com/img/a/AVvXsEgpAqcWD9bTaMRwIqpcRBqXNJiJ8z9V5xlSi74fwMKL_nFXLkbf8qMk05v5c1DkiC4099_VjLXaS7Rsuc71i0rGm_9TOKcsVAJW3sXEjWx19QQcIuprI2AlKBneleuclA4xdpIklY-S87rVcH4y8ykuj4yWAp7D7bbCGAZo5jOoe__SX0I03nOhvd7j=s600"/></a></div>
<p>
これで、利用するGoogleDriveアカウントの認証作業は終わりです。
ブラウザは終了してかまいません。
次の作業はまたコンソールで行ないます。
</p>
<br />
<h4>チームドライブの設定</h4>
<p>
チームドライブの設定をここで行なうことが出来ます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjmH9mPHdfzY_jSxWuM8JS0prSA9i0ZRN3n-Sfl1elz0f7dJHJGpNJ_Kjjlo4cmydc-93-zVoSkjzEGnQ-NuH_hOznUQcA2BkLk2Oqxx-7xV144QfJr27nmIljcv-L5-6R3w-CyChWNn8XWDQCslVzSi0sBsxYZjtqgFddrMBtRSav-Wxj4IY3xE3pW=s864" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="584" data-original-width="864" src="https://blogger.googleusercontent.com/img/a/AVvXsEjmH9mPHdfzY_jSxWuM8JS0prSA9i0ZRN3n-Sfl1elz0f7dJHJGpNJ_Kjjlo4cmydc-93-zVoSkjzEGnQ-NuH_hOznUQcA2BkLk2Oqxx-7xV144QfJr27nmIljcv-L5-6R3w-CyChWNn8XWDQCslVzSi0sBsxYZjtqgFddrMBtRSav-Wxj4IY3xE3pW=s600"/></a></div>
<p>
しかし、ここでは使わず、プロンプトに n を入力します。
</p>
<br />
<pre class="commandline"><code>y/n> n
</code></pre>
<br />
<h4>行なった設定の確認</h4>
<p>
ここまで設定してきた内容の確認画面になります。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgqIcJ9LXkc_9EzHWOlyAQ_mpTSOvOho63GfIE9Hf9Ga6sEeRWnOqsq0FEIp66P75bn8cvtTNZ6eX4Yq3obA84I-vI5kubrY640HJJYdKsqX27T3_17QS7HF6YTF8OKHiFDM5xVL0vO_AMNHiU3FkuYGJA50upZq5VLdvBIo-qAmNHBCS5YEVGCSXcZ=s916" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="563" data-original-width="916" src="https://blogger.googleusercontent.com/img/a/AVvXsEgqIcJ9LXkc_9EzHWOlyAQ_mpTSOvOho63GfIE9Hf9Ga6sEeRWnOqsq0FEIp66P75bn8cvtTNZ6eX4Yq3obA84I-vI5kubrY640HJJYdKsqX27T3_17QS7HF6YTF8OKHiFDM5xVL0vO_AMNHiU3FkuYGJA50upZq5VLdvBIo-qAmNHBCS5YEVGCSXcZ=s600"/></a></div>
<p>
確認出来たらプロンプトに対して y 入力します。
</p>
<br />
<pre class="commandline"><code>y/e/d> y
</code></pre>
<br />
<h4>設定を終了する</h4>
<p>
これで「okgstrage」の設定は完了し、
rclone configの一番始めのメニュー画面に戻ります。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgciT61JvoCEGXNadRw_v595wxUR1S_5GKRMOMg3kUECHskmAZKZo0KT3j3PL8DlgofRTBjNOv6rlMEidw5a_P6zZCF479yghaLVjoJKHLBcJy4VWiXMy6wObh7shueVa9SbIfq1luny479Lq_8xGm-oHxHWomRpOktVu5HCgMqHhc7Q2sGgIHENqzz=s916" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="563" data-original-width="916" src="https://blogger.googleusercontent.com/img/a/AVvXsEgciT61JvoCEGXNadRw_v595wxUR1S_5GKRMOMg3kUECHskmAZKZo0KT3j3PL8DlgofRTBjNOv6rlMEidw5a_P6zZCF479yghaLVjoJKHLBcJy4VWiXMy6wObh7shueVa9SbIfq1luny479Lq_8xGm-oHxHWomRpOktVu5HCgMqHhc7Q2sGgIHENqzz=s600"/></a></div>
<p>
rclone configを終了するには、
プロンプトに q を入力します。
</p>
<br />
<pre class="commandline"><code>e/n/d/r/c/s/q> q
</code></pre>
<br />
<p>
以上で、Google driveをrcloneで使うための設定は終りです。
</p>
<br />
<p>
次回から、rclone configコマンドを実行すると、
「Current remotes」に、自分登録したクラウドストレージ名(ここでは、okgstrage)が表示されるはずです。
</p>
<br />
<h3>rcloneのテスト</h3>
<p>
まずは解りやすいように、
事前にWebブラウザ等経由で、GoogleDrive上にファイルやディレクトリを作っておきましょう。
準備が出来たら、次のコマンド実行します。
「okgstrage」の部分は、あなたの登録したストレージ名にします。
</p>
<br />
<pre class="commandline"><code>$ rclone lsd okgstrage:
</code></pre>
<br />
<p>
rclone lsdコマンドは、引数にあたえたリモートストレージのディレクトリを表示します。
</p>
<br />
<p>
次は、rclone lsコマンドを試してみましょう。引数にあたえたリモートストレージのファイルを表示します。
</p>
<br />
<pre class="commandline"><code>$ rclone ls okgstrage:
</code></pre>
<br />
<p>
最後は、rclone copyコマンドを試してみましょう。引数にあたえたリモートストレージにファイルをコピーします。
</p>
<br />
<pre class="commandline"><code>$ rclone copy ~/Documents/hoge.txt okgstrage:
</code></pre>
<br />
<p>
rclone copyコマンドは、逆もしかりです。
</p>
<br />
<pre class="commandline"><code>$ cd ~/tmp
$ rclone copy okgstrage:hoge.txt .
</code></pre>
<br />
<h3>rcloneでできること</h3>
<p>
rcloneで出来ることの一覧がrcloneのページにあります。
</p>
<br />
<a href="https://rclone.org/#features" target="_blank">https://rclone.org/#features</a>
<br />
<br />
<p>
上述のページで紹介されている主な機能は以下のようなものです。
</p>
<br />
<ul>
<li><a href="https://rclone.org/commands/rclone_copy/" target="_blank">copy</a></li>
<li><a href="https://rclone.org/commands/rclone_sync/" target="_blank">sync</a></li>
<li><a href="https://rclone.org/commands/rclone_move/" target="_blank">move</a></li>
<li><a href="https://rclone.org/commands/rclone_mount/" target="_blank">mount</a></li>
</ul>
<br />
<br />
<p>
この中でもリモートストレージを「mount」して利用するのが便利なので、
別のノート
<a href="http://neko-mac.blogspot.com/2022/03/rclone_22.html" target"_blank">「rcloneでGoogleDriveとかDropBoxとかをお洒落にマウントする」</a>で紹介したいと思います。
</p>
<br />shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-17788614318735138832022-02-26T11:45:00.038+09:002022-02-27T18:29:21.620+09:00bloggerに投稿するお洒落なvimプラグインを作ってみた<h3>bloggerに投稿するvimプラグイン</h3>
<p>
vimでbloggerの投稿記事を編集して、
bloggerへアップロードするためのvimプラグイン
「<a href="https://github.com/syunsuke/okblogger.vim" target="_blank">okblogger.vim</a>」を
作り始めました。
</p>
<br />
<div class="separator" style="clear: both;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhBbGgk1q_BEzyy6ULrbJbaO_2G2Dr6zFUlkmrlhAIveQv6Qslyx-uRAdxMIceoYdtgih4XxMgLV4gC7fLPNw3DKpZAD0wl383woBIRmIIKPtc8sLJvvCAaE3gvxUdQSj3q7X6l6priZ19ULpc9ckp6w8475MnQUSxUfwCxDHd18Ax2ggVxJloxmVyn=s1066" style="display: block; padding: 1em 0px; text-align: center;">
<img alt="" border="0" data-original-height="837" data-original-width="1066" src="https://blogger.googleusercontent.com/img/a/AVvXsEhBbGgk1q_BEzyy6ULrbJbaO_2G2Dr6zFUlkmrlhAIveQv6Qslyx-uRAdxMIceoYdtgih4XxMgLV4gC7fLPNw3DKpZAD0wl383woBIRmIIKPtc8sLJvvCAaE3gvxUdQSj3q7X6l6priZ19ULpc9ckp6w8475MnQUSxUfwCxDHd18Ax2ggVxJloxmVyn=s600" width="600" />
</a>
</div>
<p style="text-align: center;">
<a href="https://github.com/syunsuke/okblogger.vim">https://github.com/syunsuke/okblogger.vim</a>
</p>
<br>
<p>
このプラグインはmetarw-vimを使って、bloggerの投稿記事をファイルとして読み書きする仕組みになっています。
</p>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjE0A_hMS3id6ulPK_27zDHUVX4gFpPha_EL82TVhwqSlbMAHZ85J-MZNHPatje_QnLmK6j-czSeGlyiqfoY69PF1YH6xjgmvmBM8_tNBmn5vPoB6a_HfZkq7bqukYAaPAC1_-sTxiIildt-cVIClRfVZk4yINIw2WNvt7I74lA0D-B60tp2EUjKG_4=s1920" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEjE0A_hMS3id6ulPK_27zDHUVX4gFpPha_EL82TVhwqSlbMAHZ85J-MZNHPatje_QnLmK6j-czSeGlyiqfoY69PF1YH6xjgmvmBM8_tNBmn5vPoB6a_HfZkq7bqukYAaPAC1_-sTxiIildt-cVIClRfVZk4yINIw2WNvt7I74lA0D-B60tp2EUjKG_4=s600"/></a></div>
<p>
今まで、試験用のブログで試していましたが、
だいぶん、普通に使えるようになってきたので、
いつも書いている実際のブログでテスト中です。
</p>
<br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhp0Dk-GqfvsOJV5aztl2qb3RVbP6xNxECWfkzGRp8H4PWUoaCANazKtC5RX2pIlfkgZqcoh3o4wxUFLT_mQCGxrA0Ck-ZoCfeFeW1zYn4NbNyktFXN6dlUx4T1AkH91jOPjqBQSV_b-tX2B1CEnfsnR_3509hyh83DzdzN7_56XCXHiIAm6isJmBY0=s1920" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEhp0Dk-GqfvsOJV5aztl2qb3RVbP6xNxECWfkzGRp8H4PWUoaCANazKtC5RX2pIlfkgZqcoh3o4wxUFLT_mQCGxrA0Ck-ZoCfeFeW1zYn4NbNyktFXN6dlUx4T1AkH91jOPjqBQSV_b-tX2B1CEnfsnR_3509hyh83DzdzN7_56XCXHiIAm6isJmBY0=s600"/></a></div>
<p>
そう、この投稿自体、okblogger.vimを利用して編集中で、
まさに、記念すべき第一号投稿なんですよーー!!
</p>
<br>
<h3>okblogger.vimとは</h3>
<p>
okblogger.vimは、
bloggerを制御するgoogle apiを利用して、
vim上で、記事(post)の一覧の取得し、
その一覧から選択したひとつの記事内容の取得してvimのバッファに呼び出します。
そして、バッファ内の記事内容を編集したら、
それをbloggerへアップデートすることが出来るように作っています。
</p>
<br>
<p>
まだ、あまりvimスクリプトのことをわからずに見様見真似で作っているので
邪悪なことをしている部分があるかもしれませんし、
はっきり言って機能的には制限だらけですが、
とりあえず、「vim上で編集して、アップロードできる」という、
僕のしたいことが形になったので、自己満足中です。
</p>
<br>
<p>
これから付け足そうかなぁとおもっている機能は、
新規記事の作成と、タグの編集機能です。
私的には、これらは別にvimからやらなくてもいいなぁと思っているので、
気が向いたらやってみようかなぁ?という程度です。
</p>
<br>
<p>
それよりも、vimスクリプト部分を見直して、
ほかの「本物のvimプラグイン」をよく見て勉強して、
vimスクリプトらしい書き方にしたいなぁと思ってるところです。
</p>
<br>shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-25126659953850987342022-02-11T00:53:00.000+09:002022-02-11T00:53:41.776+09:00シェルでお洒落に一括処理<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgvrSRA0SVZ443i3-5ExZCIO45g7QFLTU0TqxKiObUb-mVuw0PCX3BbNnkmqxJQzIPqI9FuGp21SWCSb5_h64hITJUtF1gfKbgi6vseeLi7fyeiHENvCdAkcobsu3SYQmrrlTAThefYKa_cNHyWXdq9NbmQxcvW5MoFX_QJkGip_lIcuPTYWKQJNc4f=s1378" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="773" data-original-width="1378" src="https://blogger.googleusercontent.com/img/a/AVvXsEgvrSRA0SVZ443i3-5ExZCIO45g7QFLTU0TqxKiObUb-mVuw0PCX3BbNnkmqxJQzIPqI9FuGp21SWCSb5_h64hITJUtF1gfKbgi6vseeLi7fyeiHENvCdAkcobsu3SYQmrrlTAThefYKa_cNHyWXdq9NbmQxcvW5MoFX_QJkGip_lIcuPTYWKQJNc4f=s600" width="600" /></a></div>
<p>
Linuxを使って間もない人は、ついつい、
</p>
<br />
<p style="text-align: center;"><span style="color: red; font-size: large;">
大量のファイル名変換とかは、<br />
コマンドラインからやったほうが便利なんですわ~
</span></p>
<br />
<p>
なんてことをつい口走ったりしてそうですが、
実際に「じゃぁ、君に任せるよ」とか言われてあたふたしているかもしれません。
そんな人にこのノートはこっそり役立ちます。
実際に、ばーーーっと、一括処理書けるようになりましょう。
</p>
<br />
<h3>シェルのfor構文パターン</h3>
<p>
処理を繰り返すための手段として、
まずは、シェルのfor構文を使うパターンがあります。
</p>
<br />
<p>
はじめに実際の処理を見てみましょう。
カレントディレクトリ内の拡張子が.txtのファイル全てのファイル名の頭に「hoge_」という文字列を追加する処理の例は以下のようになります。
</p>
<br />
<pre class="commandline"><code># shell script
<span style="color: red;">for</span> i <span style="color: red;">in</span> <span style="color: blue;">*.txt</span>
<span style="color: red;">do</span>
mv ${i} hoge_${i}
<span style="color: red;">done</span>
</code></pre>
<br /><br />
<p>
for構文の書式パターンは次のようになっています。
</p>
<br />
<pre class="commandline"><code># for構文の書式
<span style="color: red;">for</span> 変数 <span style="color: red;">in</span> 対象となるもののリスト
<span style="color: red;">do</span>
処理コマンド
<span style="color: red;">done</span>
</code></pre>
<br /><br />
<p>
for構文では、次の2点を意識して、理解することで、
色んなパターンに応用できるようになります。
</p>
<br />
<h4>処理対象となるものはグロッピングで表現</h4>
<p>
まずは、for構文に渡す「対象となるもののリスト」に着目します。
先の具体例においては「<span style="color: blue;">*.txt</span>」となっている部分です。
</p>
<br />
<p>
実はこの普段ワイルドカードとか言って何気なく使っている「*」は、
「シェル自身」がファイル名に一致するものに置き換えてくれるメタ文字です。
そして、このシェル自身がファイル名に置き換えてくれる機能のことを
「グロッビング」や「ファイル名置換」と呼んでいます。
ですから、シェルスクリプトの中で、
実際のファイル名を扱いたい場合は、
この自動的にファイル名に置き換えてくれるグロッビング機能を使うのがコツなのです。
この際、シェルが実行される時のカレントディレクトリには注意が必要だということを忘れないでおきましょう。
</p>
<br />
<p>
もちろん、スクリプト側でメタ文字を使って、対象ファイルを選別するのも良いですが、
複雑になりそうな場合は、
対象としたいファイルだけをある特定のディレクトリに手動で取り出してしまうのが
簡単で確実な場合もあります。
そうすれば、
ディレクトリ内の全てのファイルが対象となるので、
対象となるリスト表現は「*」とすれば良いだけになります。
</p>
<br />
<p>
この対象リスト部分を手動で出書きすれば以下のような形になります。
</p>
<br />
<pre class="commandline"><code># shell script
<span style="color: red;">for</span> i <span style="color: red;">in</span> 001.txt 002.txt 003.txt 004.txt
<span style="color: red;">do</span>
mv ${i} hoge_${i}
<span style="color: red;">done</span>
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEghe-BiTT7Rg5KF3WzQK_8O9Yn9vsF7tNvqQCraQz4KW-S9yJ4B4KIoitKHf57weT5RlZ2Z0kIAsnRFARlQz31kw4qc1lmv9dnFi12mGB5UbSED4QuGlC9mCTsbG_3qIdJHNExE_SOTwqvIg0iAxQE7LaoVzKCHwTlT2pOY0ij4t9nxTmHzBq-NeICk=s961" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="580" data-original-width="961" src="https://blogger.googleusercontent.com/img/a/AVvXsEghe-BiTT7Rg5KF3WzQK_8O9Yn9vsF7tNvqQCraQz4KW-S9yJ4B4KIoitKHf57weT5RlZ2Z0kIAsnRFARlQz31kw4qc1lmv9dnFi12mGB5UbSED4QuGlC9mCTsbG_3qIdJHNExE_SOTwqvIg0iAxQE7LaoVzKCHwTlT2pOY0ij4t9nxTmHzBq-NeICk=s600" width="600" /></a></div>
<h4>変数展開</h4>
<p>
先の例で見た「i」は「変数」です。
そして、シェルにおいて変数の内容を取り出すことを「変数展開」等と呼びます。
これは、コマンド実行処理の前に
シェルスクリプトの中で「${i}」という書式で書いておけば
iの内容である値に「置き換える」処理をシェルがしてくれることを指します。
</p>
<br />
<p>
そして、実は、変数展開は単純にその内容の値に置き換えるだけではなくて、
良くある文字列処理を同時にさせるためのオプションがあります。
</p>
<br />
<p>
例えば、上記具体例のようにファイル名の先頭になにか特定の文字列を付け加えたりするだけなら、
単純な変数展開を使って簡単に表現できます。
しかし、拡張子を’.txt’から'.py'に書き換えたいとしたらどうでしょう?
そんな時に使えるのが、変数展開のオプションです。
</p>
<br />
<pre class="commandline"><code># shell script
for i in *.txt
do
mv ${i} <span style="color: red;">${i%.txt}.py</span>
done
</code></pre>
<br /><br />
<p>
mvの第2引数「<code><span style="color: red;">${i%.txt}.py</span></code>」の部分に着目しましょう。
このうち、変数展開にかかる部分は「<code>${i%.txt}</code>」の部分です。
これは、通常の「<code>${i}</code>」ならば、
単に、変数iの内容に単純に置き換わるのですが、
変数名の後ろに「%」を書くことで、%の後ろのパターンが変数iの内容の後方からマッチする場合、
その部分を削除したものに置換されるようになります。
</p>
<br />
<p>
例えば、変数iの内容が「001.txt」の場合、「.txt」という部分が後方から一致します。
そこで、「<code>${i%.txt}</code>」と書かれた部分は、「001.txt」から「.txt」を削除した「001」に置き換えられることになります。
</p>
<br />
<p>
上記の例では、「001」に置き換えられる部分の後ろに「.py」を付け加えることで、
全体で.txtが.pyに置き換えた文字列を作成しています。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhFb1M4KP96LU5WpYvtP9UdXqGynRxxVActejFqWOwxOClZQGKOM1lsrSYskMIYlm4eMDpf9iSclBFwyec3pYHFpCrdW7CLXEAo41GLZq9BELqnyJajO0mNdT1nZXfj5PkLLTm5uEnAOt0J70HH3kU_FPFO5DO7tTs4cuhobl_ml0sEmnfU2y0ov6bf=s961" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="580" data-original-width="961" src="https://blogger.googleusercontent.com/img/a/AVvXsEhFb1M4KP96LU5WpYvtP9UdXqGynRxxVActejFqWOwxOClZQGKOM1lsrSYskMIYlm4eMDpf9iSclBFwyec3pYHFpCrdW7CLXEAo41GLZq9BELqnyJajO0mNdT1nZXfj5PkLLTm5uEnAOt0J70HH3kU_FPFO5DO7tTs4cuhobl_ml0sEmnfU2y0ov6bf=s600" width="600" /></a></div>
<p>
このような通常よく見る「${hoge}」の構文は、
単に「変数の中身を見る」と把握するのではなくて、
「シェルにいろいろな値に置き換えさせる書式」として、把握しておけば
色んなことができるという機能があることに納得が行くことと思います。
</p>
<br />
<p>
上述の拡張子の置換を変数展開で行うのは、定番のパターンです。
そのほかには、変数の初期値代入というもの、例えば、ある変数に値が入っていれば、それを使うが、入っていなければ指定したものを使うという
条件で内容が変わるようなものも変数展開を使うのが、定番です。
</p>
<br />
<p>
シェルの変数展開については、次のページが見やすくわかりやすく、
また、元の情報ソースであるman bashにも言及しているので、
何処までも正確に沼に浸ることが出来ます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgLWhrAPe35ANC_743F55p_B5_LAYg_t-FafqUWGYZ5PZ5V__zfxJvsqDsFy1AnfZ7inJCOLCT1KhC9tDKzIWI0QpKC-v2wBX8BcSIxmtw8mYkveLhIXblCkIVqSPwO1QBIdzisgriu2i3Z0oVTH5ooVFakAiIrxsY7xT5D7-gW_b5MMEqL8k6aNFw7=s1383" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1026" data-original-width="1383" src="https://blogger.googleusercontent.com/img/a/AVvXsEgLWhrAPe35ANC_743F55p_B5_LAYg_t-FafqUWGYZ5PZ5V__zfxJvsqDsFy1AnfZ7inJCOLCT1KhC9tDKzIWI0QpKC-v2wBX8BcSIxmtw8mYkveLhIXblCkIVqSPwO1QBIdzisgriu2i3Z0oVTH5ooVFakAiIrxsY7xT5D7-gW_b5MMEqL8k6aNFw7=s600" width="600" /></a></div>
<div style="text-align: center;"><a href="https://qiita.com/t_nakayama0714/items/80b4c94de43643f4be51" target="_blank">【シェル芸人への道】Bashの変数展開と真摯に向き合う</a></div>
<br />
<br />
<h4>「簡単に」シェルスクリプトを使うパターンのキモ</h4>
<p>
シェルのfor構文処理で「<span style="color: red;">簡単</span>」に記述するためには、
グロッピングで対象ファイルを簡単に指定できること、及び、
シェルの変数展開だけでコマンド引数を簡単に記述できることが必要になります。
上記の例で見たように、
単純なファイル名へのプレフィックス文字列追加や拡張子変更の場面では、
for構文を書くだけで簡単に大量処理を行うことが出来ます。
そして、このとき、わざわざスクリプトファイルを書くまでもなく、
慣れればターミナル上でそのまま記述するようになります。
また、僕はzshを使っていますが、for構文等の複数行処理を書いた場合でも、
コマンド履歴で複数行呼び出しが出来、
その複数行についての編集もできるので、
書けば書くほど、手数が増えていきます。
</p>
<br />
<h3>正規表現が得意なsed</h3>
<p>
次は、「ett20210401001.wav」というファイル名を「ett2021_0401_001.wav」に変換したい場合を想像してください。
</p>
<br />
<p>
例えば、英会話の音声教材を通
し番号付きで管理していて、
ファイル名は2021年4月の第1週の一回目を表す通し番号のつもりで付けけていたのですが、
実際に使ってみると数字の羅列が長くてぱっと見でよくわからなくなってきました。
特に10月とか11月辺りになると目が悪いのでもうダメです。
</p>
<br />
<p>
先にやったシェルの変数展開には、
文字数を指定した文字列取り出しや、文字列置換も行えるので、
先の方法でも出来なくはないでしょうが、
割と暗号チックな処理になってしまいそうです。
</p>
<br />
<p>
一方、このようにファイル名が日付等の決まった書式になっているものを、
別の決まった書式に構成し直す場合には、
正規表現を扱うのが得意なsedコマンドを利用すると見通しの良い処理がかけます。
</p>
<br />
<pre class="commandline"><code>$ ls | sed -rn 's/(ett[0-9]{4})([0-9]{4})(.*)/mv \0 \1_\2_\3/p'
</code></pre>
<br /><br />
<p>
カレントディレクトリに適切なファイルがある場合、
上記コマンドを実行すると標準出力に次のような出力がなされます。
</p>
<br />
<pre class="commandline"><code>mv ett20210401001.wav ett2021_0401_001.wav
mv ett20210401002.wav ett2021_0401_002.wav
mv ett20210401003.wav ett2021_0401_003.wav
mv ett20210401004.wav ett2021_0401_004.wav
mv ett20210401005.wav ett2021_0401_005.wav
</code></pre>
<br /><br />
<p>
sedを使った方法で一番はじめに把握すべきなのは、
sedは結果として文字列を出力するコマンドだということです。
上述のように、sedは、
ファイル名をリネームするための「コマンド文字列を全て作成」してくれるだけです。
実際にこの処理を行うためには、出来上がった文字列をパイプでシェルに渡したり、
ファイルに書き出した後、シェルに読み込んだり、
と改めてコマンドを実行するための処理が必要となります。
</p>
<br />
<p>
また、実はsedへの「入力」もlsの出力をパイプしてsedの標準入力に渡しています。
処理対象がファイル名である限り、lsコマンドの出力をパイプで渡すパターンにすれば
問題ありません。
</p>
<br />
<h4>入力と出力</h4>
<p>
sedは、文字列を受け取って、加工した文字列を返すコマンドです。
この機能を利用して、一括処理の場合には次の様にsedコマンドを使います。
</p>
<br />
<p>
入力は「対象ファイル名」。
具体的には次の通り。
</p>
<br />
<pre class="commandline"><code>ett20200401001.wav
</code></pre>
<br /><br />
<p>
一方、出力は「処理のためのコマンド文字列」
具体的には次の通り。
</p>
<br />
<pre class="commandline"><code>mv ett20210401001.wav ett2021_0401_001.wav
</code></pre>
<br /><br />
<p>
やりたい処理が決まっている場合、
動的に変化するのは、
取得するファイル名と
そのファイル名を元にしてあるルールのもと作られる新しいファイル名であり
これらは正規表現を使って表現できます。
</p>
<br />
<h4>sedの置換構文</h4>
<p>
sedの置換構文を改めてみてみます。
</p>
<br />
<pre class="commandline"><code>'s/(ett[0-9]{4})([0-9]{4})(.*)/mv \0 \1_\2_\3/p'
</code></pre>
<br /><br />
<p>
置換構文の書式は以下のように、3つの"/"デリミタで区切られた前半部分に、
「置換すべき対象」を記述し、後半部分に「置換する文字列」
</p>
<br />
<pre class="commandline"><code>'s/置換すべき対象/置換する文字列/'
</code></pre>
<br /><br />
<p>
さて、一括処理でこのsedを利用する時には、ある定形のパターンを使います。
まず、sedへの入力は、必ず対象となる元のファイル名にします。
これは、lsコマンドの出力をsedに渡すことで実現できます。
</p>
<br />
<p>
次に、置換構文の前半部分では、必ず、対象ファイル名そのもの全体に一致するようにします。
こうすることで、「\0」書式が「入力された元のファイル名」に展開されると同時に、
置換構文の後半部分で記述したもの以外の余計なものが出力されなくなります。
</p>
<br />
<p>
名前変換等で書き換えが必要となる部分等を表現するためのパーツになるように、
正規表現を「(」「)」記号で区切って、後方参照できるようにします。
正規表現の中では「(」「)」記号で区切った位置によって、
それぞれ左側から「\1」「\2」「\3」...と、いう書式で
それぞれの具体的なマッチ文字列に展開されます。
ですから、この展開文字列を組み合わせることで、
置換構文後半部分で、処理したいコマンド文字列を作成することが出来ます。
</p>
<br />
<h4>sedのオプション</h4>
<p>
上記例でsedに-nrとオプションを渡しています。
nと置換スイッチのpは、一括処理記述の際のパターンとしてこの通りにしておけばOKです。
一方、rオプションは、部分指定の「(」「)」記号を書く際に、rオプションをつけていないと、
「\(」「\)」記号を書く際に「\」というエスケープ文字が必要になります。
巷のsedの解説を見る時に、「これって何?」とならないように、そういうものがあるということだけは把握しておきましょう。
</p>
<br />
<h4>数字を表す正規表現</h4>
<p>
自分でつかってて、「あれ、なんで??? あぁ、そうなんやぁ」と思ったところです。
1や2という「数字」を表現するための正規表現として「\d」をよく使いますが、sedでは使えません。
そして、巷では、幾つかある文字グループのひとつとして「[:digit:]」という標記が紹介されています。
しかし、実際にsedの正規表現でこれを書くためには角カッコをもうひとつ外側にも書いて「[[:digit:]]」と表記する必要があります。
というわけで、書く量が多くなるので数字表現は「[0-9]」が一番見やすいんじゃないかとおもい、例ではこっちを使ってます。
</p>
<br />
<h3>よくやる変換</h3>
<h4>iphoneの写真HEICをpngに</h4>
<p>
「なんか、最近iphoneで撮った写真をダウンロードしたら拡張子がHEICだったから、jpgとかに変換したいんですけどーー、linuxでもできますか??」
なんていう質問がそのへんに転がってそうなので、早速実践しましょう。
heif形式の画像を扱うライブラリのパッケージとしてarchlinuxでは「libheif」パッケージがあります。
このパッケージをインストールすると、HEICをjpegとかpng形式に変換してくれる「heif-convert」コマンドが使えるようになります。
早速パッケージをインストール。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S libheif
</code></pre>
<br /><br />
<p>
やるべきことは、HEICの画像ファイルをjpg形式に変換する。
ファイル名は拡張子のみ変える。
という方針で行きましょう。
ファイル名はイジらないので、for構文アンド変数展開で十分です。
準備が出来たら適当なディレクトリに拡張子がHEICの画像ファイルを入れます。
</p>
<br />
<pre class="commandline"><code># iPhoneの写真を変換する
for i in *.HEIC
do
heif-convert ${i} ${i%.HEIC}.jpg
done
</code></pre>
<br /><br />
<h4>wavファイルをmp3でコンパクトに</h4>
<p>
パソコンで英語教材を聞いている時arecordで録音したりするのですが、wavファルで保存されるのでmp3ファイルにしてかさを減らします。
変換に使うのはlameコマンド。archlinuxではlameパッケージに入っています。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S lame
</code></pre>
<br /><br />
<p>
変換したいファイルを特定のディレクトリにいれます。
lameコマンドは入力ファイルを引数に渡すだけで、
自動的に拡張子が.mp3のファイルが出力されます。
ですからスクリプトは超かんたん。for構文でファイルを渡すだけです。
</p>
<br />
<pre class="commandline"><code># wavをmp3に変換する
for i in *.wav
do
lame ${i}
done
</code></pre>
<br /><br />
<h3>シェルの沼</h3>
<p>
初心者の頃は「シェルって何」とおもっていても、
普通にコマンドを使うように慣れば、「シェルって何」とは思わなくなって来ると思います。
しかし、「グロッピング」や「変数展開」というものがあるということを知り、
それらのマニュアルを興味を持って自分から読みたいと思えるようになってくると、
「シェル」に対する見え方がまた変わってくるんじゃないでしょうか。
</p>
<br />
<p>
更に、上述紹介のページでは「bash」のことが説明されていますが、
実は、zshにはzsh独自のグロッピングや変数展開についての便利追加オプションがあり、
便利なんだけど一般といわれるshシェルスクリプトと互換性が無いなんて文句をいわれたりします。
</p>
<br />
<p>
例えば、グロッビングの「*」ですが、通常はカレントディレクトリの全てのファイルとディレクトリに「展開」されます。しかし、zshだとこれにファイルの種類を選択するスイッチを追加できます。
例えば、「一般のファイル」に限定したい場合「*(.)」として、「ディレクトリ」に限定したい場合は、「*(/)」として記述することで、展開されるものを限定することができるんですよっ!すごくないですか?
</p>
<br />
<p>
さて、シェル自体に興味が湧いている人にお勧めできる本があります。
zshについての結構古い本ですが、「<a href="https://www.amazon.co.jp/gp/product/B09RQFJYZL/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B09RQFJYZL&linkCode=as2&tag=suwa0001-22&linkId=b8c492c3c37df17e73ff3e5fef769f03" target="_blank">zshの本</a>」という本です。
買った当初は、zshものつ高度な補完に関する仕組みに興味があったのですが、
よくよく読むと、シェル自体の機能について丁寧に解説されていることに気が付きました。
シェル自体に興味をもってから、この本を読むことで、色んな発見ができ、
「シェルそのものの造り」に親しみが持てるようになりました。
また、筆者のシェルに対する深い思いが伝わります。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhSfgYJJB4Xx2vqPud7cSdoAURZEIU88KxxfakVJpQqrpRS9iMOrK0FIuEhVMK4Pu8MI_jpAI2JcpzpsSUMxhyQk0rbZfjfI6IboP9UEJRtmhajm5HtMB92bT3ijoNj5hdUlwocjkKQf6tS3uBlPR2Rev3hBuZgjrqKKYtkZnPD9L6Ox7gMiId0iB8v=s1980" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1111" data-original-width="1980" src="https://blogger.googleusercontent.com/img/a/AVvXsEhSfgYJJB4Xx2vqPud7cSdoAURZEIU88KxxfakVJpQqrpRS9iMOrK0FIuEhVMK4Pu8MI_jpAI2JcpzpsSUMxhyQk0rbZfjfI6IboP9UEJRtmhajm5HtMB92bT3ijoNj5hdUlwocjkKQf6tS3uBlPR2Rev3hBuZgjrqKKYtkZnPD9L6Ox7gMiId0iB8v=s600" width="600" /></a></div>
<div style="text-align: center;"><a href="https://www.amazon.co.jp/gp/product/B09RQFJYZL/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B09RQFJYZL&linkCode=as2&tag=suwa0001-22&linkId=b8c492c3c37df17e73ff3e5fef769f03" target="_blank">zshの本</a></div>
<br />
<p>
ここでいう「簡単なシェルでのファイル一括処理」は、
シェル芸とは対極にある本当に簡単で便利なシェルの処理の話であり、
文字通りお手軽簡単に分かりやすく日常ファイル処理をしようという話なのです。
</p>
<br />
<p>
しかし、普段遣いしているうちにふと、
記号の羅列をみているにもかかわらず、
「あれ?これって、こう書いたら、こうなるじゃね?」なんて思っている自分に気がつくかもしれません。
そう、もう沼にハマってます。
ただ、シェルの沼はそれほど危険ではありません。
デスクトップカスタマイズなどのように時間を延々と食われたりしないし、
何しろ身につけばほんとに色々と役立ちます。
存分に、どっぷりと浸かりましょう。
</p>
<br />
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-32279887710317815682022-01-14T12:28:00.002+09:002022-01-14T13:05:31.232+09:00ssh鍵でパソコンへお洒落に侵入する<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg1hxSSUdGbR0t7iNBvr9jzON63xFReRT_I40ItHpGli_N-2nB4CT7wL2Mqtvl7jBF5dRdubuunfD0Fd79mOObBzwQDGnOG7wjqWdtW5z00TlB3XpqGYr99TtsxZeL1RcjLGsegikKZuFz2dvU0Kajr0x2uZQpoIB_GTE0NDKtC6CJ8gIZy4E12LciG=s4592" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="2576" data-original-width="4592" src="https://blogger.googleusercontent.com/img/a/AVvXsEg1hxSSUdGbR0t7iNBvr9jzON63xFReRT_I40ItHpGli_N-2nB4CT7wL2Mqtvl7jBF5dRdubuunfD0Fd79mOObBzwQDGnOG7wjqWdtW5z00TlB3XpqGYr99TtsxZeL1RcjLGsegikKZuFz2dvU0Kajr0x2uZQpoIB_GTE0NDKtC6CJ8gIZy4E12LciG=s600"/></a></div>
<h3>離れた場所にある別のパソコンに侵入というワードにワクワクしちゃう</h3>
<p>
archlinux環境でsshを使い、
リビングのソファーに寝転びながらノートパソコンで
離れた場所にあるデスクトップパソコンを操作しましょう。
これを実現するために、このノートでは以下の準備を行います。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>avahiサービスの準備</li>
<li>デスクトップパソコンでsshデーモンの起動の準備</li>
<li>ノートパソコンでssh鍵の作成</li>
<li>ノートパソコンで作成した公開鍵をデスクトップパソコンのアカウントに登録</li>
<li>デスクトップパソコンでsshデーモンがパスワード認証を拒否する設定</li>
</ul>
</div>
<br />
<h4>お家ネットワークの名前解決はavahi</h4>
<p>
まず、パソコン間での通信を行う場合、お互いのパソコンを認識するためにIPアドレス(127.0.0.1みたいなやつ)を使います。
そして、このIPアドレスは数字の羅列で人にとって優しくないので、通常、文字列(いわゆるドメイン名、google.comみたいなやつ)を紐付けて利用されています。
ここで、公共のインターネット空間上では、これら、文字列とIPアドレスの紐付けは、公的機関に管理され、公開された信用のあるサーバーに問い合わせて、
文字列からIPアドレスやその逆がわかるようになっています(巷では名前解決等と言われる)。
</p>
<br />
<p>
一方で、このノートで行う「お家の中のインターネット環境」は、
大体はプライベート空間であり、IPアドレスと文字列の紐付けもされてい無いのが通常です。
ですから、例えば、ノートからデスクトップパソコンへsshする場合のコマンドは、次のようになります。
</p>
<br />
<pre class="commandline"><code>$ ssh neko@192.168.0.103
</code></pre>
<br /><br />
<p>
しかし、これは明らかにイケてません!
もし、デスクトップパソコンのホスト名が「madokita」なら、当然、
</p>
<br />
<pre class="commandline"><code>$ ssh neko@madokita
</code></pre>
<br /><br />
<p>
な感じになってほしいのです。
</p>
<br />
<p>
そのためには、名前解決を自分で行う必要があります。
しかし、一度、「linux 名前解決 仕組み」あたりでググってみてください。
気軽にやるには、複雑でボリュームもあり結構面倒くさい話なのです。
(まぁ、こういうなの好きな人は、自前のDNSサーバーを立て、なんか自分もインターネットの一部になっている気分に浸るのも楽しいかもしれませんが)
</p>
<br />
<p>
そこで、このノートでは、お家内で使うにはとてもお手軽で、
そして、簡単に名前解決してくれる「avahi」というサービスを利用します。
このサービスを利用すれば、プライベートネットワーク上では以下のような感じで、
他のパソコンを認識することができます。
</p>
<br />
<pre class="commandline"><code>$ ssh neko@madokita.local
</code></pre>
<br /><br />
<p>
そう、自分で定義しているホスト名に「.local」を引っ付けるだけで、すべて解決してくれるのです。
</p>
<br />
<h4>sshデーモンとsshクライアント</h4>
<p>
さて、sshのサービスを利用する場合、侵入する方とされる方どっちがどっちだか混乱する事が多々あります。
このノートでは、
据え置き型の比較的高性能なCPUを積んだ「デスクトップパソコン」が侵入される側になります。
一方、CPUの正確な型番とかが良くわからないアマゾンのセールで2万円弱で売っている中国産ノートパソコンが侵入する際に操作するパソコンです。
これをソファーの上で寝そべって操作しながら、メインのデスクトップパソコンに侵入することにします。
どっちがどっちかイメージが持てましたかー?
</p>
<br />
<p>
侵入される側のデスクトップパソコンは、
外部からの接続を許すデーモンが起動されている必要があります。
それが「sshd」すなわち、sshデーモン(sshサーバーとも言われる)です。
ですから、デスクトップパソコン側では、「sshデーモンの設定」を行う必要があります。
</p>
<br />
<p>
一方、侵入する側のノートパソコンにはデスクトップパソコンへの接続を要求するsshコマンドがインストールされていれば良いだけで、
sshデーモンの準備や起動は必要ありません。
</p>
<br />
<h4>ssh鍵を使った安全な接続</h4>
<p>
さて、ノートパソコンのターミナルからsshコマンドを使って、
デスクトップパソコンへ接続の要求をすると、
パスワードの入力が求められます。
そして、このパスワードを入力すると、
ノートパソコンのターミナル内にデスクトップパソコンのシェルが開きます。
</p>
<br />
<p>
しかし、
今では一般的に、外部からのログインの為に「パスワードを入力する」という行為自体、
セキリティが低いと認識されます。
それは、ネット越しでのパスワードのやり取りが盗まれる可能性があるという理由もありますが、
一番のセキュリティ上の問題は、
パスワードが分かりさえすれば、
誰でも何処からでもログインできてしまうというところにあります。
</p>
<br />
<p>
そこで、逆説的に登場するのが、
「んじゃ、パスワードつかわなかったらいいやん!」という発想です。
そして、それを可能にするひとつの方法が、「ssh鍵」です。
</p>
<br />
<p>
そもそも、パスワードというのは、
「本人しか知らない」から、
それを知っているということは「本人ということを証明している」というものでしかありません。
つまり、「本人を証明」する仕組みが他にあるなら、パスワードはいらないのです。
そして、その本人を証明する仕組みは、今や、指紋認証や顔認証様々なものがありますが、
その一つが「ssh鍵」認証なのです。
</p>
<br />
<p>
「ssh鍵」に興味があれば、「<a href="https://wiki.archlinux.jp/index.php/SSH_%E9%8D%B5" target="_blank">SSH鍵 ArchWiki</a>」がおすすめです。
</p>
<br />
<p>
さて、このノートでは、「ssh鍵」での本人認証の設定を済ませたあと、
sshデーモンの設定で「パスワードログインを拒否する」ようにします。
つまり、最終的にデスクトップパソコンへのsshログインは、パスワードを知っていてもログイン出来なくし
(もちろん、デスクトップパソコンに直接ログインするときはパスワードでログインします)、
正当なssh鍵を持っているパソコンからだけログインができるようにします(再度になりますが、その際、パスワード入力等、手動の認証手続きは何もいりません)。
まさに、セキュアシェル!!ですよね。
</p>
<br />
<p>
では、以降、いよいよ、実際の手順です。
</p>
<br />
<h3>avahiサービス</h3>
<p>
この作業は、デスクトップパソコンとノートパソコンの両方で行います。
</p>
<br />
<p>
avahiパッケージとnss-mdnsパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S avahi nss-mdns
</code></pre>
<br /><br />
<p>
avahiのサービスをシステム開始時に起動するようにシステムに登録します。
</p>
<br />
<pre class="commandline"><code>$ sudo systemctl enable avahi-daemon
</code></pre>
<br /><br />
<p>
avahiの設定ファイル<code>/etc/nsswitch.conf</code>を編集します。
</p>
<br />
<pre class="commandline"><code>$ sudo vim /etc/nsswitch.conf
</code></pre>
<br /><br />
<p>
resolveとdnsのどちらより前に
<span style="color: red;"> mdns_minimal [NOTFOUND=return] </span>が含まれるように hostsの行を変更します。
</p>
<br />
<pre class="commandline"><code>...
hosts: mymachines <span style="color: red;">mdns_minimal [NOTFOUND=return]</span> resolve [!UNAVAIL=return] files myhostname dns
...
</code></pre>
<br /><br />
<p>
作業が終わったら、どちらのパソコンも再起動します。
両方のパソコンが立ち上がったら、ノートパソコンで以下のコマンドを実行してみましょう。
<i>[desktopPC_hostname]</i>の部分は、あなたのデスクトップパソコンのホスト名に置き換えてください。
うまく行ったら、今度は逆にデスクトップパソコンからノートパソコンへもpingを打って、名前解決されるか試してみましょう。
</p>
<br />
<pre class="commandline"><code>$ ping <i>[desktopPC_hostname]</i>.local
</code></pre>
<br /><br />
<p>
avahiは名前解決だけでなく、ローカルネットワーク内のサービスの所在(プリンタとか共有ストレージとか)を知らせてくれる機能を色々と持っています。
興味があればまず、「<a href="https://wiki.archlinux.jp/index.php/Avahi" target="_blank">Avahi ArchWiki</a>」から始めてみましょう。
</p>
<br />
<h3>sshデーモンの起動</h3>
<h4>デスクトップパソコンでsshデーモンを起動</h4>
<p>
まずは、デスクトップパソコン側で作業を行います。
</p>
<br />
<p>
opensshパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S openssh
</code></pre>
<br /><br />
<p>
次のコマンドを使って、sshデーモンを起動します。
</p>
<br />
<pre class="commandline"><code>$ sudo systemctl start sshd
</code></pre>
<br /><br />
<h4>ノートパソコンからデスクトップパソコンへ接続テスト</h4>
<p>
続いて、ノートパソコン側で次の作業を行います。
</p>
<br />
<p>
opensshパッケージをインストールします。
実は、sshはデーモンもクライアントも同じパッケージに入っています。
</p>
<br />
<pre class="commandline"><code>$ sudo -S openssh
</code></pre>
<br /><br />
<p>
sshコマンドでデスクトップパソコンへ接続します。
sshコマンドは、以下のような書式になります。<i>[desktopPC_username]</i>@<i>[desktopPC_hostname]</i>.localの<i>[desktopPC_username]</i>と<i>[desktopPC_hostname]</i>の部分は、デスクトップパソコンのホスト名とそこでログインするユーザー名に置き換えてください。
</p>
<br />
<pre class="commandline"><code>ssh <i>[desktopPC_username]</i>@<i>[desktopPC_hostname]</i>.local
</code></pre>
<br /><br />
<p>
例えば、デスクトップパソコンのホスト名がmadokitaであり、そのデスクトップパソコンのユーザーアカウントであるnekoというユーザーでログインする場合は、次のようなコマンドを実行することになります。
</p>
<br />
<pre class="commandline"><code>$ ssh neko@madokita.local
</code></pre>
<br /><br />
<p>
はじめて接続すると以下のようなメッセージが出力されます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjAbHt55lRoRILyBoTw8Qcze5NozA1fDjGBpt2EGyQ8xXwJ9lJ9zNbFfF3bwhN36IOROMHb1BF1dSfZ5TgDCM_qj6MbQSAsySAPVJTE76QXv1lBbVsC1Kl68Nyrt7-y7lSx6j2l_Kq-lHVIVeTPY2lrtRUixA4RIZNw7fDqlEb6fInAn51NDmzW85Wt=s934" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEjAbHt55lRoRILyBoTw8Qcze5NozA1fDjGBpt2EGyQ8xXwJ9lJ9zNbFfF3bwhN36IOROMHb1BF1dSfZ5TgDCM_qj6MbQSAsySAPVJTE76QXv1lBbVsC1Kl68Nyrt7-y7lSx6j2l_Kq-lHVIVeTPY2lrtRUixA4RIZNw7fDqlEb6fInAn51NDmzW85Wt=s600"/></a></div>
<p>
インターネットの世界では、ドメイン名やIPアドレスは、その仕組み上、簡単にすり替えることが出来ます。
たとえば、このmadokitaに関するIPはavahiに問い合わせて得ています。
ここでよく考えてみてください。あなたは、avahiがmadokitaのIPを返していると思っていますが、
仕組み的には、avahiは別に何のIPアドレスだって好きなものを返すことができるのです。
</p>
<br />
<p>
そこで、ssh接続では、問い合わせているホストが本当に自分で思っているホストかどうかを検証する仕組みが提供されます。
具体的には、ホスト側の公開鍵を持っている場合には、それで自動的に、持っていない場合には、公開鍵から求められるフィンガープリントで目視して確認を行います。
セキュリティに関する関心を高めるために、一度は、以下のサイト等に目を通して、何が危険で、何をすることでそれを防げるのかという仕組みを把握しておきましょう。
</p>
<br />
<p>
<a href="https://rurukblog.com/post/ssh-fingerprint/" target="_blank">SSHにおけるフィンガープリントとは。ホスト認証とあわせて解説</a>
</p>
<br />
<p>
上記のページで紹介されているように「フィンガープリントによる確認」を行ってみましょう。
デスクトップパソコン側で以下の作業をします。
</p>
<br />
<pre class="commandline"><code>$ cd /etc/ssh
</code></pre>
<br /><br />
<p>
ここに、<code>ssh_host_なになに_key.pub</code>というファイルがいくつかあります。
先のメッセージでは、「ED25519 key fingerprint」と書かれていたので、なになにの部分がED25519のものを使って、以下のコマンドを実行します。
</p>
<br />
<pre class="commandline"><code>$ ssh-keygen -lf ssh_host_ed25519_key.pub
</code></pre>
<br /><br />
<p>
そうすると、公開鍵からのフィンガープリントを表示してくれるので、これが、sshログインの画面で表示されていたフィンガープリントと見比べて、
接続しようとしているホストが正しいかどうかを判別することが出来ます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgwQjDjyrMDxHZdXX7xFR907Aphz8iarTmq2W4Othf-nB2AGOPKVKlVqh_E27NoP381LVnjdrMuwYaZzGnrm7EPu7FTaZR1gIk6LAHIuT9Vs_tjuQ777PdoULhRvS8_MlY5d77qz_S5QgvBgefuKfnHKvNDEEXUFy5CkgH-BGl2rv--5VBZGzj1DP5I=s934" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEgwQjDjyrMDxHZdXX7xFR907Aphz8iarTmq2W4Othf-nB2AGOPKVKlVqh_E27NoP381LVnjdrMuwYaZzGnrm7EPu7FTaZR1gIk6LAHIuT9Vs_tjuQ777PdoULhRvS8_MlY5d77qz_S5QgvBgefuKfnHKvNDEEXUFy5CkgH-BGl2rv--5VBZGzj1DP5I=s600"/></a></div>
<p>
接続しようとしているホストが自分の思っているデスクトップパソコンであると判断出来た場合には、プロンプトに対して「yes」を入力してリターンします。
そうすると、ノートパソコン側のsshクライアントの設定の中に「知っているホスト」として、デスクトップパソコン側の公開鍵が登録されます。
</p>
<br />
<p>
接続先が間違いないことが確認されたので、ログインするためにパスワードの入力が促されます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiEhHCIrYs_v9nNtIdvDWxPmOFGYLOttfo3n91vgV2NeOfT-EzF-5FOHbvaJyQBjI4O_TRpCzVOq30s9qBlmh78NKXUCCI3pNcDNaiMdbhqTjHR-SNXnLI_VM9V4heAJwZ3_OQ43YDCF__vBcixbn0RGMfiMlyfHx-zYFD-5F0sWnzFoyyEi3ktGgnV=s934" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEiEhHCIrYs_v9nNtIdvDWxPmOFGYLOttfo3n91vgV2NeOfT-EzF-5FOHbvaJyQBjI4O_TRpCzVOq30s9qBlmh78NKXUCCI3pNcDNaiMdbhqTjHR-SNXnLI_VM9V4heAJwZ3_OQ43YDCF__vBcixbn0RGMfiMlyfHx-zYFD-5F0sWnzFoyyEi3ktGgnV=s600"/></a></div>
<p>
デスクトップパソコンのログインするユーザーのパスワードを入力して、リターンします。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgSkiZZLIAEO8m6j7Jt05ZbzV52vrcrlEHmGm-bYkBqW70H13sBw-9_6sSvimTzu9zpqJgtQ89x0XIetDwBxZsUk0Fi0JZAfPiPbrAjLMMyAVqIZzyXz4Wld0wWk8UAFc1rbtflo8hZHY57mp9dI1iwTdOBMg9TeanCQegvE-qflOnJzA6oUWgZKphq=s934" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEgSkiZZLIAEO8m6j7Jt05ZbzV52vrcrlEHmGm-bYkBqW70H13sBw-9_6sSvimTzu9zpqJgtQ89x0XIetDwBxZsUk0Fi0JZAfPiPbrAjLMMyAVqIZzyXz4Wld0wWk8UAFc1rbtflo8hZHY57mp9dI1iwTdOBMg9TeanCQegvE-qflOnJzA6oUWgZKphq=s600"/></a></div>
<p>
これで、デスクトップパソコンのシェルが開きました。
ノートパソコンから、デスクトップパソコンへの侵入成功です!
</p>
<br />
<h3>ssh鍵の作業</h3>
<p>
いま、ノートパソコンからデスクトップパソコンへログインしているはずですが、一旦、exitコマンドでログアウトしてください。
sshで作業をするようになると、気を許すと今、自分がどこで何の作業をしているのかが把握できなくなってしまいます。
できれば、最低限、プロンプトにホスト名を表示する機能を入れておき、また、自分が今どこにいるかを積極的に意識するようにクセをつけましょう。
でないと、間違えて大切なファイルを書き換えたり捨てたりしてしまいます。
</p>
<br />
<h4>ノートパソコンでssh鍵を作成</h4>
<p>
今から、ノートパソコン側にsshの鍵を作成します。「鍵」は、「秘密鍵」と「公開鍵」という2つのファイルとして作成されます。
自分がノートパソコンのシェルにいることを確認したら、以下のコマンドを実行しましょう。
</p>
<br />
<pre class="commandline"><code>$ ssh-keygen
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgQxZlf8LJiD359LpbG_Thh0CPQPDr_6IcsduocWBTe10o7K15NKp8EWJFYtbdn7cPcYJuDj5Ym3iOP-kn3ZcqHKefJNysK_rhqLp73MvbhXEWBWg2W0QMUmHTQT4X0-XllLycOSqx8nTeEyNIA_Uqc_fAYzNqHAObPAZwUm3EDV6qHjq5luzMBjZ_x=s934" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEgQxZlf8LJiD359LpbG_Thh0CPQPDr_6IcsduocWBTe10o7K15NKp8EWJFYtbdn7cPcYJuDj5Ym3iOP-kn3ZcqHKefJNysK_rhqLp73MvbhXEWBWg2W0QMUmHTQT4X0-XllLycOSqx8nTeEyNIA_Uqc_fAYzNqHAObPAZwUm3EDV6qHjq5luzMBjZ_x=s600"/></a></div>
<p>
鍵ファイルは、~/.ssh/ディレクトリ以下に作成されます。
鍵ファイルのファイル名を変更する場合に、プロンプトにそのパスを入力します。
デフォルトで良い場合は、何も入力せずにリターンキーを押せばOKです。
ここで、もし、既に鍵が存在している場合は、上書きするかどうかの確認が出ます。
</p>
<br />
<p>
続いて、鍵ファイルを暗号化する場合の、その暗号を解くパスワードを入力します。
このパスワードを設定すると、保存されている鍵ファイルが暗号化され、
このファイルを万が一盗まれたとしても、パスワードがない限り、鍵ファイルを使うことが出来ないので、よりセキュアになります。
一方、sshログインする場合に、その認証に必要な鍵を取り出すため、パスワード入力が必要になります。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiYH5lRGcxi16jzFqsoTS9sbMKy_KGS3UZ2C4r2tPDlSMgxXIBr4ENwEynEtuIBTWOK8NFgQJNK5ORRN8j-lRA7C6VVwkSouAbWVnRHKhJ9bSz-BubuIICS4MbPGYErivMqpcc9JXIrVWomiVKcs3pL6yRBqkvDsduN6hTAeT_Z_Bi1w_s2te0ij4L_=s934" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEiYH5lRGcxi16jzFqsoTS9sbMKy_KGS3UZ2C4r2tPDlSMgxXIBr4ENwEynEtuIBTWOK8NFgQJNK5ORRN8j-lRA7C6VVwkSouAbWVnRHKhJ9bSz-BubuIICS4MbPGYErivMqpcc9JXIrVWomiVKcs3pL6yRBqkvDsduN6hTAeT_Z_Bi1w_s2te0ij4L_=s600"/></a></div>
<p>
ここでこの「パスワード」は、鍵ファイルの暗号化を解くためのパスワードであり、
ユーザーアカウントのパスワードではないことに注意が必要です。
そして、もちろん、このパスワードを忘れると、ssh鍵の暗号が解けず認証ができなくなります。
(但し、ssh認証自体はまた、新しい鍵を作ってホストに登録すればいいだけであり、
これを忘れたからアカウントにログインができなくなるわけではありません。)
</p>
<br />
<p>
うちでは自分しか使わないノートなので、暗号化していません。
自分の環境で鍵ファイルの暗号化が必要かどうかは、各自で判断しましょう
(自分以外のroot権限者がいる等の場合、暗号化しないと鍵ファイルは無防備になります)。
パスワードがいらなければ、空白のままリターンでOKです。
パスワードは確認されます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiys-T-YVBPVj6zcxPfWe9-qHe-RI7jvyX1Ib_8XZzL_GvenKy-PBGTO-dhFj4X2wSFeKrsE5JvTa0MX-iBz8u1bDzhs6vhnN9Z5YwMUbrgCEelcMUEVUkDMv9OWf8wiBnj_Pl-IKpx3mb9hjBT0VBiFIzGJwl1Rj0qSXRLwX3uQTbjFkGYK72VP1zo=s934" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEiys-T-YVBPVj6zcxPfWe9-qHe-RI7jvyX1Ib_8XZzL_GvenKy-PBGTO-dhFj4X2wSFeKrsE5JvTa0MX-iBz8u1bDzhs6vhnN9Z5YwMUbrgCEelcMUEVUkDMv9OWf8wiBnj_Pl-IKpx3mb9hjBT0VBiFIzGJwl1Rj0qSXRLwX3uQTbjFkGYK72VP1zo=s600"/></a></div>
<p>
以上の手順で鍵が作成され、画面には上記のような模様が出て、鍵の作成作業が終わります。
</p>
<br />
<h4>ノートパソコンの公開鍵の内容をデスクトップパソコンへコピー</h4>
<p>
続いて、今作成した、ノートパソコンにある鍵のうち、
公開鍵の内容をデスクトップパソコンのログインするユーザーアカウントの<code>~/.ssh/authorized_keys</code>というファイルにコピーします。
この作業を実際になってくれるのがssh-copy-idコマンドで、次の書式になっています。
</p>
<br />
<pre class="commandline"><code>ssh-copy-id <i>[desktopPC_username]</i>@<i>[desktopPC_hostname]</i>.local
</code></pre>
<br /><br />
<p>
sshコマンドのときと同様に、<i>[desktopPC_username]</i>@<i>[desktopPC_hostname]</i>.localの<i>[desktopPC_username]</i>と<i>[desktopPC_hostname]</i>の部分は、デスクトップパソコンのホスト名とそこでログインするユーザー名に置き換えてください。
</p>
<br />
<p>
例えば、デスクトップパソコンのホスト名がmadokitaであり、そのデスクトップパソコンのユーザーアカウントであるnekoというユーザーでログインする場合は、次のようなコマンドを実行することになります。
</p>
<br />
<pre class="commandline"><code>$ ssh-copy-id neko@madokita.local
</code></pre>
<br /><br />
<p>
作業が終わったら、sshコマンドでログインしましょう。
例えば、madokitaホストのnekoにログインするには以下のとおりです。
</p>
<br />
<pre class="commandline"><code>$ ssh neko@madokita.local
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh7MbFsG3sF16WpqiqNedY4VOY0TjQocb_gdgyVJkR7gpVKoc5pNflAg9ubJz7UCWU6Nqgi1P9vvlcS2kZ2CPCEpHPupsYkJ3VOBaRu-f--AfqL3sUo3l9RiIlHHID0xmgj3OYrZyhggZpubdUzl27Ig0fbDUNVYUfZRCS1Ef0Bqmjx_mkccnZH-n6Y=s934" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEh7MbFsG3sF16WpqiqNedY4VOY0TjQocb_gdgyVJkR7gpVKoc5pNflAg9ubJz7UCWU6Nqgi1P9vvlcS2kZ2CPCEpHPupsYkJ3VOBaRu-f--AfqL3sUo3l9RiIlHHID0xmgj3OYrZyhggZpubdUzl27Ig0fbDUNVYUfZRCS1Ef0Bqmjx_mkccnZH-n6Y=s600"/></a></div>
<p>
鍵を暗号化していない場合、いきなり、シェルのプロンプトが出たはずです。
そうです、もうパスワードを入力しなくてもデスクトップパソコンに侵入が成功しました!
念の為、このログインした先であるデスクトップパソコン側の<code>~/.ssh/authorized_keys</code>ファイルの内容をみてみましょう。
ノートパソコン側で作成した公開鍵の内容と同じ内容の鍵がファイルの中に書き込まれているはずです。
この<code>~/.ssh/authorized_keys</code>には、他のサイトの公開鍵もどんどん付け足されて行きます。
</p>
<br />
<p>
なお、鍵の名前を変更していたり、ssh受付のポートが違っていたりする場合には、ssh-copy-idのオプションで指定できます。
先に紹介したarchwiki ssh鍵の中の「<a href="https://wiki.archlinux.jp/index.php/SSH_%E9%8D%B5#.E3.83.AA.E3.83.A2.E3.83.BC.E3.83.88.E3.82.B5.E3.83.BC.E3.83.90.E3.83.BC.E3.81.AB.E5.85.AC.E9.96.8B.E9.8D.B5.E3.82.92.E3.82.B3.E3.83.94.E3.83.BC" target="_blank">リモートサーバーに公開鍵をコピー</a>」の辺りが参考になります。
</p>
<br />
<h3>パスワードでの外部からの接続をできなくする</h3>
<p>
ssh鍵認証の設定が終わった段階で、デスクトップ側のsshデーモンの設定を変更し、
外部からパスワード認証での接続をできなくします。
ここからは、デスクトップパソコン側で作業します。
まず、<code>/etc/ssh/sshd_fonfig</code>ファイルをルート権限で開きます。
<code>ssh_fonfig</code>ではなくて、<code>sshd_fonfig</code>ファイルです。
紛らわしいのですが、sshとsshdの違いに十分注意します。
</p>
<br />
<pre class="commandline"><code>$ sudo vim /etc/ssh/sshd_fonfig
</code></pre>
<br /><br />
<p>
ファイルの中に、パスワード認証を許可する以下の記述があります。
</p>
<br />
<pre class="commandline"><code>...
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
...
</code></pre>
<br /><br />
<p>
これを no に変更しましょう。
</p>
<br />
<pre class="commandline"><code>...
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
...
</code></pre>
<br /><br />
<p>
変更を保存したら、以下のコマンドで念の為、デスクトップパソコンのsshデーモンを再起動します。
</p>
<br />
<pre class="commandline"><code>$ sudo systemctl restart sshd
</code></pre>
<br /><br />
<p>
では、接続出来なくなっていることを確認しましょう。
実は、デスクトップパソコンから、デスクトップパソコンへもssh接続要求ができます。
以下のコマンドを試してみましょう。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgijdfRuwAMyuhmeaBTFViyepNHx-VuKHhZQ4Bqw51ycq3m3s02_zg-aQcHrSJKX-FASl3YiuaObaPAc7lZmJlhsPmmBbKlpsKYpGSI4WzZ9y46F4UUXP4BASwE0yr8xQZqYRo3D4sWv-wtMXZrlOqVd9T9z1JQHSNesBIpT25O_XBfb6zVmb1l1mxJ=s934" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEgijdfRuwAMyuhmeaBTFViyepNHx-VuKHhZQ4Bqw51ycq3m3s02_zg-aQcHrSJKX-FASl3YiuaObaPAc7lZmJlhsPmmBbKlpsKYpGSI4WzZ9y46F4UUXP4BASwE0yr8xQZqYRo3D4sWv-wtMXZrlOqVd9T9z1JQHSNesBIpT25O_XBfb6zVmb1l1mxJ=s600"/></a></div>
<p>
ホストの確認の後、"Permission denied (publickey)"と表示されてログインを拒否されたはずです。
実はパスワード認証が有効ならば、パスワードを打ち込むことで自分のアカウントに自分でログインできるのですが、
パスワード認証を認めない設定にしたので、
自分の認証に対する公開鍵を自分に登録していない自分は認証されないのです(ややこしぃ)。
</p>
<br />
<p>
以上で、ssh鍵接続の設定が完了しました。
デスクトップパソコン上で、sshデーモンが、システム起動時にいつでも立ち上がるように、次のコマンドを最後に忘れずに入力しておきます。
</p>
<br />
<pre class="commandline"><code>$ sudo systemctl enable sshd
</code></pre>
<br /><br />
<h3>何かの作業の時はパスワード認証ができるように設定を戻せばOK</h3>
<p>
さて、sshデーモンの設定で、パスワード認証を出来なくする設定をすると、
新しい別のノートパソコンでもデスクトップパソコンにアクセスしたくなった時に、
公開鍵を登録しようとして、上述した"ssh-copy-id"コマンドを使ってもエラーになって登録できません。
しかし、ここでパニックになる必要はありません。
焦らずに、デスクトップパソコン側のsshデーモンのパスワード認証設定を一時的に変更します。
</p>
<br />
<pre class="commandline"><code>$ sudo vim /etc/ssh/sshd_fonfig
</code></pre>
<br /><br />
<p>
ファイルの中に、パスワード認証を許可する以下の記述を見つけます。
</p>
<br />
<pre class="commandline"><code>...
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
...
</code></pre>
<br /><br />
<p>
これを一旦、yesに変更しましょう。
</p>
<br />
<pre class="commandline"><code>...
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
...
</code></pre>
<br /><br />
<p>
変更を保存したら、以下のコマンドで念の為、デスクトップパソコンのsshデーモンを再起動します。
</p>
<br />
<pre class="commandline"><code>$ sudo systemctl restart sshd
</code></pre>
<br /><br />
<p>
この手順で一旦、パスワード認証を許可すれば、上述と同様にssh-copy-idコマンドを使って、
新しいノートパソコンの公開鍵登録作業ができるようになります。
この作業が終わったら、改めてデスクトップパソコンのsshデーモン設定をパスワード認証拒否に戻し、
デーモンを再起動すればOKです。
</p>
<br />
<p>
これは、ssh鍵を暗号化したときにパスワードを忘れてた時等、
ssh鍵を新しいものに変える時はいつでも、上述のようにパスワード認証に関する設定を変更して、作業をすればOKです!
</p>
<br />
<h3>sshデーモンを立ち上げまくって、自由自在に飛び回る</h3>
<p>
このノートでは、まず、混乱しないように、リモート(デスクトップパソコン)とローカル(ノートパソコン)を大げさに区別して紹介しました。
しかし、慣れてくれば、どのパソコンでもsshサーバーを立ち上げておけば、どのパソコンからもどのパソコンへも接続できるようになります。
例えば、ノートパソコンからデスクトップパソコンにログインして、そのそのデスクトップパソコンからノートパソコンへログインして、、、等、
ソファーに寝そべったまま、まさに、パソコン間を飛び回ることができるようになります。
</p>
<br />
<p>
めちゃめちゃ便利になる一方で、「これを他人にやられたら、、、」という実感から、
セキュリティに対する関心も高まると思います。
お洒落にセキュリティの知識も得ていきましょう。
</p>
<br />
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-60459034050371482272022-01-05T19:38:00.004+09:002022-05-06T15:04:28.236+09:00お洒落にJekyllとGitHub PagesとMinimal Mistakesでホームページを作る<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiU0OcYS-yRVt74omB5adsgb5HqMf4IlrxcWf3LyFpX8LTJmxfxOkw73Evph8AiB6RHeQUBGE7hJwT7nFd7yGPSE4h1CE8mQTptg6Mn0PdLKpbLYxG6bgbqbn6qqTbe1vOb6bLqwU6k8NQaruxj2FW27b2ijgN8uXcgpGtHdWrdjPjbuJOzTzrtReZ7=s1920" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEiU0OcYS-yRVt74omB5adsgb5HqMf4IlrxcWf3LyFpX8LTJmxfxOkw73Evph8AiB6RHeQUBGE7hJwT7nFd7yGPSE4h1CE8mQTptg6Mn0PdLKpbLYxG6bgbqbn6qqTbe1vOb6bLqwU6k8NQaruxj2FW27b2ijgN8uXcgpGtHdWrdjPjbuJOzTzrtReZ7=s600"/></a></div>
<h3>ホームページというもの</h3>
<p>
インターネット創世記、一般的な「ホームページ」は、プロバイダとダイアルアップ回線契約した時に、
「ホームページ用のディレクトリ」を与えられ、そこに、「<a href="https://www.tohoho-web.com/www.htm">とほほのWWW入門</a>」なんかを見ながら、
秀丸でhtmlファイルを書いたりするものであり、また「ホームページビルダーを使ったりするのは邪道だ」とか自分勝手なことを呟くのが漢だと思っていた時代でもあります(要出典)。
そして、昭和世代の私としては、この20世紀末の風情を思い起こさせる「ホームページ」という単語と、これを「自分で作る」時間というのが、今でもすごく好きだったりします。
</p>
<br />
<p>
いまでは、簡単に情報発信できるブログシステムがたくさんあります。
しかし、ブログと違ってホームページの良いところは、自分の好きなリンク構成、ページ構成に出来ることなのです。
</p>
<br />
<p>
さて、そんなホームページなのですが、
今の最新ツールを使えば、htmlやCSSなんか全く書かず、簡素なマークダウンの書式で書くだけで、
同じように簡素に書かれていると思われる有名な阿部ちゃんの「ホームページ」(<a href="http://abehiroshi.la.coocan.jp/" target="_blank">阿部 寛のホームページ</a>)を遥かに凌駕する素晴らしいホームページが簡単に作れちゃうのです。(まぁ、軽さは負けるのですが)
</p>
<br />
<h3>ノートを読み進める前の試練</h3>
<p>
今回は、ArchLinuxを作業環境にして、
GitHubの「GitHub Pages」サービスを利用し、
静的ウェブページ作成ツール「Jekyll」を使って
その有名なテーマである「Minimal Mistake」を利用して
ホームページを公開するためのノートです。
</p>
<br />
<p>
それぞれが割と有名ではあるので、
それぞれのサービス自体の名前は何処かでなんとなく聞いたことがあるものだと思います。
しかしながら、これらを有機的に繋げて使うためのまとまった情報が巷には少ない気がします。
また、それぞれのサービスについての日本語の情報が断片的だったりします。
そこで、これらを纏めて使うためのコツ的ノートを作っておくことにしました。
(自分でもメンテのたびに、「あれなんだっけ?」するので)
</p>
<br />
<p>
但し、このノートの内容は、割とハードル高めな気がします。
特に「ホームページを作る」というワードに引っかかってこのページを開いたインターネット初心者さんは、
別の「ホームページを作る」を検索しましょう。
</p>
<br />
<p>
このノートでは、少なくとも、githubでの簡単な作業が出来ることが前提となります。
といっても、githubにリポジトリを作成し、
それをローカルにクローンして、編集し、コミットしてプッシュする程度です。
</p>
<br />
<p>
もし、git使ったことないけど、github pages等でのホームページ作りに興味が有る場合、
まずは、ドットインストールを見てみましょう。
全22回ですが、みっちりとパーフェクトに理解する必要はありません。
上記で言ったとおり、とりあえずは、コミットが出来て、なんとなくプッシュがわかればなんとかなるかもしれません。
</p>
<br />
<a href="https://dotinstall.com/lessons/basic_git" target="_blank">git入門 ドットインストール</a>
<br />
<br />
<p>
これで、まだノートを読み進める気力があるならば、githubのアカウントも作っちゃってください。
そして、以下のノートも参考にssh認証の設定もやっちゃってください!
</p>
<br />
<a href="http://neko-mac.blogspot.com/2021/12/gitgithub.html" target="_blank">gitとgithubをお洒落に使いこなす</a>
<br />
<br />
<p>
そこまで出来たならきっと大丈夫。
</p>
<br />
<p>
じゃ、レッツゴー!!
</p>
<br />
<h3>RVMでRuby2の準備</h3>
<p>
「Jekyll」はRubyで動くので、Rubyの環境を準備する必要があります。
</p>
<br />
<p>
ここで、archlinuxの公式リポジトリのrubyのバージョンは既に、
最新の3系統になっているのですが、
実は、いまのところ、この最新バージョンの3系統では、
Jekyllを使ったgithub pagesのローカルプレビューで不具合がでます。
一方、rubyにはユーザー側で、
rubyの複数のバージョンを切り替えて利用できる仕組みが用意されています。
</p>
<br />
<p>
そこで、このノートでは、バージョン切り替えの仕組みの一つである「RVM」を利用して、
Jekyllを快適に使えるrubyのバージョン2系統を使う方法を紹介します。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhuHuB0UamiRia-V94WEZhpRJ24vTfnT0lMwhBVlU0ay2qrIfgTJ2ffYZT6O2XVpwMT2ps3AmWEdRMzj8-rJkWABmy7mMaAp8iArdwtxhykO4i7ar6fqhxavolzhNLO0fNSPiC6kmRwi_4EI4fwcagX_Bv84VFOyMTgOwVjJX9BpevVUkfl1yhEx63m=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEhuHuB0UamiRia-V94WEZhpRJ24vTfnT0lMwhBVlU0ay2qrIfgTJ2ffYZT6O2XVpwMT2ps3AmWEdRMzj8-rJkWABmy7mMaAp8iArdwtxhykO4i7ar6fqhxavolzhNLO0fNSPiC6kmRwi_4EI4fwcagX_Bv84VFOyMTgOwVjJX9BpevVUkfl1yhEx63m=s600" width="600" /></a></div>
<div style="text-align: center;"><a href="https://rvm.io/" target="_blank">https://rvm.io/</a></div>
<br />
<h4>RVMのインストール</h4>
<p>
RVMは、archlinuxのパッケージとしてインストールせず、
arch wiki のインストール手順に従い、
RVM公式ページから直接インストーラーをダウンロードして、
自分でコマンドラインからインストールします。
</p>
<br />
<p>
まずは、以下のコマンドでインストールスクリプトをダウンロードします。
</p>
<br />
<pre class="commandline"><code>$ curl -L get.rvm.io > rvm-install
</code></pre>
<br /><br />
<p>
ダウンロードしたスクリプトの内容を確認したら、以下のコマンドで実行します。
</p>
<br />
<pre class="commandline"><code>$ bash < ./rvm-install
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhy7wnYFBynfyQ8hCKpN3W9q4WI3yYSaf-E1RbU3uq8b4nJsnHGAfYIIsS1OfhRwda7oE7W_o7u4djsvVvpLzNyeSnJIO0jgZFpGvYFEkv-onBS1w2WEaSZI8cWW82Y0oBEydmrOk7k-Envr2QfoWMCcAYAHLByeBDIVN-g4ljZNomx3psWDBdyBL4_=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEhy7wnYFBynfyQ8hCKpN3W9q4WI3yYSaf-E1RbU3uq8b4nJsnHGAfYIIsS1OfhRwda7oE7W_o7u4djsvVvpLzNyeSnJIO0jgZFpGvYFEkv-onBS1w2WEaSZI8cWW82Y0oBEydmrOk7k-Envr2QfoWMCcAYAHLByeBDIVN-g4ljZNomx3psWDBdyBL4_=s600" width="600" /></a></div>
<p>
インストールスクリプトを実行すると、上記のようなメッセージが出ます。
まず、RVMがインストールされる場所が明示されます。
</p>
<br />
<pre class="commandline"><code>Installing RVM to /home/neko/.rvm/
</code></pre>
<br /><br />
<p>
次に、RVMディレクトリ内のbinディレクトリを環境変数PATHに追加する設定を.bashrc等に追加した旨と、
加工したファイル名が具体的に明示されます。
上記のメッセージの中の以下のように書かれている部分がそれに該当します。
</p>
<br />
<pre class="commandline"><code>Adding rvm PATH line to /home/neko/.profile /home/neko/.mkshrc /home/neko/.bashrc /home/neko/.zshrc.
</code></pre>
<br /><br />
<p>
更に、RVMの関数定義スクリプトの読み込み指示を.profile等に追加した旨と、
加工したファイル名が具体的に明示されます。
上記のメッセージの中の以下のように書かれている部分がそれに該当します。
</p>
<br />
<pre class="commandline"><code>Adding rvm loading line to /home/neko/.profile /home/neko/.bash_profile /home/neko/.zlogin.
</code></pre>
<br /><br />
<p>
具体的には、関数定義スクリプトの読み込みのために、以下のような内容が.profile等に書き込まれます。
</p>
<br />
<pre class="commandline"><code>[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
</code></pre>
<br /><br />
<p>
ここで、.profileや.zloginファイルは、「ログインシェル」が立ち上がるときに読み込まれる設定ファイルなのですが、
lightDM等のログインマネージャを使ってログインすると、「ログインシェル」を起動することなく、
Xセッションとしてセッションがはじまるので、.profile等が読み込まれないということが起こることがあるようです。
また、セッションの何処かでこのシェル関数の定義をしても、そのシェルから開かれた別のシェルに伝播しないこともあるようです。
</p>
<br />
<p>
そこで、まず、この設定が、うまく行っているかどうかをテストします。
ここまでの作業を終えたら、一旦、ログアウトして、ログインし直します。
システムの再起動でも構いません。
</p>
<br />
<p>
ログインし直したら、ターミナルを開いて次のコマンドを実行します。
</p>
<br />
<pre class="commandline"><code>$ type rvm
</code></pre>
<br /><br />
<p>
その結果が、以下のようにファイルを直接指している場合、残念ながら失敗です。
関数定義のファイルが上手く読み込めていません。
</p>
<br />
<pre class="commandline"><code>$ type rvm
rvm is /home/neko/.rvm/bin/rvm
</code></pre>
<br /><br />
<p>
一方で、上手く読み込めている場合には、次のような表示になります。
rvmはシェル関数であると答えてくれます。
</p>
<br />
<pre class="commandline"><code>$ type rvm
rvm is a shell function from /home/neko/.rvm/scripts/cli
</code></pre>
<br /><br />
<p>
上手く行っていない場合、.zshrcや.bashrcに、
下記の関数定義を直接読み込ませる設定を追加して様子を見ましょう。
書き込む場所は、.rvm/binをPATHへ追加する設定が既に自動で書き込まれているはずなので、
その直前に追加してあげましょう。
</p>
<br />
<pre class="commandline"><code>....
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"
....
</code></pre>
<br /><br />
<p>つまり、
<span style="color: red;">
あんまりよくわからない場合</span>は、
とりあえず、自分の使ってる方のシェルの初期設定ファイル~/.bashrcか~/.zshrcの一番最後に、
<span style="color: red;">上記のコード(シェル関数の読み込みとパスの追加)をコピペ</span>してみましょうってことです。
そして、それから、一応、ターミナルを開き直して次の項目へ進んでみましょう。
</p>
<br />
<h4>--user-installは外してはいけない</h4>
<p>
RVMインストール時のメッセージをもう少し見てみると、以下のような記述があります。
</p>
<br />
<p>
</p><blockquote>
WARNING: Found --user-install in /etc/gemrc, please remove it, as it will
break rubygems in RVM.</blockquote>
<p></p>
<br />
<p>
これは、「/etc/gemrcに--user-installオプションをみつけました。RVMのrubygemsシステムを壊してしまうので、その設定を取り除いてください」という内容ですが、
シングルユーザーモードでは当てはまりません。
つまり「<span style="color: red;">--user-installのオプションを絶対に外してはいけません</span>」。
</p>
<br />
<h4>既に、環境変数GEM_HOMEが有る場合、外す</h4>
<p>
もともとrubyを利用していた場合、
archwikiの通りにやっていると、次のような感じで
環境変数GEM_HOMEを設定していると思います。
また、gemのbinディレクトリも${GEM_HOME}/bin等として、
環境変数PATHに追加しているかもしれません。
例えば、.bashrcには、次のような記述があるかもしれません。
</p>
<br />
<pre class="commandline"><code>#GEM_HOMEの設定
export GEM_HOME="$(ruby -e 'puts Gem.user_dir')"
#PATHへの追加
export PATH="$PATH:$GEM_HOME/bin"
</code></pre>
<br /><br />
<p>
環境変数GEM_HOMEは、バージョン管理の際にRVMのシステムが自動的に書き換えて面倒をみてくれます。
そして、もし、自分の設定ファイルでGME_HOMEを定義していると、RVMの設定と衝突して不具合が起こる可能性があります。
ですから、自分のシェル初期設定ファイルを見返して、<span style="color: red;">自分でGME_HOME</span>を設定している箇所が有る場合、<span style="color: red;">それを除外</span>します。
ちなみに、gemのbinディレクトリを自分で環境変数PATHへ通す必要もありません。RVMが面倒を見てくれます。
</p>
<br />
<h4>RVMでruby2.7をインストール</h4>
<p>
rvmコマンドを使って、ruby2.7をインストールします。
</p>
<br />
<pre class="commandline"><code>$ rvm install 2.7
</code></pre>
<br /><br />
<p>
インストールが終了したら、2.7をデフォルトで使うように設定します。
</p>
<br />
<pre class="commandline"><code>$ rvm use 2.7 --default
</code></pre>
<br /><br />
<p>
archlinuxのシステムのrubyを利用する場合は、以下で切り替え。
</p>
<br />
<pre class="commandline"><code>$ rvm use system
</code></pre>
<br /><br />
<p>
defaultに登録してあるもの(今は2.7)への切り替えは以下の通り。
</p>
<br />
<pre class="commandline"><code>$ rvm use default
</code></pre>
<br /><br />
<p>
2.7をデフォルトに一回設定しておけば、新しく開いたターミナルでは2.7が呼ばれるはずですが、
以降、Jekyllを使う場面では事前に、rubyが2系統で動いているかを必ず確認してください。
</p>
<br />
<h4>RVMについて</h4>
<p>
このノートでは、ruby 2.x.xが使えればよいだけなので、
ここまでの手順を踏めれば、十分です。
RVMにこれ以上深入りしませんが、興味の有る方は、下記から情報を辿ってください。
</p>
<br />
<div>
<ul style="text-align: left;">
<li><a href="https://rvm.io/" target="_blank">https://rvm.io/</a></li>
<li><a href="https://wiki.archlinux.jp/index.php/RVM" target="_blank">RVM ArchWiki</a></li>
</ul>
</div>
<br />
<h3>Jekyll</h3>
<p>
「Jekyll」は、マークダウンのような簡単な表記をするだけで、
カッコいいウェブサイトを作成してくれるシステムです。
</p>
<br />
<div class="separator" style="clear: both;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjo0m3v6_FV2XIPJUKXTrxjPBg1cm7Naw4UHREVtVxQyfHcZPyBoAGMOBDzFVeEtH1KM-mYLS_Rthrs2CND5EDywDrLtsWIqAKzKA7CsIVLPbud3_Tw10MMTnOJJvmhiQ9XTNxUAuz6BCmukwwrTDbay8MzgFqyKucfFo_K0RCa5qujXIF0rvCl-E2z=s1920" style="display: block; padding: 1em 0px; text-align: center;">
<img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEjo0m3v6_FV2XIPJUKXTrxjPBg1cm7Naw4UHREVtVxQyfHcZPyBoAGMOBDzFVeEtH1KM-mYLS_Rthrs2CND5EDywDrLtsWIqAKzKA7CsIVLPbud3_Tw10MMTnOJJvmhiQ9XTNxUAuz6BCmukwwrTDbay8MzgFqyKucfFo_K0RCa5qujXIF0rvCl-E2z=s600" width="600" /></a>
</div>
<div style="text-align: center;"><a href="https://jekyllrb.com/" target="_blank">https://jekyllrb.com/</a></div>
<br />
<h4>Jekyllのインストール</h4>
<p>
Jekyllはrubyのgemとして配布されています。
早速、gemコマンドで、Jekyllとjekyllが使うbundlerを一緒にインストールします。
しかし、このインストールの前に、そのターミナル内のrubyがバージョン2系統であることを確認しましょう。
</p>
<br />
<pre class="commandline"><code>$ ruby --version
</code></pre>
<br /><br />
<p>
もし、バージョンが3系統の場合、<span style="color: red;">rvmを使って2系統に変更</span>します。
</p>
<br />
<pre class="commandline"><code>$ rvm use 2.7
</code></pre>
<br /><br />
<p>
rubyのバージョンが2系統であることが確認できたら、
以下のgemコマンドでjekyllとbundlerをインストールします。
結構時間がかかるので、のんびりと待ちましょう。
</p>
<br />
<pre class="commandline"><code>$ gem install jekyll bundle
</code></pre>
<br /><br />
<h4>初めてのJekyll</h4>
<p>
まずは、実際に、Jekyllを使います。
ここでは、Jekyllのページで紹介されている「Quick Start」の手順を紹介します。
ホームディレクトリ以下の適当なディレクトリで、
以下のコマンドを発行しましょう。
</p>
<br />
<pre class="commandline"><code>$ jekyll new myblog
</code></pre>
<br /><br />
<p>
カレントディレクトリに「myblog」というディレクトリが作成されているはずなので、
そのディレクトリに入ります。
</p>
<br />
<pre class="commandline"><code>$ cd myblog
</code></pre>
<br /><br />
<p>
このコマンドで、「myblog」というjekyllのプロジェクトが作成され、
myblogディレクトリの中には、jekyllを利用する上で必要となる設定ファイルと
webコンテンツ用の初期サンプルファイルが準備されます。
</p>
<br />
<p>
myblogディレクトリに入って適当にファイルを確認したら、
次は、以下のコマンドを実行します。
</p>
<br />
<pre class="commandline"><code>$ bundle exec jekyll server
</code></pre>
<br /><br />
<p>
jekyllには簡易なウェブサーバー機能が付属しているので、
jekyllで作ったwebページがどんなふうに風に見えるかを
ローカルでテストすることが出来ます。
</p>
<br />
<p>
メッセージの指示通り、自分のブラウザで「http://127.0.0.1:4000」へアクセスすると、
jekyllが作成したサイトを見ることが出来ます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgLOi22jzykcLnnfKDQkEvdkCkvQjoNgIgorrwze1_SDU9O09P8cEBUwddIxj6ofUe9Tmk8tA9X01tG-qdNg_uwEt126TRHo2cOtS0Wu3ce-Kc6moO4-3k6hy1pYyaSKaLinIFgcx2NFsYlIbkDMmTxJSD5ROicb2bOHOAGHOSa-lFu-CeG8hpXu1RG=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEgLOi22jzykcLnnfKDQkEvdkCkvQjoNgIgorrwze1_SDU9O09P8cEBUwddIxj6ofUe9Tmk8tA9X01tG-qdNg_uwEt126TRHo2cOtS0Wu3ce-Kc6moO4-3k6hy1pYyaSKaLinIFgcx2NFsYlIbkDMmTxJSD5ROicb2bOHOAGHOSa-lFu-CeG8hpXu1RG=s600" width="600" /></a></div>
<p>
ここでは、ここまでの流れの通り、Jekyllが動作することが確認できればそれでOKです。
</p>
<br />
<h3>GitHub Pages</h3>
<p>
GitHub pagesは、githubのリポジトリにWebページ用のコンテンツを入れておくと、
Webページとして閲覧できるシステムです。
</p>
<br />
<h4>GitHub Pages用のリポジトリを作成する</h4>
<p>
Github Pageを利用する場合、リポジトリの名前が重要になります。
あなたのユーザー名に入れ替えた「username.github.io」という名前のリポジトリを新規作成します。
例えば、githubのユーザー名が「nekolinuxblog」ならば、「nekolinuxblog.github.io」という名前のリポジトリを作成します。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj-0r1QNtI4KHX4yT2Q2gKw3U_A9lNySjpBjIjdT1CrlLPLqOhg1WCPKf5EaJXYQqFGYjwYWYI80ZhaYsJCyTS6M41W-QtWyA-6wpw0OLZT1qPcVaZ8mkWh0JeUPUTRnRHVIY8QMzuGOo060R9PC1_n8tT7kGPnt3gFSti5VA1eC6RZn4TRFYcOk78S=s1219" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1010" data-original-width="1219" src="https://blogger.googleusercontent.com/img/a/AVvXsEj-0r1QNtI4KHX4yT2Q2gKw3U_A9lNySjpBjIjdT1CrlLPLqOhg1WCPKf5EaJXYQqFGYjwYWYI80ZhaYsJCyTS6M41W-QtWyA-6wpw0OLZT1qPcVaZ8mkWh0JeUPUTRnRHVIY8QMzuGOo060R9PC1_n8tT7kGPnt3gFSti5VA1eC6RZn4TRFYcOk78S=s600" width="600" /></a></div>
<h4>リポジトリのクローン</h4>
<p>
github Pages用のリポジトリが作成できたら、ローカルにクローンします。
<a href="http://neko-mac.blogspot.com/2021/12/gitgithub.html" target="_blank">「gitとgithubをお洒落に使いこなす」</a>
で紹介している通り、ssh経由でクローンします。(リポジトリが空かどうかではじめの画面が異なります)
</p>
<br />
<pre class="commandline"><code>$ git clone git@github.com:nekolinuxblog/nekolinuxblog.github.io.git
</code></pre>
<br /><br />
<p>
usernameがnekolinuxblogの場合のURLは上記のようになります。
そして、そのコマンドを実行すると、カレントディレクトリにリポジトリがクローンされます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhW_9Bm7CC174L02PLjfdoaQfPkMD0i7AoSVpH_Vh7vhWgtAHW_HpwEcg9X2HK3A5BatPeCV1LPp7x-7j31S7bkKITAbm0di349QvkOHjUvUy6IGTFKyT01RxC6NqZ8UI59eYflxMRZEz6zcPlR9eAbqC30QsJgO9AWJDfSgQg99SPP6Iw09AWhebad=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEhW_9Bm7CC174L02PLjfdoaQfPkMD0i7AoSVpH_Vh7vhWgtAHW_HpwEcg9X2HK3A5BatPeCV1LPp7x-7j31S7bkKITAbm0di349QvkOHjUvUy6IGTFKyT01RxC6NqZ8UI59eYflxMRZEz6zcPlR9eAbqC30QsJgO9AWJDfSgQg99SPP6Iw09AWhebad=s600" width="600" /></a></div>
<h4>リポジトリにJekyllプロジェクトを作成</h4>
<p>
クローンしたリポジトリの中にJekyllのプロジェクトを作成します。
リポジトリに入って、次のコマンドを実行します。最後のピリオドを見落とさないように。
ピリオドでカレントディレクトリを指定しています。
</p>
<br />
<pre class="commandline"><code>$ cd nekolinuxblog.github.io
$ jekyll new --skip-bundle .
</code></pre>
<br /><br />
<p>
コマンドを実行すると、Jekyllプロジェクトとして必要なファイルが生成されます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgtyrqq--hW_D14jBgBblsqHcKrrNtybXUoP499MRXEEL0h-cYGeqfTtabBhMk9Is-Swjt2uU5unJFnOOGk91VoBmygnMNXMaItFWJ_uyHaP1X052eaNf3-cJGsmpPDbxKnDqmnQ-634ShpqjxKKGkE60YdHUdkK9MLmN4VPv2gSIErWfOtHJiInkv1=s934" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="497" data-original-width="934" src="https://blogger.googleusercontent.com/img/a/AVvXsEgtyrqq--hW_D14jBgBblsqHcKrrNtybXUoP499MRXEEL0h-cYGeqfTtabBhMk9Is-Swjt2uU5unJFnOOGk91VoBmygnMNXMaItFWJ_uyHaP1X052eaNf3-cJGsmpPDbxKnDqmnQ-634ShpqjxKKGkE60YdHUdkK9MLmN4VPv2gSIErWfOtHJiInkv1=s600" width="600" /></a></div>
<p>
上記のコマンドを実行する際に、<span style="color: red;">既にREADMEやライセンス等のファイルがあるとプロジェクト作成に失敗</span>します。
この場合、.gitディレクトリ以外の他のファイルを削除してから上記のコマンドを実行しましょう。
</p>
<br />
<p>
次は作成されたファイルの中にあるGemfileをエディタで開きます。
</p>
<br />
<pre class="commandline"><code>$ vim Gemfile
</code></pre>
<br /><br />
<p>
そして、次の編集を行います。
</p>
<br />
<p>
まず、ひとつめは、
<code>gem "jekyll"</code>で始まる行の行頭に#を書き加えて、コメントにする。
</p>
<br />
<p>
次に、コメント化した行の下に、以下の行を追加する。
</p>
<br />
<pre class="commandline"><code>gem "github-pages", "~> GITHUB-PAGES-VERSION", group: :jekyll_plugins
</code></pre>
<br /><br />
<p>
このとき、<span style="color: red;">GITHUB-PAGES-VERSIONを特定のバージョンに置き換え</span>なければなりません。
何に置き換えるかは、<a href="https://pages.github.com/versions/" target="_blank">Dependency versions</a>のページを開き、
Github Pagesのバージョンを調べて、それに置き換えます。ノート作成時点では219なので、以下のようになります。
</p>
<br />
<pre class="commandline"><code>gem "github-pages", "~> 219", group: :jekyll_plugins
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhfX_R9CqUbk6zMtpQrN3cv5tAz-lxmPiIf1zk3sdFeNl3zSeCBC6j81zTPrIPpoK5NKmyiIQfo-tPRvlzkByG-Z9msQLFSjpoQoNWjho0wUrxnkDhF0zX_fdBddXkXl8RzoBROztTy-bUSmqcpbXFCgJCZgGLhTI3Wr3tBR28Pxx0QX1BcC2mGiFpo=s1105" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1010" data-original-width="1105" src="https://blogger.googleusercontent.com/img/a/AVvXsEhfX_R9CqUbk6zMtpQrN3cv5tAz-lxmPiIf1zk3sdFeNl3zSeCBC6j81zTPrIPpoK5NKmyiIQfo-tPRvlzkByG-Z9msQLFSjpoQoNWjho0wUrxnkDhF0zX_fdBddXkXl8RzoBROztTy-bUSmqcpbXFCgJCZgGLhTI3Wr3tBR28Pxx0QX1BcC2mGiFpo=s600" width="600" /></a></div>
<p>
つまりは、GitHubPagesの機能を使うために、通常のjekyll gemではなく、github-pages gemを使いますよと編集しています。
編集完了したら、次のコマンドを実行しましょう。
</p>
<br />
<pre class="commandline"><code>$ bundle install
</code></pre>
<br /><br />
<p>
jekyllに必要なものがインストールされて準備されます。
プロンプトが戻ったら、次のコマンドを実行しましょう。
</p>
<br />
<pre class="commandline"><code>$ bundle exec jekyll server
</code></pre>
<br /><br />
<p>
簡易サーバーが起動するので、http://127.0.0.1:4000にブラウザでアクセスしましょう。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgJou3CKowIECIRDJ7GGWhEIFNXNnWRUU7WoV37soIIvCRs-_k6rvoE0ikSeItYuFH0b4USqe7auY06uy6OTJbGSvU5VED5guQRU_J5EqS32Wseh5BwRoxS-65Q7H5nxHGoyF4NUb3nyROwaGjr8-L7tAVlD4AA0RnYXqmidRscq_tOGKQZ40zbtPum=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEgJou3CKowIECIRDJ7GGWhEIFNXNnWRUU7WoV37soIIvCRs-_k6rvoE0ikSeItYuFH0b4USqe7auY06uy6OTJbGSvU5VED5guQRU_J5EqS32Wseh5BwRoxS-65Q7H5nxHGoyF4NUb3nyROwaGjr8-L7tAVlD4AA0RnYXqmidRscq_tOGKQZ40zbtPum=s600" width="600" /></a></div>
<p>
github pagesに関連したJekyll構成の出来上がりです。
見ているものは、先にローカルで作成した、Jekyllのサンプルと同じ内容ですが、これがGitHub Pagesとしてgithub上で機能します。
なので、この状態をコミットしてgithubへプッシュすると、そのまま、Webページとして公開されます。
Ctrl+Cで簡易サーバーを終了したら、早速、コミットしてプッシュです!
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhnyVF7AbqwqGx-cyeN0qLcWo1b2PLdGWdXxderUSJDUnimEg5kgJajfzQyem_s9nD2YvC8Mvi1un99zSPRNsiCYYLXZigdIg0Y_4Ny4aQp5BQqk21cU0I2gHZ1DrNLNOBRSaPDa25oHdXq20y4iCvmjU7d9VqXK_AcOk4pddfuZd_OV8G87ZJjyx5F=s1010" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1010" data-original-width="934" height="600" src="https://blogger.googleusercontent.com/img/a/AVvXsEhnyVF7AbqwqGx-cyeN0qLcWo1b2PLdGWdXxderUSJDUnimEg5kgJajfzQyem_s9nD2YvC8Mvi1un99zSPRNsiCYYLXZigdIg0Y_4Ny4aQp5BQqk21cU0I2gHZ1DrNLNOBRSaPDa25oHdXq20y4iCvmjU7d9VqXK_AcOk4pddfuZd_OV8G87ZJjyx5F=s600" /></a></div>
<p>
pushしてから、Webページとして反映されるのに数分かかります。
URLは、https://username.github.io/です。usernameを自分のgithubアカウントのユーザー名に置き換えましょう。
僕のURLは、https://nekolinuxblog.github.io/です。
</p>
<br />
<p>
ここまでで、GitHubPagesとJekyllの連携の一例ができました。
Jekyllを使って自分のページデザインをしてみたい場合は、ここがスタート地点になります。
</p>
<br />
<h3>Minimal Mistakes</h3>
<p>
Minimal Mistakesは、Jekyllの機能を使ってデザインされたテーマです。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXecTFTLrF4ngDVRh6X-OqnCUSYRua_0B5oltTAA4-gRIggzT9CzO8BYEhp9-LfANq7mybA01CEbUcoL8AMxoCY6MzuhuGLuTXdY7DPQX42hdfT5GYQ7ZwSL0GVNOh7QzsEiuyclZTfCqcWWwNpuKVLkbhWQMDlvsEL0YkHlvnoZsPtt5lPI_7DFp3=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXecTFTLrF4ngDVRh6X-OqnCUSYRua_0B5oltTAA4-gRIggzT9CzO8BYEhp9-LfANq7mybA01CEbUcoL8AMxoCY6MzuhuGLuTXdY7DPQX42hdfT5GYQ7ZwSL0GVNOh7QzsEiuyclZTfCqcWWwNpuKVLkbhWQMDlvsEL0YkHlvnoZsPtt5lPI_7DFp3=s600" width="600" /></a></div>
<div style="text-align: center;"><a href="https://mmistakes.github.io/minimal-mistakes/" target="_blank">https://mmistakes.github.io/minimal-mistakes/</a></div>
<br />
<p>
Minimal Mistakes用の設定ファイル等をコピーして、
自分用のカスタマイズの雛形にするのが便利なので、
まずは、下準備として、Minimal Mistakesのgithubリポジトリをクローンしておきます。
適当なディレクトリのもとで以下のコマンドを実行しましょう。
</p>
<br />
<pre class="commandline"><code>$ git clone https://github.com/mmistakes/minimal-mistakes.git
</code></pre>
<br /><br />
<h4>自分のリポジトリを空にして1からやり直し</h4>
<p>
さて、先に自分で作成したGitHubPages用のリポジトリの中身を.gitディレクトリを除いて空にします。
つまり、先に試したJekyllサイトを消して、最初にクローンしてきた時の空っぽの状態に戻します。
このノートでは、GithubPagesでのJekyllの連携の確認のために、Jekyllの雛形サイトを上記で作成しましたが、
実際に、Minimal Mistakesを使ってサイトを構築する場合、先の手順は必要ありません。
GitHubPages用の空のリポジトリを用意したら、ここの手順からスタートしてOKです。
</p>
<br />
<p>
リポジトリが空になったら、最初に、以下の内容のGemfileを作成しましょう。
</p>
<br />
<pre class="commandline"><code>source 'https://rubygems.org'
gem 'github-pages',"~> 219", group: :jekyll_plugins
gem 'jekyll-include-cache', group: :jekyll_plugins
</code></pre>
<br /><br />
<p>
先に紹介したとおり、github-pagesの後ろにある219の部分は、<a href="https://pages.github.com/versions/" target="_blank">Dependency versions</a>のページを開き、
Github Pagesのバージョンを調べて、それに置き換えます。
</p>
<br />
<p>
Gemfileの編集が出来たら、次のコマンドでgemをインストールします。
</p>
<br />
<pre class="commandline"><code>$ bundle install
</code></pre>
<br /><br />
<p>
次は、クローンしたminimal mistakesのリポジトリのトップディレクトリにある次の3つのファイルを自分のGitHubPagesのリポジトリにコピーします。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>.gitignore</li>
<li>_config.yaml</li>
<li>index.html</li>
</ul>
</div>
<br />
<p>
コピーしたファイルのうち、_config.yamlをエディタで開きます。
そして、「# remote_theme :..」で始まる行の行頭の#を外してコメント化を解きます。
</p>
<br />
<pre class="commandline"><code>....
remote_theme : "mmistakes/minimal-mistakes"
....
</code></pre>
<br /><br />
<p>
以上で、準備が完了しました。
次のコマンドで簡易サーバーを立ち上げ、ブラウザで確認してみましょう。
</p>
<br />
<pre class="commandline"><code>$ bundle exec jekyll server
</code></pre>
<br /><br />
<p>
これでMinimal Mistakesが動くようになりました。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjgznK-iSuyA5AWgB6kyjY454y2S_JbYKkJlfAfxDywW6cNqEsQLSFIV9ugTYiUtj5eWJSZ-f1sMBfSxIP3_MXsI6pLfLPWyK2St3ObqdKs4LYytzU7BiXWP4xO9l2-NCBHpLZdIkAlPYbpVWkgbXDwad5-xN39bgJSpCbecOY-TIXOIW_180KXs3sc=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEjgznK-iSuyA5AWgB6kyjY454y2S_JbYKkJlfAfxDywW6cNqEsQLSFIV9ugTYiUtj5eWJSZ-f1sMBfSxIP3_MXsI6pLfLPWyK2St3ObqdKs4LYytzU7BiXWP4xO9l2-NCBHpLZdIkAlPYbpVWkgbXDwad5-xN39bgJSpCbecOY-TIXOIW_180KXs3sc=s600" width="600" /></a></div>
<p>
このリポジトリをpushすることで、GitHubPagesとして、Webサイトを公開することが出来るようになります。
</p>
<br />
<h4>リポジトリのメンテナンス</h4>
<p>
rubygemを使ったjekyllのシステムは、常にgemがアップデートされていきます。
古いgemのままほったらかしているとセキュリティ上の問題がある場合があります。
そこで、定期的にgemに新しいものを使うようにbundleでアップデートを行います。
リポジトリに入って、以下のコマンドを実行しましょう。
</p>
<br />
<pre class="commandline"><code>$ bundle update
</code></pre>
<br /><br />
<h3>Home pageの作り方の基本</h3>
<p>
Jekyllシステムには、核になる"_config.yaml"という名前の設定ファイルと自分で作るコンテンツ用のファイルがあります。
</p>
<br />
<h4>_config.yaml</h4>
<p>
Jekyllシステムは、"_config.yaml"ファイルで全体の設定を行います。
yamlファイルは基本的に「key:値」という書式になっています。
この設定ファイルでは、このホームページ全体の挙動の設定もおこないますが、
Jekyllでは、これらのkeyが変数としてテンプレートに書き込まれており、
その内容が設定された値に置き換えられてコンテンツページが作成される仕組みになっています。
まずは、_config.yamlを開いて、「#site Settings」辺りの、titleやnameについての値を書換えてみましょう。
</p>
<br />
<pre class="commandline"><code>...
# Site Settings
locale : "en-US"
title : "おしゃれなほーむぺーじ"
title_separator : "-"
subtitle : # site tagline that appears below site title in masthead
name : "猫田しゅん吉"
description : "ホームページで世界をおしゃれにする"
...
</code></pre>
<br /><br />
<p>
その他に、もう少し下にある「Site Author」の辺りも、
自分の名前にしてみましょう。
</p>
<br />
<pre class="commandline"><code>...
author:
name : "Nekota"
avatar : # path of avatar image, e.g. "/assets/images/bio-photo.jpg"
bio : "猫になりたい"
location : "Osaka Japan"
email :
...
</code></pre>
<br /><br />
<h4>自作のマークダウンファイル</h4>
<p>
コンテンツファイルは、通常のhtmlではなく、マークダウン書式で書くことが出来ます。
また、自作のマークダウンファイルは、そのファイルの始まりに「---」と「---」で囲まれた「yamlフロントマター」と呼ばれる
yaml書式設定を書き込んだ部分を持っています。
</p>
<br />
<p>
先に準備したindex.htmlファイルを開いて内容を見てみましょう。
拡張子に.htmlを使っていても、jekyllでは、コンテンツファイルとして処理してくれます。
</p>
<br />
<pre class="commandline"><code>---
layout: home
author_profile: true
---
</code></pre>
<br /><br />
<p>
layoutの値は、homeになっていますが、この部分を切り替えることで、minimal mistakesページの用途(見た目の体裁)を切り替えることが出来るようになっています。
minimal mistakesで定義されている主なものは、以下のとおりです。(詳しくは、<a href="https://mmistakes.github.io/minimal-mistakes/docs/layouts/#layout-based-and-user-defined-classes" target="_blank">Layout based and user-defined classes</a>を参照)
</p>
<br />
<div>
<ul style="text-align: left;">
<li>home</li>
<li>single</li>
<li>posts</li>
<li>splash</li>
<li>search</li>
<li>category</li>
</ul>
</div>
<br />
<br />
<p>
author_profileについては、trueとfaulseの値を入れ替えて、実際にどのような変化があるのかたしかめてみましょう。
このように、yamlフロントマターで、コンテンツページの設定を行えるようになっています。
</p>
<br />
<p>
そして、ページのコンテンツ自体は、yamlフロントマターの後ろに、マークダウン形式で記述します。
</p>
<br />
<h4>コンテンツファイルの置き場所とファイル名</h4>
<p>
自分で作成するコンテンツファイルは基本的にリポジトリのルートディレクトリにあればhtmlファイルへ変換されます。
jekyllでは、変換されたファイルは"_site"ディレクトリに出力されます。
</p>
<br />
<p>
一方、minimal mistakesでは、自作のコンテンツファイルについて、置き場所が決められているものがあります。
その中でも投稿記事形式のコンテンツは"_posts"ディレクトリに配置するようになっています。
また、ファイル名も「YEAR-MONTH-DAY-title.MARKUP」という形式でつけるようになっています。
例えば、「2022-01-04-happyday.md」という感じです。
</p>
<br />
<p>
また、一般的なページについては、"_pages"ディレクトリに置きます。例えば、about.mdや404.mdがここに置かれます。
</p>
<br />
<p>
Jekyllシステムでは、コンテンツファイルの置き場やフィル名によって、実際のWebのコンテンツ構成や投稿の検索などを行う仕組みになっているので、
そのテーマで説明されている約束ごと通りにコンテンツファイルを構成することが必要になります。
</p>
<br />
<h4>読むべき場所</h4>
<p>
ここまでで、実際にGitHub Pages上で、Jekyllシステムが動く環境を手に入れることが出来、
また、Jekyllシステムがざっくりと、どんな仕組みになっているということを把握しました。
あとは、実際に、触りながら覚えてきましょう。
その時に、必要となる知識はまず、Jekyllの日本語ページです。
</p>
<br />
<div>
<ul style="text-align: left;">
<li><a href="http://jekyllrb-ja.github.io/docs/step-by-step/01-setup/" target="_blank">Step by Step チュートリアル
</a></li>
<li><a href="http://jekyllrb-ja.github.io/docs/structure/" target="_blank">ディレクトリ構成</a></li>
<li><a href="http://jekyllrb-ja.github.io/docs/pages/" target="_blank">Pages</a></li>
<li><a href="http://jekyllrb-ja.github.io/docs/posts/" target="_blank">Posts</a></li>
<li><a href="http://jekyllrb-ja.github.io/docs/permalinks/">パーマリンク</a></li>
</ul>
</div>
<br />
<p>
Step by Stepでは、liquid(リキッド)という仕組みを利用して、変数での置き換えや場合分け、フィルタ機能を使って、テンプレートを作成しているJekyllの大まかな仕組みがわかるようになると思います。
次にディレクトリ構成でjekyllのプロジェクトディレクトリ内にある一般的なファイルやディレクトリの役割がわかります。
そして、PagesやPostsでJekyllシステムのコンテンツを具体的にどうやって配置するかも解るようになると思います。
最後に、パーマリンクによって、各コンテンツファイルとリンク関係や実際のURLでどんな風に構成するかを調整する仕組みが分かるようになります。
</p>
<br />
<p>
基本的なJekyllのシステムがわかった上で、これを使って具体的にデザインされたminimal mistakesを実際に使うためには、
minimal mistakesのドキュメントを読む必要がありますが、現在のところ、ドキュメントは英語のみです。
また、ドキュメントの量も多く、構成も複雑なので、英語を読むのが苦痛な人にとっては大変な作業になります。
</p>
<br />
<p>
そこで、まずは、次のページに的を絞って目を通しましょう。
ひとつめは、_config.yamlに定義されている各キーについての説明をしているページです。
サイトの動作に関する調整や、コメント機能の追加等、難しそうなところは飛ばして、
titleやnameのような値を正しく設定することで、サイトのアチコチの紐付けられた部分が正しく表示されるようにしましょう。
</p>
<br />
<a href="https://mmistakes.github.io/minimal-mistakes/docs/configuration/" target="_blank">https://mmistakes.github.io/minimal-mistakes/docs/configuration/</a>
<br />
<br />
<p>
次に、minimal mistakesで定義されている「layout」と
各レイアウトで取ることが出来るオプションを知ることが出来るページです。
</p>
<br />
<a href="https://mmistakes.github.io/minimal-mistakes/docs/layouts/" target="_blank">https://mmistakes.github.io/minimal-mistakes/docs/layouts/</a>
<br />
<br />
<p>
英語がよくわからなくても、yamlフロントマーターの例と、スクリーンショットがあるので、
実際に試しながら理解することが出来ると思います。
特に、次のレイアウト項目に着目してみてください。
</p>
<br />
<div>
<ul style="text-align: left;">
<li><a href="https://mmistakes.github.io/minimal-mistakes/docs/layouts/#single-layout" target="_blank">Single layout</a></li>
<li><a href="https://mmistakes.github.io/minimal-mistakes/docs/layouts/#splash-page-layout" target="_blank">Splash page layout</a></li>
</ul>
</div>
<br />
<p>
</p>
<br />
<h4>見本となるリポジトリ</h4>
<p>
実際にminimal mistakesを使っているgithub pagesのリポジトリを以下に紹介します。見本にしてみましょう。
</p>
<br />
<div>
<ul style="text-align: left;">
<li><a href="https://github.com/rea-osaka/rea-osaka.github.io" target="_blank">rea-osaka/rea-osaka.github.io</a></li>
<li><a href="https://github.com/nekolinuxblog/nekolinuxblog.github.io" target="_blank">nekolinuxblog/nekolinuxblog.github.io</a></li>
</ul>
</div>
<br />
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-38552169516320635352021-12-29T16:08:00.003+09:002022-01-14T13:15:55.363+09:00gitとgithubをお洒落に使いこなす<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjWHcvg3eyoNN_0Mb5IkTq_VD-VCfvu1Kf5T3ZtKHFjbBFJx3Mc45OKzcE5HymiIX3ll2mKAyx5gjAJotN7pmZIeKTurAINHO160wI2CCWckC1OnRXKzdgWiIGkh06ciVJiRFEab9AsL0iy6JE9R1C5K9D2HhFK0j6AptaeWXrP79uXWwEAbI5bYbWI=s4032" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="3024" data-original-width="4032" src="https://blogger.googleusercontent.com/img/a/AVvXsEjWHcvg3eyoNN_0Mb5IkTq_VD-VCfvu1Kf5T3ZtKHFjbBFJx3Mc45OKzcE5HymiIX3ll2mKAyx5gjAJotN7pmZIeKTurAINHO160wI2CCWckC1OnRXKzdgWiIGkh06ciVJiRFEab9AsL0iy6JE9R1C5K9D2HhFK0j6AptaeWXrP79uXWwEAbI5bYbWI=s600"/></a></div>
<p>
archlinuxを使うライトな日曜プログラマーは、
開発に興味があるので、gitやgithubに手を出すものの、
それが仕事ではないので、毎日使うわけではなく暫くするといろんなことを忘れてしまい、すぐに、
</p>
<br />
<p style="text-align: center;"><span style="color: red; font-size: x-large;">
「あれ、なんだっけ??」
</span></p>
<br />
<p>
と、呟くのです。
</p>
<br />
<p>
このノートは、普段、"I use archlinux btw."とか言ってるくせに、
githubアカウンや、gitのことになると、、、ゴニョゴニョ、、とかいうarchlinuxな人の秘密のページです。
</p>
<br />
<p>
もし、「僕、Githubにアカウントないんですけど、、、」って人がいるならば、以下のページも参考にしてください。
</p>
<br />
<a href="https://rea-osaka.github.io/works/howto/github/account/" target="_blank">GitHubアカウントの作り方</a>
<br />
<br />
<h3>gitのユーザー名とメールアドレス</h3>
<p>
gitでコミットすると、誰がしたのかがわかるように、名前とメールアドレスが書き込まれます。
そのため、gitを使う場合には、はじめにこの登録をしておく必要があります。
これらは、~/.gitconfigファイルに設定が書き込まれますが、
ファイルを直接編集せず、以下のコマンドで設定変更します。
</p>
<br />
<pre class="commandline"><code>$ git config --global user.name nekota
$ git config --global user.email nekota@example.com
</code></pre>
<br /><br />
<p>
初めての頃は、何処かの説明をみて適当にメールアドレスを入れているのですが、
github等を使うようになって、メールアドレスや名前が世界に公開されている事に気が付き
変更したくなることが有るかもしれません。
</p>
<br />
<p>
そもそも、俺ちゃんは何で登録してたっけ?って時のコマンドはこれです。
</p>
<br />
<pre class="commandline"><code>$ git config --list
</code></pre>
<br /><br />
<p>
実は、この名前やメールアドレスの設定は、デフォルト設定を表しています。
先のコマンドの「--global」オプションがそれを表しています。
</p>
<br />
<p>
一方で、gitの設定は、必要がアレば、リポジトリ毎に設定変更をすることが出来ます。
リポジトリに入ってから、以下のように--localオプションを付けて実行します。
</p>
<br />
<pre class="commandline"><code>$ cd a_awesome_proj
$ git config --local user.name nekomura
$ git config --local user.email nekomura@example.com
</code></pre>
<br /><br />
<h4>gitのuser.nameとgithubは無関係</h4>
<p>
ここで、もう一つ認識しておいたほうが、混乱を避けれることとして、
gitで登録する名前やメールアドレスは、githubアカウントとは直接には何の関係もありません。
gitのバージョン管理において誰がコミットしたのかを表す文字列として記録される時に用いられるだけです。
</p>
<br />
<a href="https://docs.github.com/en/get-started/getting-started-with-git/setting-your-username-in-git" target="_blank">https://docs.github.com/en/get-started/getting-started-with-git/setting-your-username-in-git</a>
<h3>githubでのリポジトリの作り方はクローンでOK</h3>
<p>
github上でリポジトリを作る時、どうしていますか?
巷のHowToをみると大体次のように説明されています。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>githubのweb上でリポジトリを作成</li>
<li>ローカルで、リポジトリにしたいディレクトリでgit init</li>
<li>ローカルで作成したリポジトリのリモートにgithubリポジトリを紐付け</li>
<li>pushする</li>
</ul>
</div>
<br />
<p>
しかし、なにか厳密な事情がない限り、githubのweb上でリポジトリを作ったら、
それをcloneして、ローカル側のリポジトリにすればOKです。
gitとしてのリポジトリ初期化やリモートの情報をわざわざ自分で登録する必要がなくなります。
つまりは、次のような感じ。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>githubのweb上でリポジトリを作成</li>
<li>ローカルにクローン</li>
<li>ローカルのリポジトリに色々突っ込んでファーストコミット</li>
<li>pushする</li>
</ul>
</div>
<br />
<p>
リポジトリ作成時に、README等の作成をせずに、空っぽのまま作成すると次のような画面になります。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjcBgmmmmfsNWELQwez7v-BPWu0Py1xjEne-7Ppexx3H8wuWBth2RZHnjJs8srwpXHw6pvG3EQyg4rErV5H4KX4BeNvc57JLs8mNqwZB1z32PrGsRKVgX5D6I3GA0IXl-9YpPwZCAG_ABe_bfSNK2Qp9Dzh3LNyfyehNvfjHbjc5hcsR8_z-BhXqR9H=s1920" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEjcBgmmmmfsNWELQwez7v-BPWu0Py1xjEne-7Ppexx3H8wuWBth2RZHnjJs8srwpXHw6pvG3EQyg4rErV5H4KX4BeNvc57JLs8mNqwZB1z32PrGsRKVgX5D6I3GA0IXl-9YpPwZCAG_ABe_bfSNK2Qp9Dzh3LNyfyehNvfjHbjc5hcsR8_z-BhXqR9H=s600"/></a></div>
<p>
Quick setupのhttpsをsshに切り替えて、コピーボタンを押しましょう。
そして、ターミナルに<code>git clone </code>と書いた後ろにコピペします。
上記の例ならば、コマンドは以下のようになります。
</p>
<br />
<pre class="commandline"><code>$ git clone git@github.com:nekolinuxblog/nekolinuxblog.github.io.git
</code></pre>
<br /><br />
<p>
これを実行すると空のリポジトリがクローンされます。
一方、リポジトリ作成時に、ライセンスやREADMEを自動作成した場合には、通常通り、緑の「Code」ボタンがでるので、
そこをクリックして「ssh」を選択後、URLをコピー、ターミナルのgit clone の後ろにペーストで、
クローンします。
</p>
<br />
<h3>githubを使うならssh認証</h3>
<p>
githubのアカウントを作ったら、ssh鍵登録は先ずやっておくべきマスト事項です。
そしてこのことは、アカウントを作ったときには、大体の人は、何処かのHowToを見て設定していると思います。
例えば、githubのドキュメントなら以下にあります。
</p>
<br />
<a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account" target="_blank">Adding a new SSH key to your GitHub account
</a>
<br />
<br />
<p>
sshでの認証について、頭で理解したい人は、arch wikiが割とわかりやすく書かれているので目を通してみましょう。
</p>
<br />
<a href="https://wiki.archlinux.jp/index.php/SSH_%E9%8D%B5" target="_blank">SSH 鍵 arch wiki</a>
<br />
<br />
<h4>ssh鍵の登録</h4>
<p>
archlinuxの場合、必要なパッケージのインストール。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S openssh
</code></pre>
<br /><br />
<p>
次のコマンドで鍵を作成します。
鍵作成のための質問が幾つか有るので、適当に答えます。
質問への答えがデフォルトで良ければ、単にリターンキーを押していくだけで、作業は進みます。
パスフレーズについては、家では設定していません。(パスフレーズで何が暗号化されるのかはarch wikiを読んでみましょう)
</p>
<br />
<pre class="commandline"><code>$ ssh-keygen -t rsa
</code></pre>
<br /><br />
<p>
鍵は、~/.ssh/以下に作成されます。
そのうち、~/.ssh/id_rsa.pubの内容が公開鍵なので、
これをgithub側に登録します。
</p>
<br />
<p>
ここで、今度は、githubにwebからアクセスして自分のアカウントにログインします。
自分のページが開いたら、右上、自分のアイコンをクリックして出てくるメニューから「Settings」を選択します。
そうすると、設定のページに切り替わるので、そのページの左に並んでいるメニューから
「SSH and GPG keys」をクリックしましょう。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjYQwmXZqpoleP2-ZKL8bQDFCXP0RdHr6-70oXv5gOrxLjVY_CbU_25cC4Ktnzq2fZPG4IQfE4AkRblrIDRDAAggddJwVxhf_UrWMDPJXyimU6juVdQ79y0dGGTvpm1gFaHXAZUYW3kCV3ec_NiLyNBy63GDomxXeJim7BZ_jIoIik2inm0KX1i2s01=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEjYQwmXZqpoleP2-ZKL8bQDFCXP0RdHr6-70oXv5gOrxLjVY_CbU_25cC4Ktnzq2fZPG4IQfE4AkRblrIDRDAAggddJwVxhf_UrWMDPJXyimU6juVdQ79y0dGGTvpm1gFaHXAZUYW3kCV3ec_NiLyNBy63GDomxXeJim7BZ_jIoIik2inm0KX1i2s01=s600" width="600" /></a></div>
<p>
SSH Keysと書かれたタイトルの右にある、「New SSH Keys」と書かれ緑色のたボタンをクリックします。
</p>
<br />
<p>
切り替わったページで、Titleには、どのパソコンのどのアカウントの鍵かが分かる名前を適当に書き、
keyの部分に、~/.ssh/id_rsa.pubの内容をコピペします。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjIQiELdkCOiR5y6p2xEYI5XjnOpTNyOy_mxCW1JOsR2oX6dryFh09GUuCZOA6Pds67aeSooSXqevHa8Mg0qhFqus2N89eaH3EYlnphxdP2DR8GKehSadKHddRsTDLM_gcav6HxqNeEwTViN-VuNpeW6LA4LvselkeCfTfhsHBjZlR-Vq03qvR3gqbJ=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEjIQiELdkCOiR5y6p2xEYI5XjnOpTNyOy_mxCW1JOsR2oX6dryFh09GUuCZOA6Pds67aeSooSXqevHa8Mg0qhFqus2N89eaH3EYlnphxdP2DR8GKehSadKHddRsTDLM_gcav6HxqNeEwTViN-VuNpeW6LA4LvselkeCfTfhsHBjZlR-Vq03qvR3gqbJ=s600" width="600" /></a></div>
<p>
最後に、下にある「Add SSH key」と書かれた緑のボタンを押せば完了です。
これで、ssh接続でリモートに簡単にpushすることが出来るようになります。
</p>
<br />
<h4>ssh認証ってなんだっけ?</h4>
<p>
しかし、一番はじめに、いっかいやるだけなので、日曜プログラマーは、大体、上記で行った作業のことを忘れてしまうものです。
</p>
<br />
<p>
そして、問題がおこるのは、しばらくしてからです。
</p>
<br />
<p>
まず、クローンする時になんとなく「https」を選んでしまった時に起こります。
ローカルでリポジトリを更新し、いざ、pushすると、アカウント名とパスワードを尋ねられます。
しばらく前までなら、「あれ?前はこんなの打ち込んだっけ?」と言いながら、
面倒くさいながらもgithubアカウントのユーザー名とパスワードを手動で打ち込めばとりあえずpush出来ました。
</p>
<br />
<p>
しかし、現在は、githubアカウントの「パスワード」を受け付けてくれず、pushに失敗します。
実は、httpsアクセスの場合、「トークン」というものを事前に、githubの設定ページから取得して、
これをパスワードの代わりに入力する必要があります。
</p>
<br />
<h4>httpsとsshは認証の仕方が違う</h4>
<p>
この時点でこの問題に当たる場合、そもそも「https」と「ssh」という認証の選択肢があることを認識していないことが問題です。
まず、githubのwebページからクローンするボタンにある「https」と「ssh」違いがあることを認識します。
</p>
<br />
<p>
もし、リポジトリの内容を使いたいだけで、更新してpushする予定がない場合。
すなわち、他人のリポジトリ等をダウンロードして使うような場合は、httpsでOKです。
一方、自分のgithubアカウントのリポジトリをクローンする場合は必ずsshでクローンするように意識します。
もちろん、前提として、ssh鍵をgithubの自分のアカウントに登録しておかなければなりません。
</p>
<br />
<h4>新しいパソコンでssh鍵を登録</h4>
<p>
もう一つ、問題が起こるパターンとしては、
新しいパソコンや新しいアカウントからgithubを利用する場合です。
ssh認証は、ローカルアカウント毎にssh鍵をgithubに登録しておく必要があります。
先に述べたとおり、githubアカウントを作ったときには、
同時に、意味がわからなくても、ssh鍵設定をHowTo見ながら設定している人が多いですが、
暫くすると、そういうことをした事自体忘れてしまいがちです。
</p>
<br />
<p>
新しいアカウント、パソコンを設定するときには、githubへのssh鍵登録をなんとなく思い出しましょう!
(パソコン間のssh接続もあるので、きっと思い出せます)
</p>
<br />
<p>
しなければならない!ということさえ思い出せば大丈夫。
ssh鍵の登録作業自体は、超簡単です!すぐ出来ます!億劫になって後回しにする必要はありません。5分できっと終わります。
このページを含めて、githubにssh鍵をとお録するやり方をわかりやすく説明しているページを
把握しておけば、大丈夫!
</p>
<br />
<p>
更に、蛇足ですが、、
巷には、「githubの複数アカウントを切り替えて活用」というノートも多く見ますが、
日曜プログラマは、ローカル1アカウントにgithub1アカウントの単純な構成にしておくのが吉です。
</p>
<br />
<h3>lazygit</h3>
<p>
windowsでは、githubのアプリである、「github desktop」が使いやすくて好きだったのですが、
linuxでは「lazygit」を使っています。
なぜかといえば、lazygitはコンソール上で動くアプリなので、Xmonadと見た目の相性が良いのです。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhsu4V9r9Y0Y7tK6x586_jigQQUa7oI_pzjzTr15-CoblWu7F9kz8A6jKJMbdQJohbMR1GN1eYSyk268hXr9xX752gWeV5J-S0skfPzcY3gbdmFlT4Jz6dt_sS1xSj5s8wCevMZK1YyddpY34BGFAu0Rm6yjkv3YXa3h6sfli7AVbNPLrF3puh2UWmZ=s1920" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/a/AVvXsEhsu4V9r9Y0Y7tK6x586_jigQQUa7oI_pzjzTr15-CoblWu7F9kz8A6jKJMbdQJohbMR1GN1eYSyk268hXr9xX752gWeV5J-S0skfPzcY3gbdmFlT4Jz6dt_sS1xSj5s8wCevMZK1YyddpY34BGFAu0Rm6yjkv3YXa3h6sfli7AVbNPLrF3puh2UWmZ=s600" width="600" /></a></div>
<p>
使ってみたい?
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S lazygit
</code></pre>
<br /><br />
<p>
配布元は以下です。
</p>
<br />
<a href="https://github.com/jesseduffield/lazygit" target="_blank">https://github.com/jesseduffield/lazygit</a>
<p>
</p>
<br />
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-61512933338634859432021-08-30T14:23:00.001+09:002021-08-30T14:23:33.287+09:00BIOSとUEFIに関する知識をおしゃれに把握し、WindowsやLinuxのインストールに役立てる<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqZYSiVcqfKIeHIzenl2HgsMq4BIN_dOGpcVZRvm_SU23KUgtjUWWYlhdoZuLVbZxnacGC7GVaSDDOxDAElly4NO-DcDJd_2kPBPULhKWqLcN032NQSvYusAAID6nHT7JJoqhyphenhyphen-_04o8E/s2048/IMG_4002.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqZYSiVcqfKIeHIzenl2HgsMq4BIN_dOGpcVZRvm_SU23KUgtjUWWYlhdoZuLVbZxnacGC7GVaSDDOxDAElly4NO-DcDJd_2kPBPULhKWqLcN032NQSvYusAAID6nHT7JJoqhyphenhyphen-_04o8E/s600/IMG_4002.jpg"/></a></div>
<p>
BIOS設定画面は、パソコン自体のシステム設定、例えば、CPUやメモリの設定や、ブートデバイスの設定を行うものであり、
一般的なパソコンは皆この設定画面を持っています。
</p>
<br />
<p>
Linux等のインストールを行う場合、
BIOS設定のうち、ブートに関する制御(USBメモリからの起動等)の設定は必須になります。
また、UEFIの知識を最低限、把握しておくことで、
ArchLinux等のドキュメントでブート設定の説明を読んだときに理解が深まり
設定の自由度が広がります。
</p>
<br />
<p>
尚、「BIOS」という名称は、正確には今どきのPCのシステム設定画面を指すものでは無いのですが、
ネット等の検索ワードや、一般的な話の流れでは「BIOS画面」と呼ばれることが多いので、
まずはこのワードで話を進めていきます。
</p>
<br />
<h3>BIOS設定画面へ入るためのキー</h3>
<p>
BIOS設定画面へは、PCの電源を入れた直後、Windows等のOSに制御が移る前に、特定のキーを押すことで入ることができます。
何のキーを押すかは、PCのメーカーによって異なりますが、ほとんどの大手家電メーカーのパソコンは<span style="color: red;">「F2」</span>キーではいれます。
大手メーカーの中でもLenovoは<span style="color: red;">「F1」</span>が多いようです。その他、自作などでの場合<span style="color: red;">「Del」</span>キー(deleteキー)か「Esc」キーが多いようです。
</p>
<br />
<p>
併せて注意しておきたいのは、キーを押すコツも必要になります。
入力のタイミングは、電源ボタンを押して軽く一呼吸置き、それからキーの入力を行います。
また、キーの入力の仕方は、例えばF2キーを強く押しっぱなしにするのではなく、
そんなに素早くなく普通にトントントンと何度か軽く叩いてみる感じです。
電源ボタンを押して、電源が入ったら、Windows等のOSの起動まで(Windowsの起動ロゴや輪になった丸がクルクルまわり出す前)の間は、
ある程度の間隔があるのですが、その間の何時でもキーを受け付けているわけではなく、その中の特定の瞬間にキーを入力する必要があるようで、
これが初めての時は、結構むつかしかったりして上手くいかず、「キーが間違っているのでは?」と思ったりするのがBIOS画面へ入れないアルアルです。
慣れると、簡単に入れるようになるので、何度かトライしてみてください。
しかし、実際には稀に特殊なキー操作で入るメーカーもあるので、どうしても上手くいかなければ「BIOS 設定 キー」辺りのワードでググりましょう。
</p>
<br />
<p>
上手く入れましたか?
BIOS設定画面はPCによって様々ですが、うちのノートパソコンでは、以下のようなものになっています。
自作PC等で高級なマザーボードを利用していると、ド派手な設定画面だったりもしますが、
一般的にはこのような地味な感じの画面が現れるはずです。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq-E0FQPqo8Wa4BkzW9fnNxjtq7y0wNFJgpCq3e0atARXFSN11z19B4kVn2oskvDPjzFjM1ymCYrVlnuAuUPrQkcMeD98bzmRxeweRcRYcw9jRGOE6JSQZnl04uXrmrW5L0zFLE_HH5l4/s2048/IMG_4003.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq-E0FQPqo8Wa4BkzW9fnNxjtq7y0wNFJgpCq3e0atARXFSN11z19B4kVn2oskvDPjzFjM1ymCYrVlnuAuUPrQkcMeD98bzmRxeweRcRYcw9jRGOE6JSQZnl04uXrmrW5L0zFLE_HH5l4/s600/IMG_4003.jpg"/></a></div>
<p>
</p>
<br />
<p>
BIOS設定画面では、矢印キー(カーソルキー)で項目を選択し、
Enterキー(Returnキー)で決定したり、項目に入ったりできます。
一方、項目を抜けて元の画面に戻ったりする場合にはEscキーを使うことがほとんどです。
画面は大体英語ですが、よく見ると使えるキーの説明もあるはずなので、確認してみましょう。
</p>
<br />
<h3>セキュアブートについて</h3>
<p>
Windows10がインストールされているパソコンでは、
「セキュアブート」という機能が働いています。
そして、セキュアブート機能のあるパソコンにLinux等をインストールする場合、
Linux側でセキュアブートに対応したものをインストールしないと上手く起動が出来ません。
ですから、<span style="color: red;">ArchLinux側でセキュアブートの対応を行わない場合、
BIOSでセキュアブートの設定を無効にしておく必要があります</span>。
</p>
<br />
<p>
例えば、うちのPCのBIOS設定画面では、「Security」タブに「Secure Boot」項目があります。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvZwULcDPcHaASi6JdfMfyxnZ9Lz2bdMI4I7AI_YvyWzkr6pBBzZEUiwEYdjGceHVVl9fB_jPC-vQvirQnA5MtCxoxsX1n8cAvUJ7-7KukM_utWl3oe6iMWKki-QxS5ulUME5Potc9tpc/s2048/IMG_4004.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvZwULcDPcHaASi6JdfMfyxnZ9Lz2bdMI4I7AI_YvyWzkr6pBBzZEUiwEYdjGceHVVl9fB_jPC-vQvirQnA5MtCxoxsX1n8cAvUJ7-7KukM_utWl3oe6iMWKki-QxS5ulUME5Potc9tpc/s600/IMG_4004.jpg"/></a></div>
<p>
項目に入ると、「Secure Boot」を「Enabled(有効)」か「Disabled(無効)」を選択できるので
ここを「Disabled(無効)」にしておきます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifKyrq4oGkR4U9V9ksXN-BTtfhxlTc3DBPy5BEnL_4OtJkc1fTdhfmFgnW4SbwDKqm1oTRqKjeCf2JQV6Y5VlJM3BRbMXrzyjRje7VJ6GnmXsFJlhJeLKm7PeXD42_uSPb-7Htm22Y21M/s2048/IMG_4007.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifKyrq4oGkR4U9V9ksXN-BTtfhxlTc3DBPy5BEnL_4OtJkc1fTdhfmFgnW4SbwDKqm1oTRqKjeCf2JQV6Y5VlJM3BRbMXrzyjRje7VJ6GnmXsFJlhJeLKm7PeXD42_uSPb-7Htm22Y21M/s600/IMG_4007.jpg"/></a></div>
<h3>Bootデバイスの優先順位について</h3>
<p>
Windowsしかインストールされていないパソコンで電源ボタンを入れると、Windowsが当然のように起動します。
</p>
<br />
<p>
しかし、USBメモリにインストールしたWindowsのインストールディスクや
回復ディスクからシステムを起動したい場合、または、
ArchLinuxのインストールDVDを起動したい場合等、
通常起動されるハードディスク以外のものを「優先」して起動したい場合があります。
この時、BIOS設定画面にあるBootデバイス優先順位設定を利用します。
例えば、通常、Windowsは内臓のハードディスクに入っているので、
これに先立ってUSBメモリやCDドライブを優先するように設定しておけば、
USBメモリを刺した状態でPCを起動した時には、
USBが優先されてUSBメモリ内のリカバリプログラムや
Linuxのライブ環境が優先して起動されるようになります。
</p>
<br />
<p>
以下が、うちのノートパソコンのBIOS設定画面上のBootデバイス優先順位設定のページの様子です。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP35RhySkxf7H4jC70z_TM8MHUBN29qXdZ7_UsKUhAx6NgIDvurmuVpz8EjfPAs41Y0SGvJRj4bLFVvhE_IuchyphenhyphenCWjoqkZUfbv5qrHeTaS5bOnR3DfAUWiLv6dDpFckJ8E1_wX02vDv08/s2048/IMG_4012.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP35RhySkxf7H4jC70z_TM8MHUBN29qXdZ7_UsKUhAx6NgIDvurmuVpz8EjfPAs41Y0SGvJRj4bLFVvhE_IuchyphenhyphenCWjoqkZUfbv5qrHeTaS5bOnR3DfAUWiLv6dDpFckJ8E1_wX02vDv08/s600/IMG_4012.jpg"/></a></div>
<p>
「Boot Option Priorities」の項目で、
ブートの優先順位を変更出来るようになっています。
例えばうちの場合、各項目の部分でエンターキーを押すと、
そこで選択できるものが具体的にメニューに表示されるので、
その中から好きなものを選択して順序を入れ替えて設定します。
</p>
<br />
<p>
さて、スクリーンショットを見て気が付いておられる方もいるかもしれませんが、
ここで「Bootデバイスの優先順位」の設定について、
もう少し正確にみてみましょう。
実は、このBootの優先順位項目には、
今と昔で大きな違いがあります。
この違いは、パソコンのシステムの起動の仕組みが大きく変わった事に起因しているので、
その違いを把握することで、
昔のシステムと今のシステムの区別を正確にすることができるようになります。
</p>
<br />
<h3>パソコンはどうやって起動しているのか?</h3>
<p>
パソコンは電源ボタンを入れると通常、勝手にWindowsが起動します。
しかし、実は、パソコンの電源ボタンを押すと、いきなりWindowsが呼び出されて動いているわけではありません。
パソコンは、電源ボタンが押されると、
パソコン自身のハード的な初期化(実際に各パーツを使える状態に準備する)をおこなって、
それからそのパソコン上で実行するプログラム、例えば、Windowsを読み込んで実行しています。
パソコン上で使うプログラムは当然、Windowsである必要はなくて、Linuxだって実行できますし、
ここまで見ていたBIOSの設定画面もパソコンで実行されて動いているプログラムです。
つまり、パソコンそれ自体に、そのパソコンにプログラムを読み込んで実行するためのプログラムが付随しており、
電源ボタンを押したときに立ち上がっているのは、このシステムプログラムなのです。
そして、このWindows等のプログラムを読み込むシステムプログラムがBIOS(Basic Input Output System)と呼ばれています。
</p>
<br />
<h4>BIOSは古いシステム</h4>
<p>
BIOSというのは、実は物凄く古く、将に前時代的なシステムです。
どれぐらい古いかといえば、例えば、皆さん、「プログラムを実行する」ということを想像してみましょう。
Windowsならば、プログラムのファイルアイコンをダブルクリックするでしょう。
もしかしたら、シェルからコマンドを打ち込んで実行するかもしれません。
今どきの「プログラムの実行」という発想はこんな感じです。
</p>
<br />
<p>
しかし、BIOSには、そのような常識は通用しません。
プログラムの実行は、「CPUが解するバイナリ数値の列を特定のアドレス位置に設置して読み込ませる」というレベルに原始的なのです。
これらの違いは、デバイス上の「ファイルシステム」を理解できるかどうかにあります。
BIOSシステムが出来た当初は、
今では当たり前で一般の人は存在さえ気にしていない「ファイルシステム」を理解するシステム自体が、BIOSで呼び出す目的物だったのですから、
BIOSがファイルシステムを解さないのは当たり前といえます。
</p>
<br />
<p>
そして、具体的なBIOSによるプログラムの起動は、
ハードディスクの決まった特定の位置にプログラムコードを配置しておくと、
BIOSがその部分をメモリにロードしてプログラムを実行してくれるというものでした。
この特定の位置の事をMBR(マスターブートレコード)と呼んでいます。
MBRは、ハードディスク1台に一つしかありません。
つまり、パソコンでシステム起動時に実行できるプログラムはハードディスク1台ごとに1つしか無いわけです。
</p>
<br />
<h4>新しいUEFI</h4>
<p>
さて、冒頭で少し話した通り、未だに、パソコンのシステム設定画面の事は「BIOS設定画面」で通じるのですが、
先で述べた通り、BIOSは正確には、昔の古い起動システムの呼び名だったのです。
そして、比較的最近、Windows10がインストールされて販売されているようなパソコンの起動システムはBIOSではありません。
UEFI(Unified Extensible Firmware Interface)という新しい起動システムが搭載されています。
つまり、今あなたが触っているパソコン、実は、大体BIOSではなくて、UEFIシステムで動いています。
</p>
<br />
<p>
では、BIOSに比べて、どれぐらい新しいのでしょうか?
もう一度、「プログラムを実行する」ということを想像してみましょう。
UEFIシステムでは、なんと、今思い浮かべたのと大体同じように自然で普通に起動プログラムを実行できるように進化しているのです。
</p>
<br />
<p>
UEFIでは、ハードディスク内にある「EFIシステムパーティション」の中を「見る」事が出来ます。
このパーティションは、fat32のファイルシステムで、データをファイルとして管理できます。
そして、このパーティション内にEFIアプリケーションを配置しておけば、
UEFIから実行することが出来るようになっています。
実行のさせ方は、UEFIシェルを通じたり、UEFIで優先順位を決めたり、UEFI設定画面から直接選択したりと
プログラム的に便利に起動できます。
</p>
<br />
<h3>Boot優先順位設定の勘違いアルアル</h3>
<p>
実は、UEFIパソコンでは、
「Boot<span style="color: red;">デバイス</span>の優先順位」という言い回しは不正確な場合があります。
</p>
<br />
<p>
UEFI以前の古いBIOSパソコンのシステムでは、BOOTの優先順位の指定を
確かにディスクデバイスで指定していました。
ですから、古いパソコンのBIOSのBoot優先順位設定画面では、
「1番はじめに、FDドライブから起動する」、
「2番目に、CDドライブから起動する」、
「3番目に接続されているハードディスクから起動する」
というような指定を行っていました。
</p>
<br />
<p>
先の項目でBootの優先順位設定画面を見ているので、
この設定項目自体はUEFIにもあります。
しかし、もう少しよく見ると、指定しているものが「grub」や「Windows Boot Manager」となっていて、
どうも「ドライブ」を指定していないようにみえます。
</p>
<br />
<p>
さて、ここで注意すべきところは、
「Boot優先順位」として、指定するものが古いBIOSシステムとUEFIでは正確には異なるということです。
上記のBIOSとUEFIの起動の違いを思い返してください。
古いBIOSシステムでは、BOOTの優先順位は、接続されている「ディスクデバイス」で指定することになります。
何故なら、BIOSの起動プログラムは、ハードディスク毎に一つあるだけだからです。
一方、UEFIでは、BOOTの優先順位は「UEFIアプリ」単位で指定できます。
何故なら、UEFIの場合、同一ディスク内に複数の起動できるものがある可能性があるからです。
</p>
<br />
<p>
このように順序だてた説明を受ければ、なんとなく納得できるのですが、
UEFIについてなんとなく知っている程度で、古いBIOSの経験的知識をもった人ほど、
陥りやすいUEFIの勘違いがあるようです。
この手のトラブルに関する質問はネットでよく見られます。
</p>
<br />
<h4>HDDが認識されない?</h4>
<p>
UEFIパソコンで、boot優先順位を設定しようとした時に、
「何も表示されない」事に戸惑う事があるようです。
例えば、Linuxをインストールしようとして、HDDのパーティションを全消去した場合です。
優先順位設定のメニューを開いても何も出てこないので、
「あれ?ちゃんとHDD接続してあるのにシステムがHDDを認識してない??なんか壊れた?やばい??!!」とゾッとしたりする場面です。
</p>
<br />
<p>
このノートを順に読んできた人なら、何が起こっているのか把握できると思います。
改めてUEFIの知識を整理して考えてみると、
UEFIのBOOt優先順位設定の項目の選択肢として表示されるのは「UEFIアプリ」であり、
システムにHDDが繋がっていてちゃんと認識していても、そのHDDにEFIシステムパーティションが無かったり、
EFIシステムパーティションの中にUEFIアプリが存在していない場合には、
Boot優先順位設定の項目の選択肢には原則的に何も表示されない事があり得ます。
HDDを認識しているかどうかは別の話なのです。
</p>
<br />
<h4>USBメディアから起動する設定に出来ない</h4>
<p>
次に、USBメモリからLinuxのライブシステムを起動しようとしているときに、
USBメモリを刺さずに、事前にUSBを刺したら優先的に読み込むようにしようと思って、
BOOT優先順位項目を開いたのにUSBが一覧になく、
「あれ?どうやったらUSBを1番に出来るんだろう??」とネットでググり始める場面です。
</p>
<br />
<p>
UEFIではBOOT優先順位にデバイスそのものでの指定はできないので、「USBメモリ」を指定することは出来ません。
ですから、実は、「事前」にUSBメモリからのブートを一番にすることはできないのです。
USBメモリ等のライブ環境を起動したい場合には、USBメモリを刺した状態でUEFIを起動し、UEFIで「見れる」状態にすれば、
優先順位設定等のメニューに表示させることができるのです。
</p>
<br />
<p>
実際には、全てのUEFI設定でこのようなことが起こるわけではありません。
UEFIの種類や設定によって、
この辺のわかりにくさや昔のシステムとの整合性をとるため等で、
UEFIシステムでありながら、ディスクデバイス単位での設定が出来るものもあるようです。
逆にUEFIシステム移行過渡期のものでは、ディスク内のUEFIアプリの選択をUEFI設定から行えず、
特定のアプリファイル名のものが自動的に起動されるものがあると聞いたこともあります。
いずれにせよ、BIOSとUEFIの仕組みの違い自体を軽く把握しておけば、
その場での判断のヒントになると思います。
</p>
<br />
<h3>一時的なデバイスからの起動</h3>
<p>
ここで、ArchLinuxインストールUSBスティックの起動について考えてみます。
</p>
<br />
<p>
PCの電源を入れる前にUSBを差し込んで、
電源を入れた場合、何が立ち上がるのかは、UEFI設定に寄ります。
ですから、確実にUSBからシステムを立ち上げるためには、
一旦、UEFI設定画面に入りましょう。
</p>
<br />
<p>
先ほどまで、UEFIにあるBOOtの優先順位の設定の項目について説明していました。
もちろん、USBを刺した状態でUEFI設定を開けば、
優先順位項目にUSB内にあるarchlinuxのライブ環境を起動させるUEFIアプリが表示されるので、
これを第一順位に設定して保存し、システムを再起動すれば、USBから起動されるはずです。
しかし、UEFIの場合、USBメモリ内にある一時的な起動用アプリは、
優先順位で指定するのではなくて、「Boot Override」の項目から起動させることが出来る場合があります。
</p>
<br />
<p>
うちのUEFI設定画面では、「Boot」タブではなくて「Save & Exit」タブにこの「Boot Override」項目があります。
ここには、EIFパーティションから読めるものと、今まで起動したことのある履歴が表示されており、
ここから選択することで、設定してあるBoot優先順位を変更することなく、UEFIアプリを起動する事ができる項目が用意されています。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgee2MxIzztphHZPr10YFwMbcH8mQAwIiB1bDeEzGNE2O0XATebqVyIiNM44eMPxVk0n6NZxN_ToFbuPdRugL_l0GGrjnOkd4TioWfEsybfM7zRqT7aAfU43ZrQk6uW48fzOvF38r8764o/s2048/IMG_4009.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgee2MxIzztphHZPr10YFwMbcH8mQAwIiB1bDeEzGNE2O0XATebqVyIiNM44eMPxVk0n6NZxN_ToFbuPdRugL_l0GGrjnOkd4TioWfEsybfM7zRqT7aAfU43ZrQk6uW48fzOvF38r8764o/s600/IMG_4009.jpg"/></a></div>
<p>
また、システムによっては、UEFI設定に入る代わりに、
UEFIアプリ選択メニューを呼び出すことができるかもしれません。
UEFI設定画面に入るタイミングで、F7、F11、F8、F12のどれかのファンクションキーでメニューを呼び出せるかもしれません。
うちのノートパソコンでは「F7」キーでメニュー選択できます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitnnfUKv4TBfcIPe2UBlYsGm64bH7LZtJoyr_bKMVL_onMBawIjao5nPkrOucvdaCl1Bbbp9mvbDhmkMqnw8J80uCbTIaS1_rbiQEcKYlsll4K3RYf8hvCoGIA9mip0YVxgkbjesxImJo/s2048/IMG_4011.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitnnfUKv4TBfcIPe2UBlYsGm64bH7LZtJoyr_bKMVL_onMBawIjao5nPkrOucvdaCl1Bbbp9mvbDhmkMqnw8J80uCbTIaS1_rbiQEcKYlsll4K3RYf8hvCoGIA9mip0YVxgkbjesxImJo/s600/IMG_4011.jpg"/></a></div>
<p>
このほかに、うちのUEFI設定画面には、「初めて見るUEFIアプリをどう起動するか?」という項目があります。
これを「一番初めに」というふうに設定しておけば、USBメモリ等にあるLinuxのインストーラー等を自動で立ち上げることができるかもしれません。
</p>
<br />
<p>
これらのUEFI設定画面における知識を持っておけば、
Linuxのインストール、Windowsの回復ディスク、Windowsインストールメディア等のUSBメモリ起動させる必要があるどんなときにも
応用可能です。
</p>
<br />
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-48369826207806793202021-06-04T01:18:00.002+09:002022-03-10T13:39:43.202+09:00ArchLinuxでお洒落にskkする
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWsYQZLKjWGSAWW7KV7CubelHN_VCKTH-y3KV0aKq_gSPV2k2BUQrhxOg7TtLAlD_ZjMtuT6h0fpRidz9-D0nmZaN71f8aVVdGpAFHYnuAUcwGrif0tVRSJEn3pryWLlT6qCZGu0wr9uI/s2048/DSC01571.JPG" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1363" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWsYQZLKjWGSAWW7KV7CubelHN_VCKTH-y3KV0aKq_gSPV2k2BUQrhxOg7TtLAlD_ZjMtuT6h0fpRidz9-D0nmZaN71f8aVVdGpAFHYnuAUcwGrif0tVRSJEn3pryWLlT6qCZGu0wr9uI/s600/DSC01571.JPG"/></a></div>
<p>
ArchLinuxで日本語入力にSKKを使う時の覚書です。
</p>
<br />
<p>
日本語入力のインプットメソッドは、
割と流行り廃りが激しのですが、2021年初夏現在、
archlinuxでは、fcitx(fcitx5含む)を使っている人が多いようです。
</p>
<br />
<p>
インプットメソッドfcitx5自体のインストールは、
「<a href="http://neko-mac.blogspot.com/2021/05/archlinuxxorgxmonad.html" target="_blank">ArchLinuxにXorgを最小限インストールしておしゃれにxmonadする</a>」を参照して下さい。
一般的な変換エンジンであるmozcをインストールしてX上で使う方法を紹介しています。
</p>
<br />
<h3>fcitx5へskkをインストール</h3>
<p>
まずは、fcitx5でskkを使えるようにします。
次のコマンドで、fcitx5-skkパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S fcitx5-skk
</code></pre>
<br /><br />
<p>
インストールが終わったら、fcitx5-configtoolを起動します。
</p>
<br />
<pre class="commandline"><code>$ fcitx5-configtool
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOTcPPTi0jabLsKR4e2LdZ94swce_EljSg6hpkGqEMWyl1IXOHAUo0HCamN7bRP1f7to9Z9hn8wRfh_EYIXTjJGYM-KeMtkppJTb-pd6-L5ssm2cPNjXTFyhuiH4leyzO0qX61eU64aPE/s1010/2021-06-03-181035_934x1010_scrot.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="1010" data-original-width="934" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOTcPPTi0jabLsKR4e2LdZ94swce_EljSg6hpkGqEMWyl1IXOHAUo0HCamN7bRP1f7to9Z9hn8wRfh_EYIXTjJGYM-KeMtkppJTb-pd6-L5ssm2cPNjXTFyhuiH4leyzO0qX61eU64aPE/s600/2021-06-03-181035_934x1010_scrot.png"/></a></div>
<p>
右側のAvailable Input Methodからskkを探してダブルクリックし、
左側のCurrent Input Methodへ移動させます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrjH9zUa4wmXo_3o7Hoi3cdyWPydRkavi5msSR-uBL3l7j52UDjOBFQ9OdTtS0r45mquynOfo2PeLsQuOi0JHUlE3FOE5ScU7HcqPOu1u12pUuvfxpAEjSJlxgjPlK-YEmNCw6HBRR-oI/s1010/2021-06-03-181052_934x1010_scrot.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="1010" data-original-width="934" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrjH9zUa4wmXo_3o7Hoi3cdyWPydRkavi5msSR-uBL3l7j52UDjOBFQ9OdTtS0r45mquynOfo2PeLsQuOi0JHUlE3FOE5ScU7HcqPOu1u12pUuvfxpAEjSJlxgjPlK-YEmNCw6HBRR-oI/s600/2021-06-03-181052_934x1010_scrot.png"/></a></div>
<p>
また、混乱しないようにCurrent Input MethodにあるMozcをダブルクリックして、
右側へ移動させておきましょう。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-SuPylxRP7RcfBiL7ewMS0hOXErbRzOXfulrZXdkoR0qKoNaPRKowYgvvo7SNfnaGif8tSF-hFSP5fo1hlI62pUcepr_c9u4TLk_BZh9O2kRmCNkWJv5q5k2PG6OuItrgWO5-1a4hiCA/s1010/2021-06-03-182532_934x1010_scrot.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="1010" data-original-width="934" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-SuPylxRP7RcfBiL7ewMS0hOXErbRzOXfulrZXdkoR0qKoNaPRKowYgvvo7SNfnaGif8tSF-hFSP5fo1hlI62pUcepr_c9u4TLk_BZh9O2kRmCNkWJv5q5k2PG6OuItrgWO5-1a4hiCA/s600/2021-06-03-182532_934x1010_scrot.png"/></a></div>
<h3>fcitx5でStickyShift</h3>
<p>
fcitx5でStickyShiftを使いたい場合は、
まず、以下に示す3つの設定ファイルを用意します。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>~/.config/libskk/rules/StickyShift/metadata.json</li>
<li>~/.config/libskk/rules/StickyShift/keymap/hiragana.json</li>
<li>~/.config/libskk/rules/StickyShift/keymap/katakana.json</li>
</ul>
</div>
<br />
<p>
まずは、以下のコマンドでディレクトリを作ってしまいます。
</p>
<br />
<pre class="commandline"><code>$ mkdir -p ~/.config/libskk/rules/StickyShift/keymap/
</code></pre>
<br /><br />
<p>
まずは、metadata.jsonファイルを作成します。
</p>
<br />
<pre class="commandline"><code>$ vim ~/.config/libskk/rules/StickyShift/metadata.json
</code></pre>
<br />
<p>
metadata.jsonファイルの内容は次の通り。
</p>
<br />
<pre class="commandline"><code>{
"name": "Sticky Shift",
"description": "Enable Sticky Shift"
}
</code></pre>
<br /><br />
<p>
次は、hiragana.jsonファイルを作成します。
</p>
<br />
<pre class="commandline"><code>$ vim ~/.config/libskk/rules/StickyShift/keymap/hiragana.json
</code></pre>
<br />
<p>
hiragana.jsonファイルの内容は次の通り。
</p>
<br />
<pre class="commandline"><code>{
"include": [
"default/hiragana"
],
"define": {
"keymap": {
";": "start-preedit-no-delete"
}
}
}
</code></pre>
<br /><br />
<p>
更に、katakana.jsonファイルを作成します。
</p>
<br />
<pre class="commandline"><code>$ vim ~/.config/libskk/rules/StickyShift/keymap/katakana.json
</code></pre>
<br />
<p>
katakana.jsonファイルの内容は次の通り。
</p>
<br />
<pre class="commandline"><code>{
"include": [
"default/katakana"
],
"define": {
"keymap": {
";": "start-preedit-no-delete"
}
}
}
</code></pre>
<br /><br />
<p>
以上3つのファイルの準備ができたら、fcitx5-configtoolを起動します。
</p>
<br />
<pre class="commandline"><code>$ fcitx5-configtool
</code></pre>
<br /><br />
<p>
ダイアログの一番上にあるタブから「Addons」タブをクリックします。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5P5YJ8HAk6TtkKUU1OLNl1ZLSOR7Hw3S4wZ79eOfXxE8NX8snB5nudGmiul_eqppt1R3SLBQakchs6zzfobz-7SjX0_o56iF5r6IIm8JlSdwOQO9hWFL6y5425ue4dfdxgHF9kMrHGFI/s1010/2021-06-03-183401_934x1010_scrot.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="1010" data-original-width="934" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5P5YJ8HAk6TtkKUU1OLNl1ZLSOR7Hw3S4wZ79eOfXxE8NX8snB5nudGmiul_eqppt1R3SLBQakchs6zzfobz-7SjX0_o56iF5r6IIm8JlSdwOQO9hWFL6y5425ue4dfdxgHF9kMrHGFI/s600/2021-06-03-183401_934x1010_scrot.png"/></a></div>
<p>
Input Method項目の中にskkが見つかるはずなので、その行の右端にある「configure」ボタンをクリックします。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhByVqZNTAsTa7jcymOo31ctTuLNQi3gZPw0K3xZwb2AdTVwMuvwItqOuiOa2NgeVPmDpQ6GHN2GF6nlrjlXlAy_hrZZo15oDHNlhyphenhyphenh5Ib6Jj28W83OW1-t6ItWQZ2czQyeBZZCB9i_ZN8/s825/2021-06-03-183622_825x412_scrot.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="412" data-original-width="825" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhByVqZNTAsTa7jcymOo31ctTuLNQi3gZPw0K3xZwb2AdTVwMuvwItqOuiOa2NgeVPmDpQ6GHN2GF6nlrjlXlAy_hrZZo15oDHNlhyphenhyphenh5Ib6Jj28W83OW1-t6ItWQZ2czQyeBZZCB9i_ZN8/s600/2021-06-03-183622_825x412_scrot.png"/></a></div>
<p>
新しく開いたダイアログのruleの右側にある「Default」となっている部分をクリックします。
開かれたドロップダウンメニューから「Sticky Shift」をクリックして選択すればOKです。
</p>
<br />
<h3>Vimでeskk.vimする</h3>
<p>
vimは、vim自身でskkを使って日本語入力をすることが出来ます。
つまり、fcitxが無くても日本語入力が出来ます。
</p>
<br />
<p>
まずは「<a href="https://github.com/tyru/eskk.vim" target="_blank">eskk.vim</a>」プラグインをインストールします。
例えば、vim-plugで管理している場合は<code>~/.vimrc</code>等に、以下の一行を追加します。
</p>
<br />
<pre class="commandline"><code>...
Plug 'tyru/eskk.vim'
...
</code></pre>
<br />
<p>
設定に付いては、<code>~/.vimrc</code>等に次の通り書いておきましょう。
</p>
<br />
<pre class="commandline"><code>" eskk
let g:eskk#directory = "~/.eskk"
let g:eskk#dictionary = { 'path': "~/.eskk/my-skk-jisyo", 'sorted': 0, 'encoding': 'utf-8', }
let g:eskk#large_dictionary = { 'path': "/usr/share/skk/SKK-JISYO.L", 'sorted': 0, 'encoding': 'euc-jp', }
let g:eskk#enable_completion = 0
let g:eskk#egg_like_newline = 0
set imdisable
</code></pre>
<br />
<h3>チートシート</h3>
<p>
skkの基本を以下に示します。
</p>
<br />
<table class="cheetsheet">
<tbody>
<tr>
<th>キー</th>
<th>効果</th>
</tr>
<tr>
<td>Ctl + j</td>
<td>ひらがな入力の開始</td>
</tr>
<tr>
<td>l(小文字のエル)</td>
<td>半角英数の入力</td>
</tr>
<tr>
<td>Shift + l(つまり、大文字のエル)</td>
<td>全角英数の入力</td>
</tr>
<tr>
<td>Shift + 英数</td>
<td>ひらがな入力から変換入力の開始</td>
</tr>
<tr>
<td>変換入力中にspace</td>
<td>変換</td>
</tr>
<tr>
<td>変換入力中にq</td>
<td>カタカナに変換</td>
</tr>
<tr>
<td>変換中にx</td>
<td>変換候補を戻る</td>
</tr>
<tr>
<td>変換中にCtrl + g</td>
<td>変換をやめる(元に戻す)</td>
</tr>
</tbody>
</table>
<br />
<br />
<p>
StickyShiftは、Shiftの代りに「;」で変換入力に入ります。
また、送り仮名の部分でshiftする事で、漢字部分の変換が始まります。
</p>
<br />
<p>
コツは、送り仮名のある変換と単なる漢字だけの変換を意識して区別すると良いと思います。
</p>
<br />
<h3>skk自体を覚えるためのページ</h3>
<p>
skkの入力は、実際に試してみるのがてっとり早いと思います。
せっかく、skkに興味を持ったなら、熱が冷めない内に挑戦してしまいましょう!
</p>
<br />
<p>
skkの入力の仕方が解り易いページは、
「<a href="https://www.slideshare.net/digitalghost/no-skk-no-life" target="_blank">No skk, no life.</a>」の
スライドです。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://www.slideshare.net/digitalghost/no-skk-no-life" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="400" data-original-height="1018" data-original-width="1274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUFLQ3bAXaaES1LADHupt_vq088MSxaDkZeVXvtE3V5WRCan_UbfFoaVN-iB6E-MXTF6TTHwcYy2MrN6lj9wsz2WUFXxMXRJkVb3V4n4SskHWASaXNXscOID7O42xZYXnl0csrh6oMqFA/s400/2021-06-04-005807_1274x1018_scrot.png"/></a>
</div>
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-59767093244792868422021-05-28T14:55:00.002+09:002021-05-28T14:55:32.533+09:00おしゃれにArchLinux<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDKTuhixfvwYsXVsBdILpAE02Enjse3mQzNmQyRUyx76Ja8wguo7l1lAgB1sZuZqFKgu7poZE14NQ7-RR6hF1axGerpCLwyN4fahId7_Yi8Ko2xN0MrVxUOR25rQmYcDUv6N7Dhe40uEg/s4592/DSC01739.JPG" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="3056" data-original-width="4592" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDKTuhixfvwYsXVsBdILpAE02Enjse3mQzNmQyRUyx76Ja8wguo7l1lAgB1sZuZqFKgu7poZE14NQ7-RR6hF1axGerpCLwyN4fahId7_Yi8Ko2xN0MrVxUOR25rQmYcDUv6N7Dhe40uEg/s600/DSC01739.JPG"/></a></div>
<h3>
懐かしの「りぬーめも」</h3>
<br />
以前書いていたブログ「<a href="http://nekolinux.blogspot.com/2009/04/blog-post.html" target="_blank">りぬーめも Arch Linux on S101</a>」を見返してみると、Arch Linuxを使い始めたのは2009年の4月頃の様ですが、ブログの言い回しや内容が黒歴史的で割と恥ずかしかったりします。<br />
<br />
ここで、「りぬーめも」の「りぬー」とは、Linuxの事です。<br />
<br />
「Linux」の読み方について、今の日本では「リナックス」が定番になっているように思います。しかし、昔は「Linux」の読み方に正解があったわけでは無く(<a href="https://ja.wikipedia.org/wiki/Linux#%E3%80%8CLinux%E3%80%8D%E3%81%AE%E8%AA%AD%E3%81%BF%E6%96%B9" target="_blank">「Linux」の読み方</a>)、その人によって呼び方は異なっていました。特に、Linux生みの親であるリヌースさん本人の肉声音の通り、「リヌックス」と呼んでいる人も多かった気がします。私がLinuxを使い始めた頃(前世紀末)、Linux使いの一人が、いつもLinuxの事を愛着を込めて「りぬー」と呼んでいたので、「りぬーと呼ぶのが通っぽいのかっ!?」と思い込み、まだ青かった私はそう呼ぶようになっていました。まぁ、今ではそんな風に呼んでいる人やそんな風に表記されているのは見たたことがないので、ブログタイトルからして黒歴史っぽいわけです。<br />
<br />
さて、「りぬーめも」に登場するS101とは、2008年の秋ごろASUSが発売したEee PC S101というノートパソコンです。当時100ドルPCという安価なノートPCが流行っていた中で、S101は、安価なのに、薄くて軽く、Wi-Fiだけでなく、SSDまで備え、その上で、スタイリッシュでおしゃれなパソコンとして、その筋では一世を風靡していました。多分パソコン史上に残る名器です!!<br />
<br />
「りぬーめも」ブログの投稿自体は、2014年10月頃、arch Linuxシステム上で、TopCoderというプログラムコンテストに参加している記事を書いた後、更新しなくなってしまいました。実はこの頃に、<a href="http://neko-mac.blogspot.com/2015/02/mac.html" target="_blank">おしゃれなMacBook Air</a>を手に入れてしまい、「おしゃれ」という単語がマイブームになって「おしゃプロ」を書き始めたので、「りぬーめも」は放置状態になってしまいました。それでも、中の人である私は、S101でのarch linux環境を割と使い続けていたのですが、数年前のArchLinuxの32bit版のサポート終了の頃から立ち上げることが少なくなりました。<br />
<br />
<br />
<h3>
Arch Linux</h3>
<br />
<blockquote class="tr_bq">
Arch Linux, a lightweight and flexible Linux® distribution that tries to Keep It Simple.</blockquote>
<br />
archlinux.orgでは、上の様に紹介されています。<br />
<br />
昔からそうなんですが、何故かLinuxを使う人は、simple とか light というキーワードが好きですよね。<br />
<br />
しかし、Arch Linuxの原則である「arch way」に謳われている「simplicity」とは、漠然と物事について「単純であれ」と言っているわけではありません。ディストリビューションに組み込まれるパッケージの扱い方についての選択の方向性の話をしているだけです。ですから、Arch Linuxのシステム構築において、自分の好きなように好きなだけ複雑な環境を作ってもarch wayには反することは無いですし、逆に、好きなだけ複雑に組み立てることができるように、その各要素となる各パッケージの作成指針をシンプルにしているんだと思っています。<br />
<br />
また、Arch Linuxのベースインストールが終わった状態を「ミニマム」という単語で把握すると共に、これを「ミニマリスト」という流行りの単語に結び付けることで、「ミニマリストの俺様は Arch Linux しか使えない体になりました」的な事を言う人も見かけますが、意識高い「系」的要素がプンプンです。<br />
<br />
確かに、必要最低限の選択をするのは勝手ですが、今ちょこっとWebで確認した限りでも、Arch Linuxのパッケージ数は公式で11,050個、AURで64,711個という、合計7万5千個もの膨大な選択肢を用意してくれています。ミニマリストも良いですが、あれこれやってればすぐに他のディストリビューションでは無しえない程の「ゴミ屋敷」にしてしまうことだってArch Linuxでは出来るに違いありません。<br />
<br />
そして、それが楽しいのがarchlinuxなのです。<br />
<br />
まぁ、僕の認識も間違っているかもしれませんが、archlinuxはLinuxシステムを趣味で触るにはもっとも楽しいディストリビューションだと感じています。<br />
<br />
<br />
<br />shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-60887043891254714742021-05-20T11:57:00.012+09:002022-10-18T15:18:30.377+09:00ArchLinuxにXorgを最小限インストールしておしゃれにxmonadする<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoEsMDQq0dg4t81ISaDo2gKAJ7PHOHrBu47qKsmr4iUO-tO4pef1Q2cJcCpwk1GLqI4lt56hGfVigTp1QKdwKlvMe_FQdC8D7IY4pg8l2eWjH01v0KsJLd9PPkLLaO73LTXJs7qdJBUHY/s2048/IMG_3776_02.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1381" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoEsMDQq0dg4t81ISaDo2gKAJ7PHOHrBu47qKsmr4iUO-tO4pef1Q2cJcCpwk1GLqI4lt56hGfVigTp1QKdwKlvMe_FQdC8D7IY4pg8l2eWjH01v0KsJLd9PPkLLaO73LTXJs7qdJBUHY/s600/IMG_3776_02.jpg"/></a></div>
<p>
ArchLinuxのインストールをしていて、X関連の設定になった時、
GNOMEやKDEをいれるだけなら、一瞬で終わるのですが、
自分で好きなようにXの起動から設定しようとする場合、
やらないといけないことが細々と多いのと、環境が整っていない中での設定作業とで
結構ストレスを感じますよね。
</p>
<br />
<p>
そこで、ArchLinux最速おしゃれインストール第2段、Xorg編!!
</p>
<br />
<p>
このノートは、俺々式Xorg構築手順の確認メモです。
デスクトップ環境を利用せず、startxやLightDMでウィンドマネージャを起動する方法の紹介で、
ウィンドマネージャは僕のお気に入りxmonadでインストールを進めています。
しかし、ウィンドマネージャの設定自体のノートではないので、
xmonadに限らず、DEを利用しないで好きなウィンドマネージャを起動してXを利用する際の参考にして下さい。
</p>
<br />
<p>
尚、archlinux自体のインストールは、「<a href="http://neko-mac.blogspot.com/2021/05/arch-linux.html" target="_blank">Arch Linux をおしゃれに最速インストール</a>」を参照して下さい。
</p>
<br />
<h3>Xorgのインストール</h3>
<p>
Xorgを動かすために必要となるパッケージをインストールします。
また、最初にXの起動のテストを行うために、twmというXorgに付属のウィンドマネージャ関連のインストールします。
パッケージ、及び、グループの一覧は以下の通り。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>xorg</li>
<li>xorg-xinit</li>
<li>xf86-video-intel</li>
<li>xterm</li>
<li>xorg-twm</li>
<li>xorg-xclock</li>
<li>xorg-fonts-misc</li>
</ul>
</div>
<br />
<p>
グラフィックカードがintel以外の場合は、「<a href="https://wiki.archlinux.org/title/Xorg#Driver_installation" target="_blank">Driver installation(arch wiki)</a>」を参照して下さい。
</p>
<br />
<p>
次のコマンドで、xorg等をインストールします。
選択肢はallと答えればOK。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S xorg xorg-xinit xf86-video-intel
</code></pre>
<br /><br />
<p>
続けて、twm関連のパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S xterm xorg-twm xorg-xclock xorg-fonts-misc
</code></pre>
<br /><br />
<p>
インストールが完了したら、まずは、startxコマンドでXが立ち上がることを確認します。
</p>
<br />
<pre class="commandline"><code>$ startx
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic_16q9WmxF0imtKJ-DhXH-HL8rnlqp3Avgmrfk2QHsDiDz4ZeuSe92D01XRuJtWq_7uWOon7BD__qTltjtQAH3iSdXPAhXLC9jgbMTAcoA6jteZ9YRU675xqUb2-uGvAv-FTdyn17Rps/s1920/2021-05-19-155143_1920x1080_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic_16q9WmxF0imtKJ-DhXH-HL8rnlqp3Avgmrfk2QHsDiDz4ZeuSe92D01XRuJtWq_7uWOon7BD__qTltjtQAH3iSdXPAhXLC9jgbMTAcoA6jteZ9YRU675xqUb2-uGvAv-FTdyn17Rps/s600/2021-05-19-155143_1920x1080_scrot.png" width="600" /></a></div>
<p>
twmというウィンドマネージャが起動されるのを確認します。
3つのxtermの内一つがexecで起動されているので、それを終了するとコンソールに戻ることが出来ます。
この時点でXが立ち上がらない場合は、「<a href="https://wiki.archlinux.org/title/Xorg">Xorg(ArchWiki)</a>」で検証しましょう。
</p>
<br />
<h3>startxの基本</h3>
<p>
startxは、Xを手動で立ち上げるためのプログラムで、
.xinitrcというスクリプトを使って立ち上げの手順を指示できます。
</p>
<br />
<p>
startxコマンドは、
ホームディレクトリの.xinitrcを読み込んで実行しますが、これが無い場合には、
システム側の<code>/etc/X11/xinit/xinitrc</code>が読まれます。
先にstartxを実行した時にtwmが起動されたのは、デフォルトの挙動としてシステムのファイルで指示されているからです。
まずは、システムのxinitrcファイルをホームディレクトリにコピーして自分用の設定の雛形として利用しましょう。
</p>
<br />
<pre class="commandline"><code>$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
</code></pre>
<br /><br />
<p>
このファイルに目を通すと、
Xmodmap、Xresourcesと呼ばれる設定ファイルを読み込む処理、
及び、/etc/X11/xinit/xinitrc.d/以下のスクリプトの読み込みを行う処理があることが把握できます。
これらは、Xの立ち上げ時に読み込まれる典型的なファイルであり、そのまま触らずにおいておきます。
</p>
<br />
<p>
その後にtwm起動に関する以下のような記述があります。
</p>
<br />
<pre class="commandline"><code>.....
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login
</code></pre>
<br /><br />
<p>
ここでは、twmから始まる行以降を削除し、次のように書き換えて下さい。
</p>
<br />
<pre class="commandline"><code># auto start
xterm &
# window manager
exec twm
</code></pre>
<br /><br />
<p>
「# auto start」の項目には、
X実行時に実行しておきたい処理を書いておきます。。
通常のXアプリは、バックグラウンドで実行するように行末に&をつけましょう(つけないと、そのアプリを終了するまで次の行を実行しないので、処理がそこで止まってしまいます)。
</p>
<br />
<p>
一方、「# window manager」の項目で、
window managerを起動するコマンドを書きます。
execはつけてもつけなくてもどちらでもOKです。
</p>
<br />
<p>
.xinitrcの書き換えが完了したら、startxを実行して下さい。
</p>
<br />
<pre class="commandline"><code>$ startx
</code></pre>
<br /><br />
<p>
ここまでの作業が完了すれば、
後は、いつでも.xinitrcのウィンドマネージャ部分を書き換えるだけで、
自分の好きなウィンドマネージャを実行できるようになっています。
</p>
<br />
<p>
今、実行されているtwmは、背景を<span style="color: red;">左クリック</span>すればメニューが出ます。
メニューの「Exit」を選択するとtwmが終了して、Xも終了し、
コンソールに戻ることが出来ます。
</p>
<br />
<h3>xmonadのインストール</h3>
<p>
xmonadを利用するには最低限、以下のパッケージのインストールが必要になります。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>xmonad</li>
<li>xmonad-conrib</li>
<li>dmenu</li>
<li>xterm</li>
<li>xorg-xmessage</li>
</ul>
</div>
<br />
<p>
dmenuとxtermはxmonadの初期設定のランチャーとターミナルなので、必ずインストールして下さい。
また、エラーメッセージを見れるように、xmessegeも入れておきましょう。
以下のコマンドで、必要パッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S xmonad xmonad-contrib dmenu xterm xorg-xmessage
</code></pre>
<br /><br />
<h3>xmonadの起動</h3>
<p>
xmonadをウィンドマネージャーとしてXを起動するために、.xinircのウィンドマネージャ起動コマンドを書きまえます。
</p>
<br />
<pre class="commandline"><code># auto start
xterm &
# window manager
exec xmonad
</code></pre>
<br /><br />
<p>
startxコマンドを使って、Xを立ち上げます。
xmonadが初めてという方は、「<a href="https://ok-xmonad.blogspot.com/2020/08/xmonad_22.html" target="_blank">xmonadの始め方</a>」に目を通してから起動して下さい。
</p>
<br />
<p>
ここの.xinitrcでは、起動時からxtermが一つ立ちあがるので、「立ち上げても画面が変わらなくてわからない」ということはありません。
基本的なキー操作として、「Alt + Shift + Enter」でxterm起動、「Alt + Shift + q」でxmonad終了です。
ここでは、一旦、xmonadを終了して、コンソールに戻れることを確認して下さい。
</p>
<br />
<h4>背景の設定</h4>
<p>
背景を設定してxmonadの起動がひと目でわかるようにします。
次のコマンドで、nitrogen、archlinux-wallpaperパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S nitrogen arhclinux-wallpaper
</code></pre>
<br /><br />
<p>
インストールが完了したら、startxでXを立ち上げてから、nitrogenコマンドを実行します。
</p>
<br />
<pre class="commandline"><code>$ nitrogen
</code></pre>
<br /><br />
<p>
windowが開いたら、右下の「Preferences」ボタンを押します。
真ん中にダイアログが現れるので、下にある「add」ボタンを押して、
背景用画像が入っているディレクトリを選択して「select」ボタンを押しましょう。
一緒にインストールしたarchlinux-wallpaperパッケージは、
<code>/usr/share/backgrounds/archlinux/</code>以下にあります。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6BG6ZYOdM8m8qSVz9EMpjOmd5JF05HWhh4rgec76-mqvCHsAJc4doWQk1ewEXg8jdN0k-pLVF2CMQ-TbDBotu7R9hnf6GU5f6A6ad8D0oB3Gw5KoUZonsaan80CgQCi6k0LokXJxZ0Cs/s1010/2021-05-18-175340_934x1010_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1010" data-original-width="934" height="600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6BG6ZYOdM8m8qSVz9EMpjOmd5JF05HWhh4rgec76-mqvCHsAJc4doWQk1ewEXg8jdN0k-pLVF2CMQ-TbDBotu7R9hnf6GU5f6A6ad8D0oB3Gw5KoUZonsaan80CgQCi6k0LokXJxZ0Cs/s600/2021-05-18-175340_934x1010_scrot.png" /></a></div>
<p>
ディレクトリを登録すると、windowで画像の一覧を見ることが出来るようになります。
好きな画像を選択して、「Apply」ボタンをおすと、背景に設定されます。
この時、左のボタンメニューで画像をどの様に貼り付けるかを調整することが出来ます。
</p>
<br />
<p>
背景の設定が完了したら、xinitrcに次の一行を追加しておきましょう。
起動時に前回と同じ背景を設定してくれます
(最初のxtermの起動はもういらないでしょう)。
</p>
<br />
<pre class="commandline"><code># auto start
nitrogen --restore &
# window manager
exec xmonad
</code></pre>
<br /><br />
<h4>Xリソースでxtermの設定</h4>
<p>
次に、xtermの字が小さくて使いづらいと思いますので、以下の設定を行っておきましょう。
設定の前に先ず次のコマンドでFira Codeというフォントパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S ttf-fira-code
</code></pre>
<br /><br />
<p>
それから、ホームディレクトリに.Xresourcesというファイルを用意します。
</p>
<br />
<pre class="commandline"><code>$ vim ~/.Xresources
</code></pre>
<br /><br />
<p>
.Xresourcesの内容を以下のようなものにします。
リソース名の大文字小文字は要注意です(間違いに気が付かずハマりやすい)。
</p>
<br />
<pre class="commandline"><code>! xterm setting
xterm*faceName: Fira Code:size=14:antialias=true
xterm*reverseVideo: true
</code></pre>
<br /><br />
<p>
.XresourcesファイルではXリソースというものを定義しています。
そして、xtermの設定は、このXリソースを使って設定されます。
普段使うアプリでXリソースで設定されるものとしてはurxvtがあります。
</p>
<br />
<p>
Xリーソースは、次のようにxrdbコマンドでファイルを読み込むことで、その設定を反映させます。
</p>
<br />
<pre class="commandline"><code>$ xrdb -merge ~/.Xresources
</code></pre>
<br /><br />
<p>
.xinitrcの前半部分をみると、このxrdbコマンドがあることを確認できます。
つまり、~/.Xresourcesというファイル名のファイルににXリソースの定義を書いておけば、
startxを実行するとセッションごとに自動的にXリソースのカスタム定義を読み込んでくれます。
</p>
<br />
<p>
では、改めて、Xを立ち上げてみましょう。
xtermを呼び出した時に、文字が大きくなって背景色が黒になっていれば、設定は成功です。
うまく行かない場合は、コンソールにエラーが出てないか、ファイル名、設定の文字等の綴が間違っていないかを確認しましょう。
</p>
<br />
<h3>X上で作業を快適に進めるための準備</h3>
<p>
上記の項目までで、xmonad自体のインストールは完了し、起動も行えるようになりました。
しかし、まだ、ウィンドマネージャがインストールできただけで、DEの場合と異なり、
自分でインストールしたもの以外のXアプリケーションは何も入っていないません。
これは、実際、思った以上に不便です。
そこで、X上での作業を進めて行く上で
ストレスにならない程度の最低限必要なパッケージを入れましょう。
</p>
<br />
<p>
まず、最優先は、日本語も読むことが出来るwebブラウザです。
次に、X上でもコピーアンドペーストが初めから出来るターミナルエミュレーターです。
これらはいつも使っているお気に入りのアプリもあるでしょうが、
なんの設定もなく、すぐに使える次のパッケージを初期の設定作業用にとりあえずインストールしましょう。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>gnome-terminal</li>
<li>otf-ipafont</li>
<li>chromium</li>
</ul>
</div>
<br />
<pre class="commandline"><code>$ sudo pacman -S gnome-terminal otf-ipafont chromium
</code></pre>
<br /><br />
<p>
xmonadでのプログラムの起動は、「Alt + p」で呼び出される「dmenu」から行うことが出来ます。
dmenuは画面の一番上に現れます、コマンド文字列を打ち込むたびにインクリメンタルサーチが働き、
コマンド名が絞られます。また、補完も効きます。「chromium」や「gnome-terminal」をdmenuから起動して使いましょう。
</p>
<br />
<h3>なすべき設定とその方針の把握</h3>
<p>
startx等を利用して、自分の好きなウインドマネージャを使う場合、
X起動時にしておくべき初期設定も自分で面倒を見る必要があります。
例えば、Xの入出力、つまり、キーボードやマウス、タッチパッドの設定、モニタの設定などです。
また、これに加えて、Xそのものの設定ではありませんが、X上で「日本語の入力」を行えるようにするための設定を行う必要があります。
</p>
<br />
<p>
そこで、このノートでは以下のことを具体的に設定していきます。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>キーボード等に関する設定</li>
<li>タッチパッドに関する設定</li>
<li>日本語入力メソッドに関する設定</li>
<li>ディスプレイマネージャでのログイン</li>
</ul>
</div>
<br />
<p>
さらにおまけを少し追加します。
</p>
<br />
<h3>キーボード等に関する設定</h3>
<br />
<h4>setxkbmapによる設定</h4>
<p>
Xでのキーボードに関する設定をするためには、「setxkbmap」コマンドを使います。
必須の設定すべき内容として、まず、日本語キーボード、英語キーボードと言われるキーボードのレイアウトが何かを設定します。
<code>-layout</code>オブションとして日本語の場合「jp」を渡します、英語なら「us」です。
</p>
<br />
<pre class="commandline"><code>$ setxkbmap -layout <i>jp</i>
</code></pre>
<br /><br />
<p>
更に、キーボードのcapsLockキーをコントロールキーやエスケイプキーに割り当てることが出来るオプションを利用できます。
設定の仕方は、<code>-option</code>に、利用したいオプションを渡すだけです。
次の例は、capslockキーにコントロールを割り当てるオプションとctl+alt+BSの同時押しでXを終了するオプションを設定しています。
複数オプションは、カンマを使って一度に設定できます。
また、各設定は、別途コマンドを実行しても大丈夫です。
</p>
<br />
<pre class="commandline"><code>$ setxkbmap -layout <i>jp</i> -option <i>ctrl:nocaps,terminate:ctrl_alt_bksp</i>
</code></pre>
<br /><br />
<p>
オプションでよく使われるものは以下のとおりです。
</p>
<br />
<table class="cheetsheet">
<tbody>
<tr>
<th>オブション名</th>
<th>効果</th>
</tr>
<tr>
<td>ctrl:nocaps</td>
<td>capsLockキーをctrlキーにする</td>
</tr>
<tr>
<td>ctrl:swapcaps</td>
<td>capsLockとctrlキーを入れ替える</td>
</tr>
<tr>
<td>caps:escape</td>
<td>casLockをESCキーにする</td>
</tr>
<tr>
<td>caps:swapescape</td>
<td>casLockとESCキーを入れ替える</td>
</tr>
<tr>
<td>terminate:ctrl_alt_bksp</td>
<td>ctl + alt + BSでX終了</td>
</tr>
</tbody>
</table>
<br />
<p>
ここで使えるオプションは他にもたくさんあります。
どのようなものがあるかは、<code>/usr/share/X11/xkb/rules/base.lst</code>で定義されているので(「! option」と書かれた行以降のあたり)、
興味がある場合は直接、確認して下さい。
</p>
<br />
<pre class="commandline"><code>$ vim /usr/share/X11/xkb/rules/base.lst
</code></pre>
<br /><br />
<p>
setxkbmapの設定の効果は、セッション終了まで継続しますが、その効果は次のセッションに引き継がれません(勝手に設定が保存されないということ)。
では、どうするかといえば、
お気に入りのオプション設定が見つかったら、<code>~/.xinitrc</code>にコマンドを転記して、
いつでもセッション初めに実行するようにすればOKです。
以下を雛形にして、自分の<code>~/.xinitrc</code>を書き換えましょう。
</p>
<br />
<pre class="commandline"><code>....
# auto start
setxkbmap -layout us
setxkbmap -option ctrl:nocaps
setxkbmap -option terminate:ctrl_alt_bksp
nitrogen --restore &
# window manager
exec xmonad
</code></pre>
<br /><br />
<h4>xmodmapによるキーマッピング</h4>
<p>
さて、capsLockキーの入れ替え等、良くあるキーの入れ替えは通常、上述の方法を取ります。
</p>
<br />
<p>
しかし、Xでは、キーコードとキーシムのマッピングを単純に変更することが出来る方法があり、
こちらのほうが役に立つ場面がある(うちのノートPCではエンターキーがナンバーパットのエンターキーのキーコードにバインドされていた時に役立ちました。)ので、併記しておきます。
</p>
<br />
<p>
まずは、次のコマンドでxmodmapパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S xorg-xmodmap
</code></pre>
<br /><br />
<p>
現在のキーマッピングの様子は、次のコマンドで標準出力に出力されます。
</p>
<br />
<pre class="commandline"><code>$ xmodmap -pke
</code></pre>
<br /><br />
<p>
また、実際にX上で押されたキーのイベントやキーコードは、xevコマンドで確認することができます。
この2つを用いて、一般的なキー挙動と異なっているかどうかを確認することが出来ます。
</p>
<br />
<pre class="commandline"><code>$ xev
</code></pre>
<br /><br />
<p>
例えば、エンターキーを押すと、
他の一般的なキーボードではxevの表示でkeycode 36 でkeysym Returnと返るはずなのですが、
うちでは、keycode 104、keysym KP_Enterが返ってきます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzGT85Sh3sIfbuH8Ou-D0-XUQ-eTmTSbHhFalSSubCJlbGya1ToDv0OJT7RDPfhDb7KFE_UN9HiZTBTESpW3IJb4VIL-iUbg3vHN_k9i_cHLPr02Dz2W33jk2l0UNx6-0pAXfYNz-S6E8/s1920/2021-05-14-140411_1920x1080_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzGT85Sh3sIfbuH8Ou-D0-XUQ-eTmTSbHhFalSSubCJlbGya1ToDv0OJT7RDPfhDb7KFE_UN9HiZTBTESpW3IJb4VIL-iUbg3vHN_k9i_cHLPr02Dz2W33jk2l0UNx6-0pAXfYNz-S6E8/s600/2021-05-14-140411_1920x1080_scrot.png" width="600" /></a></div>
<p>
このような場合には、keycode 104を押したときにも、keysymとしてReturnが返るように、
<code>~/.Xmodmap</code>を次のような内容で作成します。
</p>
<br />
<pre class="commandline"><code>keycode 104 = Return NoSymbol Return
</code></pre>
<br /><br />
<p>
この設定を反映させるには、以下のコマンドを実行します。
</p>
<br />
<pre class="commandline"><code>$ xmodmap ~/.Xmodmap
</code></pre>
<br /><br />
<p>
今使っている、.xinitrcは、前半部分に<code>~/.Xmodmap</code>ファイルを自動的に読むこむ上述のコマンドと同じ部分があるので、本来は、Xを起動するたびに自動的にこの変更が設定されるはずなのですが、setxkbmapコマンドを使うとmodmapがデフォルトに戻ることがあるようなので、
うまく行かない場合には、setxkbmapの設定のあとに、xmodmapの行を追加してみましょう。
</p>
<br />
<pre class="commandline"><code>....
# auto start
setxkbmap -layout us
setxkbmap -option ctrl:nocaps
setxkbmap -option terminate:ctrl_alt_bksp
## setxkbmapの後に、xmodmap設定を行う
xmodmap ~/.Xmodmap
nitrogen --restore &
# window manager
exec xmonad
</code></pre>
<br /><br />
<h4>もっと詳しく</h4>
<p>
ArchWikiでXのキーボード(or キー)設定関係の主なところは以下のとおりです。
</p>
<br />
<div>
<ul style="text-align: left;">
<li><a href="https://wiki.archlinux.jp/index.php/Xorg_%E3%81%A7%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A" target="_blank">Xorg でのキーボード設定</a></li>
<li><a href="https://wiki.archlinux.jp/index.php/Xmodmap" target="_blank">xmodmap</a></li>
<li><a href="https://wiki.archlinux.jp/index.php/X_KeyBoard_extension" target="_blank">X KeyBoard extension</a></li>
</ul>
</div>
<br />
<h3>タッチパッドの設定</h3>
<p>
ノートパソコンの場合、カーソル移動やページスクロールにタッチパッドを使いますが、
初期設定では直感的操作に結びつかないこともあります。
特にタップででクリックするかどうかや指のスライド方向と画面のスクロール方向の違いは、
慣れているものと違うと、すごく大きなストレスになります。
そこで、タッチパッドの設定は早い段階で済ませてしまいましょう。
</p>
<br />
<p>
タッチパッドの設定はXのシステム側の設定ファイルとして設定してしまうほうが便利です。
</p>
<br />
<h4>タッチパッドの設定ファイル</h4>
<p>
<code>/etc/X11/xorg.conf.d/30-touchpad.conf</code>ファイルを作成します。
</p>
<br />
<pre class="commandline"><code>$ sudo vim /etc/X11/xorg.conf.d/30-touchpad.conf
</code></pre>
<br /><br />
<p>
中身は以下のようにし(コピペでOK)、これを雛形にします。
</p>
<br />
<pre class="commandline"><code>Section "InputClass"
Identifier "libinput touchpad catchall"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "on"
Option "TappingButtonMap" "lrm"
Option "naturalScrolling" "on"
EndSection
</code></pre>
<br /><br />
<p>
オプションの全貌を知りたい時は、「<a href="https://man.archlinux.org/man/libinput.4" target="_blank">libinut(4)</a>」で調べることが出来ます。
但し、マニュアルにあるオプションの全てが使えるわけではありません(タッチパッド以外も書いてある)。
</p>
<br />
<p>
タッチパッドは、xinputコマンドを使えば、ユーザー自身がその場で機能を変更することも出来ます。
また、libinputドライバではなくて従来のsynapticsを使うともっと沢山の設定が出来ることもあります。
より詳細を見たい場合のArchWikiは以下の通りです。
</p>
<br />
<div>
<ul style="text-align: left;">
<li><a href="https://wiki.archlinux.jp/index.php/Libinput" target="_blank">libinput(ArchWiki)</a></li>
<li><a href="https://wiki.archlinux.jp/index.php/Synaptics_%E3%82%BF%E3%83%83%E3%83%81%E3%83%91%E3%83%83%E3%83%89" target="_blank">Synaptics タッチパッド(ArchWiki)</a></li>
</ul>
</div>
<br />
<h3>日本語入力環境の構築</h3>
<p>
日本語入力に関連するプログラムは、
割と頻繁に流行り(開発が活発かどうか)が変化します。
そして仕組みも複雑なので、あまり深入りせず、
その時期その時期で多くの人が使っていて情報の多いものを無難に使うのがコツだと思います。
一方、もっと、安定した日本語入力環境が欲しい場合は、X一般のアプリにインプットメソッドで入力するのではなくて、
emacsやvimの中で使える変換システムのほうが安定しているかもしれません。
</p>
<br />
<p>
というわけで、先日twitterでアンケートを取ったところ、
2021年春の時点では、数だけで見ればFcitxのユーザーが多かったので、これをインストールしてみます(色々な意見も聞けたのでおもしろかったです、参加者の皆さんありがとうございます。)。
</p>
<br />
<h4>Fcitx5のインストール</h4>
<p>
archlinuxのリポジトリには現在、Fcitxと、新しい系統のFcitx5の両方がありますが、Fcitx5をインストールします。
必要なパッケージは次の通りです。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>fcitx5-im</li>
<li>fcitx5-mozc</li>
</ul>
</div>
<br />
<p>
以下のコマンドを実行して、インストールしましょう。
fcitx5-imはグループです、インストール時に選択肢が表示されますが、デフォルトのallで、全てインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S fcitx5-im fcitx5-mozc
</code></pre>
<br /><br />
<h4>環境変数の設定とfcitx5の起動</h4>
<p>
インストールが完了したら、.xinitrcを編集して、以下のようにIMの項目を追加します。
</p>
<br />
<pre class="commandline"><code>....
# auto start
## key
setxkbmap -layout us
setxkbmap -option ctrl:nocaps
setxkbmap -option terminate:ctrl_alt_bksp
## wallpaper
nitrogen --restore &
## IM
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
fcitx5 &
# window manager
exec xmonad
</code></pre>
<br /><br />
<p>
ファイルの設定が終わったら、<span style="color: red;">Xを再起動</span>します。
</p>
<br />
<h4>configtoolで必須の設定</h4>
<p>
次は、fcitxの最低限の設定をダイアログを使って行います。
この設定を<span style="color: red;">忘れると、日本語入力ができません</span>。
以下のコマンドを実行して、fcitxの設定ダイアログを呼び出します。
</p>
<br />
<pre class="commandline"><code>$ fcitx5-configtool
</code></pre>
<br /><br />
<p>
左上に並ぶタブで「Input Method」が選択されていることを確認したら、
ダイアログの右側ペインの上の入力スペースに<code>mozc</code>と入力します。
検索結果として、右側ペインに「Mozc」が出るので、その行をダブルクリックします。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1OWJstWNVv-ptjtk_J2EiytQjzab6QGoAd0aDiK3XGlHFJnI4uao2OjPVWT1Cfu4qc0LS_BRTX9fxnHK1VOeSevzIrg_TOWcfUqrh8lBW-XjXlC6_d5xLPKIhgs9USmzPR27keqzZC0I/s1010/2021-05-19-140309_934x1010_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1010" data-original-width="934" height="600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1OWJstWNVv-ptjtk_J2EiytQjzab6QGoAd0aDiK3XGlHFJnI4uao2OjPVWT1Cfu4qc0LS_BRTX9fxnHK1VOeSevzIrg_TOWcfUqrh8lBW-XjXlC6_d5xLPKIhgs9USmzPR27keqzZC0I/s600/2021-05-19-140309_934x1010_scrot.png" /></a></div>
<p>
「Mozc」が左側のペインに加わっていることを確認できれば、Mozcの登録は完了です。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl3RxiMFzleANpCO_ELRYgPmkh14Ng3Qm7XwX9vxRqknSfaAw9_tpHui9Dd6WmxEJllwaFKncXXHlBDUT8m7VwUcqW4GWWKySltgYrD6fFqOUsKgZPpJ31XCxaeC_dTxuyYweXA9OxLCg/s1010/2021-05-18-153705_934x1010_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1010" data-original-width="934" height="600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl3RxiMFzleANpCO_ELRYgPmkh14Ng3Qm7XwX9vxRqknSfaAw9_tpHui9Dd6WmxEJllwaFKncXXHlBDUT8m7VwUcqW4GWWKySltgYrD6fFqOUsKgZPpJ31XCxaeC_dTxuyYweXA9OxLCg/s600/2021-05-18-153705_934x1010_scrot.png" /></a></div>
<p>
次は、左上に並ぶタブで「Global Options」を選択してページを切り替えます。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7HOsNNK8QB0LOw9iqv1_2VbRijDoNN25jhlYuDXJrRxmn1eVCbYfPrNwN6s6MElxB_ul6dnC4_WYv6RuZzwkMF1mqUtrV9IMyNWnbjWt4LkRD9ch5ZvLCOJIX-8S5GTYuf8njU4sZ6y4/s1010/2021-05-18-153241_934x1010_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1010" data-original-width="934" height="600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7HOsNNK8QB0LOw9iqv1_2VbRijDoNN25jhlYuDXJrRxmn1eVCbYfPrNwN6s6MElxB_ul6dnC4_WYv6RuZzwkMF1mqUtrV9IMyNWnbjWt4LkRD9ch5ZvLCOJIX-8S5GTYuf8njU4sZ6y4/s600/2021-05-18-153241_934x1010_scrot.png" /></a></div>
<p>
一番初めの項目に「Trigger Input Method」があり、
何のキーでIMを起動するかを確認できます。
「add」、「remove」を使って調整し、
キー表示されているボタン状の部分をクリックすると、新しいキーの組み合わせを登録できます。
</p>
<br />
<p>
最後は、ダイアログ右下のOKを押して設定を確定したら、ダイアログを終了します。
その後、Xを再起動しましょう。
</p>
<br />
<p>
Xが立ちあがったら、xterm、gnome-terminal、chromiumの各アプリで、日本語入力が出来るかどうか確認して下さい。
IMの起動は、デフォルトで「Ctrl + space」です。
</p>
<br />
<h3>ディスプレーマネージャLightDMを使う</h3>
<p>
今のところ、linuxを立ち上げるとコンソールにログインプロンプトが出ていましたが、
LightDMと呼ばれるディスプレーマネージャを使って、グラフィカルなログイン環境を構築します。
必要なパッケージは以下の通り。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>lightdm</li>
<li>lightdm-gtk-greeter</li>
</ul>
</div>
<br />
<p>
次のコマンドでパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S lightdm lightdm-gtk-greeter
</code></pre>
<br /><br />
<h4>グラフィカルログインに切り替える</h4>
<p>
インストールが完了したら、次のコマンドで実行して、lightdmのサービスをシステムに登録します。
</p>
<br />
<pre class="commandline"><code>$ sudo systemctl enable lightdm
</code></pre>
<br /><br />
<p>
次回システム起動時から、ログイン環境がグラフィカルログインになります。
早速、rebootコマンドでシステムを再起動しましょう。
</p>
<br />
<pre class="commandline"><code>$ sudo reboot
</code></pre>
<br /><br />
<h4>lightdmが起動時に読むファイル.xprofile</h4>
<p>
グラフィカルログインのダイアログからいつものユーザーでログインしましょう。
もしかしたら、起動時画面は真っ暗になっているかもしれません。
「alt + shift + Enter」でxtermが起動することで
xmonadが起動していることを確認しましょう。
</p>
<br />
<p>
さて、先程までキーボードの設定や、日本語入力の設定、背景の設定も行ったはずですが、
lightdmからログインするとそれらの設定が効いていないはずです。
これは、lightdmが~/.xinitrcを読み込まないからです。
</p>
<br />
<p>
lightdmは、startxと違って、<code>~/.xprofile</code>ファイルを実行時に読み込みます。
そこで、lightdmを使う場合には、実行時の処理を<code>~/.xprofile</code>ファイルに書き換える必要があります。
この際、次の点で.xinitrcと異なることに注意します。
</p>
<br />
<p>
まず、xinitrcの前半部分で処理していた、.Xresourcesや.Xmodmapに関する読み込み処理を書く必要がありません。
lightdmが別途自動的にその処理を読み込んでくれます。
</p>
<br />
<p>
次に、windowmマネージャの起動コマンドは書きません。
実は、ディスプレーマネージャは複数のウィンドマネージャを切り替えて起動することが出来るので、
ウィンドマネージャは、.xprofileを実行した後、lightdm側が起動します。
</p>
<br />
<p>
というわけで、.xprofileには、.xinitrcに書き込んでいたものの内必要な一部分のみを転記すればOKです。
まずは、.xprofileファイルを作成します。
</p>
<br />
<pre class="commandline"><code>$ vim ~/.xprofile
</code></pre>
<br /><br />
<p>
.xprofileの内容を自分の.xinitrcから抜き出して以下の様にします。
</p>
<br />
<pre class="commandline"><code># key setting
setxkbmap -layout us
setxkbmap -option ctrl:nocaps
setxkbmap -option terminate:ctrl_alt_bksp
# wallpaper
nitrogen --restore &
# IM
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
fcitx5 &
</code></pre>
<br /><br />
<h4>コンソールからのログインに戻す方法</h4>
<p>
さて、このグラフィカルログインは、いつでも好きな時にやめてコンソールからのログインに戻すことが出来ます。
グラフィカルログインをやめる場合は、次のコマンドを実行して、再起動すればOKです。
</p>
<br />
<pre class="commandline"><code>sudo systemctl disable lightdm
</code></pre>
<br /><br />
<p>
ここで、先程、.xinitrcから.xprofileに転記した部分を
.xinitrcが.xprofileから読み込むように書き直しておきましょう。
そうすれば、.xprofile側で設定を一元管理できるようになります。
つまり、Xをlightdmで立ち上げても、xstartで立ち上げてもX初期設定は同じになります。
</p>
<br />
<pre class="commandline"><code>vim ~/.xinitrc
</code></pre>
<br /><br />
<pre class="commandline"><code>....
# auto start
source ~/.xprofile
# window manager
exec xmonad
</code></pre>
<br /><br />
<h4>ログイン画面をかっこよくする</h4>
<p>
ログイン画面が地味すぎるので、おしゃれにしましょう。
lightdmには、おしゃれにカスタマイズされた設定が幾つか配布されており、
その中でも「<a href="https://github.com/Litarvan/lightdm-webkit-theme-litarvan" target="_blank">Litarvan's LightDM WebKit2 theme</a>」が超おすすめでした。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPOg34dLMK1QFNAuuwEpge25-nUpNKiiWlTahIUGf9WzJHNzZb9pSEkm2XQTtxu8QzSrwn9BHXAT747WScaVcPf8_URiNOcGao82tWfLISej-L5QPR5k_lLRgWWY7Tfz31tPlm1YlasP8/s1920/2021-05-19-114817_1920x1080_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPOg34dLMK1QFNAuuwEpge25-nUpNKiiWlTahIUGf9WzJHNzZb9pSEkm2XQTtxu8QzSrwn9BHXAT747WScaVcPf8_URiNOcGao82tWfLISej-L5QPR5k_lLRgWWY7Tfz31tPlm1YlasP8/s600/2021-05-19-114817_1920x1080_scrot.png" width="600" /></a></div>
<p>
archlinxuでは、AURにlightdm-webkit-theme-litarvanがあるので、これを次のコマンドでインストールします。
</p>
<br />
<pre class="commandline"><code>$ yay -S lightdm-webkit-theme-litarvan
</code></pre>
<br /><br />
<p>
しかし、現在はこのテーマが呼び出しているwebkit2gtkのバージョンが 2.36.7-1 -> 2.38.0-2へアップデートされて、上手く動かなくなっています。
なので、lightdm-webkit-theme-litarvanを動かすためには、古いバージョンのwebkit2gtkにダウングレードする必要があり面倒になっています。
(セキュリティ的にも問題が有る)
</p>
<br />
<p>
そこで、代替のgreeter候補として slick-greeterを紹介します。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ3SPX6hZ4yYqsq1srFYJIOTbl6ryh_8j9-RU3RZ4ScZa7GkRwbATKfSfuWoq71bMxXVkC1KOFzR1KfaC051nMFUGqZjPzH20RU2eccIF0MuwIgBMhqilKdomdiWHLV8x69LZX2-anTGJrHNfZMNn8s1GEbnMNYJpEa3NsDRRwYqAhbpQgK9JDasvT/s2160/Screenshot.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1440" data-original-width="2160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ3SPX6hZ4yYqsq1srFYJIOTbl6ryh_8j9-RU3RZ4ScZa7GkRwbATKfSfuWoq71bMxXVkC1KOFzR1KfaC051nMFUGqZjPzH20RU2eccIF0MuwIgBMhqilKdomdiWHLV8x69LZX2-anTGJrHNfZMNn8s1GEbnMNYJpEa3NsDRRwYqAhbpQgK9JDasvT/s600/Screenshot.png"/></a></div>
<figure class='okblogcard'>
<a href='https://github.com/linuxmint/slick-greeter' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://opengraph.githubassets.com/50499106f2fd357ad2453bc12dc8e5d6265f6a812a50d13ecad56a8e190ba3d9/linuxmint/slick-greeter' alt='GitHub - linuxmint/slick-greeter' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - linuxmint/slick-greeter</p><p class='okblogcard-description'>
A slick-looking LightDM greeter.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/linuxmint/slick-greeter' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
archlinxuでは、公式リポジトリにlightdm-slick-greeterがあるので、これを次のコマンドでインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S lightdm-slick-greeter
</code></pre>
<br /><br />
<p>
インストールが完了したら、/etc/lightdm/lightdm.confを開いて、
<code>[Seat:*]</code>項目で
<code>greeter-session</code>の値を<code>lightdm-slick-greeter</code>に書き換えます。
</p>
<br />
<pre class="commandline"><code>$ sudo vim /etc/lightdm/lightdm.conf
</code></pre>
<br /><br />
<pre class="commandline"><code>....
[Seat:*]
...
#greeter-session=example-gtk-gnome
greeter-session=lightdm-slick-greeter
.....
</code></pre>
<br /><br />
<p>
さらに、このgreeterの設定は、もちろん設定ファイルでもおこなえますが、lightdm-settingsというGUIアプリでも行うことができます。
archlinxuでは、AURにlightdm-settingsがあるので、これを次のコマンドでインストールします。
</p>
<br />
<pre class="commandline"><code>$ yay -S lightdm-settings
</code></pre>
<br /><br />
<p>
アプリlightdm-settingsの起動はroot権限が必要なので、sudo等を使って起動しましょう。
</p>
<br />
<h3>その他、良くある設定</h3>
<p>
必須ではないけれど、良くある設定をおまけとして紹介します。
</p>
<br />
<h4>サウンド設定</h4>
<p>
alsa-utilsパッケージをインストールして、音量の調整をします。
次のコマンドでインストールしましょう。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S alsa-utils
</code></pre>
<br /><br />
<p>
インストールが完了したらalsamixerコマンドを実行します。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjZ7PchdMqxL19AjvlzyANk8iojZ7IqPJrsNJGV61I3B3ufgy1T0jMZAANLBbVbV9KbBKCehY5RdcoijK3vyWizn-5uFOFfM4KPLTXsm8T_O2toAa76Ge2ycCQWpG6DcxjXuxlBteWdTs/s880/2021-05-18-172235_880x540_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="540" data-original-width="880" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjZ7PchdMqxL19AjvlzyANk8iojZ7IqPJrsNJGV61I3B3ufgy1T0jMZAANLBbVbV9KbBKCehY5RdcoijK3vyWizn-5uFOFfM4KPLTXsm8T_O2toAa76Ge2ycCQWpG6DcxjXuxlBteWdTs/s600/2021-05-18-172235_880x540_scrot.png" width="600" /></a></div>
<p>
メインのミュートを外して(mキーを押す)、
音量を適当に調節します。
</p>
<br />
<p>
alsaは、linuxで何もしなくても使えるサウンドシステムですが、
alsa-utilsパッケージをインストールしないと、
起動時にいつも設定が初期化されて消音されます。
alsa-utilsには、設定を保存して次回立ち上げ時に復元するsystemctlのサービスファイルが入っており、
インストールすれば勝手にサービスを開始してくれます。
ですから、忘れずにalsa-utilsパッケージをインストールしましょう。
</p>
<br />
<h4>マウスカーソル</h4>
<p>
Xのデフォルトのマウスカーソルは、大きなバツ印です。
何処かで知らないうちに見慣れた矢印に設定し直されているかもしれませんが、
ここでは、おしゃれな「マウス」カーソルに変更します。
</p>
<br />
<p>
AURにあるonekoパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ yay -S oneko
</code></pre>
<br /><br />
<p>
インストール後、.xprofileに次の一行を追加します。
</p>
<br />
<pre class="commandline"><code>....
oneko &
....
</code></pre>
<br /><br />
<h4>IMの裏技</h4>
<p>
Xアプリケーションによっては、Fcitx5で日本語入力が立ち上がらないことがあります。
以下は、そんな場合のおまじないです。
</p>
<br />
<p>
但し、うまく行くとは限りませんし、何が起こるかわからないことに留意して行って下さい。
</p>
<br />
<p>
まず、.xprofileのIM設定を以下のように書き換えます。
</p>
<br />
<pre class="commandline"><code>.....
# IM
export GLFW_IM_MODULE=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
fcitx5 &
</code></pre>
<br /><br />
<p>
<code>GLFW_IM_MODULE</code>の行が追加されていることを忘れないで下さい。
そして、IMの値はibusにします。
</p>
<br />
<p>
ここまでの設定で、ターミナルエミュレータkittyでも日本語入力が出来るようになります。
</p>
<br />
<p>
さらにibusパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S ibus
</code></pre>
<br /><br />
<p>
ibusパッケージはインストールするだけでOK、設定はいりませんし、実行したりしてはいけません。ただパッケージをインストールするだけです。
これで、RStudio上でも日本語入力が可能になります。
</p>
<br />
<h3>もっとxmonadする</h3>
<p>
xmonadの沼に足をつけたい方は、ぜひ以下のサイトへ
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp9fIpvjisleNTl32yGzfNDVuL7lMFrkQ3wSirg2ziamWUfb-jn8hpiy7n1W5iR059emsUSpeMKinHpWL8AY5Uw8G94Y5hl-ALSh56HZoU8cH99wQn0SwtAldMXHfQ3Mfvs6KXcRfIH3g/s1920/2021-05-20-115500_1920x1080_scrot.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp9fIpvjisleNTl32yGzfNDVuL7lMFrkQ3wSirg2ziamWUfb-jn8hpiy7n1W5iR059emsUSpeMKinHpWL8AY5Uw8G94Y5hl-ALSh56HZoU8cH99wQn0SwtAldMXHfQ3Mfvs6KXcRfIH3g/s600/2021-05-20-115500_1920x1080_scrot.png"/></a></div>
<p style="text-align: center;">
<a href="https://ok-xmonad.blogspot.com/" target="_blank"><span style="font-size: large;">おしゃれな気分でxmonad</span></a>
</p>
<br />
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-44792345497951614492021-05-13T00:31:00.046+09:002023-03-09T11:10:19.271+09:00Arch Linux をおしゃれに最速インストール<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimEp641no4uwF_p88_2_L6dwqR5hRCcTB3R52jU3iV12Js2uvKEFPwKR1m3iveUpr4JwNO0IeTi6SUUa655DgOhQKZ6iK9tcvLGmbzSMERlOgJdq4swu8OLZgX9C43rin5WsDTjc1D548/s4592/DSC01997.JPG" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="2576" data-original-width="4592" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimEp641no4uwF_p88_2_L6dwqR5hRCcTB3R52jU3iV12Js2uvKEFPwKR1m3iveUpr4JwNO0IeTi6SUUa655DgOhQKZ6iK9tcvLGmbzSMERlOgJdq4swu8OLZgX9C43rin5WsDTjc1D548/s600/DSC01997.JPG" width="600" /></a></div>
<p>
本家のArch Linuxのインストールガイドを見ながら久しぶりにインストールすると、
だいたいリブートした後に、
「あれ?ネットにつながらない」とか、
「あれ?vimがない」とか、
「え?なんで補完効かないんだ!」とか
「このキーCtrlに入れかわってないやん」とか、
「コンソールの字が小さくて見えない、、」とかとか、
いろんな面倒くさい事が残されていて、
ちっともインストール作業が終らなかったりするものなのです。
</p>
<br />
<p>
そこで、
UEFIパソコンにArch Linuxをインストールする際の俺式チェックメモ。
Arch Linux を何度かインストールしたことあるけど、
久しぶりにインストールする時「あれなんだっけ?」となる時のチェック用です。
</p>
<br />
<p>
本家インストールガイドは以下
</p>
<br />
<a href="https://wiki.archlinux.org/title/Installation_guide" target="_blank">archlinux Installation guid</a>
<h3>インストールメディアの用意</h3>
<p>
まず、<a href="https://archlinux.org/download/" target="_blank">Arch Linux Downloads</a>のページから日本にあるミラーを探し、
そこから「archlinux-<i>2023.03.01</i>-x86_64.iso」の様に日付入りのisoファイルをダウンロード。
</p>
<br />
<p>
次に、USBメモリを用意を用意。容量は16Gや32Gので問題ありません(isoファイルは1Gもない)。
</p>
<br />
<p>
isoファイルとUSBメモリを用意したら、windowsかlinuxのどちらかの方法で、
isoファイルをUSBメモリにインストールして、Arch Linux起動システムUSBを作ります。
おすすめは、windowsのrufusで作る方。
</p>
<br />
<h4>windowsならrufus</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp-k44WFWV4SAJKtcR_VvqBKQZCz91pVayJcINknZsYvEuATcnjIkFTTMpwhbjjSNr2NjOb2ttPhJoU8AafUOR1CYgTo0BtHlW7CM9oROh9YbUI3BIRGjm8bZIFxzhWQ_IjxDMSrO6O_w/s774/2021-05-10-171902_589x774_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="774" data-original-width="589" height="600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp-k44WFWV4SAJKtcR_VvqBKQZCz91pVayJcINknZsYvEuATcnjIkFTTMpwhbjjSNr2NjOb2ttPhJoU8AafUOR1CYgTo0BtHlW7CM9oROh9YbUI3BIRGjm8bZIFxzhWQ_IjxDMSrO6O_w/s600/2021-05-10-171902_589x774_scrot.png" /></a></div>
<p>
<a href="https://rufus.ie/ja/" target="_blank">rufus</a>というソフトを使います。
実行ファイルそのものが配布されており、インストールは不要。
起動するとダイアログが開くので、USBメモリとisoファイルを適切に指定し、後はそのままの設定でスタートするだけ。
</p>
<br />
<h4>linuxならdd</h4>
<p>
まず、USBメモリをパソコンに取り付けて、そのデバイスファイル名をlsblkコマンドで確認します。
</p>
<br />
<pre class="commandline"><code># lsblk
</code></pre>
<br />
<p>
ddコマンドで、isoファイルとusbのデバイスファイル名を指定。
なお、パーティション名ではなく、デバイス名を指定することに注意しましょう。
(/dev/hda1ではなく、/dev/hda)
</p>
<br />
<pre class="commandline"><code># dd if=<i>iso_file_path</i> of=<i>/dev/your_usb_device</i> bs=4M
</code></pre>
<br />
<h3>USBメディアでArch Linuxのライブシステムを起動</h3>
<p>
パソコンの電源を切った状態で、USBメディアをパソコンに差し電源を入れます。
それから、パソコンの設定をするための画面に入るためのボタンをゆっくり適当に連打します。
パソコンの設定をするための画面に入るためのボタンは、
特殊なものでない限り、F2、F1、F10、ESC、Delのどれかです。
PCがLenovoならF1キー、それ以外ならまずはF2キーで試しましょう。
ダメっぽい場合、次はDelキーを試します。
それでもダメな場合は、「BIOS キー」等でググってみましょう。
</p>
<br />
<p>
設定画面が起動したら、
まず、Secure Bootに関する項目を「Disabled」等、使わない設定に変更します。
</p>
<br />
<p>
次に、UEFIでの起動項目を探して、USBから起動します。
</p>
<br />
<p>
Arch Linuxのライブシステムが起動すると、自動的にrootでログインした状態になっています。
</p>
<br />
<p>
コンソールでは、初めにキーボードの設定を行いましょう。
デフォルトはUSキーボードなので、一般的な日本語キーボードを使っている場合、記号の位置が異なっています。
そこで、次のコマンドを入力しましょう。
</p>
<br />
<pre class="commandline"><code># loadkeys jp106
</code></pre>
<br />
<p>
文字が小さくて見にくい場合には、次のコマンドで大きなフォントに切り替える事が出来ます。
</p>
<br />
<pre class="commandline"><code># setfont ter-128n
</code></pre>
<br />
<h3>インターネットに繋ぐ</h3>
<p>
pingコマンドで、インターネット接続を確認します。
デスクトップパソコン等で、イーサネットケーブルで有線接続している場合はインターネットに繋がっているはずです。
</p>
<br />
<pre class="commandline"><code># ping archlinux.org
</code></pre>
<br />
<p>
しかし、ノートパソコン等で、有線ではなくwifi接続の場合は、
名前解決が出来ない等のエラーが表示されて、ネットワークに接続出来ていないはずです。
そこで、次からの手順でwifiを使ってネットワークに接続しましょう。
</p>
<br />
<p>
wifiの接続用SSIDと接続用パスワードを準備しておく。
wifiルーター側で行うMACアドレス制限等をクリアしておく。
パソコン側のMACアドレスが必要ならば「ip a」で確認できる。
</p>
<br />
<p>
「iwctl」コマンドを使います。(<a href="https://wiki.archlinux.org/title/Iwd" target="_blank">iw</a>を必要に応じて参照)
</p>
<br />
<pre class="commandline"><code># iwctl
</code></pre>
<br /><br />
<p>
コンソールが起動するので、まず、デバイス名を確認。入力は補完が効くので適宜タブ。
</p>
<br />
<pre class="commandline"><code>[iwd]# device list
</code></pre>
<br /><br />
<p>
上記で確認したwifiデバイス名がwlan0として、
次に接続ポイントを確認します。
</p>
<br />
<pre class="commandline"><code>[iwd]# station <i>wlan0</i> scan
[iwd]# station <i>wlan0</i> get-networks
</code></pre>
<br /><br />
<p>
接続ポイントが確認できたら、次の入力(
<span style="color: red;">
<i>SSID</i>の部分は、自分のところのSSIDに入れ替える事を忘れずに
</span>
)を行い、
出てきたパスワードプロンプトにパスワードを渡します。
</p>
<br />
<pre class="commandline"><code>[iwd]# station <i>wlan0</i> connect <span style="color: red;"><i>SSID</i></span>
</code></pre>
<br /><br />
<p>
数秒待って特にエラーが出なければ、
exitコマンドでiwdコンソールを終了します。
</p>
<br />
<pre class="commandline"><code>[iwd]# exit
</code></pre>
<br /><br />
<h3>システムの時計を合わす</h3>
<p>
システムがネットワークに繋がったら、システムの時計をネットワーク上の時計に合わせます。
</p>
<br />
<pre class="commandline"><code># timedatectl set-ntp true
</code></pre>
<br /><br />
<h3>インストールするディスクを準備する</h3>
<p>
パソコンに繋がっているディスクを確認するには「lsblk」コマンドを使います。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj3nQtdeb66_XUvQAaPrMMMXuh-SyshrQexEQXRFZNnFlEgDvBVs4BrQdzZAMjB2f3wr5AIRBym6ts_bgIIe1Uevc35h6Bqm96V-JmRopjPI0jjEdYH1Oq4GEzxDoHiZTOtw1Dz_w-tegFiNArHnNbCCdTzgFf5QivsLytpzd34W1AX2W3aJfUvkdL/s708/sc_window_20230308234329.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="482" data-original-width="708" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj3nQtdeb66_XUvQAaPrMMMXuh-SyshrQexEQXRFZNnFlEgDvBVs4BrQdzZAMjB2f3wr5AIRBym6ts_bgIIe1Uevc35h6Bqm96V-JmRopjPI0jjEdYH1Oq4GEzxDoHiZTOtw1Dz_w-tegFiNArHnNbCCdTzgFf5QivsLytpzd34W1AX2W3aJfUvkdL/s600/sc_window_20230308234329.png"/></a></div>
<br />
<p>
ルートになっている sda や nvme0n1 がディスクのデバイス名であり、
その下にぶらさがっている sda1 や nvme0n1p1 がパーティション名になります。
</p>
<br />
<p>
UEFIで起動が管理されている場合、
複数のEFI領域でブートローダー等を個別に管理できます。
Windowsとデュアルブートにする場合、
もとからあるWindowsが使っているEFIパーティションはそのままにしておき、
ArchLinuxのブートローダー用に
もうひとつ新しくEFIパーティションを作ってあげればOKです。
</p>
<br />
<h4>パーティションを切る</h4>
<p>
ディスクにパーティションを切るのは、「cgdisk」コマンド、
慣れていれば「fdisk」コマンドで行います。
lsblk等で確認したディスクのデバイス名がnvme0n1ならば、
以下の様に cgdiskの引数として、
デバイスファイルのパス(/dev/ディレクトリにあるデバイスファイル)を
渡して起動します。
</p>
<br />
<pre class="commandline"><code># cgdisk /dev/nvme0n1
</code></pre>
<br />
<p>
「EFI」、「/(root)」、「swap」の3つのパーティションを作ります。
ArchLinuxだけをインストールするなら、
既存のパーティションを全部「del」して、
それから「new」して行き、
最後に「write」します。
</p>
<br /><br />
<table class="cheetsheet">
<tbody>
<tr>
<th>場所</th>
<th>大きさはじまり</th>
<th>大きさ終わり</th>
<th>gdisk's code</th>
<th>名前</th>
</tr>
<tr>
<td>1つ目</td>
<td>そのままリターン</td>
<td>+512M(はじめから512Mうしろ)</td>
<td>ef00</td>
<td>ARCH EFI</td>
</tr>
<tr>
<td>2つ目</td>
<td>そのままリターン</td>
<td>-3G(終わりから3G手前)</td>
<td>8300</td>
<td>ARCH ROOT</td>
</tr>
<tr>
<td>3つ目</td>
<td>そのままリターン</td>
<td>そのままリターン</td>
<td>8200</td>
<td>swap</td>
</tr>
</tbody>
</table>
<br />
<p>
gdisk's codeはGUIDとは別のgdisk固有の識別番号。
<a href="https://wiki.archlinux.org/title/GPT_fdisk#Partition_number" target="_blank">ココ</a>で確認。
</p>
<br />
<p>
windows等と同居なら、これらの作業をはじめる前に、
windowsのディスクの管理でWindowsのパーティションを縮小して
空領域を作っておきます。
ここでは、その空領域(free spaceと表示される)に、
それぞれのパーティションを「new」して行き、
最後に「write」します。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1hclpJCEopAD40nWC2YBr0QBmhhQbhnWo0CTnWEmHiWY3TdQec7vbYUCw_XyJGyd8zk3gkEhUT_NMxW614ILkWoXVWuvcEqcF1oUNOgyHuIyr9aZ4oi0M2LTU8hZsW_ZokWnlvyuDxdzogdzj4De4jDPZzyIdV7hcLTBCH1zvEo6a7z3Fqq0O75vy/s978/sc_window_20230308234544.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="610" data-original-width="978" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1hclpJCEopAD40nWC2YBr0QBmhhQbhnWo0CTnWEmHiWY3TdQec7vbYUCw_XyJGyd8zk3gkEhUT_NMxW614ILkWoXVWuvcEqcF1oUNOgyHuIyr9aZ4oi0M2LTU8hZsW_ZokWnlvyuDxdzogdzj4De4jDPZzyIdV7hcLTBCH1zvEo6a7z3Fqq0O75vy/s600/sc_window_20230308234544.png"/></a></div>
<p>
fdiskコマンドについては「<a href="https://wiki.archlinux.org/title/Fdisk" target="_blank">Fdisk</a>」を参照。
</p>
<br />
<h4>フォーマットする</h4>
<p>
Windowsと同居させる場合、
デバイスファイル名を間違えないように細心の注意を払いましょう。
lsblk や cgdisk をもう一度起動したって構いません。
ディスクのサイズ等がヒントになります。
下記の <i>sdxY</i> となっている部分を
<span style="color: red;">
該当のパーティション
</span>
を表す自分のデバイスファイル名に置き換えます。
</p>
<br />
<p>
EFIパーティション
</p>
<br />
<pre class="commandline"><code># mkfs.fat -F32 /dev/<span style="color: red;"><i>sdxY</i></span>
</code></pre>
<br /><br />
<p>
ルートパーティション
</p>
<br />
<pre class="commandline"><code># mkfs.ext4 /dev/<span style="color: red;"><i>sdxY</i></span>
</code></pre>
<br /><br />
<p>
swapパーティション
</p>
<br />
<pre class="commandline"><code># mkswap /dev/<span style="color: red;"><i>sdxY</i></span>
</code></pre>
<br /><br />
<h3>パーティションをマウントして、swapも起動</h3>
<p>
ルートパティションを/mntにマウント
</p>
<br />
<pre class="commandline"><code># mount /dev/<i>sdxY</i> /mnt
</code></pre>
<br /><br />
<p>
まず、/mnt/bootを作成し、そこにEFIパーティションをマウントします。
</p>
<br />
<pre class="commandline"><code># mkdir /mnt/boot
# mount /dev/<i>sdxY</i> /mnt/boot
</code></pre>
<br /><br />
<p>
swapを起動
</p>
<br />
<pre class="commandline"><code># swapon /dev/<i>sdxY</i>
</code></pre>
<br /><br />
<h4>EFIパーティションが2つある時</h4>
<p>
Windowsと同居していて、EFIパーティションが2つある場合、
ここで、/mnt/win_boot等のディレクトリを作成し、
そこに、WinodwsのEFIパーティションをマウントしておきます。
</p>
<br />
<pre class="commandline"><code># mkdir /mnt/win_boot
# mount /dev/<i>sdxY</i> /mnt/win_boot
</code></pre>
<br />
<p>
こうしておく事で、この後行なう作業で、
自動的に/etc/fstabにマウントの指示が書き込まれ、
いつでもWindowsのEFIパーティションがマウントされるようになります。
そして、Linux側にWindowsのEFIパーティションをマウントしておけば、
grub設定の際、gurbが簡単にWindowsの事を認識できるようになります。
</p>
<br />
<h3>準備用パッケージを仮インストール</h3>
<p>
準備中のディスクにパッケージをインストールします。
</p>
<br />
<p>
本家のインストールガイドでは、編集対象になる設定ファイル等を/mnt以下に入れてchroot出来るようにするために
baseとlinuxパッケージを以下のようにpacstrapする指示をしているので、
まずは、以下のものをインストールします。
</p>
<br />
<pre class="commandline"><code># pacstrap /mnt base linux linux-firmware
</code></pre>
<br /><br />
<p>
但し、これはArch Linuxの「ミニマムなインストール設定」の例ではないことに注意が必要です。
本家のインストールガイドでも、続いてその下に、他のものを自分の都合に合わせて適宜インストールするように指示しています。
</p>
<br />
<p>
インストール作業中はネットワークに繋がっているはずなので、
chrootしたあとにもpacmanを使って足りないパッケージはインストールが出来ます。
ですから、それほど神経質になる必要はありませんが、
base以外に、少なくともvim等のエディタは必須です。
そして、zsh、zsh-completions、grml-zsh-configをいれておけば、
何の設定もなくls関連のエイリアスやパッケージ名の補完が使えるのでおすすめです。
更には、manも入れておけば、作業中、手元でいろんな確認が出来るので、これもおすすめ。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>base</li>
<li>linux</li>
<li>linux-firmware</li>
<li>man-db</li>
<li>vim</li>
<li>zsh</li>
<li>zsh-completions</li>
<li>grml-zsh-config</li>
</ul>
</div>
<br />
<p>
以上を踏まえて、pacstrapコマンドに、必要パッケージを追加して以下のように実行します。
</p>
<br />
<pre class="commandline"><code># pacstrap /mnt man-db vim zsh zsh-completions grml-zsh-config
</code></pre>
<br /><br />
<h3>設定を行う</h3>
<p>
インストールするシステムの設定ファイルを適切に書き込んで行きます。
</p>
<br />
<h4>fstab</h4>
<p>
/etc/fstabの内容を自動生成して追加書き込みをします。
</p>
<br />
<pre class="commandline"><code># genfstab -U /mnt >> /mnt/etc/fstab
</code></pre>
<br /><br />
<h4>chroot</h4>
<p>
インストール先の環境と同じパスを使うためのおまじないである「arch-chroot」コマンドを使います。
</p>
<br />
<pre class="commandline"><code># arch-chroot /mnt
</code></pre>
<br /><br />
<p>
chroot環境に入ると、素のbash環境になるので、それまでの色付きのプロンプトの色がなくなります。
しかし、ここで、既にインストールしておいたzshを起動することで、インストールメディアのライブ環境にあるgrml-zshの環境が同様に使えるようになります。
</p>
<br />
<pre class="commandline"><code># zsh
</code></pre>
<br /><br />
<p>
インストールを終わる際は、一旦、zsh環境から抜けて(exit)、bash環境に戻り、そこから再度抜けて(exit)、インストールライブ環境に戻ること。
</p>
<br />
<h4>タイムゾーン等の設定</h4>
<p>
タイムゾーンを設定
</p>
<br />
<pre class="commandline"><code># ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
</code></pre>
<br /><br />
<p>
システムの時刻をBISOの時刻にコピーする
</p>
<br />
<pre class="commandline"><code># hwclock --systohc
</code></pre>
<br /><br />
<p>
BISOの時刻がUTCになるので、Windowsと共存する場合、以下のようにWindows側で調整します
(<a href="https://wiki.archlinux.jp/index.php/%E6%99%82%E5%88%BB#Windows_.E3.81.A7_UTC_.E3.82.92.E4.BD.BF.E3.81.86" target="_blank">「WindowsでUTCを使う」</a>
を参照)。
Windowsの設定は、linuxのインストールが一段落してから別途やりましょう。
</p>
<br />
<p>
Windowsでの手順は、まず、インターネット時刻機能をオフにする。
</p>
<br />
<p>
それから、次に、以下のレジストリにDWORD値で十六進数の1を設定(うまく行かないときはQWORD値)
</p>
<br />
<pre class="commandline"><code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal
</code></pre>
<br /><br />
<h4>ローカライゼーション</h4>
<p>
/etc/locale.genを編集して、「en_US.UTF-8 UTF-8」と「ja_JP.UTF-8 UTF-8」の行をアンコメントします。
</p>
<br />
<pre class="commandline"><code>...
en_US.UTF-8 UTF-8
....
ja_JP.UTF-8 UTF-8
....
</code></pre>
<br /><br />
<p>
編集を保存してエディタを終了したら、次のコマンドを実行して、localeを作成します。
</p>
<br />
<pre class="commandline"><code># locale-gen
</code></pre>
<br /><br />
<p>
local-genの実行が終わってlocaleが出来たら、<code>/etc/locale.conf</code>を次のように編集します。
</p>
<br />
<pre class="commandline"><code>LANG=en_US.UTF-8
</code></pre>
<br /><br />
<h4>コンソールの設定雛形</h4>
<p>
<code>/etc/vconsole.conf</code>ファイルでは、
コンソール用のキーボードの種類とフォントを設定が出来ます(X環境とは無関係)。
以下は、vconsole.confの雛形。
</p>
<br />
<pre class="commandline"><code>KEYMAP=us
#KEYMAP=jp106
#FONT=
</code></pre>
<br /><br />
<h4>コンソールのキーボードでCapslockをCtrlやESCにする</h4>
<p>
コンソール上で、CapslockキーをCtrlキーに変更する場合、
まず、keymapファイルを置く場所を作り、デフォルトのキーマップをコピーして、zipを解凍し、
カスタム用のキーマップとして適当な名前にリネームします。
(以下、usキーボードの例)
</p>
<br />
<pre class="commandline"><code># mkdir -p /usr/local/share/kbd/keymaps
# cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz /usr/local/share/kbd/keymaps/
# cd /usr/local/share/kbd/keymaps/
# gunzip us.map.gz
# mv us.map my_custom_us.map
# vim my_custom_us.map
</code></pre>
<br /><br />
<p>
my_custom_us.mapファイルを開いたら、keycode 58やkeykode 29辺りをEscapeやControlに書き換えます。
</p>
<br />
<pre class="commandline"><code>keycode 58 Control
</code></pre>
<br /><br />
<p>
書き換えたカスタムのキーマップを反映させるには、loadkeysコマンドで以下のようにキーマップのフルパスを渡します。
</p>
<br />
<pre class="commandline"><code># loadkeys /usr/local/share/kbd/keymaps/my_custom_us.map
</code></pre>
<br /><br />
<p>
書き換えたカスタムのキーマップをシステム立ち上げで自動的に読み込むようにするためには、
<code>/etc/vconsole.conf</code>のKEYMAPにカスタムファイルのフルパスをを指定します。(zipで圧縮しないようにする)
</p>
<br />
<pre class="commandline"><code>KEYMAP=/usr/local/share/kbd/keymaps/my_custom_us.map
</code></pre>
<br /><br />
<p>
ここで、うちの環境では、Capsロックがシフトキーと同時押しで機能する等の場合、うまく調整できないキーボードもありました。
また、Xの環境では別途キーの入れ替え設定をする必要があるので、インストール作業中は、出来る範囲の程々に設定しておきましょう。
突っ込んで調べたい場合は、以下のリンクを参照。
</p>
<br />
<div>
<ul style="text-align: left;">
<li><a href="https://wiki.archlinux.org/title/Linux_console/Keyboard_configuration" target="_blank">Linux console/Keyboard configuration</a></li>
<li><a href="https://man.archlinux.org/man/keymaps.5" target="_blank">KEYMAPS(5)</a></li>
<li><a href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5%E3%81%AA%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%82%AD%E3%83%BC" target="_blank">特別なキーボードキー</a></li>
</ul>
</div>
<br />
<h4>コンソールの文字を大きくする</h4>
<p>
コンソールのフォントをインストール先の環境でも大きくするために、
まず、コンソール用の追加のフォントパッケージ「terminus-font」をインストールします。
</p>
<br />
<pre class="commandline"><code># pacman -S terminus-font
</code></pre>
<br /><br />
<p>
次に、<code>/etc/vconsole.conf</code>のFONTにフォント名を指定すれば、次回起動時から自動的にこのフォントが使われるようになります。
</p>
<br />
<pre class="commandline"><code>FONT=ter-128n
</code></pre>
<br /><br />
<h4>ホスト名の設定</h4>
<p>
<code>/etc/hostname</code>を次の様に編集します。
</p>
<br />
<pre class="commandline"><code>mycoolhostname
</code></pre>
<br /><br />
<p>
<code>/etc/hosts</code>を同じホスト名を使ってを次の様に編集します。
</p>
<br />
<pre class="commandline"><code>127.0.0.1 localhost
::1 localhost
127.0.1.1 mycoolhostname.localdomain mycoolhostname
</code></pre>
<br /><br />
<h4>rootのパスワード</h4>
<p>
rootのパスワードをpasswdコマンドで設定します。
</p>
<br />
<pre class="commandline"><code># passwd
</code></pre>
<br /><br />
<h3>ブートローダーにGRUBを使う</h3>
<p>
Arch Linuxでは、複数のブートの仕方がありますが、
その中のGRUBを使います。
</p>
<br />
<h4>必要パッケージのインストール</h4>
<p>
ブートローダーにgrubを使う準備を行います。
まず、必要なパッケージをインストールします。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>grub</li>
<li>efibootmgr</li>
<li>dosfstools</li>
<li>os-prober</li>
<li>mtools</li>
</ul>
</div>
<br />
<pre class="commandline"><code># pacman -S grub efibootmgr dosfstools os-prober mtools
</code></pre>
<br /><br />
<h4>grubをインストールする</h4>
<p>
次のコマンドで、grubローダーアプリをUEFIが読める場所にインストールします。
<code>--efi-directory</code>は、EFIパーティションをマウントしているパス(/boot)を指定します。
</p>
<br />
<pre class="commandline"><code># grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB_UEFI
</code></pre>
<br /><br />
<h4>grubの設定ファイルを作る</h4>
<p>
grubをインストールした初回は、そして、以降はgrubの設定に変更があった時に、<b><span style="color: red; font-size: large;">必ず忘れずに</span></b>、以下のコマンドでgrubの設定ファイルgrub.cfgを作成します。
</p>
<br />
<pre class="commandline"><code># grub-mkconfig -o /boot/grub/grub.cfg
</code></pre>
<br /><br />
<h3>プロセッサ用マイクロコード</h3>
<p>
Intel、AMDのどちらかのプロセッサ用マイクロコードを適用します。
まず、パッケージのインストール。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>intel-ucode</li>
<li>amd-ucode</li>
</ul>
</div>
<br />
<pre class="commandline"><code># pacman -S intel-ucode
</code></pre>
<br /><br />
<p>
マイクロコードパッケージをインストールした後、
GRUBでブートロードしている場合は、次のコマンドで設定ファイルを更新します。
</p>
<br />
<pre class="commandline"><code># grub-mkconfig -o /boot/grub/grub.cfg
</code></pre>
<br /><br />
<p>
その他の起動方法の場合は、「<a href="https://wiki.archlinux.jp/index.php/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B3%E3%83%BC%E3%83%89" target="_blank">マイクロコード</a>」を参照
</p>
<br />
<h3>ネットワーク設定</h3>
<p>
インストール時のライブ環境は、ネットワークが使えるように整備されていますが
(インストール作業中である今現在、ネットに繋がっている)、
インストールする先の環境では、自動的にこのネットにつながる環境が引き継がれません。
必ず、自らネットワーク管理の環境を構築する必要があり、
これを行わないとインストールした環境でブートした時にネットに繋がることが出来ません。
</p>
<br />
<p>
また、自らネットワークの環境を構築しようとする時、
Arch Linuxのwikiで解説されているネットワーク管理の方法は複数あり、
これらを知らずに混在させると、混乱のもとになります。
</p>
<br />
<p>
これらを踏まえて、このノートではもっとも簡単でいて洗練されている「networkmanager」の環境を構築します。
</p>
<br />
<h4>必要パッケージのインストール</h4>
<p>
必須に加えて、一般的な管理のものも含めてインストールします。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>networkmanager</li>
<li>wpa_supplicant</li>
<li>iw</li>
<li>iwd</li>
<li>dialog</li>
<li>dhcpcd</li>
<li>netctl</li>
</ul>
</div>
<br />
<p>
まず、必須のパッケージのインストール。
途中、選択肢が出る場合、デフォルトでOK。
</p>
<br />
<pre class="commandline"><code># pacman -S networkmanager wpa_supplicant dialog
</code></pre>
<br /><br />
<p>
その他、トラブルの際に役に立つパッケージもインストールしておきます。
</p>
<br />
<pre class="commandline"><code># pacman -S iw iwd dhcpcd netctl
</code></pre>
<br /><br />
<p>
systemctlで、NetworkManageが自動で立ち上がる登録をします。
</p>
<br />
<pre class="commandline"><code># systemctl enable NetworkManger
</code></pre>
<br /><br />
<p>
混乱が起こらないように、この先のNetworkManagerの設定は、次回再起動後に行います。
(次の起動時には、上で設定したNetworkManagerが自動的に起動される)
</p>
<br />
<h3>リブートして新しい環境へ</h3>
<p>
chrootされた状態から、exitコマンドで抜けます。
(zsh起動している場合は、zshからぬけて、chroot(bash環境)から抜ける)
</p>
<br />
<pre class="commandline"><code># exit
</code></pre>
<br /><br />
<p>
USBのライブ環境に戻るので、rebootコマンドでリブートします。
</p>
<br />
<pre class="commandline"><code># reboot
</code></pre>
<br /><br />
<p>
パソコンの起動画面で、F2キー等を押して起動時設定画面に入り、
「GRUB_UEFI」の項目をBOOT順の1番目に設定します。
もしくは、単純に、UEFIの起動項目で「GRUB_UEFI」から起動します。
</p>
<br />
<p>
USBメモリは再起動後、抜いて構いません。
</p>
<br />
<h3>ネットワークの設定</h3>
<p>
ログインプロンプトにrootでログインし、
ネットワークへの接続をpingかipで確認します。
</p>
<br />
<pre class="commandline"><code># ping archlinux.org
</code></pre>
<br /><br />
<p>
接続されていない場合、次のコマンドでNetworkManage設定メニューを表示します。
</p>
<br />
<pre class="commandline"><code># nmtui
</code></pre>
<br /><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHJvFE068C6iiWVbVCkfyZntPad1a9ggYQzSxTk8sdIZ1gVuMpvp2v4BodlezArIVdk9HmgYIuqdsV3TUKltxVsJf_EDoP2Ks6-goJ2GwOavhqVFmXtE5xUgmG9vc9cHNvH-TvzuNW408/s915/2021-05-11-131525_915x534_scrot.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="534" data-original-width="915" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHJvFE068C6iiWVbVCkfyZntPad1a9ggYQzSxTk8sdIZ1gVuMpvp2v4BodlezArIVdk9HmgYIuqdsV3TUKltxVsJf_EDoP2Ks6-goJ2GwOavhqVFmXtE5xUgmG9vc9cHNvH-TvzuNW408/s600/2021-05-11-131525_915x534_scrot.png" width="600" /></a></div>
<p>
メニュー型インターフェイスの設定プログラムが立ち上がるので、
「Activate a connection」を選択して、wifi等の設定を行います。
</p>
<br />
<p>
nmtuiで一度、設定しておけば、次回システム起動時は適当に繋がります。
ノート等で複数wifiポイントを利用する場合でも、各ポイントで初回に設定しておけば、
各ポイント毎に自動で繋がってくれます。
接続設定は一般的に「プロファイル」と呼ばれ、プロファイルもnmtuiの「edit a connection」から編集出来ます。
</p>
<br />
<p>
nmtuiの使い方は、まず初めに、「Activate a connection」。
</p>
<br />
<p>
もしその設定を変更する必要があれば、「edit a connection」を使います(普段は使わないということ)。
</p>
<br />
<p>
ネットワークに接続できたら、システムを次のコマンドでアップデートします。
</p>
<br />
<pre class="commandline"><code># pacman -Syu
</code></pre>
<br /><br />
<p>
また、pacmanの出力をカラー化して見やすくします。
</p>
<br />
<pre class="commandline"><code># vim /etc/pacman.conf
</code></pre>
<br /><br />
<p>
<code>/etc/pacman.conf</code>を開いたら、
Colorの前の#を消して、アンコメントしましょう。
ついで、ILoveCandyの一行を追加します。
更に、ParallelDownloadsの前の#も消して、
アンコメントすると、
リポジトリからの複数のパッケージを同時に
ダウンロードしてくれるようになります。
</p>
<br />
<pre class="commandline"><code># Misc options
....
Color
ILoveCandy
....
ParallelDownloads = 5
....
</code></pre>
<br /><br />
<h3>アカウントの準備とsudo</h3>
<p>
一般アカウントを作成し、sudoの権限が使えるようにします。
「neko」というアカウント名の場合、useraddコマンドで以下のようにwheelグループに所属するようにアカウントを作成します。
</p>
<br />
<pre class="commandline"><code># useradd -m -G wheel neko
</code></pre>
<br /><br />
<p>
以下のコマンドを実行して、
作成したアカウントのパスワードを設定します。
</p>
<br />
<pre class="commandline"><code># passwd neko
</code></pre>
<br /><br />
<p>
次にsudoパッケージをインストールします。
</p>
<br />
<pre class="commandline"><code># pacman -S sudo
</code></pre>
<br /><br />
<p>
インストールが出来たら、wheelグループのアカウントにsudo権限を与える設定を行います。
以下のように、好きなエディタをEDITOR変数に設定して、visudoコマンドを実行します。
</p>
<br />
<pre class="commandline"><code># EDITOR=vim visudo
</code></pre>
<br /><br />
<p>
自動的にエディタで設定ファイルが開かれるので、
wheelに関する以下のような一行の先頭にある(#)を消して、以下と同じ様にして、
保存し、終了します。
</p>
<br />
<pre class="commandline"><code>%wheel ALL=(ALL:ALL) ALL
</code></pre>
<br /><br />
<p>
sudoの設定が完了したら、さっそく、新しいアカウントでログインしなおしましょう。
</p>
<br />
<h3>一般ユーザーでの仮設定</h3>
<p>
普段遣いのシェルをzshに変更し、
Arch Linuxでパッケージ化されているzshの簡単な設定を追加します。
</p>
<br />
<p>
その前に、「which」コマンドをインストールします。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S which
</code></pre>
<br /><br />
<p>
chshコマンドを使ってログインシェルをzshにします。
コマンド実行後、ログインし直すとzshの環境になります。
</p>
<br />
<pre class="commandline"><code>$ chsh -s $(which zsh)
</code></pre>
<br /><br />
<p>
grml-zsh環境では、一般的な.zshrc以外に、2つの設定ファイルが使われることを把握しておきましょう。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>~/.zshrc.pre</li>
<li>~/.zshrc.local</li>
</ul>
</div>
<br />
<h4>バッテリー状態表示</h4>
<p>
インストール設定作業中、
ノートパソコンの場合コンソールでもバッテリー状態が見れると便利なのでgrml-zshの既定の設定を利用して、
バッテリー残量表示します。
</p>
<br />
<pre class="commandline"><code>$ vim ~/.zshrc.pre
</code></pre>
<br /><br />
<p>
<code>~/.zshrc.pre</code>を開いて、次の一行を加えます。
</p>
<br />
<pre class="commandline"><code>GRML_DISPLAY_BATTERY=1
</code></pre>
<br /><br />
<p>
編集後、保存して終了。次のコマンドで、zshを再起動。
</p>
<br />
<pre class="commandline"><code>$ exec zsh
</code></pre>
<br /><br />
<h4>編集行を使いやすく</h4>
<p>
定番のzshカスタマイズもついでに入れます。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S zsh-syntax-highlighting zsh-autosuggestions
</code></pre>
<br /><br />
<p>
パッケージをインストールしたら、
<code>~/.zshrc.local</code>をエディタで開きます。
</p>
<br />
<pre class="commandline"><code>$ vim ~/.zshrc.local
</code></pre>
<br /><br />
<p>
次の2行を加えましょう。
</p>
<br />
<pre class="commandline"><code>source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh
</code></pre>
<br /><br />
<p>
編集後、保存して終了。次のコマンドで、zshを再起動。
</p>
<br />
<pre class="commandline"><code>$ exec zsh
</code></pre>
<br /><br />
<p>
更にユーザー権限で、rebootやshutdownが通るように
polkitパッケージを入れておきます。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S polkit
</code></pre>
<br /><br />
<h3>時計の設定ふたたび</h3>
<p>
新しい環境で時計の設定をしておきます。
</p>
<br />
<pre class="commandline"><code>$ sudo timedatectl set-ntp true
</code></pre>
<br /><br />
<h3>Windowsとのデュアルブート</h3>
<p>
設定ファイル<code>/etc/default/grub</code>を開きます。
</p>
<br />
<pre class="commandline"><code>$ sudoedit /etc/default/grub
</code></pre>
<br /><br />
<p>
<code># GRUB_DISABLE_OS_PROBER=false</code>の行の先頭の # を
消して、アンコメントします。
</p>
<br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXD2up2qrhkM4Vdz5k6hW5tO-Dpj5O7jceXQLcWfYFbIEo2DlXb66idNY_pg3vEteSXcG81heeLx_T8epBz9XGzHXQgKjauXx4XdE70HyXySn14gtW80U8smORhknacwq4Qxz5cXpQ8oPOiKz47vfK_CyTBd7PzSSxtFOxABsPiwu_gVbiu8gg6Jh/s919/sc_window_20230309103350.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="692" data-original-width="919" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXD2up2qrhkM4Vdz5k6hW5tO-Dpj5O7jceXQLcWfYFbIEo2DlXb66idNY_pg3vEteSXcG81heeLx_T8epBz9XGzHXQgKjauXx4XdE70HyXySn14gtW80U8smORhknacwq4Qxz5cXpQ8oPOiKz47vfK_CyTBd7PzSSxtFOxABsPiwu_gVbiu8gg6Jh/s600/sc_window_20230309103350.png"/></a></div>
<p>
設定ファイルの書き換えが終ったら、忘れずにgrubを以下のコマンドで更新します。
</p>
<br />
<pre class="commandline"><code>$ sudo grub-mkconfig -o /boot/grub/grub.cfg
</code></pre>
<br /><br />
<p>
再起動すれば、grubのメニューにWindowsの起動項目が追加されているはずです。
</p>
<br />
<h3>yayのインストール</h3>
<p>
AUR用のpacmanラッパー「yay」をインストールします。
開発先は、以下のリンク。
</p>
<br />
<figure class='okblogcard'>
<a href='https://github.com/Jguer/yay' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://opengraph.githubassets.com/2d44951b971789ff47244f54913ca17b25de2aedab9d8369fe4557d4cf3e63fb/Jguer/yay' alt='GitHub - Jguer/yay' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>GitHub - Jguer/yay</p><p class='okblogcard-description'>
Yet another Yogurt - An AUR Helper written in Go.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://github.com/Jguer/yay' alt='' width='16' height='16'>https://github.com/</div>
</a>
</figure>
</ br></ br>
<p>
ページの指示に従って、まず、Arch Linuxの必要なパッケージをインストールします。
途中で聞かれる選択肢は、全部インストールするのデフォルトでOK。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S --needed git base-devel
</code></pre>
<br /><br />
<p>
aurリポジトリから、以下のコマンドでyayをクローンします。
</p>
<br />
<pre class="commandline"><code>$ git clone https://aur.archlinux.org/yay.git
</code></pre>
<br /><br />
<p>
yayディレクトリに入って、ビルドします。
</p>
<br />
<pre class="commandline"><code>$ cd yay
$ makepkg -si
</code></pre>
<br /><br />
<p>
goパッケージがインストールされ、yayがビルドされ、最後に、インストールされます。途中に聞かれる質問はyesで大丈夫です。
インストールが完了し、プロンプトが戻れば、yayディレクトリは必要ないので削除して構いません。
</p>
<br />
<h3>ranger</h3>
<p>
設定作業は、コンソール上で動くファイラを使うのが便利です。
そこで人気のあるrangerをインストールして置きましょう。
</p>
<br />
<figure class='okblogcard'>
<a href='https://ranger.github.io/' target='_blank'>
<div class='okblogcard-content'>
<div class='okblogcard-image'><div class='okblogcard-image-wrapper'>
<img src='https://ranger.github.io/ranger_logo.png' alt='ranger logo' width='100' height='56' loading='lazy'>
</div></div>
<div class='okblogcard-text'><p class='okblogcard-title'>ranger</p><p class='okblogcard-description'>
ranger is a console file manager with VI key bindings.
</p></div>
</div>
<div class='okblogcard-footer'><img src='https://www.google.com/s2/favicons?domain=https://ranger.github.io/' alt='' width='16' height='16'>https://ranger.github.io/</div>
</a>
</figure>
</ br></ br>
<p>
必要パッケージは次の通り。
コンソール上では、画像プレビューが出来ないかもしれませんが、
必要なもののインストールと設定はついでにしておきます。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>ranger</li>
<li>highlight</li>
<li>w3m</li>
<li>imlib2</li>
<li>feh</li>
<li>python-pillow</li>
</ul>
</div>
<br />
<p>
まずは必須のパッケージ。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S ranger highlight
</code></pre>
<br /><br />
<p>
画像プレビューで必要になるものを入れておく。
</p>
<br />
<pre class="commandline"><code>$ sudo pacman -S w3m imlib2 feh python-pillow
</code></pre>
<br /><br />
<p>
インストールが終わったら、次のコマンドでデフォルトの設定ファイルを作成します。
</p>
<br />
<pre class="commandline"><code>$ ranger --copy-config=all
</code></pre>
<br /><br />
<p>
設定ファイルのうち<code>~/.config/ranger/rc.conf</code>をエディタで開きます。
</p>
<br />
<pre class="commandline"><code>$ vim ~/.config/ranger/rc.conf
</code></pre>
<br /><br />
<p>
ファイル内の該当部分を以下のように設定しましょう。
</p>
<br />
<pre class="commandline"><code>...
# Show hidden files? You can toggle this by typing 'zh'
set show_hidden true
...
# Use one of the supported image preview protocols
set preview_images true
...
# Draw borders around columns?
set draw_borders both
...
# Which colorscheme to use? These colorschemes are available by default:
# default, jungle, snow, solarized
set colorscheme jungle
...
</code></pre>
<br /><br />
<p>
rangerは高機能で、色々なことが出来ますが、逆に、出来ることが多すぎて色々と混乱してしまうかもしれません。
慣れないうちは、ファイル操作(コピーや移動)については、無理にrangerでやらなくても、シェルで普段道理にやればOKです。
</p>
<br />
<p>
rangerはカーソルキーの上下左右で直感的に、ディレクトリの移動とファイルの選択が行えます。
最終的には、テキストファイルの場合、vimでファイルが開かれます(vim使わない人は、「:q!」という終了コマンドだけ把握しておきましょう)。
</p>
<br />
<p>
rangerを初めて使う人は、以下の2つだけ暗記しましょう。
これで十分、コンソール上の作業効率が爆上がりします。
</p>
<br />
<h4>「Shift + s」でシェルを開く(ディレクトリ移動)</h4>
<p>
rangerは、「Shift + s」を押すと、
現在のディレクトリをカレントディレクトリとするシェルが開き、
そのシェルからexitすると、rangerに戻ることが出来ます。
ディレクトリの移動に関しては、シェルで行うより、
ranger上でカーソルキーを使って直感的に移動するほうが快適です。
</p>
<br />
<p>
また、rangerに慣れるまでは、ranger自体でファイル操作する必要はありません。
シェルに入って普段どおり、シェル上でファイル操作するほうが安全で確実です。
</p>
<br />
<h4>「i」でプレピューモード</h4>
<p>
rangerは、右画面に選択されているファイルの中身をプレビューします。
しかし、プレビューは画面に表示されている一部だけです。ここで、「i」キーをおすと、
プレピューモードになって自由にファイル内を見渡すことが出来るようになります。
もういちど、「i」を押せばプレビューモードから抜けます。
</p>
<br />
<h3>Neovim</h3>
<p>
vimに関する設定は、ひとそれぞれなのですが、
いざ、新規のパソコンにvimに関する環境を構築(引っ越し)しようとすると、
めんどくさかったりしそうですよねぇ。
そこで、自分好みの設定はあとでやるとして、
とりあえず、neovimをインストールしてモダンな状態を作ってしまう手順です。
</p>
<br />
<p>
まずは、neovimインストールに必要となるパッケージのインストールです。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>neovim</li>
<li>python-pynvim</li>
<li>xsel</li>
<li>nodejs</li>
</ul>
</div>
<br />
<pre class="commandline"><code>$ sudo pacman -S neovim python-pynvim xsel nodejs
</code></pre>
<br /><br />
<p>
ついでに、バーチャルコンソールでもステータスラインがまぁまぁ綺麗になるように、powerlineフォントもインストールします。
</p>
<br />
<pre class="commandline"><code>$ yay -S powerline-console-fonts-git
</code></pre>
<br /><br />
<p>
バーチャルコンソールでのフォントの変更は、setfontコマンド、若しくは、
永続的な変更は以下の通り/etc/vconsole.confを編集。
</p>
<br />
<pre class="commandline"><code>$ sudo vim /etc/vconsole.conf
</code></pre>
<br /><br />
<pre class="commandline"><code>...
FONT=ter-powerline-v28n
...
</code></pre>
<br /><br />
<p>
コンソール上で多くのものを書き込んだりコピペするのは大変なので、
<code>.config/nvim/init.vim</code>の雛形をgithbuの<a href="https://github.com/nekolinuxblog/neovim_setup_example" target="_blank">'nekolinuxblog/neovim_setup_example'</a>に用意しています。
</p>
<br />
<p>
このinit.vimでは、plugin管理にvim-plugを使いて、vim-plug自身とプラグインはinit.vimの読み込みで自動で行われるようになっています。
そして、インストールされるプラグインは以下のとおりです。
</p>
<br />
<div>
<ul style="text-align: left;">
<li>preservim/nerdtree</li>
<li>vim-airline/vim-airline</li>
<li>vim-airline/vim-airline-themes</li>
<li>neoclide/coc.nvim</li>
</ul>
</div>
<br />
<p>
nerdtreeやairlineについてのキーバインドは、init.vimで確認して下さい。
coc.nvimについての設定は、coc.nvimのサンプル設定をコピー・アンド・ペーストしています。
</p>
<br />
<p>
この様に設定されたinit.vimを以下のコマンドで自分のパソコンにダウンロードして、
自分の設定としてコピーします。
</p>
<br />
<pre class="commandline"><code>$ git clone https://github.com/nekolinuxblog/neovim_setup_example.git
</code></pre>
<br /><br />
<pre class="commandline"><code>$ cd neovim_setup_example
$ cp -r nvim ~/.config
$ nvim
</code></pre>
<br /><br />
<p>
設定ファイルが準備できたら、neovimを起動します。
</p>
<br />
<pre class="commandline"><code>$ nvim
</code></pre>
<br /><br />
<p>
起動の最中、関数が見つからないエラーが数回表示されます。
そのエラーがでるごとに、エンターキーを押して下さい(プラグインがまだインストールされていないため出るエラーでシステムに支障はありません)。
確認が終わると、puluginが自動的にインストールされます。
neovimの左側ウィンドウにインストールの様子が表示されます。
インストールがおわれば、準備完了です。
</p>
<br />
<p>
rangerのエディタをneovimにするために、~/.zshrc.localに次の一行を追加しておきましょう。
</p>
<br />
<pre class="commandline"><code>export EDITOR=nvim
</code></pre>
<br /><br />
<h3>最後に</h3>
<p>
とりあえず、ネットに繋がってさえいれば、忘れ物があっても付け足せるので、
これだけあれば、後は自分の好きなArch Linuxに仕上げていけば良いだけです。
</p>
<br />
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-89751626245443884802018-08-21T16:15:00.002+09:002021-12-29T15:52:21.352+09:00Windows10でおしゃれにWSL<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEmZL2QtzNay2QS0xLE0zwAHd9ml43eCrLhYiFidanGkjkPIdnx2vjypjwsQc3_jQZbgn2Fp4AiH7nvDwpiSmInC9s4wo6TK_ffqLkoxZg0VWsWyH8W06-5ht-7Fm8A6uMKkO6HbWBy4I/s1600/DSC01767.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1065" data-original-width="1600" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEmZL2QtzNay2QS0xLE0zwAHd9ml43eCrLhYiFidanGkjkPIdnx2vjypjwsQc3_jQZbgn2Fp4AiH7nvDwpiSmInC9s4wo6TK_ffqLkoxZg0VWsWyH8W06-5ht-7Fm8A6uMKkO6HbWBy4I/s640/DSC01767.JPG" width="640" /></a></div>
<br />
<br />
ノートパソコンでのWindows環境が必要になったので、巷で話題の<a href="https://www.amazon.co.jp/gp/product/B076P9HCCB/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B076P9HCCB&linkCode=as2&tag=suwa0001-22&linkId=af7e54a3b41e1baae4a9727500a52553" target="_blank">EZBook3Pro</a>という、上の写真で分かる通りMacBookAir激似の格安Windowsノートパソコンをゲットしました。asusの愛機S101を初めてゲットした時と同じ興奮を味わえる格安ノートですよ。<br />
<br />
<a name='more'></a><br />
最近は、耳慣れない中国製ブランドのノートPCがAmazonでよく売られています。Amazon販売ではなく、また、製品のスペック、製品メーカーのWebページも何処にあるのかよく分からなかったりするものもあるのですが、、このJumperというメーカーのPCは、Amazonカスタマーレビューの中でも、評判が良く、また、扱っている販売業者も丁寧そうなところがあったので、久しぶりに「B級ノート欲しい!」病が疼いてしまいました。<br />
<br />
こういう格安ノート好きな人のために、ちょこっとレビューを最後に書いています。<br />
<br />
さてさて、そんなEZBookのWindows上で構築できる開発環境を色々と模索中。<br />
<br />
そんな中、今日は、割と最近にベータが外れて、正式版になった<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">WSL(Windows Subsystem For Linux)</span></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: right;">
をおしゃれに使いこなしてみましょう。</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
というメモです。</div>
<br />
<h3>
UbuntuをWSLで導入する</h3>
<br />
<h4>
1. 前提条件</h4>
<div>
Windows10(64bit)</div>
<div>
windowsは、アップデートで最新版にしておきます</div>
<div>
<br /></div>
<br />
<h4>
2. WSLを有効にする</h4>
WSLを使うためには、Windowsの設定を変更する必要があります。簡単に設定変更できるので、以下の手順でWSLを有効にしましょう。<br />
<br />
まず、Windowsの設定(スタートメニューの左、電源マークの上にある<span style="color: red;">歯車マーク</span>から入れます)から、アプリを選択します<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTz3xvbfGY7cOT8_Qv0EJkxTbBqmyUghujo8Uz_CBCF2LNg_FaLO5wAuJbjEMv3fSar98_QMU0Mznxu5mkT8fQjuJmh6Ifp54s93taTxqDsfLrm9lCvJzQt1esrvUKANqB8wWH9e6zUwM/s1600/figure001s.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="366" data-original-width="598" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTz3xvbfGY7cOT8_Qv0EJkxTbBqmyUghujo8Uz_CBCF2LNg_FaLO5wAuJbjEMv3fSar98_QMU0Mznxu5mkT8fQjuJmh6Ifp54s93taTxqDsfLrm9lCvJzQt1esrvUKANqB8wWH9e6zUwM/s400/figure001s.png" width="400" /></a></div>
<br />
<br />
アプリと機能のページが開くので、「関連項目」にある「プログラムと機能」を開く<br />
「関連項目」が右側に表示されていない時は、ページの一番下の方にあるので、下までスクロールしてみましょう。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNVk2sI-CFujD7E26_cyp6G3ymoQcSSVAWjKBj7PbjVkO0UJ3npTtJjGuntdRoI3NRdLS9UQIMnbtgx6rvXEDIFK3sDhXHoZRSMUVN5XILwFBdt9fL2c3C5pmlRcd7r-_zn7mI9eFYEU4/s1600/figure002s.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="366" data-original-width="598" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNVk2sI-CFujD7E26_cyp6G3ymoQcSSVAWjKBj7PbjVkO0UJ3npTtJjGuntdRoI3NRdLS9UQIMnbtgx6rvXEDIFK3sDhXHoZRSMUVN5XILwFBdt9fL2c3C5pmlRcd7r-_zn7mI9eFYEU4/s400/figure002s.png" width="400" /></a></div>
<br />
プログラムと機能のページの左にある<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">「Windowsの機能の有効化または無効化」</span></div>
<div style="text-align: right;">
<br /></div>
<div style="text-align: right;">
をクリックします。</div>
<div style="text-align: right;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYvhxJGxwp8yVnXIviRv8gF-1jaV1t-CBcX1DVcYpTqY76OIkYrsiWyIoklkRFG1kLYYWWjJQZnyOUNCX12OQFbaoBfFolubx0kKG-LQ7gALEIW2abFZrrYKvkuZA1SDtKr-JuzjT3Cbg/s1600/figure003m.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="645" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYvhxJGxwp8yVnXIviRv8gF-1jaV1t-CBcX1DVcYpTqY76OIkYrsiWyIoklkRFG1kLYYWWjJQZnyOUNCX12OQFbaoBfFolubx0kKG-LQ7gALEIW2abFZrrYKvkuZA1SDtKr-JuzjT3Cbg/s400/figure003m.png" width="400" /></a></div>
<br />
<br />
Windowsの機能ダイアログが開くので<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">「Windows Subsystem for Linux」</span></div>
<div style="text-align: right;">
<br /></div>
<div style="text-align: right;">
のチェックボックスをチェックします</div>
<div style="text-align: right;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_RJ8ljowuSh7HeoNdEiB7NtWLtdoUyz-c_rbdzsiTfygIpo58FB8KlpqhQxxLkYES7k_NASDd40eRDTBV1DuA3nL1ByjpqOqXUjg81DtKBzyog-bzIRynZP2UBQu9eEK94hNb9DsQjwo/s1600/figure005m.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="368" data-original-width="415" height="353" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_RJ8ljowuSh7HeoNdEiB7NtWLtdoUyz-c_rbdzsiTfygIpo58FB8KlpqhQxxLkYES7k_NASDd40eRDTBV1DuA3nL1ByjpqOqXUjg81DtKBzyog-bzIRynZP2UBQu9eEK94hNb9DsQjwo/s400/figure005m.png" width="400" /></a></div>
<br />
この作業が終わったら<span style="color: red; font-size: large;">Windowsを再起動</span>して、準備完了です。<br />
<br />
<br />
<h4>
3. MicrosoftStoreからubuntuを入手する</h4>
<br />
スタートメニューから「Microsoft Store」を呼び出しましょう。<br />
そして、右上の検索窓で「linux」を検索します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaUxmSTR8ckNLHyQoWVLqEKc5GzSWUjH73WQ0XHtGwLSjahhVfiBb1eJzbodbZxEvOAd0El-wsoG360xajTwkdkSF-2cqaM-EWb9L2FUoxLli91intHfCHLopHPJa3oPCWyLvsWs3UGNM/s1600/figure006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="903" data-original-width="956" height="377" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaUxmSTR8ckNLHyQoWVLqEKc5GzSWUjH73WQ0XHtGwLSjahhVfiBb1eJzbodbZxEvOAd0El-wsoG360xajTwkdkSF-2cqaM-EWb9L2FUoxLli91intHfCHLopHPJa3oPCWyLvsWs3UGNM/s400/figure006.png" width="400" /></a></div>
<br />
検索結果の中に色々なLinuxのディストリビューションがアプリとして表示されます。<br />
この中から、<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">「Ubuntu」</span></div>
<div style="text-align: right;">
<br /></div>
<div style="text-align: right;">
を入手してインストールしましょう。</div>
<br />
<h4>
4. Ubuntuを初めて立ち上げる</h4>
<br />
スタートメニューから「Ubuntu」を立ち上げてみましょう。<br />
デスクトップに黒い画面が現れ、画面には<br />
<br />
<blockquote class="tr_bq">
インストール中、この処理には数分かかるかもしれません。。。</blockquote>
<br />
とメッセージされます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8tjgimJBcGPDiQysgyVSZwnUrl2mFLZO3dojrSsXRw0w-PRY0FzQ-4xt7EcGPVLzZKGbboDKt81WjwRC3edCW7NGYFUqclptvK40o8z-T9Z-O1e3pWy4Pw7hRbdW8XXXBfmGb-loA7eg/s1600/term001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="979" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8tjgimJBcGPDiQysgyVSZwnUrl2mFLZO3dojrSsXRw0w-PRY0FzQ-4xt7EcGPVLzZKGbboDKt81WjwRC3edCW7NGYFUqclptvK40o8z-T9Z-O1e3pWy4Pw7hRbdW8XXXBfmGb-loA7eg/s400/term001.png" width="400" /></a></div>
<br />
<br />
実際、4,5分この状態が続くので、慌てずにおとなしく待ちましょう。<br />
<br />
やがて、<br />
<br />
<blockquote class="tr_bq">
既定のUnixユーザーアカウントを作ってください。<br />
このユーザー名は、ウィンドウズのユーザー名と一致する必要はありません。<br />
詳しくは https://aka.ms/wslusers を参照してください。</blockquote>
<br />
とメッセージされ、ユーザー名の入力が促されます。下のスクリーンショットでは「neko」というユーザー名を入力している所です。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYfvDpElMKg3O1vmdlBIWaPjqBS0_Y_A_LRReSbumOvOrK2-2GuW2rxaPtxkvdvXieOXe4wR59e9n_JgYJXzIrPMWKQ9eCrOHMcH-_r3KpaH6USjx7cqzDXUpY23VnGFMSYkqelCdcllY/s1600/term002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="979" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYfvDpElMKg3O1vmdlBIWaPjqBS0_Y_A_LRReSbumOvOrK2-2GuW2rxaPtxkvdvXieOXe4wR59e9n_JgYJXzIrPMWKQ9eCrOHMcH-_r3KpaH6USjx7cqzDXUpY23VnGFMSYkqelCdcllY/s400/term002.png" width="400" /></a></div>
<br />
<br />
続いて、パスワードの入力が促され、更にそのパスワードの確認が促されるので、指示どうりに同じパスワードを2度入力しましょう。<br />
<br />
Linuxのパスワードは、システム管理を行う時に、しょっちゅう打ち込むことになります。パスワードの作成は、その場で考え出すと結構時間がかかるものです。長すぎず短すぎず簡単すぎず難しすぎずの適当なものを事前に準備しておきましょう。<br />
<br />
尚、パスワードは入力しても下のスクリーンショットの様に画面には<span style="color: red;">何も表示されません</span>。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVAsg8KRVz6Kbqadp5YR2a6q1BKa4qVrdgY1stp0v9q9t2qkAEedy_Ne7C614G_bPw0wUzXiT3Q9JVQwB6OIVNQgW4RPUeHv0ONdMg22VTAe_RdmmHPYwvJfsqfxUqkTdSWY3U0SL_nF8/s1600/term003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="979" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVAsg8KRVz6Kbqadp5YR2a6q1BKa4qVrdgY1stp0v9q9t2qkAEedy_Ne7C614G_bPw0wUzXiT3Q9JVQwB6OIVNQgW4RPUeHv0ONdMg22VTAe_RdmmHPYwvJfsqfxUqkTdSWY3U0SL_nF8/s400/term003.png" width="400" /></a></div>
<br />
<br />
パスワードを設定し終えるとアカウント作成作業が完了し、幾つかのメッセージが出力されるとともに、コマンドの入力を受付ている状態を表す「プロンプト」が表示されます。<br />
この黒い画面では、ここにコマンドを書き込むことで色々な作業をしていきます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt6Mh1_LcfTxpuk-S5vbhi3O_hka92p7XRQQXEVBma9yB3oO5L75dqarUXaxBrEcrfnEprEZXbTor6up3zzg0yut9Oo6ZhH8_RiXgmhT8jUiH4-UoMYbbLJZ4fAlsTZ3FnDZsXgOBtHNk/s1600/term004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="979" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt6Mh1_LcfTxpuk-S5vbhi3O_hka92p7XRQQXEVBma9yB3oO5L75dqarUXaxBrEcrfnEprEZXbTor6up3zzg0yut9Oo6ZhH8_RiXgmhT8jUiH4-UoMYbbLJZ4fAlsTZ3FnDZsXgOBtHNk/s400/term004.png" width="400" /></a></div>
<br />
さて、初期状態のプロンプトには、ユーザー名やホスト名(コンピューターの名前)、今いるディレクトリの場所等の情報が表示されていますが、この部分は設定で色々と自分好みに変更できます。<br />
<br />
しかし、最後の「$」の部分は、一般的なプロンプトを表すシンボルとしていつでも使われることが多いです。そして、一般のプロンプトへの入力を説明する時にも、「これはプロンプトへの入力ですよ」という事を示すために「$」が使われたりします。<br />
<br />
<pre class="commandline">$ ls
</pre>
<br />
ですから、この例で言えば、説明の時に出てくる「$」自体は、自分のプロンプトには打ち込まないという事を覚えておきましょう。ちなみに「ls」はディレクトリの中にどんなファイルがあるのかを見るコマンドです。今は、何もファイルがないので、何の表示もされないかもしれません。<br />
<br />
<pre class="commandline">$ ls -alF
</pre>
<br />
こちらだとどうでしょう?詳細を表示するオプションをつけてみました。何か表示されましたか?<br />
<br />
尚、このプロンプトのシンボルは「$」以外に、「#」や「%」によって示されることもあります。<br />
<br />
さて、この黒い画面、巷では「シェル」と呼ばれたり、「ターミナル」と呼ばれたり、精密に言えば色々と違う所もあったりするかもしれませんが、web上の説明で「シェル上で何々する」とか「ターミナルから何々する」と言われたら、この黒い画面での作業と思えば大体間違っていません。<br />
<br />
では、最後に、このターミナルを終了させましょう。プロンプトから「exit」と書き込んでリターンキーを押します。<br />
<br />
<pre class="commandline">$ exit
</pre>
<br />
プログラムが終了されて、ターミナル自体がデスクトップから消えます。<br />
<br />
もう一度、スタートメニューからubuntuを立ち上げてみましょう。<br />
ターミナルが出現して、プロンプトが表示されます。<br />
<br />
<br />
<h4>
5. ubuntuをアップデート</h4>
<br />
ubuntuも、巷の「アプリ」と同じように、使いたいプログラムをダウンロードしてきてインストールして使います。ubuntuでは「アプリ」ではなくて、ダウンロードしてきて使うプログラム等を「パッケージ」と呼びます。<br />
また、Windowsでいう所の「Microsoft Store」やAppleでいう所の「App Store」の様に、ubuntuのパッケージが置いてあるところの事を「リポジトリ」と呼びます。<br />
<br />
自分のパソコンにインストールされているパッケージが古くなっていることがあるので、リポジトリに問い合わせて最新情報をゲットしましょう。<br />
<br />
では、プロンプトに次の通り、入力してみましょう。<br />
<br />
<pre class="commandline">$ sudo apt update
</pre>
<br />
すると、パスワードを尋ねられるので、そこに自分のアカウントのパスワードを入力します。<br />
<br />
この「update」では、どのパッケージが型遅れになっているかをチェックするのみで、実際にパッケージが最新に置き換わるわけではありません。次のコマンドを入力して、実際にパッケージを最新のものに入れ替えましょう。<br />
<br />
<pre class="commandline">$ sudo apt upgrade
</pre>
<br />
アップグレードに当たって、置き換えられるパッケージだけでなく、依存関係で、要らなくなったり、新たに必要になったりする色々なパッケージについての項目が示された後に、確認の入力が求められるので「y」キーを押して、処理を継続させましょう。<br />
<br />
各パッケージがダウンロードされ、アップグレードされていく様子が表示されます。処理が完了するまで暫くかかりますが、完了すれば、プロンプトが表示されます。<br />
<br />
プロンプトが表示されたら、exitでUbuntuを終了します。<br />
<br />
<br />
<h3>
Hyperというターミナルアプリ</h3>
<br />
さて、このメモのテーマは<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「<span style="color: red;">おしゃれ</span>」</span></div>
<div style="text-align: right;">
<br /></div>
<div style="text-align: right;">
なのです。</div>
<br />
「Macじゃあるまいし、Windowsなんだからあんまり関係ないよね」とか言っていてはいけません。黒い画面はそれだけで無骨感たっぷりなので、ここから手をつけましょう。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiKI3xSFpsCRefejsCtbpCk0lGS-L-kfBJztoS4QsIa4HyolsW0PCZYHkkjrpSOijsfrWRCxprvQh7JgxAuUcIfQZa6qElPZNGGPczdfXPxY83MRj7ip2GujNGXq9wKh0vVkH0TqKSh4Y/s1600/hyper_web.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="902" data-original-width="1170" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiKI3xSFpsCRefejsCtbpCk0lGS-L-kfBJztoS4QsIa4HyolsW0PCZYHkkjrpSOijsfrWRCxprvQh7JgxAuUcIfQZa6qElPZNGGPczdfXPxY83MRj7ip2GujNGXq9wKh0vVkH0TqKSh4Y/s400/hyper_web.png" width="400" /></a></div>
<div style="text-align: center;">
<a href="https://hyper.is/" target="_blank">https://hyper.is/</a></div>
<br />
Hyperというターミナルアプリです。<br />
<br />
<h4>
1. インストール</h4>
<br />
中央下、「Download Hyper for Windows」と書かれているボタンをクリックすれば、セットアップファイルがダウンロードできます。インストールは、そのセットアップファイルを実行するだけ。デスクトップ画面の真ん中で暫くアニメーションが動いた後、Hyperターミナルが立ち上がります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFFP_XtEAtVMFp4Fk5lTKBZLdXPbXBEVgBdmWwSmNzntIIbgcvQ71RWzugVQDb-CObiAqnxPA08MWhZzIS4ql_H66ZzJ7IDmbGovsUZvlDcdlGccl_VQotxQFGxLxXeF3tmaqrey-aKZM/s1600/hyper001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="414" data-original-width="557" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFFP_XtEAtVMFp4Fk5lTKBZLdXPbXBEVgBdmWwSmNzntIIbgcvQ71RWzugVQDb-CObiAqnxPA08MWhZzIS4ql_H66ZzJ7IDmbGovsUZvlDcdlGccl_VQotxQFGxLxXeF3tmaqrey-aKZM/s400/hyper001.png" width="400" /></a></div>
<br />
<br />
このターミナルで実行されているのは、さっきまでのUbuntuではなく、Windowsの「コマンドプロンプト」です。ここでもプロンプトにexitを与えれば、ターミナルは終了します。<br />
<br />
<h4>
2. Hyperの設定の仕方</h4>
<br />
Hyperの設定は、通常のアプリの様に、、メニューバーから設定を選んで、現れるダイアログで、、、、という感じではありません。<br />
<br />
まずは、デスクトップにある自分のアカウント名が付いたフォルダを開きましょう。その中をよく見ると<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">.hyper.js</span></div>
<div style="text-align: right;">
<br /></div>
<div style="text-align: right;">
という名前のファイルがあるはずです。</div>
<br />
このファイルを編集することで、Hyperターミナルの設定を行います。さっそく、自分が使えるテキストエディタで、このファイルを開きましょう。行頭が「//」で始まる行はコメント行で、設定の解説や例示がされています。<br />
<br />
<br />
<h4>
3. 色を変える</h4>
<br />
まず、画面の色を変えてみましょう。Hyperでは、「Theme」として画面の配色を管理しています。HyperのWebぺーじの上にある「Themes」から行けるページで、色々なテーマを見つけることができます。採用したいテーマを見つけたら、そのテーマ名を.hyper.jsにあるplugins:の値として配列に追加します。<br />
<br />
.hyper.jsの中最後のほうにある<br />
<br />
<pre class="commandline"> plugins: [],
</pre>
<br />
の部分を見つけましょう。<br />
この配列に、プラグイン名を追加していきます。テーマ「hyper-oceanic-next」を採用するなら次のように書きます。<br />
<br />
<pre class="commandline"> plugins: [
"hyper-oceanic-next",
],
</pre>
<br />
上記のテーマを適用した後、vimで.hyper.jsを開いている様子です。
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirQ-ehXrYJc15DuPxwLGr-q5RF76OXCIZEDq1N1C32fztn0hk6LmyZHmpJZRFUl62BAS32Zp_8B8DFwAlFg8-hy5IKpAkKowpKnrOwpcbW8WhpiIJ_ddpYoyp2eS5RIZVi36Cb9Ob3Jz8/s1600/theme001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="419" data-original-width="580" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirQ-ehXrYJc15DuPxwLGr-q5RF76OXCIZEDq1N1C32fztn0hk6LmyZHmpJZRFUl62BAS32Zp_8B8DFwAlFg8-hy5IKpAkKowpKnrOwpcbW8WhpiIJ_ddpYoyp2eS5RIZVi36Cb9Ob3Jz8/s400/theme001.png" width="400" /></a></div>
<br />
<br />
<br />
<h4>
4. フォントを変える</h4>
<br />
プログラミングに適したフォントを使ってみましょう。<br />
ターミナル上では、コマンドを文字として打つので、アルファベット大文字のオーと数字のゼロの違いや、アルファベット小文字のエルと数字の1の違い等がはっきり分かるフォントが良く使われます。<br />
また、「等幅フォント」といって、全てのフォントの幅が一定のフォントが使われます。<br />
<br />
googleで「フォント プログラミング」等のキーワードで検索すると色々なページが引っ掛かります。<br />
<br />
その中でも定番で分かりやすいものを以下で紹介しておきます。<br />
<br />
Migu<br />
<a href="http://mix-mplus-ipa.osdn.jp/migu/">http://mix-mplus-ipa.osdn.jp/migu/</a><br />
「Migu 1M」や「Migu 2M」が等幅フォントです。<br />
<br />
Myrica<br />
<a href="https://myrica.estable.jp/">https://myrica.estable.jp/</a><br />
<br />
<br />
それらのページからダウンロードしたファイルの中に拡張子が「ttc」となっているものがあり、それがフォントの本体ファイルです。<br />
そのファイルをダブルクリックしてみましょう。どんなフォントなのかが表示されます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRZ5FEST4zM3sc5JrAlZCsKtzWzNbQ51duDGflvCbVLvyAryA-_7mGApDR9GnXy2tMf0ZVewaQwpWVaBWckv2FT7HCGy_QxNoFco1-0yL0W8wxOEYSDKFF28GHBgG631BboDRQLwei6j0/s1600/font001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="274" data-original-width="467" height="233" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRZ5FEST4zM3sc5JrAlZCsKtzWzNbQ51duDGflvCbVLvyAryA-_7mGApDR9GnXy2tMf0ZVewaQwpWVaBWckv2FT7HCGy_QxNoFco1-0yL0W8wxOEYSDKFF28GHBgG631BboDRQLwei6j0/s400/font001.png" width="400" /></a></div>
<br />
上のスクリーンショットで示している通り、フォント表示画面の左上辺りに「インストール」ボタンがあります。WindowsへのフォントインストールはこれをクリックするだけでOKです。<br />
<br />
今度は、今、Windowsにどんなフォントがインストールされているのか見てみましょう。<br />
<br />
Windowsのコントロールパネル(スタートメニュー>Windowsシステムメツール>コントロールパネル)から「フォント」を選べば見ることが出来ます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQI1zNfgN3eI2qk6BQ-7p04jAd0pWIeKeNVgtD4Yo7gyj4uM4ES8wkp9S2zs5HNf4SiSHglQe9KDZNoAbvHknAM6TKdb1IEOK6fqevm_fFoX-iiWhJ5154SPg59KpulvT3Qt_dbGDjzhk/s1600/font002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="860" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQI1zNfgN3eI2qk6BQ-7p04jAd0pWIeKeNVgtD4Yo7gyj4uM4ES8wkp9S2zs5HNf4SiSHglQe9KDZNoAbvHknAM6TKdb1IEOK6fqevm_fFoX-iiWhJ5154SPg59KpulvT3Qt_dbGDjzhk/s400/font002.png" width="400" /></a></div>
<br />
<br />
ここで、各フォントをダブルクリックすると、先に示したフォントの表示画面がでてきて、どんなフォントなのかを確認することが出来ます。<br />
<br />
さて、ここで重要なのは「フォント名」です。フォント表示画面の左上に「フォント名」が表示されていることを覚えておきましょう。<br />
<br />
Hyperで表示するフォントも「.hyper.js」ファイルで指定します。<br />
ファイルの先頭の方にある「fontSize:」でフォントの大きさが変更でき、「fontFamily:」にフォント名を指定することで、使用するフォントを変更できます。<br />
<br />
特に「fontFamily:」は、カンマ区切りで複数のフォント名を並べておけますが、フォント名に空白が含まれるものは、そのフォント名自体をダブルクォーテーションで囲む必要があります。そして、ここに書き込む「フォント名」は、上で説明したフォント表示画面で表示される「フォント名」になります。<br />
<br />
また、複数のフォントが書かれているのは、そのフォントが見つからない場合、次のフォントを使うようにするための設定です。そして、より左側に書いたフォントが使われます。初めに書かれているフォントは、macやlinuxによくインストールされているフォントがかいてあるだけなので、消しても構いません。<br />
<br />
以下に、Migu 1Mフォントを追加し、幾つかのフォントを省いた例を示します。<br />
<br />
<br />
<pre class="commandline"> fontFamily: '"Migu 1M", Consolas, monospace',
</pre>
<br />
<br />
上記のフォント変更を行った後の様子です。フォントの大きさも少し大きくしてみました。
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGr4ApX78jD7YwHaIJRicIVHPEkHwExmaaf9K7JzZ38vDN50diaxJBNAUU46MgnDGly-65CXFUbtZ4A40f3R2Snn-7uCsgulQSLRNJBd0Oo-eW4G5gxP9umlZpcjFIFptjyQf_7v2t0sk/s1600/font003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="763" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGr4ApX78jD7YwHaIJRicIVHPEkHwExmaaf9K7JzZ38vDN50diaxJBNAUU46MgnDGly-65CXFUbtZ4A40f3R2Snn-7uCsgulQSLRNJBd0Oo-eW4G5gxP9umlZpcjFIFptjyQf_7v2t0sk/s400/font003.png" width="400" /></a></div>
<br />
<br />
<h4>
5. Hyperの中身をWSLにする</h4>
<br />
さて、今のところHyperを立ち上げるとWindowsのコマンドプロンプトが立ち上がります。これを、WSLのUbuntuに変更しましょう<br />
<br />
.hyper.jsファイルの中で次のような部分を探して下さい。<br />
<br />
<pre class="commandline"> // the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
// if left empty, your system's login shell will be used by default
//
// Windows
// - Make sure to use a full path if the binary name doesn't work
// - Remove `--login` in shellArgs
//
// Bash on Windows
// - Example: `C:\\Windows\\System32\\bash.exe`
//
// PowerShell on Windows
// - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
shell: '',
// for setting shell arguments (i.e. for using interactive shellArgs: `['-i']`)
// by default `['--login']` will be used
shellArgs: ['--login'],
</pre>
<br />
ここでは、「shell:」と「shellArgs:」に何を設定するかの説明が行われています。(現在はBash on Windowsではなく、WSLなのでコメントが古いのですが)ここに設定する値によって、Hyperで開くシェルが変わります。<br />
<br />
そして、WSLを実行する場合「shell:」と「shellArgs:」の各行を以下の様に編集します。<br />
<br />
<pre class="commandline"> // the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
// if left empty, your system's login shell will be used by default
//
// Windows
// - Make sure to use a full path if the binary name doesn't work
// - Remove `--login` in shellArgs
//
// Bash on Windows
// - Example: `C:\\Windows\\System32\\bash.exe`
//
// PowerShell on Windows
// - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
<span style="color: red;"> shell: 'C:\\Windows\\System32\\wsl.exe',
</span>
// for setting shell arguments (i.e. for using interactive shellArgs: `['-i']`)
// by default `['--login']` will be used
<span style="color: red;"> shellArgs: [],</span>
</pre>
<br />
これで、スタートメニュー等からHypterターミナルを立ち上げると、ubuntuが立ち上がるようになります。
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQgM25Ib4CcdBvnTq16TPlZXUlnSTm3cdKcP-yNl54i0Y01KhEqeSPAJWfPEsqaUjUZGne-Owm_CU-aH5XD371zGIfQMzA9QrcVj8v5vKCbet25iYjehLnvIc1tdRPvFw6y1WC5Aap2ko/s1600/ubuntu001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="763" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQgM25Ib4CcdBvnTq16TPlZXUlnSTm3cdKcP-yNl54i0Y01KhEqeSPAJWfPEsqaUjUZGne-Owm_CU-aH5XD371zGIfQMzA9QrcVj8v5vKCbet25iYjehLnvIc1tdRPvFw6y1WC5Aap2ko/s400/ubuntu001.png" width="400" /></a></div>
<br />
<br />
<br />
<h3>
zshでzplugを使う</h3>
<br />
<h4>
1. zshのインストール</h4>
<br />
ubuntuのzshパッケージをインストールします。<br />
<br />
<pre class="commandline"> $ sudo apt install zsh
</pre>
<br />
インストールが完了したら、早速、zshを起動してみましょう。
<br />
<br />
<pre class="commandline"> $ zsh
</pre>
<br />
初めてzshを立ち上げると、次のような画面になります。
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcMX917fFB5pCxm2IZmwg7SM1K8yraymuyzfhrWI9I12OAaxPP_qtg443dlm-RTfwny4e0r864jDlWJA24FdgWnD0esmkIRVsWCQRgmMxC3cccSwdPd4KLOWxKJcjTXv4_12xXAjhVaTs/s1600/zsh001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="763" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcMX917fFB5pCxm2IZmwg7SM1K8yraymuyzfhrWI9I12OAaxPP_qtg443dlm-RTfwny4e0r864jDlWJA24FdgWnD0esmkIRVsWCQRgmMxC3cccSwdPd4KLOWxKJcjTXv4_12xXAjhVaTs/s400/zsh001.png" width="400" /></a></div>
<br />
<br />
これは、zshを初めて立ち上げた時等で、ホームディレクトリにzshのスタートアップファイル(.zshrc等)が無い場合に呼び出される画面で、Z shellの新しいユーザーのために設定ファイルを作る手助けをしてくれるzshの機能です。<br />
<br />
幾つかの選択肢を用意してくれています。普通は「2」を選択することで、一般的な設定ファイルを作ってくれます。<br />
<br />
しかし、ここでは「0」を選択して、空の.zshrcを用意します。<br />
<br />
さて、これからubuntuの中で、ファイルの編集をしていく事になります。vim等のテキストエディタを使ったことのない人は、直感的に使えるテキストエディタ「nano」で編集作業を行いましょう。<br />
<br />
<pre class="commandline"> $ nano ~/.zshrc
</pre>
<br />
とすると、ターミナルの中でテキストエディタが立ち上がります。
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Aw7_rtwLJMJu4Roa8-lcskQVsjMa9GEqJIFIzQniTq77hTk5Y_PbHok4b5PcUxijYoYMidcZo8NYDAZEZoqCKa4iBk-JaGcnNL1YRF6IMZyi4sMMmWvNM9QGJu7aEsurWoCaHdMm9ko/s1600/nano001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="763" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6Aw7_rtwLJMJu4Roa8-lcskQVsjMa9GEqJIFIzQniTq77hTk5Y_PbHok4b5PcUxijYoYMidcZo8NYDAZEZoqCKa4iBk-JaGcnNL1YRF6IMZyi4sMMmWvNM9QGJu7aEsurWoCaHdMm9ko/s400/nano001.png" width="400" /></a></div>
<br />
<br />
画面下側に、キー操作のヘルプが表示されています。
<br />
一番初めは「^G Get Help」となっています。「^」はコントロールキーの同時押しを表現していて、これは、「Ctrl + G」のキー操作で、ヘルプが見れる言う事です。また、「G」は「G」のキーを押すというだけで「大文字」である必要はありません。つまりは、シフトキー等を押さなくても大丈夫です。<br />
<br />
必ず使うであろうキー操作は次の二つ。<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">「^O」すなわち「Ctrl+O」で保存</span></div>
<div style="text-align: center;">
<span style="font-size: large;">「^X」すなわち「Ctrl+X」で終了</span></div>
<br />
<div style="text-align: right;">
です。</div>
<div>
<br /></div>
では、実際に少し使ってみましょう。「#」で始まっている行はコメント行です。<br />
その次の行に<br />
<br />
<pre class="commandline">umask 022
setopt NO_BG_NICE
</pre>
<br />
と書き込んで下さい。そして、「Ctrl + O」を押すと、次のように保存すべきファイル名の確認の画面になります。そのままリターンキーを押せば、上書きされます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmSVCFpkbehBMbBlkPMZh9uhB1OnAJaIBm7UngHlywtTGIk-oSB2zpIM8vffIAAFxljMyqklyjv_jw1BiOp3twOtc8tB993zTyDdGyCgQxbMqhPA2CqTU4jNzr1YLmjQ6Qw3QdQvlVR48/s1600/nano002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="763" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmSVCFpkbehBMbBlkPMZh9uhB1OnAJaIBm7UngHlywtTGIk-oSB2zpIM8vffIAAFxljMyqklyjv_jw1BiOp3twOtc8tB993zTyDdGyCgQxbMqhPA2CqTU4jNzr1YLmjQ6Qw3QdQvlVR48/s400/nano002.png" width="400" /></a></div>
<br />
<br />
保存が出来たら、「Ctrl + X」でnanoを終了しましょう。<br />
<br />
<br />
<h4>
2. zshに切り替える</h4>
<br />
実は今は、bashの上でzshが走っている状態にあります。<br />
<br />
いつもなら、プロンプトにexitするとターミナルが消えるはずですが、試しにやってみてください。ターミナルが消えなくて、ただ、なんとなくプロンプトに色が付いたりしたかもしれません。もういちど、exitしてみましょう。今度はターミナルが消えたんじゃないでしょうか。<br />
<br />
さて、もう一度、Hyperを立ち上げてください。<br />
今このHyperでプロンプトをだしているのはbashというシェルで、これを今からzshに切り替えます。<br />
<br />
まず、zshのありかをしらべるために次のコマンドを入力します。<br />
<br />
<pre class="commandline"> $ which zsh
</pre>
<br />
そこに表示されているものがzshがある場所です。
<br />
シェルを切り替えるためには、chshコマンドを使いますが、次の様に「-s」の次にzshの場所(パス)を与えて指定します。
<br />
<br />
<pre class="commandline"> $ chsh -s /usr/bin/zsh
</pre>
<br />
通常、which zshの答えは、「/usr/bin/zsh」のはずですので、実際に確認しておなじならば、上と同じようにchshコマンドをうちこんでください、もし違ったら、-s の後ろは、自分の所で表示されたパスに置き換えて入力しましょう。
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQxrF1LZ6enVsEA5hlITkdLpy_ekVF0CmAT_FzC8OP3bEEwCSA6gwcrUPcSuenURPHTglqMW0kq8vc-4jISMSKeD-LBzIB1QuUieE0bIbXPatx_KI7HaajR8e5hEnGxz4semSbRJHsmak/s1600/chsh001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="763" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQxrF1LZ6enVsEA5hlITkdLpy_ekVF0CmAT_FzC8OP3bEEwCSA6gwcrUPcSuenURPHTglqMW0kq8vc-4jISMSKeD-LBzIB1QuUieE0bIbXPatx_KI7HaajR8e5hEnGxz4semSbRJHsmak/s400/chsh001.png" width="400" /></a></div>
<br />
<br />
コマンドを打ち込むと、パスワードを聞かれるので入力します。<br />
プロンプトが表示されたら、exitを入力して、いったんターミナルを閉じあらためて、ターミナルを開きましょう。<br />
<br />
プロンプトの色がなくなって、ちょっとしょぼくなっていますが、今立ち上がっているのが、zshです。<br />
<br />
<h4>
3. zplugを導入する</h4>
<br />
zshの設定が簡単にできるプラグインzplugを導入します。<br />
<br />
zplug<br />
<a href="https://github.com/zplug/zplug">https://github.com/zplug/zplug</a><br />
<br />
<br />
次のコマンドをターミナルから入力します。プロンプトに注意して、コピペで大丈夫です。
<br />
<br />
<pre class="commandline"> $ curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zsh
</pre>
<br />
実行した結果は、スクリーンショットの様になります。
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi4WfqD5DdzSJ8FXY26l9VyRiD4NGV7KzssytYjdk0PKpKxHP1-XRN7uz4wrW8j3Z8noADtNgzwhMRB3kzrt6sK-ROV0gk5Rnj_CmOkmew2-YiQEg_WgKtYKrfo8EnaQF6shoG3k_3KD8/s1600/zplug001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="763" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi4WfqD5DdzSJ8FXY26l9VyRiD4NGV7KzssytYjdk0PKpKxHP1-XRN7uz4wrW8j3Z8noADtNgzwhMRB3kzrt6sK-ROV0gk5Rnj_CmOkmew2-YiQEg_WgKtYKrfo8EnaQF6shoG3k_3KD8/s400/zplug001.png" width="400" /></a></div>
<br />
<br />
次は、.zshrcの編集です。nano等を使ってファイルを開いてください。<br />
<br />
<pre class="commandline"> $ nano ~/.zshrc
</pre>
<br />
次の内容を、.zshrcに付け足します。もちろんコピペでOKです。<br />
<br />
<script src="https://gist.github.com/syunsuke/dfe186542ed6fb739bae090630f40d68.js"></script>
<br />
hyperターミナルを再起動します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhacZcD_07ibJL-lXzJQbuJFFs3xXciCVJsQ14coR4PaGeY6cXFBt2yafEVFlD97O8vfB_9Iok_Tk6i4mQdjuzz-VKhoJAnqQ3fbG7B5ZBfGmcRIFoZ1yQGQU6JWTrjNSzwQpXEuWp6vcQ/s1600/zplug003r.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="763" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhacZcD_07ibJL-lXzJQbuJFFs3xXciCVJsQ14coR4PaGeY6cXFBt2yafEVFlD97O8vfB_9Iok_Tk6i4mQdjuzz-VKhoJAnqQ3fbG7B5ZBfGmcRIFoZ1yQGQU6JWTrjNSzwQpXEuWp6vcQ/s400/zplug003r.png" width="400" /></a></div>
<br />
確認を求められるので、「y」キーを押します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM3CX-4zlJ51dbgcar_XhHVEqY-i3ultQVbI3uqTuG81IVM7jpUKXoLzxjyvlxgJFnvxQ7MZE3MrxYK_nimOKAwOcWJ5dmL9DZZWRLF0MSX6GQ4ZSr8-1fLJ1rTK3J8BRnmdzdG3Jb4Bc/s1600/zplug005simple.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="506" data-original-width="763" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM3CX-4zlJ51dbgcar_XhHVEqY-i3ultQVbI3uqTuG81IVM7jpUKXoLzxjyvlxgJFnvxQ7MZE3MrxYK_nimOKAwOcWJ5dmL9DZZWRLF0MSX6GQ4ZSr8-1fLJ1rTK3J8BRnmdzdG3Jb4Bc/s400/zplug005simple.png" width="400" /></a></div>
<br />
これで、zshがイイ感じに設定されました。<br />
<br />
<br />
<h3>
おまけ
</h3>
<br />
lsコマンドのエイリアスを.zshrcに追加しておきましょう。<br />
<br />
nanoの使い方には慣れてきましたか?<br />
「.zshrc」を開いて、次の内容を続きに追加して書き込んでください(コピペでOK)<br />
<br />
<script src="https://gist.github.com/syunsuke/1f6f30df542b39979819954918ea5175.js"></script>
<br />
Linux初心者が最初に覚えるlsコマンドです。<br />
<br />
さて、これだけ設定しておけば、このHyperターミナルを立ち上げるだけで、便利にかっこよく動くUbuntuを試すことが出来ます。<br />
<br />
シェル上ではディレクトリ移動やコマンド打ち込みを行う時、全ての文字を正確に打ち込むわけでは無く「補完」というものを使います。zshはこの補完が得意であり、更にはzplugを導入したので、程よく賢く補完してくれるように設定されています。<br />
<br />
補完は「tab」キーで行えます。<br />
<br />
あなたが初心者ならば、あちこちでLinuxの勉強情報を見ながら、あれこれと試してみましょう!<br />
<br />
ここで設定したWSLの乗ったHypterターミナルを使えば、立ち上げるだけで、おしゃれなLinux環境を提供してくれます。<br />
<br />
<br />
<h3>
おまけのおまけ、EZbook 3 Proレビュー</h3>
<br />
このPCはJumperというメーカーで、Amazonでみると幾つかの機種が販売されていますが、「3 Pro」というのが、性能、外観、値段のバランスから人気があるようです。<br />
<br />
さっそく、レビュー<br />
<br />
スタイリッシュさについては上述の通り文句ありません。<br />
ほんと、この価格でこのスタイルは、めちゃめちゃ興奮します。<br />
<br />
キーボードの感触は、私が今まで使ってきた格安ノートよりはマシという程度です。<br />
私の持っている歴代格安ノートのキーボードって、打ち込み感覚が良くないのに加えて、本体に熱を持ち始めるとそれがキーにも伝わり、キーを打っている指先が熱くて痛くなってくるイメージがあります。しかし、このPCは今のところそんな事は無いようです(私の今までのがひどかったのかもしれない)。<br />
<br />
後、キー配列はUS配列です。<br />
これは、Vim使いの場合、US配列の方が都合がよいかもしれません。<br />
<br />
レビューをみていて最も多い不評は、タッチパッドです。<br />
MBのつもりで操作していると、色々するとストレスがたまりますが、仕方ありません。<br />
<br />
電源コードが付属していますが、差し込み部分、コードの太さ等、ちょっと頼りない感じです。<br />
<br />
性能については、巷レビューの通り、Web閲覧やYoutube閲覧に何の支障もないと私も思います。<br />
<br />
このページで説明したWSLを実際にEZbookでもやっています。<br />
Hyperターミナルの立ち上がりのとき、内部でWSLでのUbuntuを呼び出しますが、その処理がやや重く数秒かかります。<br />
<br />
このページと同様のWSLインストールをしたあと、Jekyllを使うために、Ruby系のインストールをしましたが、やっぱりやや重いかなぁという感じ。リソースモニターとかみていても、CPU使用率がほぼ100%で数分かかっていたようです。<br />
<br />
でも、Jekyllでのサイト構築も普通に出来ました。<br />
<br />
というわけで、EZbookは、多少もっさり感はあるものの、「スペックが低すぎて何かが出来ない!」という事はない、愛すべきB級機であり、趣味で触って持ち歩くには非常に楽しいPCだと思います。<br />
<br />
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="https://rcm-fe.amazon-adsystem.com/e/cm?ref=tf_til&t=suwa0001-22&m=amazon&o=9&p=8&l=as1&IS1=1&detail=1&asins=B076P9HCCB&linkId=a3a145270622fa77ca4bc9f49bd667b7&bc1=000000&lt1=_blank&fc1=333333&lc1=0066c0&bg1=ffffff&f=ifr" style="height: 240px; width: 120px;">
</iframe>
</div>
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-55369014270502099162017-07-08T13:45:00.002+09:002018-08-22T01:01:59.650+09:00MS Office Premium プラス Office 365 と同じアカウントで Office 365 Solo を買ってみたら<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7KZZYpaD-evTJ90FyNIHJTh2jgKhUSfMhEy5_T_bQ_DFDexEggYwevmIKpu9YSq6h_9h2faeD0Vx_xVRJdn9Q0uTnkbSLPw4Z1oCQzXys2auRjIfZrz7DuE6ryXIYgCmTKLrER34L74Q/s1600/%25E3%2583%2595%25E3%2582%25A1%25E3%2582%25A4%25E3%2583%25AB_000+%25281%2529.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7KZZYpaD-evTJ90FyNIHJTh2jgKhUSfMhEy5_T_bQ_DFDexEggYwevmIKpu9YSq6h_9h2faeD0Vx_xVRJdn9Q0uTnkbSLPw4Z1oCQzXys2auRjIfZrz7DuE6ryXIYgCmTKLrER34L74Q/s640/%25E3%2583%2595%25E3%2582%25A1%25E3%2582%25A4%25E3%2583%25AB_000+%25281%2529.jpeg" width="640" /></a></div>
<br />
マイクロソフトのオフィスソフトシリーズ。これもサブスクリプションになったりしていろいろと複雑です。<br />
<br />
ここでは、Premiumプラス365と365Soloを同一アカウントに入れた場合の365の扱いとそのサブスクリプション期間についてメモしています。<br />
<br />
<a name='more'></a><br />
<br />
<h3>
新しいパソコンに付いてきたMS Office Premium</h3>
最近、事務所で新しいパソコンを買った時、前々から聞いてはいたけれど、MS Officeの新しいライセンス形態に触れることになった。<br />
<br />
買ったパソコンはDELLのオフィス付を選んだ。付いてきたのは、「MS Office Premium プラス Office 365 」というもの。パソコンを買う時にプリインストールされいて、そのパソコンで使い続ける限りは、オフィス自体、ずっとアップデート、アップグレード出来る。<br />
<br />
「プラス Office 365」というのは、主にOneDrive(クラウドストレージ)を1年間1Tバイト使える権利らしくて、更新しなければ1年で終わりらしい。<br />
<br />
新しいパソコンを使い始める時に、何やらマイクロソフトアカウントが必要だということなので、アカウントも新しく新調した。<br />
<br />
そんなこんなで、ウキウキと新しいMSOfficeに触れているうちに、ExcelのVBAプログラミングに急激にはまってしまった。それで、家のパソコンでもOfficeを使うようになったんだけれど、バージョン2003とめっちゃ古く使い勝手が悪いので、新しいオフィス買おうかなという気になった。<br />
<br />
<h3>
新しく買うならOffice 365 solo</h3>
新しくオフィスを買う選択肢は、買い切り版と年間契約版があった。<br />
ネットでは、ライセンスの種類や、どれを選択するのがお勧め等の比較記事がたくさんあるので、それらを参考にしてみた。<br />
<br />
うちの場合MacBookAirもあるのでウィンドウズとMacも使えるサブスクリプションの方がいいかなと思い、Office 365 soloを買うことに!<br />
<br />
<h3>
アカウントの不安</h3>
マイクロソフトのソフトは今やマイクロソフトアカウントと密接に関連しているっぽい。<br />
そこで、こないだ新しいパソコンを買った時に作ったマイクロソフトのアカウントに、次に買うOffice 365 soloを登録したら、OneDriveとかの扱いはどうなるんだろう?2TBとか使えるようになるのかな?それに、インストール出来るパソコンの管理とかどうなるんだろう?PremiumとSoloを一緒にしちゃうと使える台数がダブって減ったりしないかな?とかとか、いろいろと不安だった。<br />
<br />
ややこしそうだから、別アカウント作ってそれに登録しようかなぁ?でも、別アカウントにするとファイル共有とかめんどくさそうだしなぁ、、とかあれこれ思うところはあった。<br />
<br />
結局、アマゾン経由でダウンロード版を購入し、ダウンロード時にアカウントを求められている時、早くインストールしてExcelが触りたいという衝動で考えるのがめんどくさくなり、、、もともとあるアカウントで登録してしまった。<br />
<br />
<h3>
アカウントページで内容を確認</h3>
さっそく、マイクロソフトのアカウント管理のページに入り、サブスクリプション内容の確認をしようと画面を見てみた。<br />
<br />
まずは、ちゃんとOffice 365 soloの項目が出来ていて、インストールできるパソコンの数が2台で、今は0台にインストールされている表示があって、ほっとした。<br />
<br />
次に、もともとのMS Office Premiumは有効期限が無期限になっていることを確認し、SoloとPremiumを同じアカウントに同居させても、ちゃんと、Solo2台とPremium1台でPremiumはずっと使えるということも確認できた。<br />
<br />
そして、Soloの有効期限に目をやると、なんとなく、違和感を感じた。<br />
<span style="background-color: white; font-family: "segoe ui" , "segoe ui web" , "segoe ui symbol" , "helvetica neue" , "bbalpha sans" , "s60 sans" , "arial" , sans-serif; font-size: 15px;"><br /></span>
<br />
<div style="text-align: center;">
<span style="background-color: white; font-family: "segoe ui" , "segoe ui web" , "segoe ui symbol" , "helvetica neue" , "bbalpha sans" , "s60 sans" , "arial" , sans-serif;"><span style="font-size: x-large;">2019/06/01</span></span></div>
<span style="background-color: white; font-family: "segoe ui" , "segoe ui web" , "segoe ui symbol" , "helvetica neue" , "bbalpha sans" , "s60 sans" , "arial" , sans-serif; font-size: 15px;"><br /></span>
今日は、「2017/07/08」だ。<br />
はじめ、なんか日付がおかしい。06/01なのは、どうもPremiumを登録した頃の日付なので、1か月損しているような、、、と思いつつ、あれ?2019って再来年では??<br />
<br />
いったいどうなってんの??なんか、まちがった??<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;"><b>お釣りをたくさんもらてしまった</b></span></div>
<br />
ような気がするけど、本当にそうなのかどうかのかよくわからない時の気分に似ている変な気分だ。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFwe1jU5D3O0OsjMlOOXa9bZScetMIOYPcRu6ftUhDFQQXa2sobfMrPzucV66-o1tDTGqHsZ8Ivl8HekeDQjov9-_S8h9rt_Ql35rlWjl8bPV4NktC6H4oEylTltySvjR2Nvhf3FY0-tw/s1600/2017-07-08_11h55_35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="971" data-original-width="1057" height="587" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFwe1jU5D3O0OsjMlOOXa9bZScetMIOYPcRu6ftUhDFQQXa2sobfMrPzucV66-o1tDTGqHsZ8Ivl8HekeDQjov9-_S8h9rt_Ql35rlWjl8bPV4NktC6H4oEylTltySvjR2Nvhf3FY0-tw/s640/2017-07-08_11h55_35.png" width="640" /></a></div>
<br />
<br />
<h3>
「Office 365」とは</h3>
ネットで検索してみると<br />
<br />
<a href="https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12164759807" target="_blank">Office365solo と Office2016 Premium を同じMicrosoftアカウントで使っても大丈夫ですか?</a><br />
<br />
なんていうYahoo知恵袋が見つかった。<br />
<br />
これによると、どうやら、日付は加算されていて当然のようだった。<br />
<br />
さて、ここでOfficeの種類を改めてみてみると<br />
<br />
「Office Premium プラス Office 365」<br />
<br />
は、文字道理「Office Premium 」と「Office 365」の別のサービスに分けられる。<br />
「Office Premium 」はOfficeがずっと使える権利で、「Office 365」は、OneDriveやSkypeが1年使える権利のように見える。<br />
<br />
一方、「Office 365 solo」をよくみると、「プラス」の文字はない。先のように「Solo」と「Office 365」の別のサービスが一緒になったものではないのだ。つまり、「solo」がOfficeが1年使える権利、「Office 365」がOneDriveやSkypeが1年使える権利というふうに分けて考えてはいけないのだ。<br />
<br />
ではなにかといえば、おまけ付「Office 365」バージョンで、<br />
<br />
<div style="text-align: center;">
<span style="color: red; font-size: x-large;">「Office 365 solo」は、「Office 365」の一種</span></div>
<div style="text-align: center;">
<br /></div>
のように考えるのがよいみたいだ。<br />
<br />
Office365自体、OneDriveやSkypeが使えるサービスだが、そのサービスの一つとしてOfficeもついているのが「Office 365 solo」な感じらしい。<br />
<br />
<h3>
違う種類のOffice 365 が合体すると、、</h3>
さて、premiumについている「Office 365」と「Office 365 solo」とは種類が違うが、同じ「Office 365」というサービスの種類というややこしい状況ができてしまう。Office365はサブスクリプションで買い増しすると、その期間が加算されて延長されて行くようになっている。<br />
<br />
じゃ、違う種類である「Office 365」と「Office 365 solo」が同じアカウントで加算されると何が起こるかというと、、うちで起こっている通り、「Office 365 solo」としての期間が延長されることになった。<br />
<br />
<h3>
お得なのでは??</h3>
さて、この結果自体、マイクロソフトが意図しているのかどうかはわからないけれども、ユーザーにすれば経済的にお得なのではなかろうか?<br />
<br />
<br />
本来、premiumについている「Office 365」には、他のPCにOfficeをインストールして使う権利はついていない。しかし、「Office 365 solo」と一緒になって期間延長すると、その追加期間には実質的にsolo側の他のPCにインストールして使う権利が付加される事になる。<br />
<br />
もし別アカウントに「Office 365 solo」紐づけると、わかりやすくそれぞれの1年期間をそれぞれ別個のサービスで受けられる。OneDriveサービスもそれぞれ1TBづつ使えて、自分で管理するストレージ合計は2TBにはなる。<br />
<br />
しかし、ストレージが沢山ほしいんじゃなくて、「Officeソフトを使うために買う」という趣旨であれば、その買ったOfficeソフトが使える期間が通常は1年なのに、Premiumに紐ついている同じアカウントに紐付けることによって、プラスOffice365の残存期間が追加されるので、1年以上使えるようになることがあるのだ。<br />
<br />
ここで、疑問に思うのは、、、、<br />
アカウントにPremiumがあるユーザーの場合で、soloを追加して買った人が更新をする場合、「Office 365」を買うべきか?「Office 365 solo」を買うべきか?だ。<br />
「Office 365 solo」を使っている状態で、「Office 365」を買いましてもオフィスインストールの権利期間が伸びるのなら「Office 365 solo」を買って更新する必要はないし、もしそれでいいのなら、更新費用が半分くらいで済むからめちゃめちゃお得な気がするけど、どうなんだろう??<br />
<br />
それとも、もしかしたら、管理ページでの更新日の表示は、再来年になっているけれど、Officeのインストール権利は1年で終わっちゃって使えなくなるのかもしれない。<br />
<br />
まぁ、そうだとしても、別に損をするわけではないから、どっちでもいいか。<br />
<br />
<br />
さて、蛇足ながら、もしOffice365soloを使って、4台以上のパソコンにインストールしたい場合は、それぞれ別アカウントに分けて紐づけないといけないだろう。同じアカウントに紐づけると、台数が増えずに年数が増えるからだ。<br />
<div>
<br /></div>
<h3>
今更ながら、ExcelのVBAって良いじゃないかー</h3>
<br />
そんなことよりも、もっと早くエクセルのプログラミング環境を触ってみるべきだった。VBAめちゃめちゃ面白いし、やったらやっただけ仕事の効率に直結する(かもしれないし)。たぶんエクセル自体みんな使っているから、「こんなことできるでーー!」って言えば、「まじーー??!!しゅんきちさん素敵ーーー!!」ってな感じでヒーローになれるにちがいない。<br />
<br />
<br />
<div style="text-align: center;">
<iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="https://rcm-fe.amazon-adsystem.com/e/cm?ref=tf_til&t=suwa0001-22&m=amazon&o=9&p=8&l=as1&IS2=1&detail=1&asins=B00O2TXF8O&linkId=77a13791eccc1f97cf7733e14d7c38b7&bc1=000000&lt1=_blank&fc1=333333&lc1=0066c0&bg1=ffffff&f=ifr" style="height: 240px; width: 120px;">
</iframe>
</div>
<br />
というわけで、昔の古いオフィスを使っているなら、君もOffice 365 soloを買お~!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJWnnlea1XVt_WW2bJq8XSN5mygXmu7lyJJN2JEB_WbELRWyhyphenhyphencGK88n_yB8nueHMoPfWSpcfxYfnaH7oK-mIsbwndC8EO1vSjzYiQopCm-HuOMqj4ciiRgwcwtfEcpikqmgCIDU247cQ/s1600/%25E3%2583%2595%25E3%2582%25A1%25E3%2582%25A4%25E3%2583%25AB_000.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJWnnlea1XVt_WW2bJq8XSN5mygXmu7lyJJN2JEB_WbELRWyhyphenhyphencGK88n_yB8nueHMoPfWSpcfxYfnaH7oK-mIsbwndC8EO1vSjzYiQopCm-HuOMqj4ciiRgwcwtfEcpikqmgCIDU247cQ/s320/%25E3%2583%2595%25E3%2582%25A1%25E3%2582%25A4%25E3%2583%25AB_000.jpeg" width="320" /></a></div>
<br />
昔から、アマゾンで買い物はよくするんだけれど、最近になってようやく「ポイント」に目覚めた。アマゾンのクレジットカードを作ってそれで買い物をするようにしたら、ちょこちょこポイントがついて嬉しい!<br />
<br />
近々、アマゾンのサイトのセールがあるらしく、お得情報をためしたりして、それが楽しい。今までわからなかったけれど、女の人が「セール」や「バーゲン」という単語にウキウキするという気持ちを今理解中。<br />
<br />
<br />
<br />shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-72222912673065721392017-05-05T15:46:00.001+09:002021-12-29T15:53:28.607+09:001Password サブスクリプション版でおしゃれに家族を守る<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijmsharbeQ_F1-R8ZmDGF9iAe7eVWE8kA4wA3fM2wP85Qpmk8g6qvx7W9xdSrYw5LaBUNETx9aYWc7Po67ojSJF23u8khcrcMSzkqU4tWYiR4OKQpcP8L9SyJkdKU-imr3VE9qwv4amXM/s1600/DSC01753.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="424" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijmsharbeQ_F1-R8ZmDGF9iAe7eVWE8kA4wA3fM2wP85Qpmk8g6qvx7W9xdSrYw5LaBUNETx9aYWc7Po67ojSJF23u8khcrcMSzkqU4tWYiR4OKQpcP8L9SyJkdKU-imr3VE9qwv4amXM/s640/DSC01753.jpg" width="640" /></a></div>
<br />
1Passwordで家族のパスワードをまるごと管理してみましょう!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<a name='more'></a><br />
1Passwordとは、有名なパスワード管理アプリの1つで、「<a href="https://agilebits.com/" target="_blank">AgileBits</a>」というカナダの会社が提供しています。特にiPhoneやMacと相性が良いので、Apple系の人は是非お試しあれ。<br />
<br />
と、今更言っても、「知ってるよ」と言う人が多いと思います。しかし、去年から、1Passwordは単体アプリとしてだけでなく、「サブスクリプション版」というサービス形態をはじめました。もう利用していますか?<br />
<br />
<h4>
サブスクリプション版</h4>
<br />
最近では、パソコン、タブレット、スマホと一人でも複数のデバイスを使う生活スタイルが浸透しはじめました。そして、複数デバイスを持つようになって感じるのが、色んなデータをデバイス間で勝手に同期してくれたら便利だよね!という要望です。<br />
<br />
こういったニーズに対する1Passwordからの提案が「サブスクリプション版」の様です。<br />
<br />
つまりは、複数デバイスを持つのが当たり前の時代なんだから、持っているデバイス全て、種類を問わず、全部に最新版の1Passwordをインストールして使ってもらっていいですよー。それに各デバイス間でのパスワードデータの同期は勝手にやっておきますよー!っていうサービスです。<br />
<br />
このサブスクリプション版のサービスは、1Passwordのサーバー上にアカウントを作り、このアカウントとアプリを紐づけて利用して使います。<br />
<br />
<h4>
ファミリータイプがお得</h4>
このサブスクリプション版には、3つのタイプがあります。<br />
<br />
<ul>
<li>個人用の「Individual」</li>
<li>家族用の「Family」</li>
<li>仕事用の「Team」</li>
</ul>
<br />
この3つのうち、<span style="color: red;">家族で使えるファミリータイプ</span>がいい感じにお得です。家族5人まで同じように1Passwordが使え、更には、家族間でのパスワード共有なんかも出来たりします。家族の中でパソコン使うの得意な人がこのファミリータイプの1Passwordサブスクリプションを管理してあげれば、家族全員ハッピーな事間違いなし!!<br />
<br />
そこで、今回はこのファミリータイプ1Passwordの導入をメモをしてみます。<br />
<br />
<h3>
まず、アカウントを作りましょう</h3>
まずは、パソコンで、1Passwordのページにアクセスしましょう。<br />
<br />
<div style="text-align: center;">
<a href="https://1password.com/" target="_blank"><span style="font-size: x-large;">https://1password.com/</span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGJ2qCFmT61PSP7_xWwqAKRUVyaCNzLa4VraC6Dzh3yi93lYO_3waeFqaCe_X0qdFh7xwIymrZiB36ikUEgAEXkD1m5aAiUSYRBcJQ3RdD68Gw5IOJ59u0V5hUmddv2NuJhUhLj_utwq8/s1600/00Org_top.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGJ2qCFmT61PSP7_xWwqAKRUVyaCNzLa4VraC6Dzh3yi93lYO_3waeFqaCe_X0qdFh7xwIymrZiB36ikUEgAEXkD1m5aAiUSYRBcJQ3RdD68Gw5IOJ59u0V5hUmddv2NuJhUhLj_utwq8/s320/00Org_top.png" width="320" /></a></div>
<br />
<h4>
Familyタイプのアカウント作成ページを探せ!</h4>
さて、サブスクリプションのタイプには3つあります。<br />
<br />
<ul>
<li>個人用の「Individual」</li>
<li>家族用の「Family」</li>
<li>仕事用の「Team」</li>
</ul>
<br />
それぞれのタイプによって、アカウント作成窓口が異なります。<br />
まず、トップページから「Try Free 30 days」のボタンをクリックしてみましょう。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFbP-DS-NFRFp5Kb9sLnWRnUCV12fj2l8a2dSHvpNU-h05WvHev6DN36ISu3Cb_CQFwvUwbHwcxw0mtVZtdJTPL6r3J7YapuPKwvEE-xZxVQbXmOxTp40eo_Tj6UIHBFKLZ7lCTiippm8/s1600/top_clickFor3doors.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFbP-DS-NFRFp5Kb9sLnWRnUCV12fj2l8a2dSHvpNU-h05WvHev6DN36ISu3Cb_CQFwvUwbHwcxw0mtVZtdJTPL6r3J7YapuPKwvEE-xZxVQbXmOxTp40eo_Tj6UIHBFKLZ7lCTiippm8/s640/top_clickFor3doors.png" width="640" /></a></div>
すると、3種のアカウントを選択できるページにやってきます。<br />
「Family」アカウント作成の為の入口をクリックします。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj26Z4-88PUGBEYb8Yph90QLz3VX0Y_mH4IdA7H1I6LpAUW_6-RLtXIg2BAhHegFawlfkwcejpnEGogmdOLzIoDvj54WcsrQn97TDFvgu32XV46gT5gBmNTREN2cUHJwBlP9NBqfnYc3Zo/s1600/selectFamily.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="433" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj26Z4-88PUGBEYb8Yph90QLz3VX0Y_mH4IdA7H1I6LpAUW_6-RLtXIg2BAhHegFawlfkwcejpnEGogmdOLzIoDvj54WcsrQn97TDFvgu32XV46gT5gBmNTREN2cUHJwBlP9NBqfnYc3Zo/s640/selectFamily.png" width="640" /></a></div>
<br />
どうですか?下の様なページに辿り着けましたか?<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbiqmkzbaiQV60_a7aLkHgYCmVkCgFoJaRTHFmXcB0cJd4NdRvc9tI0FENMvG-3tfTDzKIzhCBaWLKovoM2DWSJvJ049deGfCFUJA0-NoXhoebxcnIJS_nsQRA3c8xb4UKgxIsQf5Oh9Y/s1600/fam_entrance_check.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbiqmkzbaiQV60_a7aLkHgYCmVkCgFoJaRTHFmXcB0cJd4NdRvc9tI0FENMvG-3tfTDzKIzhCBaWLKovoM2DWSJvJ049deGfCFUJA0-NoXhoebxcnIJS_nsQRA3c8xb4UKgxIsQf5Oh9Y/s640/fam_entrance_check.png" width="640" /></a></div>
上記のスクリーンショットでチェックしてみて「あれ?ちょっと違うかな??」って場合は、ファミリーではなく、個人やチームのアカウント作成入口かも知れません。先に進む前に、注意して確認しましょう。(1Passwordのwebページではあちこちからアカウントの作成ページへ行けますが、アカウントには種類があるので、必ず「Family」用かどうか確認しましょう。)<br />
<br />
<h4>
Account Nameとは</h4>
さて、ここで「Account Name」と「Your Email」の2つを入力するようにフォームで促されています。<br />
<br />
「Account Name」には、あなたがこれから作る家族グループの名前を決めて、それを入力します。そして、「Your Email」には、あなたの連絡が取れるメールアドレスを入力するわけですが、このメールアドレス自体が、この家族グループの一人目の構成員の個人ID名になります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhazX3sLO4R3kgS8ppuupijlFEuqL1NIdqT3oxewdINYxpSGBnMJRc-h-sZ4M20qsknrKbgtSiM6yoW1AFnMaKOSj79z0hpqtwiu2OsycB5AsTYeI_1FKSRUeacqQefkGrkKds6tjtN5UQ/s1600/00Org_fam_acc_input2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhazX3sLO4R3kgS8ppuupijlFEuqL1NIdqT3oxewdINYxpSGBnMJRc-h-sZ4M20qsknrKbgtSiM6yoW1AFnMaKOSj79z0hpqtwiu2OsycB5AsTYeI_1FKSRUeacqQefkGrkKds6tjtN5UQ/s640/00Org_fam_acc_input2.png" width="640" /></a></div>
この辺り、勘違いしやすいのでファミリータイプアカウントの仕組みを簡単に説明しておきます。<br />
<br />
まずは、「Account Name」の「Account」とは、家族全員を含んだグループアカウントを意味しています。実は、Familiyタイプのサブスクリプションというのは、このグループアカウントの中に各家族構成員の個人アカウントがぶら下がっているような仕組みになっています。次の「Your Email」というのが、この家族グループアカウントの一人目の構成員(管理人)の個人アカウントIDとなります。<br />
<br />
というわけで、実はここでは、家族用アカウントと1番目の構成員アカウントを同時に作っているのです。<br />
<br />
で、何を気を付けなといけないかというと「Account Name」は、家族を表す名前にしようって事です。<br />
<br />
例えば、私「猫田しゅん吉」がここを入力する時、何の説明もないと「Account Name」というフォームが出れば、「自分自身のアカウントの事だろう」と思って、自分に因んだ名前をつけてしまうんじゃないかな?って事です。<br />
<br />
Account Name: Shunsk2017<br />
Your mail: shunkichihogehoge@nanntaramail.com<br />
<br />
なので、上記のように私的な名前を入れがちです。しかし、実は「Account Name」は、グループを表すアカウント名の事なのです。だから、<br />
<br />
Account Name: NekoMac-001family<br />
Your mail: shunkichihogehoge@nanntaramail.com<br />
<div>
<br /></div>
こんな風に、家族を表す名前を入れておいた方が、後で、失敗したなぁという軽い後悔をしなくて済むという話です。まぁ実は、アカウントが出来てしまえば、後で「Account Name」は好きなものに変更できるので、そこで直してもOKなのですが。<br />
<br />
<h4>
あなたの家族専用のサインインページのURLを決める</h4>
サブスクリプション版1Passwordは、ブラウザを使ってweb上でパスワードの管理をすることが出来ます。<br />
<br />
そして、サインイン用のページアドレス(URL)は、<br />
「nekomac-001family.1password.com」と言う感じでファミリーグルプ毎に割り振られ、「nekomac-001family」の部分は、自分の好きな文字列にすることが出来ます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6L98g6rQn29UYXHp9jQ38YPohl6WIXpVVlEJgAwMkvATwS8ggEKhrd1cG85iZ_KP5fexBLtX4hO_7vZLhSMlbrK8ujevpTDGLLOmCR9nn2lNjd_eXCIcwX3bCGHCn-uvQ3iXcN6qBDpI/s1600/signin_fill_form.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6L98g6rQn29UYXHp9jQ38YPohl6WIXpVVlEJgAwMkvATwS8ggEKhrd1cG85iZ_KP5fexBLtX4hO_7vZLhSMlbrK8ujevpTDGLLOmCR9nn2lNjd_eXCIcwX3bCGHCn-uvQ3iXcN6qBDpI/s640/signin_fill_form.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
ページを開けば既に先に入力した「Account Name」に基づいたものが入力されているでしょう。それで良ければ、それを使えば良いです。<br />
しかし、その名称が既に誰かによって使われている場合や、もっと好きな文字列URLにしたい場合には、このフォームに新たな文字列を入れればOKです。(.1password.comの部分は自分で書かなくて良いです。)<br />
<div>
<br /></div>
<h4>
確認メールを受け取る</h4>
<br />
さて、Continueして、ページを進むと今までに入力した「アカウント名」、「メールアドレス」、「URL」の確認画面になります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5LdTlIxo2IpgGnQRf4XATVl1M-iQdpiMl0Oyr6EjE57qpEWXzk6BKycEwADUABHt5vhueMlVpKtU0Oj-CXfGFUIQ7HtMRr1xFsO7Fv8bmq7G6Q2NgsaxIASlrmfV6GTF6cFveSD3cWAo/s1600/hatoinfo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5LdTlIxo2IpgGnQRf4XATVl1M-iQdpiMl0Oyr6EjE57qpEWXzk6BKycEwADUABHt5vhueMlVpKtU0Oj-CXfGFUIQ7HtMRr1xFsO7Fv8bmq7G6Q2NgsaxIASlrmfV6GTF6cFveSD3cWAo/s640/hatoinfo.png" width="640" /></a></div>
<br />
そして、「あなたにメールを送ったので、そのメールのリンクのページに行って、アカウントを設定し、サインインしよう」とハトに言われます。<br />
<br />
早速、自分宛のメールをチェックしましょう。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4sx7NdUv3It3FcMDwYbgGzqJmrTksNvn5WnBQLDckWsO1ujpFwMYEffI97JpGW5IaZAA3ajj2BBNk3G1dnCfNln4kuGjynyjn2jQVDH-HStCNPakATCnUE4h3WMeQjLvjM3ptA2HKS6M/s1600/mailfrom1password.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4sx7NdUv3It3FcMDwYbgGzqJmrTksNvn5WnBQLDckWsO1ujpFwMYEffI97JpGW5IaZAA3ajj2BBNk3G1dnCfNln4kuGjynyjn2jQVDH-HStCNPakATCnUE4h3WMeQjLvjM3ptA2HKS6M/s640/mailfrom1password.png" width="640" /></a></div>
メールの中のボタン(リンク)をクリックすると、新しいページが開きます。<br />
<br />
<h4 id="To_make_member_account">
メンバーとしてのアカウント設定</h4>
先ほどまでの作業で、家族グループのアカウントの作成作業が完了しました。今、メールをクリックしてたどり着いたページのURLを見てみましょう。先ほど登録した家族専用のURLになっていることが確認できます。<br />
<div>
<br /></div>
というわけで、ここからは自身のメンバーアカウントの設定をしていきます。<br />
<br />
今から次の様な流れで作業をしていきます。<br />
<ol>
<li>あなたの名前を登録</li>
<li>支払用クレジットカードの登録(スキップ出来る)</li>
<li>シークレットキーの確認</li>
<li>マスターキーワードの作成</li>
<li>サインイン</li>
</ol>
ここで、少しだけ、サブスクリプション版1Passwordで出てくる「シークレットキー」と「マスターキーワード」についての知識を整理しておきましょう。<br />
<br />
普通、何かのアカウントにログインする時には「ID」と「パスワード」の二つを使います。<br />
<br />
一方、1Passwordでは、「<span style="color: red;">Email</span>」と「<span style="color: red;">Secret Key</span>」と「<span style="color: red;">Master Password</span>」の3点を使ってアクセスします。1Passwordでの「Email」が「ID」のようなもので、「Secret Key」と「Master Password」は両方ともパスワードの様なものです。あまり難しく考えず、1Passwordでのアカウント管理ではこの<span style="color: red;">3つがセット</span>になっていると把握しておきましょう。そして、この3点に加えて、アクセスする場所であるグループの<span style="color: red;">SingInURL</span>も必要になります。<br />
<br />
但し、普段、実際に使う時には、「Email」と「Secret Key」は、デバイス側で保存されているので、入力するのは「Master Password」のみ、そう、常に覚えておくべきものは一つ「Master Password」だけ、1Passwordですから。<br />
<br />
「Email」と「Secret Key」が必要になるのは、新しいデバイスを自分のアカウントに紐づける時です。つまり、初めて、ブラウザでアカウントにログインする時や、スマホやタブレットで初めてサブスクリプション版にアクセスしたり、新しいスマホ等を買って初めてアクセスする時等です。<br />
<br />
また、「Secret Key」は、作業時に勝手に作成されてパソコン画面に表示されるので、それを書き写したりして保管することになりますが、「Master Password」は、自分の覚えやすいものを自分で作って管理することになります。<br />
<br />
では、作業に戻って手順を進めましょう。<br />
先に届いたメールのリンクをクリックすると、まずは名前登録の画面になります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8hvdipfWI5RwzcAz7387iLbk9XvVaHRHb0XdOE00ZJZzGKTrraafNbaW6DLLKRdH0EyfgbHrt0j0MxXwQYtN0mPwqVeBcFE9rLdbGvlw0IyUm9MICXHGGYR5oPCsKJmlYuMOn8efn6k8/s1600/inputName.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8hvdipfWI5RwzcAz7387iLbk9XvVaHRHb0XdOE00ZJZzGKTrraafNbaW6DLLKRdH0EyfgbHrt0j0MxXwQYtN0mPwqVeBcFE9rLdbGvlw0IyUm9MICXHGGYR5oPCsKJmlYuMOn8efn6k8/s640/inputName.png" width="640" /></a></div>
名前(FirstName)、苗字(LastName)を適当に入れます。右の肖像画的な所には、自分の写真を張り付けれます。(勿論、後ででもできます)<br />
Continueで進めましょう。<br />
<br />
次は、支払用クレジットカードの登録ページです。<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
勿論、登録しておいても良いですが、登録をしなくても設定を進めることが出来ます。1Passwordは、初めてサブスクリプション版を使う時、30日間の無料期間があります。なので、後で登録すればOKです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio8aJ9pZijAqrXRpv8cFIWa4A7ACHEVYjnafBr72Mtv_vnITpzQ-bmFFZzE1R9lf-LGZSEJbWGABhGTDyDj5GjcSyphVC-ADmQNvVwnsfn0yKLrHMA2hkWD7p2TdNsLb3HZwqqLJrZ0Hs/s1600/cardpage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio8aJ9pZijAqrXRpv8cFIWa4A7ACHEVYjnafBr72Mtv_vnITpzQ-bmFFZzE1R9lf-LGZSEJbWGABhGTDyDj5GjcSyphVC-ADmQNvVwnsfn0yKLrHMA2hkWD7p2TdNsLb3HZwqqLJrZ0Hs/s640/cardpage.png" width="640" /></a></div>
<br />
カードの登録をスキップする場合には、スクリーンショットで示した「Skip adding a card」の部分をクリックしましょう。このクリックで次の設定に進むことが出来ます。(青い「Continue」のボタンをクリックでは、必要項目を書いていない場合、設定が先に進めません。)<br />
<br />
さて、スクリーンショットの右側に「$4.99USD」と「$6.99USD」がチェックボックスで切り替えられるようになっています。<br />
<br />
これは、年間一括支払い(Billed Annually)の場合には、月額に換算して$4.99ですよ(逆算すれば$4.99×12ヶ月=$59.88の一括払い)という支払い方と、毎月支払い(Billed Monthly)の場合には月額$6.99ですよという支払方法の選択が出来るようになっています。<br />
<br />
もし、クレジット登録する時には自分の都合に合わせて、ちゃんと選択しましょう。<br />
<br />
シークレットキーとマスターパスワードの説明画面があるかもしれませんが、特に気にせず「Continue」して、先に進めましょう。<br />
次は、シークレットキーです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpr_tohuMdKZ7owC-xlfQxCFQ_TEJHRzn6SDeZ4pfsNh-J49VQRnrZa_Fm-ANszflhtaVIa8r2Xu4AmuVsXjEJF4Qmm5qI0-VbtvVt_tJjyFdfARzTjLM7Y2VQR5PjkAiP8Dr9nIqX9RI/s1600/secretKey.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpr_tohuMdKZ7owC-xlfQxCFQ_TEJHRzn6SDeZ4pfsNh-J49VQRnrZa_Fm-ANszflhtaVIa8r2Xu4AmuVsXjEJF4Qmm5qI0-VbtvVt_tJjyFdfARzTjLM7Y2VQR5PjkAiP8Dr9nIqX9RI/s640/secretKey.png" width="640" /></a></div>
シークレットキーについては、「あなたが知っておく必要のあるシークレットキーについての3つのこと」として説明が書かれています。<br />
<br />
<ol>
<li>シークレットキーは他人に知られないように安全な場所に保管して秘密にすること。</li>
<li>新しいデバイスで1Passwordを使う時にこのキーが必要になる。</li>
<li>万が一このキーを無くしても、うちの会社は助けることが出来ないよ。(無くさないように注意してね)</li>
</ol>
<br />
この場面では、画面のスクリーンショットを撮るなり、スマホで写真撮るなり、取り敢えず正確にSecret Keyを記録しておきましょう。<br />
<br />
Secret Keyは普段使わないので、ちゃんと保管しておかないとすぐにわからなくなります。それどころか、1Passwordは、iPhoneで使っていると、指紋認証で開けたりするのでMaster Passwordさえ忘れてしまうこともあります。そこで、1Passwordを使う場合、Secret Key等の大事な情報は、必ず紙ベースで残して何処かにちゃんと保管しておく事が重要だったりするのですが、ここではまだ心配しなくて大丈夫です。後で、これを実現してくれる作業が待っています。<br />
<br />
次は、マスターパスワードの登録です。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhItySI7abifuGjomOd4_lx3ESaP1UlHLP1_nTU_NbJs4EGyvqub1r11Uax2rzi4qhUHeaxkthZJjyJZ8IonhOm-8iEHth3fBs-JS3fHnYX2YgPIFP1TzdYibT-svA-hyAR0TlPciUxPbQ/s1600/masterpassword.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhItySI7abifuGjomOd4_lx3ESaP1UlHLP1_nTU_NbJs4EGyvqub1r11Uax2rzi4qhUHeaxkthZJjyJZ8IonhOm-8iEHth3fBs-JS3fHnYX2YgPIFP1TzdYibT-svA-hyAR0TlPciUxPbQ/s640/masterpassword.png" width="640" /></a></div>
<br />
パスワードを入力する欄の左下には、入力されているパスワードの強度判定があるので参考程度に見ておきましょう。一方、右下には強くて覚えやすいパスワード自動作成機能がありますが、日本人としては、あんまり覚えやすくなさそうです。<br />
<br />
さて、今更ながら、自分の生年月日をパスワードにする人も少ないでしょうし、「強くて覚えやすいパスワード」とかっていうのは、作るのがめんどくさいものです。作業途中にパスワードを作り出すと時間がかかると思いますので、作業を始める前に事前にパスワード候補を作っておくのがお勧めです。<br />
google先生に「強くて覚えやすいパスワード」とかお伺いを立てて準備しておきましょう。<br />
<br />
以上でアカウント設定は終わりです。<br />
<br />
<h4>
いざ、サインイン</h4>
というわけで、サインインページです。<br />
上のページから「Continue」してページを進めると、以下の様なサインインページになります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHHJ-qAG_adHx2RUHH1R-Jzh_oi3iE8Dct878e0oXz4CiMMA3D7ZVGd_vTS6mhfhs5pCbdsySApCw_OUQ4IYhQfEfNWKYhh6RKWdse17IDvT4iROyT8ac36IiANz-r2srt0RE1qbe7fgA/s1600/singinpagenew.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHHJ-qAG_adHx2RUHH1R-Jzh_oi3iE8Dct878e0oXz4CiMMA3D7ZVGd_vTS6mhfhs5pCbdsySApCw_OUQ4IYhQfEfNWKYhh6RKWdse17IDvT4iROyT8ac36IiANz-r2srt0RE1qbe7fgA/s640/singinpagenew.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
EmailとSecret Keyは既に入力された状態にあるので、さっき登録したMaster Passwordを入力して、サインインしましょう。<br />
<br />
<h4>
救急キット(Emergency kit)</h4>
「やったー!!やっと、サインイン来たーーーーー」と思ったら、その前にひと仕事あります。<br />
<br />
初めてサインインした時には、次の様なダイアログがお迎えしてくれます。<br />
これが先に話した、紙ベースで重要な事項を保存しておく作業です。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg90Uu_pVPxepioBSWov5m9fQ9YDVEsbRihQXEPo3nzG2hRSnGrUYoFtsHkhIJKFh2377niix83PCt8XpXvhf2UGYzJUxtuFvH4eGIt_98f8-82GCCem9fEDUdP7ageP0jykhZywdxo1-E/s1600/saveEMkitd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="392" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg90Uu_pVPxepioBSWov5m9fQ9YDVEsbRihQXEPo3nzG2hRSnGrUYoFtsHkhIJKFh2377niix83PCt8XpXvhf2UGYzJUxtuFvH4eGIt_98f8-82GCCem9fEDUdP7ageP0jykhZywdxo1-E/s640/saveEMkitd.png" width="640" /></a></div>
<br />
クリックしてEmargency Kitと呼ばれるPDFファイルを保存しましょう。<br />
<br />
<br />
Emargency Kitには以下のものが書かれています。<br />
<ul>
<li>SIGN-IN ADDRESS(サインイン用のURL)</li>
<li>EMAIL ADDRESS (サインイン用のEmail)</li>
<li>ACCOUNT KEY(サインイン用のSecret Key)</li>
<li>MASTER PASSWORD (サインイン用のパスワード、印刷されておらず空欄)</li>
</ul>
「MASTER PASSWORD」は空欄になっています。なので、このEmargency Kitを印刷し、空欄に自分のマスターパスワードをペンで書き込み、その紙を何処か安全な場所にしまっておきましょう。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJvi0Zb6CPDFuY6aJe9BHtx3VNO5DkzDljoeuUCDs_vmYxOpM0bMBtIpUHLUb-_broXwoNbtwkWBALjQmcH4BVfxEQIutoa5GmpXoSM56kb93q9p8RW1rCc94zDyhj9xj71G0EfQK-mtw/s1600/IMG_2098.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJvi0Zb6CPDFuY6aJe9BHtx3VNO5DkzDljoeuUCDs_vmYxOpM0bMBtIpUHLUb-_broXwoNbtwkWBALjQmcH4BVfxEQIutoa5GmpXoSM56kb93q9p8RW1rCc94zDyhj9xj71G0EfQK-mtw/s320/IMG_2098.jpg" width="320" /></a></div>
<br />
<br />
はっきりいって、キーやアドレスはいつか絶対に忘れて困る時が来ます。<br />
絶対にEmargency Kitを作って保管しましょう!!<br />
<br />
<h4>
ホーム画面</h4>
やっと、サインインしたアカウントのホーム画面はこんな感じです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmOP8o0jvhd9hFJp3MHWRkXvPSB-lqsk_MJQNbvyFPdSP5vUEdf7_2SAVIRJxSx5MtG2qaQDz7UQFVyI0Ay_J2if1YBrQ2yckGGCPFptqWUqGG7gvQzumdlPig_oZQQGZK0Lhd2We9_M4/s1600/homepagewithmenu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmOP8o0jvhd9hFJp3MHWRkXvPSB-lqsk_MJQNbvyFPdSP5vUEdf7_2SAVIRJxSx5MtG2qaQDz7UQFVyI0Ay_J2if1YBrQ2yckGGCPFptqWUqGG7gvQzumdlPig_oZQQGZK0Lhd2We9_M4/s640/homepagewithmenu.png" width="640" /></a></div>
右上の「AccountName」が書いてあるところ(一部しか見えないけど)をクリックするとメニューが開きます。<br />
<br />
ここで、出来たアカウントは、ファミリーアカウントの最初のメンバーのアカウントなので、自動的に「管理者権限」を持ったメンバーアカウントになっています。そのため、メニューの中に「AdminConsole(管理用コンソール)」や「Billing(支払設定)」等がみられます。<br />
<br />
一番上には、アプリダウンロードページへのリンクがありますが、右のバツ印で消せます。ダウンロードページへはメニューページとかどっからでも行けるので消えても大丈夫。<br />
<br />
これで、一人目のメンバーアカウントの作成が完了しました。<br />
<br />
<h3>
メンバーにする家族を招待しよう</h3>
<br />
出来上がったあなたのファミリーグループにあなたの家族をグループメンバーとして追加していくことで、あなたの家族も1Passwordを使うことができるようになります。<br />
<br />
まず、メンバーを追加する方法の概略を把握しておきましょう。<br />
<br />
<ol>
<li>管理者がグループに招待したい人に招待メールを送る</li>
<li>招待メールを受け取った人は、アカウント作成作業をする</li>
<li>管理者はアカウント作成作業が終わった新メンバーを承認する</li>
</ol>
<br />
このうち、1、3番が管理者の作業、2番が招待される人の作業です。そして、2番目のアカウント作成作業は、さっき行った、3点セットの登録作業とほぼ同じです。<br />
<br />
では、具体的に見ていきましょう。<br />
<br />
<h4>
1password.comにサインインするときの注意</h4>
<br />
色々なグループの管理作業は管理権限を持つグループメンバーがパソコンで行います。管理権限のあるメンバーアカウントで、1passwordのサイトにサインインして下さい。<br />
<br />
サイトへのサインインの仕方は少し注意が必要です。<br />
<br />
Google検索とかで、1password.comのTopページ等へ飛んだ場合、右上の方にある「Sing in」をクリックしてサインインしようとすると思います。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhknxCpTqRwAdSMQqF0juV7qEsj9Bt3WfVOigwB-TTn8dJw4mlRQQi-b0MCM2Ug1CU9xDt6CenvxYCgoPa96W7V5h2Y8qcG6ZKjs1g72KDkUDWbyfKI4mlG4yzJz4D8epOX2kQ9H_wBKcs/s1600/singin_wrongPage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhknxCpTqRwAdSMQqF0juV7qEsj9Bt3WfVOigwB-TTn8dJw4mlRQQi-b0MCM2Ug1CU9xDt6CenvxYCgoPa96W7V5h2Y8qcG6ZKjs1g72KDkUDWbyfKI4mlG4yzJz4D8epOX2kQ9H_wBKcs/s640/singin_wrongPage.png" width="640" /></a></div>
<br />
サインインページのフォームに例の3点セットを入力。。。。。上手くいきますか??何故かサインインできない??<br />
<br />
ブラウザが示しているURLを確認してみると<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「my.1password.com」</span></div>
<br />
こんな風に書かれていませんか?実はこれ、<span style="color: red;">個人用のアカウント</span>入り口なのです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghxrRyaU-xXd1RJsoAc4gI2UWRy9THzUcrI9u94ivaFwTj_QcJGktxbHasJoN9J0OQIjI36QH-DMsO6unfUf0NHSnarWlWfkK0Gygn-hXjeA2bur6aQ8AHY0eTTFkWVweklDH6kJ5XmwM/s1600/wrongPage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghxrRyaU-xXd1RJsoAc4gI2UWRy9THzUcrI9u94ivaFwTj_QcJGktxbHasJoN9J0OQIjI36QH-DMsO6unfUf0NHSnarWlWfkK0Gygn-hXjeA2bur6aQ8AHY0eTTFkWVweklDH6kJ5XmwM/s640/wrongPage.png" width="640" /></a></div>
<br />
私たちがサインインしようとしている<span style="color: red;">家族用アカウント</span>には、先に自分で登録した家族用アカウントのURLから入らなくてはいけません。少し下にある「have a family or team account?」と書かれているリンクをクリックしてみましょう。家族アカウントURLの入力を手伝ってくれるページへ行けます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlGrH3m-vxzYTGZMo4WvXF6zrQHdzMR6pPivdxbRS2vFrcD7GFLCbneGXhzoRiT-EdT_nMpnZljY-E8sA3Pyd7nemCqxUgHc6wDijd_mO1jv6sWDWEYIySTDzbUY4PocSLwd4C0ryb_zc/s1600/familyacc_entrance.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlGrH3m-vxzYTGZMo4WvXF6zrQHdzMR6pPivdxbRS2vFrcD7GFLCbneGXhzoRiT-EdT_nMpnZljY-E8sA3Pyd7nemCqxUgHc6wDijd_mO1jv6sWDWEYIySTDzbUY4PocSLwd4C0ryb_zc/s640/familyacc_entrance.png" width="640" /></a></div>
<br />
もちろん、ブラウザに直接URLを書き込んでサインインページへ行くこともできます。サインインURL忘れちゃいましたか?先に印刷したEmergency Kitを引っ張り出しましょう。<br />
<br />
というわけで、サインインページはブラウザのお気に入り等に入れておくと良いでしょう。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVW3WqbNnBW-Zr1cZoF-PmsVL8zKVjKtm9dux3QsZgfUnMxCL5XU6W51xz2Vvm_PEtvgCY_ub_mHIFZPqSJI6hbatTva1DVttOOYKPhxf6Pi4wH-gZb2VCSsuDT0y5xwTF3MJpQYBF39s/s1600/rightsininpage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVW3WqbNnBW-Zr1cZoF-PmsVL8zKVjKtm9dux3QsZgfUnMxCL5XU6W51xz2Vvm_PEtvgCY_ub_mHIFZPqSJI6hbatTva1DVttOOYKPhxf6Pi4wH-gZb2VCSsuDT0y5xwTF3MJpQYBF39s/s640/rightsininpage.png" width="640" /></a></div>
<br />
<h4>
Admin Consoleからメンバーを招待</h4>
<br />
サインインしたら、右上のAccountNameの場所をクリックしてメニューを開き「Admin Console」を選択し、管理用ページへ行きます。<br />
<br />
このページで、グループの様々な管理を行います。上に並んでいる項目メニューをクリックすることで、各ページを移動できます。適当に見回した後、<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「Invitations(招待)」</span></div>
<br />
をクリックしてページに移動します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3YYMHXXl7dlCo7s887gAoxzbQfktxzY3XUnox59OsJcOnSO22fHC-bHNY3ZKC53lv-oZYutmsID83K8pP0OcKar8A_w2kBSIS3QhCAshshhK99tzqtn4N2wAd8cySg22bqSfUN-S95JY/s1600/invitationsPage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3YYMHXXl7dlCo7s887gAoxzbQfktxzY3XUnox59OsJcOnSO22fHC-bHNY3ZKC53lv-oZYutmsID83K8pP0OcKar8A_w2kBSIS3QhCAshshhK99tzqtn4N2wAd8cySg22bqSfUN-S95JY/s640/invitationsPage.png" width="640" /></a></div>
左上の青いプラスボタンをクリックしましょう。招待者にメールを送るためのメールアドレス入力用のダイアログが出てきます。あなたが招待したい家族のメールアドレスを入力して、「Send Invitations」ボタンをクリックします。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2g8St1IEYG8PfijbIaHksdF2EVivH6VhVKE26jBqNuja9AR1LbAL7YMEhib5Vf8A5rdQTJMyvMyUeV4cbVWlIClwLfCSA2-2e3NrRAtAOIXYfUy4HaO5rGXyk17Bq-amBHKx3FzfDo4/s1600/invmail_part.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV2g8St1IEYG8PfijbIaHksdF2EVivH6VhVKE26jBqNuja9AR1LbAL7YMEhib5Vf8A5rdQTJMyvMyUeV4cbVWlIClwLfCSA2-2e3NrRAtAOIXYfUy4HaO5rGXyk17Bq-amBHKx3FzfDo4/s400/invmail_part.png" width="400" /></a></div>
これで、招待メールが送られます。<br />
ダイアログが消えると、招待中の人の一覧が表示されるようになります。この表示は、招待された人がアカウント作成作業を終えるまで表示されます。これが表示されている間に招待を取りやめたくなったら×ボタンを、「resend」ボタンで招待メールを再度送れます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzSiRBhF4Sh_rJg6uSg_oOYMajqRy__6Ycnf6pKxbIS8rIumfUQCLJHEq271Mw3Op4mv0WbMa0D1gnBmmqmEQ0gX1yO6J7XvCTtsjJ_ZdIznE7D5Jf-Z563RE1lWuTQk8V9URu39nn5as/s1600/invconsole.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzSiRBhF4Sh_rJg6uSg_oOYMajqRy__6Ycnf6pKxbIS8rIumfUQCLJHEq271Mw3Op4mv0WbMa0D1gnBmmqmEQ0gX1yO6J7XvCTtsjJ_ZdIznE7D5Jf-Z563RE1lWuTQk8V9URu39nn5as/s640/invconsole.png" width="640" /></a></div>
<br />
<br />
<h4>
招待されたメンバーのアカウント作成</h4>
では、招待された人のメールアカウントを確認しましょう。<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOoR9kIQ3h1HmIJu2bgDaWrOsEal08ESEGOFp1BZxiejx4qUqoGfsMr35sXHVKoFUdYapIf3004AdEnX3DtFmxMhFqPZ4x48XrCfqfGhtXQ3tCeSWTeyOaVEP9kii9PgUR1_AJVolEA6Y/s1600/invmembermail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOoR9kIQ3h1HmIJu2bgDaWrOsEal08ESEGOFp1BZxiejx4qUqoGfsMr35sXHVKoFUdYapIf3004AdEnX3DtFmxMhFqPZ4x48XrCfqfGhtXQ3tCeSWTeyOaVEP9kii9PgUR1_AJVolEA6Y/s640/invmembermail.png" width="640" /></a></div>
<br />
こんなメールが来ているはずです。<br />
リンクをクリックすると、メンバーアカウント作成用のページになります。<br />
このメンバーアカウントの作成手順は、上述の「メンバーとしてのアカウント設定」とほぼ同じです。<br />
<br />
<ol>
<li>名前の登録</li>
<li>シークレットキーの保存</li>
<li>マスターパスワードの登録</li>
<li>サインイン</li>
<li>Emergency Kitの保存と印刷</li>
</ol>
<br />
を順に行います。違いは、管理者ではないので支払の設定が無いところだけです。ですから、先の手順通りに作ればOKです。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioGwi_FMT2SZTHnQCyfdZ2rq4x4WHn1eKovY2wUYKA3JSLieLoX1epBsAsXIkdEwgN_3HMVtex24OFGcobteUKedqtEqVl8RDwCVItMthZvx-refHAdbjkfz5p5zLv_1e1qiWuzX38hSA/s1600/normalmenber.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioGwi_FMT2SZTHnQCyfdZ2rq4x4WHn1eKovY2wUYKA3JSLieLoX1epBsAsXIkdEwgN_3HMVtex24OFGcobteUKedqtEqVl8RDwCVItMthZvx-refHAdbjkfz5p5zLv_1e1qiWuzX38hSA/s640/normalmenber.png" width="640" /></a></div>
これで、完了。一般メンバーは管理者権限のあるメンバーに比べて、メニューがシンプルです。<br />
<br />
<h4>
管理者による承認作業</h4>
<br />
最終的にメンバーとして確定するには、管理者による承認が必要です。<br />
<span style="color: red;">管理者アカウント</span>でサインインし、「Admin console」から「Family Members」ページに入って下さい。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSSDof5JThZHItZGlZVePmirn3i3i724Kvd_Qq3mAf_enaQKyWRqB_nI-y9sIiioB15NdnP-x9q3QpstQE2GR0uixLykIGMh56pyBSud8iCuMeFvynhC-nAGLDPG6AB1ohaRIvk10m4Wc/s1600/2017-04-28+20.28.39.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSSDof5JThZHItZGlZVePmirn3i3i724Kvd_Qq3mAf_enaQKyWRqB_nI-y9sIiioB15NdnP-x9q3QpstQE2GR0uixLykIGMh56pyBSud8iCuMeFvynhC-nAGLDPG6AB1ohaRIvk10m4Wc/s640/2017-04-28+20.28.39.png" width="640" /></a></div>
<br />
この「Family Members」ページでは、このファミリーアカウントのメンバーのステータス一覧を見ることが出来ます。<br />
<br />
<ol>
<li>First Name 名前</li>
<li>Last Name 苗字(ファミリーネーム)</li>
<li>Email メールアドレス</li>
<li>Laset Access 最終アクセス日時</li>
<li>Joined 参加日</li>
<li>Role 持っているメンバー権限の種類</li>
<li>Status 状態</li>
</ol>
<br />
スクリーンショットでは上の段「shunsk」が、一番目に登録した管理者権限を持ったメンバー、下の段の「tarou」が今招待して、アカウント作成作業を済ませたばかりのメンバーです。<br />
<br />
Roleの項目をみるとshunskは「Family Organizer」で管理者であることが分かります。一方、tarouは「Family Member」で、一般メンバーであることを表しています。<br />
<br />
次にStatusの項目をみるとshunskは「Active」ですが、tarouは「Pending」になっているのが分ります。これは、管理者によってまだ認証されていないことを表しています。なので、メンバーを招待して、その人がアカウントの作成が終わったら、管理者はすぐに承認してあげましょう。<br />
<br />
「Admin Console」の「Invitations」へ移動します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLzNq6S9C3wbEicQARkdfjrUuxzxAy76gY5tW7lar2rPnSCRcvaVP3E1cFVYjqvfRlW095P-SyVTQp-EbjIMUg-phj2QZSbXsE2WzkaSJC1Qe2YsS1-YWEy3NLVkUkks7bEf3k_pM0fSc/s1600/confirm_mem.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLzNq6S9C3wbEicQARkdfjrUuxzxAy76gY5tW7lar2rPnSCRcvaVP3E1cFVYjqvfRlW095P-SyVTQp-EbjIMUg-phj2QZSbXsE2WzkaSJC1Qe2YsS1-YWEy3NLVkUkks7bEf3k_pM0fSc/s640/confirm_mem.png" width="640" /></a></div>
<br />
右側に承認待ちのメンバーの一覧が表示されます。各メンバーの右側の「Confirm」ボタンを押せば、そのメンバーがグループに参加する事を最終的に承認します。<br />
<br />
承認しても良いメンバーの「Confirm」ボタンをクリックして承認しましょう。もし、未承認メンバーが複数人いて一括承認したい場合は「Confirm All」しましょう。<br />
<br />
承認作業を終えたら「Family Members」ページで、新メンバーのステータスが「Active」になっていることで、承認されたことが確認できます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsXUFqsmfWyREMwOV6pbvlqgwSCB_Gf-2Yw9jjsCju1146qOdiie9qrQbIE_ov1lYWVym2rClvOBMIXX_WApVOJmpwk9osnMGx4lW3MdRaDEyuVGzY2sVynQCoBDGDcwBpeb-3Rxh5sr0/s1600/check_status.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsXUFqsmfWyREMwOV6pbvlqgwSCB_Gf-2Yw9jjsCju1146qOdiie9qrQbIE_ov1lYWVym2rClvOBMIXX_WApVOJmpwk9osnMGx4lW3MdRaDEyuVGzY2sVynQCoBDGDcwBpeb-3Rxh5sr0/s640/check_status.png" width="640" /></a></div>
<br />
これで、家族グループへの新メンバー追加が完了しました。<br />
<br />
<h3>
いよいよ、アプリに紐付け!</h3>
<br />
さて、ここまでで各メンバーのアカウント作成が完了しました。<br />
<br />
サブスクリプション版1Passwordの使い方は、ここまでで設定してきたアカウント情報である3点セット+サインインULR、即ち、<br />
<ul>
<li>SIGN-IN ADDRESS(サインイン用のURL)</li>
<li>EMAIL ADDRESS (サインイン用のEmail)</li>
<li>ACCOUNT KEY(サインイン用のSecret Key)</li>
<li>MASTER PASSWORD (サインイン用のパスワード)</li>
</ul>
そう、Emargency Kitに書かれているこれらの情報をアプリ側に設定する事で行います。<br />
<br />
アプリのダウンロードは色んなところから出来ますが、とりあえずは1PasswordのWebサイト内にある以下のページ経由でダウンロードできます。<br />
<a href="https://1password.com/downloads/">https://1password.com/downloads/</a><br />
<br />
<br />
<h4>
iPhone</h4>
まずは、iPhoneです。アプリはインストールできてますかー?<br />
<br />
1Passwordアプリを起動したら、下段のメニューで「設定」をタップして、設定ページへ行きます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqV4n9XkR8XajaJFkhYngsMmVbZ7KZM-rmu1aCZlMbpIf8qP1vVhHB_N5smn8luIhjpQRZtgKGsQWC1aQqTclkhDKgv6wYs9Y6fr2hDnOL82T3icS4zPMcPQIljJ85y40xpTlJUEnS5EE/s1600/settingtab_iphone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqV4n9XkR8XajaJFkhYngsMmVbZ7KZM-rmu1aCZlMbpIf8qP1vVhHB_N5smn8luIhjpQRZtgKGsQWC1aQqTclkhDKgv6wYs9Y6fr2hDnOL82T3icS4zPMcPQIljJ85y40xpTlJUEnS5EE/s640/settingtab_iphone.png" width="359" /></a></div>
<br />
<br />
設定ページの上の方にある「1Passwordアカウント」をタップしてアカウント設定のページに行きます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUCcOFRN1kDdhRzD4xC1xnC1x3Tc2MpxQhKxudO73tFMKOq2Bq7rnOZM-BAEoeunvLUfMU_AVJDCB5Xzz0tQuv1ITzp7Eh7-fyWZOxHzMLcBWyLWi_lWz7mXtUeu0vTl-38ZMo38n2RlY/s1600/accountstab01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUCcOFRN1kDdhRzD4xC1xnC1x3Tc2MpxQhKxudO73tFMKOq2Bq7rnOZM-BAEoeunvLUfMU_AVJDCB5Xzz0tQuv1ITzp7Eh7-fyWZOxHzMLcBWyLWi_lWz7mXtUeu0vTl-38ZMo38n2RlY/s640/accountstab01.png" width="358" /></a></div>
<br />
<br />
ここまで読んできたあなたは、ちゃんとアカウントを持っています。「Add Existing Account」をタップして、サインインページへ行きます!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8LddEYHsgiO5dkpcD0sz4XiSFtjjUaOA6rgdKqjBKfPsEjQh3IMwW3a13fMd1mf3MIbY784OZ00DtiV-f_habO7diNYovdS6SavjNLXqfwxnNSIqf3DJNGIsuToDzuBWAZ-6EDAMS7I0/s1600/accountstab03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8LddEYHsgiO5dkpcD0sz4XiSFtjjUaOA6rgdKqjBKfPsEjQh3IMwW3a13fMd1mf3MIbY784OZ00DtiV-f_habO7diNYovdS6SavjNLXqfwxnNSIqf3DJNGIsuToDzuBWAZ-6EDAMS7I0/s640/accountstab03.png" width="480" /></a></div>
<br />
さて、サインイン用のページでは、下の方にいつもの3点セット+サインインURLを書き込む場所があります。当然、ここに手で書き込んでも結構ですが、、、<br />
<br />
<br />
今、手元に「Emergency Kit」ありますよね?<br />
その一番下にQRコード(正方形の幾何学模様になってるやつ)があります。これを、1Passwordでは<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「Setup code」</span></div>
と呼んでいます。<br />
これを使うと、新しいデバイスへのアカウント登録の時、ちまちました入力作業が無くなります。<br />
<br />
「Scan Account Details」と書かれている部分をタップすると、カメラが起動するので、そのカメラでSetupCodeを読み込みましょう!!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk4B0MGgcRdd_Yer43tN12ioMV8I4u7tZDZ_M1k12emyHWlGBalKJw03KnzaKNRIuuGWu4vW3Bi0l86XGWVDAg6zBqNM2Hw7UScNsgP-e22i0qtUsuU_U7ZR52FmUw7W2Tb2l1P668MWI/s1600/targetAtCode_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgk4B0MGgcRdd_Yer43tN12ioMV8I4u7tZDZ_M1k12emyHWlGBalKJw03KnzaKNRIuuGWu4vW3Bi0l86XGWVDAg6zBqNM2Hw7UScNsgP-e22i0qtUsuU_U7ZR52FmUw7W2Tb2l1P668MWI/s640/targetAtCode_001.png" width="468" /></a></div>
<br />
<br />
マスターパスワード以外の部分を入力してくれます。<br />
あとは、長い付き合いになるマスターパスワードを入力して「サインイン」をタップです。<br />
<div>
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj9L8NcJr7k9bsbI6wB-kNX779ArEJ4mq4iOugdE4XpaHx1i1aR6bzivRtQKliq1dr9uCYPkE46ZBkyCQpOe3kGy45NzhBX2h70F1vxSh0a6hxLCB1F1ulp0rKnBuSs6W3U8by4_Aq_h8/s1600/accunttab004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj9L8NcJr7k9bsbI6wB-kNX779ArEJ4mq4iOugdE4XpaHx1i1aR6bzivRtQKliq1dr9uCYPkE46ZBkyCQpOe3kGy45NzhBX2h70F1vxSh0a6hxLCB1F1ulp0rKnBuSs6W3U8by4_Aq_h8/s640/accunttab004.png" width="536" /></a></div>
<br />
これで、アプリのサブスクリプション版への紐付けが完了です!<br />
<br />
<h4>
Windows</h4>
もう一つ、Windows版もメモして見ます。<br />
<br />
Windows上でブラウザを使って1Passwordにログインし、メニューから「Get the Apps」を選択してみましょう。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLJMWWLMJPTd4WZhs58afxqBA2ZepMF93hk9ywops5L8eq9DQUPt2fHijNnek4Qx0y1VKI01fDCNHLz40T6CyxOOmTsdue4iYm-X-4uMex8CtJgtgukDbqsdvAdF-H7hNN8v3P6Gh9GXg/s1600/GetAppWin001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="540" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLJMWWLMJPTd4WZhs58afxqBA2ZepMF93hk9ywops5L8eq9DQUPt2fHijNnek4Qx0y1VKI01fDCNHLz40T6CyxOOmTsdue4iYm-X-4uMex8CtJgtgukDbqsdvAdF-H7hNN8v3P6Gh9GXg/s640/GetAppWin001.png" width="640" /></a></div>
<br />
<br />
この「Get the Apps」のページには、各デバイス用のアプリを入手できるリンクがあるほかに、「Emergency Kit」にあった、「Setup Code」や3点セットが表示されます。<br />
まだ、アプリをインストールしていないなら、ページのリンクからWindows用の1Passwordをインストールして下さい。<br />
<br />
インストール出来たら、早速アプリを立ち上げてみましょう。サインインを促す画面ではじまります。ここでは当然、サインインURL+3点セットを入力すれば使うことが出来ますが、iPhoneのときと同様に、SetupCodeも使うことが出来ます。<br />
<br />
Windowsアプリのサインインの入力フォームの一番上に「Scan Your 1Password Account Code」と書いてある部分をクリックしてみましょう。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlswHBkd79hb0ck9RMk2_i_2KlcyBDK7Jlp6i6zawDfNdC1eas1-xxOdbUtFxO2Q3h0r4IUTr8ndfSMFlDWp1KqTh8_ddz2o4gkgLYMbpwnS2lLO1DGdSkxgr4tVn6APxobsl5D-5Xtjs/s1600/windowsSingin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="438" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlswHBkd79hb0ck9RMk2_i_2KlcyBDK7Jlp6i6zawDfNdC1eas1-xxOdbUtFxO2Q3h0r4IUTr8ndfSMFlDWp1KqTh8_ddz2o4gkgLYMbpwnS2lLO1DGdSkxgr4tVn6APxobsl5D-5Xtjs/s640/windowsSingin.png" width="640" /></a></div>
<br />
メニューが現われるのが確認できます。メニューには「From clipboard」という選択肢があるので、これを使ってみることにしましょう。<br />
<br />
上で見たブラウザでサインインしている1Passwordの「Get the Apps」のページにあるSetup Codeを使います。「Get the Apps」ページへ行ったら、SetupCodeの上で右クリックし、出てくるメニューから「画像をコピー」を選択します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSyrD5LXEcNY_Yk7ldk2eeqDnBDjGymVSkRwC9vQUav4K4JEz-2kXvRdG843zyTZs_tAk7lDTDEbu8MVvopHhyphenhyphenwMGej_xHhL603lFGzzryLGeJrcpNBabC6hCZU7qiB_3Jwqvd8976wA4/s1600/clipcode001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSyrD5LXEcNY_Yk7ldk2eeqDnBDjGymVSkRwC9vQUav4K4JEz-2kXvRdG843zyTZs_tAk7lDTDEbu8MVvopHhyphenhyphenwMGej_xHhL603lFGzzryLGeJrcpNBabC6hCZU7qiB_3Jwqvd8976wA4/s400/clipcode001.png" width="400" /></a></div>
<br />
<br />
これでクリップボードに「SetupCode」がコピーされています。この状態で、Windowsアプリの「<span style="color: red;">Scan Your 1Password Account Code</span>」をクリックして、出てきたメニューから「<span style="color: red;">From clipboard</span>」を選択しましょう。<br />
<br />
上手くいきましたか?<br />
あとは、マスターパスワードを入力するだけです。<br />
<br />
<br />
<h3>
How do you survive online with all those passwords?</h3>
さて、もう心配いりません。<br />
1Passwordを手に入れたあなた、そして、あなたの家族は、おしゃれにパスワード管理の煩雑さから逃れるとともにセキュアなデジタル生活を送る事ができるのですー!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOytAfSlv4L-wi-PlhyMN0mFdx_pPk6nNaGUtD7jrIihEwS_P7GruwOVWZnZ5H1bBcG6IfwtrsJFsjFuZ-EBK-d83xqOTdbJI5PlssflqcwKnToDRGgonoZnssZJS9B6xbsK7oMLUckx4/s1600/DSC01745.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOytAfSlv4L-wi-PlhyMN0mFdx_pPk6nNaGUtD7jrIihEwS_P7GruwOVWZnZ5H1bBcG6IfwtrsJFsjFuZ-EBK-d83xqOTdbJI5PlssflqcwKnToDRGgonoZnssZJS9B6xbsK7oMLUckx4/s640/DSC01745.jpg" width="640" /></a></div>
<br />
<br />
<br />
<br />
<div id="UMS_TOOLTIP" style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; cursor: pointer; left: -100000px; position: absolute; top: -100000px; z-index: 2147483647;">
</div>
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-78505220094401186882016-07-04T20:45:00.000+09:002017-05-05T15:48:32.236+09:00初心者こそ、お洒落でvimらしい使い方を学ぼう!<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAL48JDfNtvhBqecP4ihhB05jeB-DP6Lyc75Uj6_be4Umhf4_xBDUR5qNk8NGb0j5pemnpMtaHQNrod4EF6iKK5eSSLXHLKda5ScJdjnDB9llBdxY7qH8lHFYJpsEEcLl58foEHRUZNCc/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-07-04+19.34.22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="359" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAL48JDfNtvhBqecP4ihhB05jeB-DP6Lyc75Uj6_be4Umhf4_xBDUR5qNk8NGb0j5pemnpMtaHQNrod4EF6iKK5eSSLXHLKda5ScJdjnDB9llBdxY7qH8lHFYJpsEEcLl58foEHRUZNCc/s640/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-07-04+19.34.22.png" width="640" /></a></div>
<br />
<br />
vimをvimらしく使っていますか?<br />
<br />
<a name='more'></a><br />
<br />
<br />
ネットで「vimの使い方」と検索すると、vimにはモードがある事を教えてくれたり、カーソル移動やよく使う編集のためのキーバーインドの一覧をまとめてくれていたりするページが沢山ヒットします。<br />
<br />
それらを読んで、実際に使ってみて<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「うはぁ、vimって超便利!もう手放せないぜ!」</span></div>
<br />
って、なりましたか?<br />
<br />
私の場合は、正直、「何これ?モード移動とか超面倒クセーーー」って感じでした。<br />
<br />
<h4>
vi 対 Emacs どっちが最強?!</h4>
<div>
とか、言われているはずなのに、普段、Emacsを使っていた私にとっては、vimの何処が良いのか、さっぱり分かりませんでした。</div>
<br />
私は、別にEmacs信奉者であるというわけでは無く、どちらかと言えば、マニアックな操作感を持つvimに常に魅力を感じていて、使えるようになりたいなぁと憧れさえ持っていました。<br />
<br />
なので、偶にネットでvimの使い方を検索してみたり、vimtutorを試してみたりしていたのですが、既に慣れているEmacsを捨ててまで、「わざわざ」普段の設定ファイル編集等をvimでやってみようという気にはならず、結局、あまり使わないとキー操作もすぐ忘れてしまうというといサイクルを何度となく繰り返してきました。<br />
<br />
しかし、世界を二分するエディタ戦争の当事者であるviが、普通に考えてこんなに単にめんどくさくて使う気になれないエディタなわけはないとずっと思っていました。きっと、「慣れれば」便利なんだろうとか、「柔軟なカスタマイズを上手くやれば自分にあった操作ができるようになるんだろう」とか、思っていました。<br />
<br />
結構、そんな人達って多いんじゃないのかなぁ?と思ったりします。<br />
そこで、そんな過去の私と似たあなたのために、今回のメモではvimを触ることが超楽しくなる、おしゃプロ流「vimの使い方」をメモしたいと思います。<br />
<div>
<br />
実は、ある事を癖づけて、ある事を意識するだけで、vimの感覚が簡単だけど劇的に変わります。</div>
<div>
<br /></div>
<h3>
「巷の」vimの使い方</h3>
さて、vimを全く触ったことが無い方は、まずは、「<a href="http://dotinstall.com/" target="_blank">ドットインストール</a>」の『<a href="http://dotinstall.com/lessons/basic_vim" target="_blank">vim入門</a>』に挑戦してみましょう。macな人なら、vimは既にシステムに入っているので、すぐに挑戦できます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQiDnXg6ttXJEOMrHO8Jxfvv4ODGD8JUIKP0tHKvnlds118kRvw-d_R7Ki-uVCo0x0MGc7HKwoCKXyQ4twS0uwk2jNVuiIM9SBL65VQfDKfTYxxITaylm6eNtML7JzrBSH-5p6QcqJYj4/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-14+14.28.46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="377" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQiDnXg6ttXJEOMrHO8Jxfvv4ODGD8JUIKP0tHKvnlds118kRvw-d_R7Ki-uVCo0x0MGc7HKwoCKXyQ4twS0uwk2jNVuiIM9SBL65VQfDKfTYxxITaylm6eNtML7JzrBSH-5p6QcqJYj4/s640/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-14+14.28.46.png" width="640" /></a></div>
<br />
色んな事を全て覚える必要はありません。まずは、vimってこんな風に使うんだ!って感覚を体験してください。<br />
<br />
どうです?普通の文字キーでカーソル移動したり、コマンドモードで検索置換したり、なんか凄そうな雰囲気はするんだけれど、実際に使ってみると、モード移動とかめんどくさくないですか??<br />
<br />
また、触ってみて分かる通り、他のエディタでは当然の様に直感的に出来る文字入力と比較して、vimでは、立ち上げた状態でいきなりキーボードを押したとしてもその押したキー通りの入力は出来ません。つまり、「i」という挿入モードに移行するキーを忘れてしまうと、書き込むことさえできないのです。同様に、「Esc」キーでノーマルモードに戻り、「:w」という「コマンド」で保存し、「:q」という「コマンド」で終了出来るということを忘れてしまうと、アプリの終了さえ出来なくなってしまうのです。<br />
<br />
<h4>
巷の「vimの使い方」で書かれている事</h4>
というわけで、巷で紹介されている「vimの使い方」を参考にvimの操作で最低限必要そうな、以下の点を暗記しましょう。<br />
<br />
<ul>
<li>「ノーマルモード」と「入力モード」があると言うことを把握</li>
<li>「入力モード」に入るための「i」</li>
<li>「ノーマルモード」に戻るための「Esc」</li>
<li>保存するための「:w」</li>
<li>終了するための「:q」</li>
</ul>
<br />
そう、最低限、これを覚えておけばテキストファイルを編集できます。<br />
<br />
試しにvimを使ってテキストファイルを作成してみましょう。<br />
zshの設定ファイルのダミーを例に作ってみます。<br />
<br />
ターミナルから次のようにしてvimを起動してみます。<br />
<br />
<pre class="commandline">% cd ~/
% vim zshrc_dummy
</pre>
<br />
起動したら、以下のテキストを入力してみて下さい。上記の最小限のキー操作を頼りに打ち込んでも良いですし、ドットインストールや巷の「vimの使い方」での紹介を覗き見ながら、便利そうな編集キーを使ってみても良いです。<br />
<br />
入力が終わったら保存して、終了までしちゃいましょう。<br />
<br />
<pre class="commandline"># -*- shell-script -*-
# My zsh config file
###########################
# alias
###########################
alias ls='ls -FG'
alias la='ls -a'
alias ll='ls -l'
alias lla='la -l'
</pre>
<br />
出来ましたか?<br />
<br />
最低限の暗記事項さえ覚えておけば、テキストファイルは作れます。<br />
<br />
まず、vimで文字の入力を行うためには、「i」キーで「入力モード」に入ります。「入力モード」に入ってしまえば、キーボードを打てばその文字が入力されるし、カーソルキーでカーソルを動かせますし、バックスペースを押せば字が消えます。普段、ワード等で字を書いているのと同じように、文字を入力できるし、削除も出来ます。<br />
<br />
そして次に、全部打ち終えたら、「Esc」で、「ノーマルモード」に戻り、そこで、保存のため「:w」と打ち込み、更に終了の為に「:q」と打ち込めば完了です。<br />
<br />
しかし、そんな入力の方法では、ノートパッド以下の操作性です。<br />
<br />
普通、上の様な設定ファイルを打つ時には、「###############」の部分や「alias」の部分など、コピペしたくなりますよね。だから、多分、コピーがしたくなったら、ノーマルモードに戻り、コピーコマンド、ペーストコマンドを使います。<br />
そして、入力モードにまた戻って、続きを書きます。<br />
<br />
巷の「vimの使い方」のページにはコピーコマンドでどうやって単語を選択するかや、もしかしたら、ビジュアルモードでの範囲の選択の仕方など懇切丁寧に書いてくれている事でしょう。<br />
<br />
で、どうですか?<br />
vim使ってみて楽しいですか??<br />
<br />
<h4>
巷の「vimの使い方」で<span style="color: red;">書かれていない</span>事</h4>
どの「vimの使い方」のページでも「i」で「入力モードに入る」、「Esc」で「ノーマルモードに入る」という事は必ず書かれていますが、それらの<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「モードをいつ切り替えるのか」</span></div>
<br />
ということについては、ほとんど書かれていません。<br />
<br />
あなたがやった先のテキスト入力の事を思い出してください。<br />
<br />
初めにノーマルモードから入力モードに切り替えるのは、誰もが同じで「書こうと思った時」です。なので、一番初めの文字「#」を打つ時に「i」キーで「入力モード」に入ったと思います。<br />
<br />
では、いつ「ノーマルモード」に戻ったか覚えていますか?<br />
<br />
頑張って、最後まで入力した後、保存のコマンドを打つためにノーマルモードに戻りましたか?<br />
それとも、「##################」をコピぺするために、ノーマルモードに戻って、行削除コマンド、貼り付けコマンドを駆使した時でしょうか?<br />
<br />
実は、vimを使いこなしている人は、普段常に「ノーマルモード」にいます。どういう事かと言えば、「入力モード」にいるのは、まさに字を打っている瞬間のみで、入力する手が止まった時には、すぐさま「ノーマルモード」へ切り替えます。<br />
<br />
vim以外のエディタは、アプリを立ち上げた瞬間から、編集画面でキーをタイプすれば、そのまま文字が書き込めます。つまりは、いつでも「入力モード」になっているようなものなので、そこにいることが「<span style="color: red;">当たり前</span>」だと感じ、一旦、「入力モード」に入るとそこに留まり続けます。<br />
一方、vimにとっては、「入力モード」にいる瞬間は「<span style="color: red;">特別な</span>」瞬間なのです。<br />
<br />
なので、一番初めの問いの答えとしては、vimの使い方を知っている人ならば、少なくとも1行目の行末でノーマルモードに戻っていると思われます。もし、短ければ、1ワード打って、ノーマルモードに戻ったかもしれません。<br />
<br />
<h3>
vimで初めに覚えるべき指癖</h3>
さて、上の話だと、vimっぽい人は、モード切り替えをめちゃめちゃ頻繁にしているように思えますが、もともとモード切り替えめんどくせーとか言ってたのに、そんなに頻繁にやると更にめんどくさくなるんじゃないんでしょうか?<br />
<br />
vimをvimらしく使う方法を実践して、めんどくさいかどうかを体験してみましょう。<br />
<br />
<h4>
いつ、どうやってノーマルモードへ戻るのか</h4>
私がメモする一番目の「vimの使い方」は、<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「Ctrl + c」をカチャカチャする</span></div>
<br />
です。<br />
<br />
本来、「ノーマルモード」に入るためのキー操作は「Esc」キーで行いますが、ホームポジションから遠いのでカチャカチャするには不向きです。そこでまずは「Esc」の代わりに「Ctrl + c」キーを使ってみましょう。(ここで、「Esc」と「Ctrl+c」の効果には異なる部分があります。その違いについて丁寧にコメントを投稿していただいたので、是非この記事の最後のコメント欄もご覧ください。)<br />
<br />
さて、しかしながら、ここではまず、「カチャカチャ」する事自体が超重要なのです。いつでも暇さえあれば貧乏ゆすりレベルで、このキーを押して結構です。<br />
<br />
要は、気が付けば無意識に<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「ノーマルモード」にいる</span></div>
<br />
ようにします。<br />
<br />
では、実際にもう一度例の設定ファイルを打ってみましょう。<br />
<br />
<pre class="commandline">% cd ~/
% vim zshrc_dummy002
</pre>
<br />
新たなファイルを作成します。<br />
<br />
まず、最初の2行を打っていきます。<br />
<br />
立ち上げた状態だとvimは「ノーマルモード」にいます。この状態でも更に「俺はノーマルモードにいるんだ!」と自己主張するため、ウオーミングアップとして「Ctrl + c」をカチャカチャやってみましょう。<br />
<br />
一行目は<br />
<br />
<pre class="commandline"># -*- shell-script -*-</pre>
<br />
です。今から「1行目を入力するぞ!と」決意できたら、「i」キーを押して「入力モード」に入り、この1行を一気に入力し、最後の「-」文字を入力したら、すぐさま「Ctrl + c」します。<br />
<br />
つまり、<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">行末ではリターンキーで改行を入れることなく</span></div>
<div style="text-align: center;">
<span style="font-size: x-large;">「ノーマルモード」に戻る</span></div>
<br />
事に慣れます。<br />
<br />
「ノーマルモード」に戻ると1行目の行末文字の上にカーソルがあるはずですが、どうやって次の行を入力するのか。新しい行を作って書き始める時は「o(小文字のオー)」で「入力モード」に入ります。<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">次行は「o」キーで書き始める</span></div>
<br />
<br />
<pre class="commandline"># My zsh config file</pre>
<br />
入力モードに入ったら、一気に入力し最後の「e」の文字を打ったらスグに「ノーマルモード」へ戻ります。<br />
<br />
まずは、行末で常にノーマルモードへ戻る癖をつけます。「Ctrl+c」が指癖になっていると、モード切り替えの操作自体は、「面倒」と認識することがなくなります。<br />
何故かといえば、1行単位が入力時の思考の区切りになっていること、そして、現実的な操作としては、1キーで癖になってしまっていることが合わさると、切り替えが当たり前の感覚になってきます。<br />
<br />
<h4>
ノーマルモードでウロウロする</h4>
さて、2行目を打ち終えた、あなたは今、「ノーマルモード」にいます。<br />
今のところ、文字を入力していない瞬間は、常に「ノーマルモード」にいる事を実践できています。<br />
<br />
もう一つの指癖を付けましょう。というよりも、キーボードに手を置いているなら、既にあなたの右手の人差し指は「J」キーのポッチを常に撫でていますよね。同様に「K」キーには中指が、「L」キーには薬指が乗っているはずです。<br />
<br />
vimでは、これに「H」キーを加えた「HJKL」の4キーでカーソルの移動が出来ます。有名ですよね。<br />
<br />
しかし、実際vimを使い始めてみて、ちゃんとHJKLを使っていましたか?<br />
一旦入力を始めて「入力モード」に入りっぱなしになっていると、カーソルを動かすために<span style="color: red;">わざわざ</span>「ノーマルモード」に戻ってくる必要があります。<br />
<br />
しかし、今はどうでしょう?何かしようと思いつく時には、既に「ノーマルモード」にいるのです。<br />
そして、実は、「HJKL」キーは、ノーマルモードに居る間は、カーソルが動かせるというよりも、落ち着きなくカーソルをウロウロと動かしながら、「さて、何書くかなぁ~」と思考を巡らせるのが、「vimの使い方」なのです。<br />
<br />
どうです、少しvimっぽさを実感出来てきましたか?<br />
<br />
<h3>
全てはノーマルモードから始まる</h3>
さて、なぜ、常にノーマルモード、ノーマルモードというのかといえば、vimは全てがノーマルモードから始まるように作られたエディタだからです。<br />
<br />
<h4>
編集は小さな思い付きを実現する繰り返し</h4>
先ほどやってもらったように、何かを書き写す場合、つまり、既に入力する文字列が決まっていて、それを入力するだけなら、編集作業中に何かを考えることはありません。正確に入力する集中力さえあれば、初めから終わりまで単に指を動かして文字を入力するだけです。<br />
<br />
しかし、現実に設定ファイルを自分で作成する場合には、初めから終わりまで、一気に打ち込んでいくことはありません。頭で思いついた事をテキスト上に表現し、また考えて。。。ということを繰り返します。また、この時、編集位置も、初めから終わりまで順序良く一気に行くこともありません。<br />
<br />
あなたが自分でzshrcを書きはじめようとする時の事を想像してみましょう。<br />
<br />
vimを立ち上げ、画面に向かいながら、「なんてかこうかなぁ? まぁ、設定ファイルだし、zsh config fileとか初めに書いておこう」と思ったりするでしょう。<br />
<br />
頭の中に浮かぶのは、とても小さな見通しです。<br />
この小さな思い付きを実際にエディタ上で書き込みます。<br />
<br />
これを書いてはみたものの、「あ、待てよ、自分の設定ファイルだし、My を付けた方がいいか」とか思いつきます。<br />
これも小さな思い付きです。<br />
<br />
<h4>
思考とvim</h4>
このように良く見てみると、編集作業と言うのは小さな編集作業の繰り返しです。そして、vimでの編集というのは、この流れに素直に乗って使います。<br />
<br />
「zsh config file」と書こうと思いつきます。<br />
そこで、「書く事」を実現するために「入力モード」に入り、「zsh config file」という内容を書き込み、その後、この小さな作業の終わりを明示するために「ノーマルモード」に戻ります。<br />
<br />
実際のvimでの操作は次の通り。<br />
<br />
[i]zsh config file[Ctrl + c]<br />
<br />
[]は編集用のキー操作を区別するために入れています。<br />
<br />
次に、先頭に「My 」を書き込もうとと思いつきます。<br />
現在のカーソル位置と、編集位置が異なるので、まず、先頭にカーソルを移動しなければなりません。そして、その位置から「書く事」を実現するために「入力モード」に入り、「My 」という内容を書きこんだら、作業の終了を宣言するために「ノーマルモード」に戻ります。<br />
これも小さな作業ですよね。<br />
<br />
実際のvimでの操作は次の様になります。<br />
<br />
[I]My [Ctrl + c]<br />
<div>
<br /></div>
ここで[I]キーは行頭から「入力モード」に入るためのキーです。<br />
<br />
どうでしょう、思考の流れとvimでの操作、ぴったりとリンクしていませんか?<br />
<br />
<h4>
Undoの範囲</h4>
さて、編集と言うのは小さな編集作業の繰り返しということは分かりましたが、わざわざ「ノーマルモード」に戻るのは何故でしょうか?<br />
思考的には細切れであったとしても、結局、文字入力を続けるなら、ノーマルモードに戻っても結局すぐに入力モードに戻ってくるじゃないか?と思うかもしれません。<br />
<br />
実は、vimでは、この小さな編集単位である「入力モードに入ってからノーマルモードに戻るまで」は、Undoの範囲になります。<br />
<br />
つまり、自分の思考単位とUndo範囲を一致させることが出来るのです。<br />
編集を行い、「ノーマルモード」に戻った時点で「u」キーを押すことで、その行った編集を取り消すことが出来ます。<br />
<br />
まぁ、実は、思考との一致自体にこだわる必要は全然なく、単に、自分の好きな範囲をUndo範囲として決めることが出来るという事です。<br />
そもそも、vim以外のエディタでは、undoの範囲は、自分で決めることが出来ません。<br />
<br />
<h4>
様々な初めの一歩を選択できるのがノーマルモード</h4>
ここで、もう一度、小さな編集単位を思い出してください。<br />
それぞれの編集を行う時、例えば、「書く」という行為を行う時に、実は「何処に」ということがセットになっています。<br />
<br />
連続して入力している時は、たまたま、「現在カーソルがある場所」と「編集を行う場所」が一致しているだけで、先の例でも見たように、現在のカーソル位置と、編集位置が異なる事も普通にあります。<br />
<br />
つまり、小さな編集は「何処に」&「何をする」を実現することになります。<br />
<br />
そこで、vimでは「何処に」を実現するため、先に紹介した「HJKL」を基礎として、カーソルを効率的に移動させるコマンドが幾つもあります。その中でも最も頻繁に使われるのが、行頭にカーソル移動させる「0(数字のゼロ)」と行末にカーソルを移動させる「$」であり、巷のvimの使い方のページでも必ず紹介されているはずです。<br />
<br />
さらに、この行頭、行末へ移動して、何をするかと言えば通常「書く」わけですから、<br />
<br />
「0」(行頭へ移動)+「i」(カーソル位置から入力モードにはいる)<br />
「$」(行末へ移動)+「a」(カーソル直後から入力モードに入る)<br />
<br />
とうのは、よくあるセットだったりします。<br />
これが1つのキーで実現できると更に便利だと思いませんか?<br />
ズバリ、「I」キーと「A」キーで実現できます。<br />
<br />
多分、巷のvimの使い方のページを見たことのある人は、このキー操作のいくつかは、何度も見たことがあると思います。全て入力モードに入るコマンドです。<br />
<br />
<table class="cheetsheet">
<tbody>
<tr>
<th>コマンド</th>
<th>動作</th>
</tr>
<tr>
<td>i</td>
<td>カーソル位置から入力モードに入る</td>
</tr>
<tr>
<td>a</td>
<td>カーソルの直後から入力モードに入る</td>
</tr>
<tr>
<td>I</td>
<td>行頭から入力モードに入る</td>
</tr>
<tr>
<td>A</td>
<td>行末から入力モードに入る</td>
</tr>
<tr>
<td>o</td>
<td>次行を新しく挿入してから入力モードに入る</td>
</tr>
<tr>
<td>O</td>
<td>ひとつ前に行を新しく挿入してから入力モードに入る</td>
</tr>
</tbody></table>
<br />
今まで、同じ入力モードに入るのにこんなにいっぱいあったら覚えられないと思っていませんでしたか?とりあえず「i」だけ覚えておけばいいやって感じじゃなかったでしょうか?<br />
<br />
今までは、常時「入力モード」に入り浸った状態だったので、「何かvimでこんなコマンドあったなぁ。試してみるか?」と思い立った時初めて、「ノーマルモード」に戻ってコマンドを試すという感じじゃなかったでしょうか?確かに非常にめんどくさい。<br />
<br />
しかし、今やノーマルモードから始められる指癖が付き始めたあなたなら、感覚が異なるはずです。「ノーマルモード」にいるあなたは、やりたい事を実現するために、1つキーを押すだけで、全てを始めることが出来るのです。<br />
<br />
vimでは、「ノーマルモード」で頭を使います。まず、何をするかを考えた後、その自分の思いついた小さな編集の事について、どうやったら効率よくまとめられるかも考えます。やがて、考え付いた自分なりの最短の小さな編集計画を、指を動かしてvimのコマンドとして実行します。<br />
<br />
どうでしょう?少し実感出来て来ましたか?<br />
vimは全てが「ノーマルモード」から始まるように作られているのです。<br />
<br />
<h3>
ドットコマンドとかいう神コマンド</h3>
<div>
ここまで、編集作業は小さな編集から成り立っていて、vimでは、これをUndoの範囲として具体的に活用することが出来るという話をしました。<br />
<br />
しかし、この小さな編集単位は、もっと実用的で楽しく使うことが出来ます。<br />
zshrc_dummy002の続きを書いていきましょう。<br />
<br />
いま、2行目の行末「e」の文字の上にカーソルがあると思います。<br />
<br />
まずは、次行に空行を作ります。<br />
vim的にやってみましょう。<br />
<br />
[o][Ctrl+c]<br />
<br />
です。<br />
<br />
次の行は「###################」(#の個数は適当)という飾りです。<br />
そして、その次の次の行に同じ「###################」があります。<br />
<br />
コピーしてくれと言わんばかりの部分ですが、コピーでないvimらしい方法をお見せしましょう。<br />
<br />
まずは、いつものように小さな編集計画をたてます。<br />
今、カーソル行は空行部分にあるので、今回も次の新規行を挿入して入力モードに入りそこに「###################」を書き込めばよいでしょう。<br />
<br />
[o]###################[Ctrl+c]<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitekjWnK50sbtndb4bN7vh8LoMARFDcxZnjGR9hYeNtj_lsjAPFc6bZxph0OSSJ5VMhkTXS54aE75M-2XS2W0npmS7jGTnL6KlAyiIhU69gs7HBCc2DhiChp4rpE4XXG0cEaNcCS7Lqmk/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2016-07-04_19_57_09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="513" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitekjWnK50sbtndb4bN7vh8LoMARFDcxZnjGR9hYeNtj_lsjAPFc6bZxph0OSSJ5VMhkTXS54aE75M-2XS2W0npmS7jGTnL6KlAyiIhU69gs7HBCc2DhiChp4rpE4XXG0cEaNcCS7Lqmk/s640/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2016-07-04_19_57_09.png" width="640" /></a></div>
<br />
これでOKです。飾りが書き込めましたね。<br />
<br />
ここで、<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「.(ドット)」キー</span></div>
を押してください。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4pa2VtAUAL7vIXq6MxcWa1vuWBFxNlzPYEKk-8HHjWzee_9jtrKPdXd0dxdgiqSLNPNsHCkvOlbqODFT4j1Vt1vJ0vq5pE8PjuE8JKZe5vafN9r2_d6mao-OMkdLr7u8yOEOAJGc2Y4c/s1600/sc_2016-07-04_20_00_29_afterdot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="513" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4pa2VtAUAL7vIXq6MxcWa1vuWBFxNlzPYEKk-8HHjWzee_9jtrKPdXd0dxdgiqSLNPNsHCkvOlbqODFT4j1Vt1vJ0vq5pE8PjuE8JKZe5vafN9r2_d6mao-OMkdLr7u8yOEOAJGc2Y4c/s640/sc_2016-07-04_20_00_29_afterdot.png" width="640" /></a></div>
<br />
もう一本、「###################」が、現れましたか??<br />
<br />
この「.(ドット)」コマンドは、直前に行った編集を繰り返してくれるコマンドです。この直前に行った編集とは<br />
<br />
[o]###################[Ctrl+c]<br />
<div>
<br /></div>
<div>
であり、今まで話してきた、小さな編集の事です。</div>
<div>
<br /></div>
コピーなんか目じゃありません!ワンキーで呼び出せるのです。<br />
<br />
もう少し進めてみましょう。<br />
<br />
今、編集画面では<br />
<br />
###################<br />
###################<br />
<br />
と並んだ状態にあり、カーソルは2本目の一番最後にあります。<br />
次の編集は、現在カーソルのある行の1つ上に、新たな行を挿入して入力モードに入り、「# alias」と書き込むことです。<br />
<br />
[O]# alias[Ctrl+c]<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitQfkwOLh94ikyukVhYZmwKCebnD248M17XUtk9YUxoeDVQ6mtbZ5DrIYwkcg5HO8FHGktky_KeNk_Qc6ZECy_hTqkrJk6AVhhVHMDrpwIrrAGE4RVCbl88yC3sS1Tq2LpafOwBwI_gIk/s1600/sc_2016-07-04_20_07_09avobeadd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="513" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitQfkwOLh94ikyukVhYZmwKCebnD248M17XUtk9YUxoeDVQ6mtbZ5DrIYwkcg5HO8FHGktky_KeNk_Qc6ZECy_hTqkrJk6AVhhVHMDrpwIrrAGE4RVCbl88yC3sS1Tq2LpafOwBwI_gIk/s640/sc_2016-07-04_20_07_09avobeadd.png" width="640" /></a></div>
<br />
<br />
こんな感じでどうでしょう。[O(大文字のオー)]は、一つ上に行を挿入してくれます。<br />
これで、小文字のオーや大文字のオーの使いどころが掴めて来たでしょうか?<br />
<br />
さて、もう一度空行です。カーソルが# aliasの行にあるので、「j」キーを押して、一番下の「#############」の行まで下します。この辺りは、何でもかんでも1キーで編集してしまおうとするよりも、無意識に動かす「hjkl」に任せた方が頭が疲れなくて済みます。<br />
<br />
空行を入れてみましょう。もうわかりますよね。<br />
<br />
[o][Ctrl+c]<br />
<div>
<br /></div>
<div>
さて、次です。</div>
<div>
aliasで始まる行が幾つか続いています。</div>
<div>
<br /></div>
<div style="text-align: center;">
<span style="font-size: x-large;">さあ、あなたならどうしますか??</span></div>
<div>
<br /></div>
<div>
そして、今、それを考えているあなた</div>
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">少しワクワクして楽しい気分じゃないですか??</span></div>
<br />
モード移行がめんどくさいとか、キーを覚えるのがめんどくさいとか思っていたのは、過去の話です。<br />
知らないうちに、モード移行はされていて、そんな事は気にならなくなっているはずです。そして、こないだまで、眺めていても覚える気にもならなかったキー操作の一覧の中に、何か面白そうなものは無いか気になり始めているんでは無いでしょうか?<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">[o]alias [Ctrl+c][.][.][.]</span></div>
<br />
なんてどうでしょう?<br />
はじめは、これで十分、はじめのailasに戻って「A」して適当に打っていきましょう。<br />
<br />
もちろん、もっと賢いやり方があるかもしれません。<br />
<br />
しかし、あんまり凝った作戦を練りすぎるのも良くありません。なんせ、目的はテキスト編集ですから。頭に思い浮かんだことを指で動かせる程度で十分。<br />
<br />
今、ワクワクしているあなたは、きっとこのままvimに魅せられ、すぐにもっと賢いやり方を思いついて自然と指も動くようになる事でしょう。<br />
<br />
<h3>
vimを正しく学ぶ</h3>
巷の「vimの使い方」でも良く書かれていますが、vimに慣れるには「vimtutor」は最適です。<br />
みなさんの中には既にやったことある人もいると思います。そして、その時は、つまらなかったり、苦痛だったので、きっとこのページを目にしているんだと思います。<br />
<br />
<pre class="commandline">% vimtutor en
</pre>
<br />
もう一度、やってみて下さい。きっと、楽しいですから。<br />
英語アレルギーでなかったら、英語版でやったほうが楽しいです。日本語版だと編集時に日本語に切り替えたりする作業が余計に入って、ストレスを感じやすいです。<br />
<br />
さて、もう一つは、<br />
<br />
<div style="text-align: center;">
<span style="font-size: x-large;">「<a href="http://www.amazon.co.jp/gp/product/4048916599/ref=as_li_tf_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4048916599&linkCode=as2&tag=suwa0001-22">実践Vim 思考のスピードで編集しよう!</a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=suwa0001-22&l=as2&o=9&a=4048916599" height="1" style="border: none !important; margin: 0px !important;" width="1" />」</span></div>
<br />
という書籍です。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRSdVd7ltrNhhfQ2hEL_9M3LoOLXoY3_i7LoaIPA1WWPD7GMWYgGR50SYqYadQxbnLY66rmXLXUSadka6Qtky85SaRaDyvSrJ57VZYZLmsc4zJSMl8Rf6iReds1k8TKEzq-1JP7RlKvLA/s1600/IMG_0691.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRSdVd7ltrNhhfQ2hEL_9M3LoOLXoY3_i7LoaIPA1WWPD7GMWYgGR50SYqYadQxbnLY66rmXLXUSadka6Qtky85SaRaDyvSrJ57VZYZLmsc4zJSMl8Rf6iReds1k8TKEzq-1JP7RlKvLA/s640/IMG_0691.JPG" width="640" /></a></div>
<br />
<br />
今日、このページで「vimってそうだったんだー」と感じたなら、それはまだまだ片鱗でしかありません。私は、この本で「巷のvimの使い方」で書かれていないvimを知ることが出来ました。vimの本は色々出ていますが、vimその物を正しく学ぼうと思うなら、この一冊は必携だと思います。<br />
<br />
「巷のvim」の解説は、カスタマイズが柔軟でどうのこうの、とか、プラグインの導入がどうのこうのとか、vimscriptがどうのこうのという話で溢れ返っています。<br />
<br />
しかし、そんなややこしい付け足しの話をしなくても、実は既に素のvim自体が、「Emacsと双璧」なのです。</div>
<div id="UMS_TOOLTIP" style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; cursor: pointer; left: -100000px; position: absolute; top: -100000px; z-index: 2147483647;">
</div>
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com2tag:blogger.com,1999:blog-787888621050389020.post-66915711979960045012016-06-02T13:15:00.002+09:002016-07-04T20:47:05.668+09:00Bloggerユーザーですが何か?<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr7CZHODaJhSq9DRF4hj-tYV_x12NxJhPQgdNFRn6Al7_7YiJVQpO8zSTuxwJnKVkxdqzFVomVICHIre4ol8hRoL-IRZfUAoMUKwmEWabtZVxfvEXJG-QoXz-sAPngQRDz28YKF1mKH3Q/s1600/DSC01570.JPG" imageanchor="1"><img border="0" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr7CZHODaJhSq9DRF4hj-tYV_x12NxJhPQgdNFRn6Al7_7YiJVQpO8zSTuxwJnKVkxdqzFVomVICHIre4ol8hRoL-IRZfUAoMUKwmEWabtZVxfvEXJG-QoXz-sAPngQRDz28YKF1mKH3Q/s400/DSC01570.JPG" width="400" /></a><br />
Bloggerは、Googleが運営するブログサービスで世界的にはそこそこ使われているようですが、どうも日本ではあまり人気がありません。
<br />
<a name='more'></a><br />
ブロガーの良い所は、以下のページにまとまっていたりします。<br />
<br />
<a href="http://matome.naver.jp/odai/2140644733270108501" target="_blank">もっと評価されていい最強ブログサービス Blogger</a><br />
<br />
まぁ、私自身、Bloggerを凄く広めたい信者ではないですし、評価されようがされまいがについては、あまり興味はなかったりするのですが、パソコンをごちゃごちゃ触るの好きな人にはBloggerお勧めですよ!と私的には思ったりするのです。<br />
<br />
<h3>
Bloggerは人気が無い</h3>
ブログはそもそも、「誰でもが簡単に」使える事から沢山の人が利用するようになってきた経緯があり、つまりは、ブログを利用する大多数の人は、コンピューターの知識があまりなくても簡単に記事が書けることを期待しているはずなのです。<br />
<br />
Bloggerもブログの開設や、記事の投稿自体はそれほど難しいものではなく、ほぼ「誰もが簡単に」<br />
ブログを書くことが出来ます。<br />
<br />
では、何故、ここまでBloggerを使っている人は少ないと言われるのでしょうか?<br />
<br />
ブログはそもそも「記事を投稿」して「コンテンツを発信」するためのツールであると同時に、ブログは、「私のページ」を作るわけなので、自分らしさを主張するためのページデザイン、つまり「外観でのアピール」も重要な要素になります。<br />
<br />
しかしながら、巷で見かけるBloggerサービスの紹介記事においては、「Bloggerはテンプレートの数が少ない」等、他のブログサービスと比較してデザイン性の弱さが指摘されており、これが不人気の第一の理由じゃないのかなぁ?と思ったりします。つまりは、単純に、一般のユーザーは簡単におしゃれでカッコ良いブログが作りたいが、Bloggerでは無理!ってことなんでしょう。<br />
<br />
さて実は、Bloggerではデザインカスタマイズが「簡単に」は出来ませんが、Webページの根本的なカスタマイズがほぼ何でも出来ます。一方、他のブログサービスでは簡単にできるカスタマイズ以外のカスタマイズは出来ません。つまり出来る出来ないの話だけで言えば、Bloggerのカスタマイズがほぼ無限に可能なので、デザインの豊富さは他のサービスに全然劣っていません。<br />
<br />
しかし、「簡単に」というキーワードは非常に重要です。なぜなら、「簡単に」はできない機能は、大多数の人は結果として「出来ない」のですから、その機能はほぼ無いのと同じなのです。<br />
<br />
<h3>
でも、そんなの関係ねぇっ!</h3>
ここで、自分が「大多数の人」ではなく、「簡単な」事を望んでいない場合、Bloggerに対する巷の評判があてはまらなくなります。そう、私の様に趣味でパソコンを触っていることが幸せな人の場合、「簡単でない事」は逆に、程よい「越えるべき壁」であり、Bloggerは凄く良い!!のです。
<br />
<br />
というわけで、この「簡単でない」Bloggerのカスタマイズをしていく上で、いくつか整理しておくべき知識をメモしてみます。
<br />
<br />
<h4>
ブログの仕組み</h4>
まずはブログというものの大まかな仕組みを頭に入れます。
<br />
<br />
ブログは、(1)記事内容などのコンテンツのデータ部分と、(2)それを表示するためのプログラム部分の二つからなっています。そして、ブログのアドレスにアクセスがあると、プログラムが必要なコンテンツを呼び出し、そして、整形して表示するhtmlソースを作り、ブラウザにそれを送っています。
<br />
<br />
この(2)の表示するためのプログラムの実物は、ダッシュボードのテンプレートの項目から行くことが出来る「htmlの編集」の中で見ることが出来ます。ここで、名前が「html」となっていますが、単なる静的なhtmlファイルではありません。ブログの表示を司るプログラムが書かれているファイルとして認識している方が変な誤解が無くなります。そして、このプログラム自体が「テンプレート」と呼ばれているものだったりします。
<br />
<br />
<h4>
テンプレートを見てみる</h4>
テンプレートは先に述べたように、「htmlの編集」で見ることが出来ます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjbhyphenhyphenqEWmPVqeSbkBj3TZ8xDcqNm7uD8uQkmvHn5TNI4DyVD3A4YXyj5eTXd2MfLIvNsi4Pmb-f0IJPTQF6hfHQreBdtJioBvZ22XGc-AegiWzAid17wXXl4RbenJcBn3YP7ThzgEpgT4/s1600/0403004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjbhyphenhyphenqEWmPVqeSbkBj3TZ8xDcqNm7uD8uQkmvHn5TNI4DyVD3A4YXyj5eTXd2MfLIvNsi4Pmb-f0IJPTQF6hfHQreBdtJioBvZ22XGc-AegiWzAid17wXXl4RbenJcBn3YP7ThzgEpgT4/s400/0403004.png" width="400" /></a></div>
<br />
<br />
テンプレートファイルの中にはhtmlタグやcssの表記が沢山あり、htmlソースにとても似ています。先にテンプレートは「プログラム」と書きましたが、htmlソースの中にhtmlソースの制御タグが入ってる感じ。phpとかと似たような感じだと思います(php知らないので適当)。
<br />
<br />
ブログはこのテンプレート1つで、あらゆる表示を行います。<br />
ブログは普通、トップページに幾つかの記事が書かれていて、それぞれの記事をクリックすると、その記事が単独で表示されて、また、タグをクリックすればこれに関連する記事が検索されて表示されたり、アーカイブから過去記事が表示されたりしますが、これらの表示の仕方が一つのテンプレートの中に汎用的に書かれています。
<br />
<br />
<h4>
Bloggerをカスタマイズする事とは</h4>
ひとことで「カスタマイズ」と言っても色々なものがあります。まずは、Bloggerの「カスタマイズ」について整理してみましょう。<br />
<br />
Bloggerの「カスタマイズ」は、結局、テンプレートを書き換える作業であると言います。<br />
そこで、このテンプレートを修正する具体的な窓口の点から整理すると、以下の様になります。
<br />
<ul>
<li>テンプレートデザイナーを使う</li>
<li>附属テンプレートの選択</li>
<li>CSSを調整</li>
<li>ガジェットにコードを埋め込む</li>
<li>外部テンプレートを導入する</li>
<li>直接テンプレートファイルの一部を改良する</li>
<li>テンプレートファイルを自作する</li>
</ul>
みなさん、見たことあるやつですよね。<br />
これらは、窓口は異なりますが、それぞれ別の事をやっているわけではなくて、どれを使ったとしても結局、サーバー上にある自分のテンプレートを修正しているのです。<br />
<br />
ところで、この順番は、カスタマイズの優しさの順に並んでいます。<br />
同時に、この順番は、Bloggerサービスが予定するカスタマイズのお作法に従っているかどうかの順番でもあり、上から順にテンプレートが壊れにくいカスタマイズであるかどうかの順ということも出来ます。
<br />
<br />
一番上の「テンプレートデザイナー」は、Blogger自体が用意した「簡単に」カスタマイズができるシステムで、ダイアログ内の数値を変えたり、色を選択するだけでカスタマイズが出来ます。だから、templateの仕組みの知識がまったくなくても、templateとへの書き込みは自動的にシステムが行うので、間違いが起こる可能性はあまりありません。<br />
一方、一番下の自作は、まさに手書きで好きなようにテンプレートファイルを書くことになるので、templateの仕組みを網羅的に理解していないとすぐにおかしなことになってしまいます。<br />
<br />
<br />
<h3>
カスタマイズのコツ</h3>
<br />
さて、実際にカスタマイズすることを考えた場合、先の項目の、「CSSの調整」を行い始めるころから、テンプレートに直接影響を与え、自分でテンプレート全体の整合性を管理する必要が出てきます。<br />
<br />
やはり、Bloggerのテンプレートは複雑て、整合性を管理しようと思えば、それなりの知識が必要であり、逆に、テンプレートを自作する等の高度な事をしない場合でも、テンプレートについての大まかな知識があれば、トラブルが起こった時、その対処に対する勘が働くようになります。<br />
<br />
<h4>
私の履歴書</h4>
<br />
お恥ずかしながらの私のBlogger遍歴を自白すれば、、、<br />
<ol>
<li>Bloggerをはじめる。</li>
<li>附属テンプレートを色々と変えてみる。</li>
<li>見出しのデザインを変えるために、CSSを使うということを知る。</li>
<li>CSSを使うと、色々なデザイン(preタグ、tableタグ等)のデザインが変えれることを知る。</li>
<li>Webfont活用のためにhtml編集からheadタグっぽい所に直接書き込めることを知る。</li>
<li>css設定をテンプレートデザイナーからでなく、html編集から該当箇所に直接書き込んだり、修正したりするようになる。</li>
<li>海外で外部テンプレートなるものが配布されていることを知って試してみる。</li>
<li>外部テンプレートの読み込み後の画面が思ってたのと違ったり、制御不能になったりして泣く。</li>
<li>templateのウィジェット構造や制御タグの知識をかじる。</li>
<li>自作テンプレートを作るぞ!!と決意する。</li>
<li>めんどくさすぎて挫折気味になる。</li>
<li>いかしたtemplateを発見し、しかも、上手く導入できたため、車輪の再発明をしようとする奴はアホだと自分に言い訳をはじめる ←今ココ</li>
</ol>
この遍歴で最も注目してほしいのは、8番「。。。制御不能になって泣く」です。<br />
<br />
私の経験を顧みるに、、Bloggerはとても柔軟で根本的なカスタマイズが出来ると同時に、複雑であるため、テンプレートをど派手に崩壊させることが可能ということです。<br />
<br />
しかも、実はBlogger自体は「お利口」なので、ユーザーが何かカスタマイズを行った時に「自動的に何か便利そうな事」やってくれたりします。なので、その辺りのBlogger的お作法を無視して、自由にカスタマイズを楽しんでいると、知らないうちに整合性が取れなくなったりすることがあるようです。<br />
<br />
つまりは、何も悪いことをした覚えが無くても、Bloggerは、盛大に壊れることがあったりするかもしれません。<br />
<br />
更には、制御不能です、、、<br />
<br />
<h4>
私の経験したBloggerカスタマイズ最大の悲劇</h4>
<br />
制御不能とは、海外の外部テンプレートを色々と試していた時の事。<br />
あるテンプレートを読み込み、<br />
<br />
「うーん、なんか気に入らないなぁ」<br />
<br />
と、次のテンプレートを読み込み<br />
<br />
「やっぱいまいちだよなぁ」<br />
<br />
と、更にとっかえひっかえやっていると、最初に気が付くのが、<br />
<br />
「あれ?なんかガジェットがめっちゃ増えてる、、しかもダブってるような、、、」<br />
<br />
で、もっとよく見ると<br />
<br />
「あれ?こんなデザインの枠だっけ?サイトでみたデザインとと違うような、、」<br />
「あれ、見本のデザインにはあるのに、これうちでは、表示されてなくない??」<br />
<br />
そのうちよく見なくてもわかる程度に<br />
<br />
「うわぁ、、なんだよこれ、レイアウトぐちゃぐちゃになっちゃったよーー」<br />
<br />
となったりします。しかし、この時点では<br />
<br />
「附属のシンプルレイアウトに戻したろっ」<br />
<br />
って気楽に考えて、それを実行するのですが、、、<br />
<br />
「。。。。。。。。。。。。。。。。」<br />
<br />
一瞬にして顔が青ざめます。そう、シンプルレイアウトにしてもレイアウトの崩れは戻らず、どうしていいかわからなくなりました。<br />
<br />
こういう経験ってBlogger使いの人にはたまにあるのかなぁ?と思ってたんですが、ネット上であまり見ないんですよねぇ。うちだけなの??これ治し方が分からなくて、ブログほったらかしにしちゃった人がいるんじゃないかと思うんですが。<br />
<br />
とういうわけで、Blogger最大のカスタマイズのコツは、先ず第一に、この崩壊現象を乗り越えることだと思います。<br />
<br />
<h4>
魔法のテンプレートで初期化</h4>
大丈夫、どんなにレイアウトが崩壊してても、多分(適当)治ります!!<br />
<br />
まずは、レイアウトから「html編集」を開きます。<br />
ソース部分を全選択(Ctrl + a とか)して、Deleteキーで消去します。<br />
そう、templateを綺麗さっぱり真っ白にしてしまいます。<br />
<br />
そこに、次のソースコード「空のテンプレート」をコピペします。<br />
<br />
<script src="https://gist.github.com/nekolinuxblog/8fc1af96db5046f8c374.js"></script>
この状態で、附属テンプレートの選択画面に行って、好きなのを選択します。<br />
併せて、テンプレートデザイナーで、カラムやフッタを適当にシンプルにします(しなくてもいいです)。<br />
<br />
これで、何もない初期状態にもどります。<br />
<br />
注意事項としては、全てのガジェットの編集内容が無くなります。タイトルで画像を設定していた場合も何もない状態になっているし、メニューバーを一生懸命作っていたとしても全部なくなると思います。<br />
<br />
そう、全てが真っ新の状態に戻るのです。<br />
もちろん、投稿記事の内容等は無くなったりしません。ご安心を<br />
<br />
<h4>
海外テンプレートとテンプレートの初期化</h4>
<div>
海外テンプレートを導入する場合、そのテンプレートを読み込む前に、上述のテンプレートの初期化を行うのが私のお勧めです。<br />
<br />
まとめると、</div>
<ol>
<li>テンプレートを初期化</li>
<li>附属テンプレートのシンプルを選択</li>
<li>テンプレートデザイナーのレイアウトでカラム、フッタをシンプルに</li>
<li>この状態で、海外テンプレートを読み込み</li>
</ol>
ここでのコツは、単に、空のテンプレート読み込みの直後に、海外テンプレートを読み込むのでは無くて、初期化の後スグに、附属のシンプルテンプレートを一旦読み、それから、海外テンプレートを読み込ませることです。<br />
<br />
私も色々テンプレートを試してみた所、海外テンプレートの中にはCSS設定について、附属のシンプルテンプレートで設定されていることを前提に設定しているものがあるようなので、シンプルテンプレートを読み込んでいないと、CSS設定がされていない要素があったりして、デザインがおかしくなる事がありました。なので、上手くいかないときはその辺りの事を考慮して、対処してみるとイイと思います。<br />
<br />
<h4>
海外テンプレートとスライダー</h4>
海外テンプレートにはスライダーが使われいることがあります。<br />
試しに、テンプレートを試している時に、スライダーが現れない場合、ダッシュボードの「設定」項目にあるブログの公開先が「一般公開」になっているかどうかを確かめてみましょう。<br />
<br />
テスト用に作ったブログの場合、公開先を「限定公開-ブログの作成者のみ」とかになっていると、スライダーだけでなく、記事の読み出しが上手くできず、結果として、スライダー等のガジェットがはたらかなくなっていたりします。<br />
<br />
<br />
<h3>
好きなサイト</h3>
<div>
Bloggerのカスタマイズの時に見るべきサイトは、まとめも含めて数多くありますが、私なりに好きなところを幾つか並べておきます。</div>
<br />
<h4>
テンプレート自作系</h4>
ページのテーマはテンプレートの自作だったりしますが、テンプレートの仕組みを色んな人が紐解いて解説してくれているサイト。<br />
テンプレートの自作をするつもりはなくても、自作系のページは必見。テンプレートとは何ぞや?ってことをとりあえず頭に入れておくことで、柔軟なカスタマイズを正確に出来るようになると思います。<br />
<br />
<br />
Blogger ヘルプ<br />
<a href="https://support.google.com/blogger/answer/46888?hl=ja&ref_topic=6321969" target="_blank">「レイアウト用ページ要素タグについて」</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQiVa1u4tTZ_FqYVnouvsbnWjct-LA8lk8Lxkk4ekPahVsan4uIgmEh3CP3dIY_vuQdoprJ67jkdNznX4ezT5OqV3JZDa1RjawFmuqWQby55q1cvEr3S05BVihGlQhuaXK2RLMlU6Hhp4/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.52.35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="126" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQiVa1u4tTZ_FqYVnouvsbnWjct-LA8lk8Lxkk4ekPahVsan4uIgmEh3CP3dIY_vuQdoprJ67jkdNznX4ezT5OqV3JZDa1RjawFmuqWQby55q1cvEr3S05BVihGlQhuaXK2RLMlU6Hhp4/s200/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.52.35.png" width="200" /></a></div>
Bloggerそのもののヘルプで述べられているもの。テンプレートには、セクションとウィジェットというものがあるってことを頭に入れて、他のテンプレート自作等のページを見ていくと頭の中が整理しやすいと思います。<br />
併せて、<a href="http://matome.naver.jp/odai/2134952388911249901" target="_blank">「Bloggerテンプレートの作り方、に関する資料まとめ」</a>からBloggerのテンプレート関連ヘルプを巡る事ができます。<br />
<br />
<br />
Cheetah'sBlog<br />
<a href="http://cheetahs-blog.blogspot.jp/2014/04/google-blogger.html" target="_blank">「Google Bloggerのテンプレートを自作する」</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhGNUsTm6rUy8CY-0BAF3ieCbXbi_9IBzwn2_OteVqun-4oYz06kk05oFXA1clUwIn6wvdLiB_ZC7SaGtgPs_IznyE3Id4NKR-z3tp8ueu3CI7yyXsWRq5Dq-Lsi4KTjCZqHmrUdhQ1Vg/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.53.50.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhGNUsTm6rUy8CY-0BAF3ieCbXbi_9IBzwn2_OteVqun-4oYz06kk05oFXA1clUwIn6wvdLiB_ZC7SaGtgPs_IznyE3Id4NKR-z3tp8ueu3CI7yyXsWRq5Dq-Lsi4KTjCZqHmrUdhQ1Vg/s200/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.53.50.png" width="200" /></a></div>
うちのメモで今回紹介した「空のテンプレート」はここでも書かれています。<br />
個々のタグの説明がシンプルで、最低限のみかかれているので、読んでいて挫折しにくいです。<br />
<br />
<br />
Aragger<br />
<a href="http://aragger.blogspot.jp/2012/04/blogger.html" target="_blank">「Bloggerのテンプレートをいじる」</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4H41-MgWAB4b9wSyiejmkywsGF72weFvKpdpboKyBJwclsseT6I0TfiYqfN1TUT-ZHpXyiRBWrVnPgWMV_yv8MRFYfcZxNVoxhbTdHyEICCtA38g3jEgsRdVp1RXLrFQVcsw7F6H1aDU/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.54.10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4H41-MgWAB4b9wSyiejmkywsGF72weFvKpdpboKyBJwclsseT6I0TfiYqfN1TUT-ZHpXyiRBWrVnPgWMV_yv8MRFYfcZxNVoxhbTdHyEICCtA38g3jEgsRdVp1RXLrFQVcsw7F6H1aDU/s200/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.54.10.png" width="200" /></a></div>
セクションやウィジェットのタグの詳しい内容が具体的に書かれています。実際にどんな種類があってどんな値をとるのかの雰囲気がわかります。但し、書かれた時点がやや古いです。<br />
<br />
<br />
トーマスイッチ<br />
<a href="http://toumaswitch.com/vaster-templete/" target="_blank">「シンプルなBlogger日本語テンプレート「Vaster」を作ったので公開していく」</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKVHDqVmA3Eonk5Pkbamgg1uxbpbuTMX6d3QFoD6hLvhI7Qt5fos2psZgFSNGj2YHyJEVU97sF0CIulj20BBEtDRmWVaJzeByroAXjjN5Wi98NexbnZOlTQIYhH8hB4OCjHe7WRNRD3qY/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.54.27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKVHDqVmA3Eonk5Pkbamgg1uxbpbuTMX6d3QFoD6hLvhI7Qt5fos2psZgFSNGj2YHyJEVU97sF0CIulj20BBEtDRmWVaJzeByroAXjjN5Wi98NexbnZOlTQIYhH8hB4OCjHe7WRNRD3qY/s200/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.54.27.png" width="200" /></a></div>
テンプレート作ってしまった人のページです!!私は実際には試してはいませんが、自作した事に敬意を払わずには居られません!!ブログ自体現在進行形で色々と書かれておられるので、ちょこちょこっと読んでます。<br />
<br />
<br />
<h4>
一般カスタマイズ</h4>
Bloggerをダッシュボードのレイアウト等から一般的なカスタマイズを行う方法を説明してくれているサイト。<br />
<br />
<br />
メモロウ<br />
<a href="http://www.memorou.com/2015/01/blogger_11.html" target="_blank">「Bloggerのカスタマイズと使い方(シンプルテンプレート対応)」</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNhw-_Rm7k7-21-r3bhEVU1BqkDQCRS33vM23jcZ985AyMcO1XQ1foYKD91yM5cEcFuzz9NhRFX8LBLGkgTIFyxVvvUCP0efjyTJQdmW09Hsk5aUEStF9tqDV47bRaMOznOXGXqHEOj0s/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.54.52.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNhw-_Rm7k7-21-r3bhEVU1BqkDQCRS33vM23jcZ985AyMcO1XQ1foYKD91yM5cEcFuzz9NhRFX8LBLGkgTIFyxVvvUCP0efjyTJQdmW09Hsk5aUEStF9tqDV47bRaMOznOXGXqHEOj0s/s200/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.54.52.png" width="200" /></a></div>
テンプレートデザイナー等の使い方を一通り解説。それ以外にいくつかのガジェットの具体的な使い方や、よく見かけるCSS修正等が色々とシンプルにまとまっています。<br />
<br />
<br />
Dr.ウーパのコンピュータ備忘録<br />
<a href="http://upa-pc.blogspot.jp/p/blogger.html" target="_blank">http://upa-pc.blogspot.jp/p/blogger.html</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx9wrW6KxY7eJ2Xysu_iacd4JproqYhgBiGE1lqGsvWYM8J4O-MdZtgEBBHmeq2jTQJp2ci05zcs1SDrTWCjJY-0hrnTnDT5m7DXReAcaCu4Ste5ke-AVY4PRtnKN8w3aDZ8cJCpoHDso/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.57.17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx9wrW6KxY7eJ2Xysu_iacd4JproqYhgBiGE1lqGsvWYM8J4O-MdZtgEBBHmeq2jTQJp2ci05zcs1SDrTWCjJY-0hrnTnDT5m7DXReAcaCu4Ste5ke-AVY4PRtnKN8w3aDZ8cJCpoHDso/s200/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+13.57.17.png" width="200" /></a></div>
Bloggerに関する情報量が豊富。現在進行形で発信中。<br />
<br />
<br />
Sunabox.net<br />
<a href="http://www.sunabox.net/2012/06/bloggerhtml.html" target="_blank">「[blogger]カスタマイズはここから!HTMLの知識ゼロで始めるブログ改造(主に見た目)」</a><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxfK6s_P6l05Ck1sgGs8Qe2UjCwNV0AdN_3xORtnhGHkZZ8SikePOMvWUxfWh-Qa39dm6EFxaBWmtG8erM99unFdZe3fT5JvJC2LQ6odMPBex5p-qOCXI0wE7AXsIg-KDuGPEWbvOzet0/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+14.01.08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxfK6s_P6l05Ck1sgGs8Qe2UjCwNV0AdN_3xORtnhGHkZZ8SikePOMvWUxfWh-Qa39dm6EFxaBWmtG8erM99unFdZe3fT5JvJC2LQ6odMPBex5p-qOCXI0wE7AXsIg-KDuGPEWbvOzet0/s200/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2016-06-05+14.01.08.png" width="200" /></a></div>
通常のカスタマイズを丁寧に実演していて、ページ自体が見やすく綺麗だったので、Bloggerカスタマイズ始めた頃は、このページのようになりたい!!と思っていました。<br />
<br />shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com11tag:blogger.com,1999:blog-787888621050389020.post-1879814693485532332016-05-31T14:46:00.001+09:002016-07-04T21:51:14.974+09:00おしゃれな気分でプログラミング<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq95EfvFc25frwIrl9Fb8ghnNhC3zNbIQxLO_JdMnaDEXSlojRkLgphemzChrTSvdDD5vyaXHPMRk8WU73q0Ck44AxhK1g1tTrjUE5OHLG1kmcCJRjaXVBlRUnKHZkemJoshhAJKAVufg/s1600/DSC_1727.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq95EfvFc25frwIrl9Fb8ghnNhC3zNbIQxLO_JdMnaDEXSlojRkLgphemzChrTSvdDD5vyaXHPMRk8WU73q0Ck44AxhK1g1tTrjUE5OHLG1kmcCJRjaXVBlRUnKHZkemJoshhAJKAVufg/s640/DSC_1727.jpg" width="640" /></a></div>
<br />
<br />
夜の大阪駅は、ちょっとおしゃれな感じ。<br />
<br />
<a name='more'></a><br />
大阪駅のすぐ北側にはグランフロントという大きなビル群があり、その周辺の広場からみた大阪駅。大きな建物の吹き抜け部分はいつみても単純に「わぁ凄いなー」と感じます。<br />
<br />
<h3>
Bloggerのtemplate</h3>
<br />
前に使っていたテンプレートも気に入っていたんですが、マルチデバイス対応等が上手くいっていなくて、修正しようと色々とやってるうちに面倒になってしまいました。<br />
<br />
そこで、リニューアル!!<br />
<br />
<a href="http://www.soratemplates.com/2015/12/blogari-blogger-templates.html" target="_blank">http://www.soratemplates.com/2015/12/blogari-blogger-templates.html</a><br />
<br />
今回入れ替えたテンプレートは、soratemplatesというところで配布されています。というか、前のテンプレートもここのものでした。<br />
<br />
<br />shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-66177557003204296352015-06-12T00:22:00.000+09:002015-06-14T15:32:56.317+09:00MacにVirtualBoxをインストールMacBookAirでもxmonadしたい!そうだ、ArchLinux入れよう!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFx0VTG0sCPh6wqg4LZDA2cXpNK9jE4cXitAfzuelQSpFSPSkl1KXZCPVBf5Ddr9b1JD7o23OoLmueEBq-S5cLytVEgHpFyB6v_zdblgh73AHFT9kN5Ckm363tIDMz7OgSqFx1yr3gEqw/s1600/sctitle20150611.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFx0VTG0sCPh6wqg4LZDA2cXpNK9jE4cXitAfzuelQSpFSPSkl1KXZCPVBf5Ddr9b1JD7o23OoLmueEBq-S5cLytVEgHpFyB6v_zdblgh73AHFT9kN5Ckm363tIDMz7OgSqFx1yr3gEqw/s320/sctitle20150611.png" width="320" /></a></div>
<a name='more'></a><br />
Mac OS XとLinuxのデュアルブートもしてみたいなと思いつつも、まず、はお手軽に仮想マシン内にゲストOSで入れるのがお手軽かなと思いOracleのVirtualBoxをインストールしてみることにしました。<br />
<h3>
VirtualBox</h3>
<br />
VirtualBoxは仮想化ソフトの1つ。Macで無料の場合、これ一択らしいです。<br />
<a href="https://www.virtualbox.org/" target="_blank">https://www.virtualbox.org/</a><br />
<br />
また、本家以外でも、VirtualBoxについての色々がまとまっているサイトに以下のものがあります。<br />
<a href="http://vboxmania.net/" target="_blank">http://vboxmania.net/</a><br />
<br />
<h4>
ダウンロード</h4>
VirtualBoxのインストールに必要となるインストーラと拡張データの2つをダウンロードします。<br />
<br />
まずは、インストーラ。「VirtualBox platform packages」の項目の下に並んでいるもののうち、Macにインストールするので「VirtualBox 4.3.28 for OS X hosts」と書かれている右のリンク「x86/amd64」をクリックしてdmgファイルをダウンロードします。<br />
<br />
次に、拡張データ。「VirtualBox 4.3.28 Oracle VM VirtualBox Extension Pack」と書かれた、右のリンク「All supported platforms」をクリックして拡張データをダウンロードします。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlRYz9w0fmLUMVjONaw7icK06giimUt1nVCphrFczyXfdiYbUTr3R5uaUXW8ZXWgBAMsx_-PNs3jGpeTvyXP-FSjB3aCQ_996aGjccOwoB48CaKJaWtJWBC9Le8btINUMq57TXTFf9roI/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-11_19_51_58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlRYz9w0fmLUMVjONaw7icK06giimUt1nVCphrFczyXfdiYbUTr3R5uaUXW8ZXWgBAMsx_-PNs3jGpeTvyXP-FSjB3aCQ_996aGjccOwoB48CaKJaWtJWBC9Le8btINUMq57TXTFf9roI/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-11_19_51_58.png" width="320" /></a></div>
<br />
<h4>
本体のインストール</h4>
ダウンロードしたdmgファイルを開くと、ウインドが開くので1番の指示に従いVirtualBox.pkgのアイコンをダブルクリックします。そうすると、インストーラが立ち上がるので、指示通り進めればOKです。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS1s05TkoRgPWdZ6TXh3mycmTgqtk-1YgallD9ORXYB3rkM_UoT8M71C4Xy5mee-f-GIrj9qZ9_P4IcvjzBgv84PRtOVXqE2RynQxZd8X33VRDT3wYCQ3f1k5q7hZMNvv6d4J0W_9lKUs/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-11_23_28_45.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS1s05TkoRgPWdZ6TXh3mycmTgqtk-1YgallD9ORXYB3rkM_UoT8M71C4Xy5mee-f-GIrj9qZ9_P4IcvjzBgv84PRtOVXqE2RynQxZd8X33VRDT3wYCQ3f1k5q7hZMNvv6d4J0W_9lKUs/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-11_23_28_45.png" width="320" /></a></div>
<h4>
拡張データのインストール</h4>
本体のインストールが完了したら、VirtualBoxを起動し、メニューから「環境設定」を呼び出し、そのダイアログで「拡張機能」のページを開きます。ダイアログの右側の小さな読み込みアイコンをクリックして、先にダウンロードした拡張データのファイルを指定すればデータのインストールをしてくれます。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitRXLtwjcHrBxw2H4J30_LDf2eqR31MupPRmT_7fL-yoZwR5ocgA-CSxw23OQlSPDfdoXHwAPi-mBePu5QiVzxIRoHaDhRcwXqrO_S6Tch-K1TnIeIGSX42nAG2K0Tw5jExTs6NA9zfxI/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-11_23_44_06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitRXLtwjcHrBxw2H4J30_LDf2eqR31MupPRmT_7fL-yoZwR5ocgA-CSxw23OQlSPDfdoXHwAPi-mBePu5QiVzxIRoHaDhRcwXqrO_S6Tch-K1TnIeIGSX42nAG2K0Tw5jExTs6NA9zfxI/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-11_23_44_06.png" width="320" /></a></div>
<br />
<h3>
仮想マシン</h3>
仮想マシンは、パソコンの中にもう一個小さなパソコン自体が入ってる箱庭環境みたいなイメージです。<br />
<br />
「Linux面白そうで試してみたいなぁ~」と思っている人はでも、普段から使っているWindowsPCにLinuxをインストールしようとすると、パーティションやら起動システムやら、難しそうなことをしなければならないので、おっくうになってしまいます。そんな時こそ仮想マシンです。既存OS環境に何の影響もなく、新しい別OSのインストール実験が出来ます。たとえ、インストールに失敗しても、仮想マシン内の出来事であり、実際のシステムには何の影響もありません。また、インストールした新しいOSを暫く触ってみて「なんか面白くないなぁ」と思えば、きれいさっぱり削除することも簡単です。更には、今やLinuxには沢山のディストリビューションがあるのであれこれと試して雰囲気を見てみてみるだけのインストールだっていいんです。<br />
<br />
というわけで、例としてArchLinuxをインストールするための仮想マシンをVirturlBoxで作ってみます。<br />
<br />
<h4>
仮想マシンの作成</h4>
<br />
VitrualBoxを立ち上げたら、新規作成アイコンをクリックします。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRmSUjklG5qfb-InUrC0koaywDeErmyASKLcOx82MRlj5v0kIBIRVdTmc0R_r6KJLGBy55bQaktMUF_w-eXgJH2vP_BFBTcVEdP1iv3mwDOgLlNwKhxIZ3WgZcu0qbIAptLTGhLs9vH0k/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-14_12_06_46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRmSUjklG5qfb-InUrC0koaywDeErmyASKLcOx82MRlj5v0kIBIRVdTmc0R_r6KJLGBy55bQaktMUF_w-eXgJH2vP_BFBTcVEdP1iv3mwDOgLlNwKhxIZ3WgZcu0qbIAptLTGhLs9vH0k/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-14_12_06_46.png" width="320" /></a></div>
設定用のダイアログが出てくるので、名前を付けてタイプ、バージョンを設定します。バーションはLinuxの場合、ディストリビューションによって異なったりします。尚ここでは、名前にLinuxという文字やディストリビューションの文字が入っていると、自動的にタイプ等が選択されます。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPkC4b2Mw1SSrBCWOZ5A5Ch28AJQBhT16fRx_SejsLTKJ9LsgqdAfaPTWx1Y5c47O4LpvviaXsj2_wlnBvtJ8lmk9Y6MTxTPn9s_2FS_Q_JVrxGYHPdNnqvooaPNEbKCyKan5aLgmF4U0/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-14_12_10_18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPkC4b2Mw1SSrBCWOZ5A5Ch28AJQBhT16fRx_SejsLTKJ9LsgqdAfaPTWx1Y5c47O4LpvviaXsj2_wlnBvtJ8lmk9Y6MTxTPn9s_2FS_Q_JVrxGYHPdNnqvooaPNEbKCyKan5aLgmF4U0/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588_2015-06-14_12_10_18.png" width="320" /></a></div>
続いて、仮想マシンの「メモリサイズ」を決定します。実際に搭載しているメモリの半分ぐらいを使ってみましょう。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkpVMMwzElec8Omlde2dnfnAdxmE1OXSL5llitY531YMb8DbT24uzzoy0pukuV2OCoKeHNWn-hi84zXTiBWS4U2OifP0kyVQXmlted4OmajIwMWXTmLIBM6MSAm6Ub4PDNjkcXOHNrsvU/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.20.35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkpVMMwzElec8Omlde2dnfnAdxmE1OXSL5llitY531YMb8DbT24uzzoy0pukuV2OCoKeHNWn-hi84zXTiBWS4U2OifP0kyVQXmlted4OmajIwMWXTmLIBM6MSAm6Ub4PDNjkcXOHNrsvU/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.20.35.png" width="320" /></a></div>
次は、「ハードドライブ」の設定です。「仮想ハードドライブを作成する」にチェックを入れます。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAZbzfvjgdxmZmBoCQVyrTFiN0dplukWprufRWTY5IiM-5qrkUTwBSfAuwGTvRncSbK_oxGkwc3t7m_hYNAIaH5yZwcEOlORevIDigGu6-t8CJg59fbETASkC26as8wmDm2yHE6Rtjlp0/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.21.47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAZbzfvjgdxmZmBoCQVyrTFiN0dplukWprufRWTY5IiM-5qrkUTwBSfAuwGTvRncSbK_oxGkwc3t7m_hYNAIaH5yZwcEOlORevIDigGu6-t8CJg59fbETASkC26as8wmDm2yHE6Rtjlp0/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.21.47.png" width="320" /></a></div>
次の「ハードドライブのファイルタイプ」の設定は、一般的な「VDI」をチェックします。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhusuFZ7d3dRVqD_xCatJ8OjD3mFbjJix7ZvuNjginPBEhrq11-Y_OqJ_3rAlgs8Pt1FxJhIprCaUjHbLvUROSiGCAdh4Cl2Ysic0cABbe-ktJ4yMt7XA3_c2xzDlIrVrZyL5gttv8ZRR0/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.22.11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhusuFZ7d3dRVqD_xCatJ8OjD3mFbjJix7ZvuNjginPBEhrq11-Y_OqJ_3rAlgs8Pt1FxJhIprCaUjHbLvUROSiGCAdh4Cl2Ysic0cABbe-ktJ4yMt7XA3_c2xzDlIrVrZyL5gttv8ZRR0/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.22.11.png" width="320" /></a></div>
次の「物理ハードドライブにあるストレージ」の設定は、「可変サイズ」をチェックします。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixyFvjGVIn3acD4rKUN8vd3c6c_1FHuoxMSe5C1x__nZSGP3QYFavwdlHwpnzqTyULj_GHMBMZ7QeCqDdvLe8xfUjY7P9VJMwrVXHAaQL8VF0o1Xt5kdn9GQ_VejiZCV5X-VH0qNxgycs/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.22.36.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixyFvjGVIn3acD4rKUN8vd3c6c_1FHuoxMSe5C1x__nZSGP3QYFavwdlHwpnzqTyULj_GHMBMZ7QeCqDdvLe8xfUjY7P9VJMwrVXHAaQL8VF0o1Xt5kdn9GQ_VejiZCV5X-VH0qNxgycs/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.22.36.png" width="320" /></a></div>
最後に「ファイルの場所とサイズ」の設定は、デフォルトでVirtualBoxディレクトリ下に仮想マシン名のディレクトリが作成され、その中に各ファイルが作成されます。変更したい場合は、右のディレクトリアイコンから、変更可能です。サイズは、デフォルトのままでOKです。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYKBesvvH6YR8aJguwHSqRPxbhrUYX1mvXuJU-wiwBL6-4amouqZkFD3KwGlC7es1rOSaGCvqapWulhN8mT_TzWm4SLPuOYk7fwnqi57nquePVbCitCs-8wu_n7cvxk0TNAKViEuAbg8k/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.22.48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYKBesvvH6YR8aJguwHSqRPxbhrUYX1mvXuJU-wiwBL6-4amouqZkFD3KwGlC7es1rOSaGCvqapWulhN8mT_TzWm4SLPuOYk7fwnqi57nquePVbCitCs-8wu_n7cvxk0TNAKViEuAbg8k/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.22.48.png" width="320" /></a></div>
作成ボタンをクリックすれば、仮想マシンが完成です!!<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc0NzAoOnQ1UVFgoc_LdnUM8zCmEGTxTLG6lzsH-wKTfn5wpS8RpJg2oFjoCkffCgWUD3gjLkt2WdOI8zZSDxhqJHjk8YoalxFj0hiEwAxvvEvKcvGzGx3JtYDcM2kfGcnJxAt-z4Xt0M/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.23.08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc0NzAoOnQ1UVFgoc_LdnUM8zCmEGTxTLG6lzsH-wKTfn5wpS8RpJg2oFjoCkffCgWUD3gjLkt2WdOI8zZSDxhqJHjk8YoalxFj0hiEwAxvvEvKcvGzGx3JtYDcM2kfGcnJxAt-z4Xt0M/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2015-06-14+12.23.08.png" width="320" /></a></div>
仮想マシンを作成するごとに左側の一覧に仮想マシンが並んでいきます。今回は、ArchLinux用の仮想マシンを作成しましたが、この仮想マシンは、まだArchLinuxを「インストールするための仮想のパソコンが出来ただけ」で、ハードディスクの中は空っぽです。つまり、これからArchLinuxのインストールをしなければなりません。<br />
shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0tag:blogger.com,1999:blog-787888621050389020.post-72149338481098620542015-04-05T23:21:00.001+09:002016-07-04T20:47:30.550+09:00ルクア1100<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidwTFYoQ7nC2-zroR_TVAT_ECAu7atu1jkmnq46vNSPu9xg-lP1oLw_w6oRHerdeMwGQub1Scg2ZlxoAKh7Z99fw9gLf7nvU1FyHbhX0fiHZFRcIddpdbQb3o1YB2HiYySQYDTmE5c5Bc/s1600/2015-04-05+18.45.56.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidwTFYoQ7nC2-zroR_TVAT_ECAu7atu1jkmnq46vNSPu9xg-lP1oLw_w6oRHerdeMwGQub1Scg2ZlxoAKh7Z99fw9gLf7nvU1FyHbhX0fiHZFRcIddpdbQb3o1YB2HiYySQYDTmE5c5Bc/s1600/2015-04-05+18.45.56.jpg" width="320" /></a></div>
<br />
大阪駅の時空の広場付近の景色が好き。大きな建造物って見てるとワクワクする。<br />
<br />
<a name='more'></a><br />
<br />
最近オープンしたルクア1100は、専門店の1000と百貨店の100らしい。
<br />
<br />shunskhttp://www.blogger.com/profile/06673248493581880575noreply@blogger.com0