Quantcast
Channel: クロの思考ノート
Viewing all 226 articles
Browse latest View live

Slackware 14.2へアップグレードする(マニュアル編)

$
0
0

こんにちは。今回のテーマは『Slackware 14.2へアップグレードする(マニュアル編)』です。2016年7月1日にSlackware 14.2がリリースされました。Slaciware14.1が2013年11月にリリースされてから約3年ぶりのリリースとなりました。今回はマニュアルで14.2へのアップグレードについて記事にしてみました。
※本記事でのアップグレード方法はとても面倒で時間もかかるので実際の作業はslackpkgでのアップグレード作業をおすすめします。また、本記事の内容は筆者が試した内容で、アップグレードの成功を保証するものではなく、システムの変更はご自身の責任で行って下さい。
【関連記事】


【目次】
Slackware 14.2リリース
パッケージの準備をする
Slackware 14.1を14.2にアップグレードする

Slackware 14.2リリース

Slackware14.2ではKernel4.4.14を採用し、サウンドはALSAからPulseAudioへ、またPython,Ryuby,Perl等のスクリプト言語のバージョンも大幅にアップしました。個人的にはinitシステムにSystemdが採用されるか注目していましたが、伝統的なBSDスタイルが継承されたようです。 

パッケージの準備をする

今回はftp.slackware上に上がっているSlackware 14.2用のパッケージを全てローカル上にダウンロードしてアップグレードすることにしました。以下のコマンドを実行してftpサーバー上の14.2用パッケージをローカルの/root/slackware上に用意します。

root# cd /root/Downloads
root# wget -mck --passive-ftp ftp://anonymous@ftp.slackware.com/pub/slackware/slackware-14.2/slackware
root# cp -rv ftp.slackware.com/pub/slackware/slackware-14.2/slackware /root/slackware

これで/root/slackware上にftp上の環境と同じ環境が準備できました。

Slackware 14.1を14.2にアップグレードする

基本的な手順はUPGRADE.TXTにかかれている手順に従っていきます。

0.シングルユーザーモードに切り替える

シングルユーザーモードに切り替えましょう。

root# telinit 1

1. glibcの更新

まずはglibcライブラリを更新します。

root# upgradepkg /root/slackware/a/glibc-solibs-*.txz

2.パッケージツール群の更新

以下のコマンドを実行してパッケージを扱うツール群を更新します。

root# upgradepkg /root/slackware/a/pkgtools-*.txz
root# upgradepkg /root/slackware/a/tar-*.txz
root# upgradepkg /root/slackware/a/xz-*.txz
root# upgradepkg /root/slackware/a/findutils-*.txz

3.パッケージの更新

以下のコマンドを実行して他の全てのパッケージのアップグレードと新しいパッケージをインストールします。

root# upgradepkg --install-new /root/slackware/*/*.t?z

もしKDEI言語パッケージを除く全てアップグレードする場合は以下のスクリプトを実行します。

#!/bin/sh
for dir in a ap d e f k kde l n t tcl x xap xfce y ; do
  ( cd $dir ; upgradepkg --install-new *.t?z )
done

4.古いパッケージの除去

古いパッケージや不要となったパッケージを除去します。/root/CHANGES_AND_HINTS.TXTに除去すべきパッケージのリストがありますので参考にして下さい。以下コマンドで現在インストールされているパッケージの一覧を見ることができます。

root# ls /var/log/packages -lt | less

以下のコマンドはSlackware 14.1以降古くなったパッケージを除去するコマンドです。必要に応じて実行して下さい。

root# removepkg ConsoleKit apmd bluez-hcidump cxxlibs foomatic-filters \
      gnome-icon-theme imlib kdeadmin kdenetwork kdesdk kdetoys kwallet \
      lesstif libelf libjpeg libxfcegui4 networkmanagement obex-data-server \
      obexfs open-cobol oxygen-gtk3 phonon-mplayer phonon-xine pil portmap \
      procps qca-cyrus-sasl qca-gnupg qca-ossl udev xchat xf86-input-aiptek \
      xf86-video-modesetting xfce4-mixer xfce4-volumed xfwm4-themes

5.設定ファイルの更新

設定ファイルの設定を行います。以下のスクリプトを実行することで新しい設定ファイルを/etc以下に導入して古い設定ファイルは*.bakファイルとしてバックアップされることになります。もちろん、マニュアルで個別に設定を行っても問題ありません。

#!/bin/sh
cd /etc
find . -name "*.new" | while read configfile ; do
  if [ ! "$configfile" = "./rc.d/rc.inet1.conf.new" \
    -a ! "$configfile" = "./rc.d/rc.local.new" \
    -a ! "$configfile" = "./group.new" \
    -a ! "$configfile" = "./passwd.new" \
    -a ! "$configfile" = "./shadow.new" ]; then
    cp -a $(echo $configfile | rev | cut -f 2- -d . | rev) \
      $(echo $configfile | rev | cut -f 2- -d . | rev).bak 2> /dev/null
    mv $configfile $(echo $configfile | rev | cut -f 2- -d . | rev)
  fi
done

6.言語パッケージの更新

もし、KDE向けの英語以外の言語(多くの場合は日本語だとおもいます。)パッケージが導入されている場合には以下のコマンドで更新する必要があります。

root# cd /root/slackware/kdei
root# upgradepkg --install-new *-<your KDE locale>-*t?z

7.起動周りの設定

再起動する前にこれまでinitrdを使用して起動していた場合には新しいカーネルに合わせてinitrdを更新する必要があります。この作業を忘れると起動できなくなることもあるので注意が必要です。initrdの作成はmkinitrd_command_generator.shスクリプトを実行することで作成できます。

もし64bit向けカーネルや32bit向けのシングルプロセッサーカーネルを使用している場合は以下のコマンドを実行します。

root# /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.14 | bash

If you’re using the 32-bit SMP kernel, use this command:
また、 32bit SMPカーネルを使用している場合は以下のコマンドを実行します。

root# /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.14-smp | bash

ブートローダとしてLILOを使用してる場合は/etc/lilo.confを確認して起動時に呼び出すパスが間違っていないか等を確認します。

8. マルチユーザーモードに戻す

作業前にランレベルを1にしていた場合は以下コマンドで戻しましょう。

root# telinit 3

9. 再起動

設定は終わりました。再起動しましょう。

root# reboot

最後に

今回はマニュアル編ということで手動アップグレードについて書きましたが、正直パッケージのダウンロードに時間が掛かりすぎて後悔しました。今回紹介した方法は手間も時間もかかるので正直オススメできません。実際のアップグレード作業はslackpkgを用いた作業の方が現実的なのではないかと考えています。次回はslackpkgを用いたアップグレードについて書きたいと思います。

Sponsored Link



Slackware 14.2へアップグレードする(slackpkg編)

$
0
0

こんにちは。今回のテーマは『Slackware 14.2へアップグレードする(slackpkg編)』です。前回の記事では完全に筆者の趣味でマニュアルでSlackware 14.2へアップグレードを試みましたが、非常に手間が掛かり現実的ではありませんでした。今回はslackpkgを用いてアップグレードを試みます。筆者の個人的な意見ですが、前回よりも遥かに手間が減り楽でした。こちらの方法をオススメします。
【関連記事】


【目次】
Slackpkgの準備
Slackware 14.1を14.2にアップグレードする

Slackpkgの準備

リポジトリの変更

まずはSlackpkgの準備から始めます。まずは使用するリポジトリを14.1から14.2に変更する必要があります。以下のコマンドを実行してリポジトリを変更します。

root# cp /etc/slackpkg/mirror /etc/slackpkg/mirror.back
root# sed -i -e "s/14.1/14.2/g" /etc/slackpkg/mirror

念のため、ご自身でmirrorファイルで使用したいリポジトリが使える状態となっているか確認して下さい。

blacklistファイルの修正

今回は念の為カーネルは手動でインストールしたかったので/etc/slackpkg/blacklistファイルを修正しました。

root# vim /etc/slackpkg/blacklist

また、今回はSlackBuilds.orgからインストールしたパッケージも管理対象外としたいのでブラックリストに入れました。

Slackware 14.1を14.2にアップグレードする

ではslackpkgの準備が整ったのでアップグレード作業を始めていきます。

1. glibcの更新

まずはglibcライブラリを更新します。

root# slackpkg update
root# slackpkg upgrade glibc

2.パッケージツール群の更新

以下のコマンドを実行してパッケージを扱うツール群を更新します。

root# slackpkg upgrade findutils pkgtools slackpkg tar xz
root# slackpkg update

01

3.基本的なパッケージの更新

以下のコマンドを実行して基本的なパッケージのインストールを行っていきます。

root# slackpkg install a ap l n
root# slackpkg upgrade-all

02
03

4.カーネルの更新

次にカーネルを更新していきます。slackpkgの準備の際にkernelをブラックリストに追加した場合は手動でkernelを更新する必要があります。もし、ブラックリストに追加しない場合は前述のupgrade-allコマンドで自動的に更新されます。 

root# slackpkg download kernel
root# cd /var/cache/packages/slackware/a
root# installpkg *.txz

5.ブートローダーの設定と更新

筆者は現在はUbuntu側からインストールしたGRUBでSlackwareを起動しているので、特にブートローダーは設定していないのですが、多くの方はLILOを使用して起動しているのではないかと思います。カーネルを更新しているので新環境に合わせて/etc/lilo.confファイルを確認しておくと良いと思います。新しい設定を反映させるには以下コマンドを実行します。

root# lilo -v

6.古いパッケージの除去

一度再起動して新しい環境で再起動できるか確認します。もし再起動できない場合はブートローダーの設定を見直してみて下さい。ここで新環境で不要となるパッケージを削除します。念の為に/etc/slackpkg/blacklistファイルを確認しておいて下さい。もしSlackbuilds.orgからインストールしたパッケージを削除したくない場合はブラックリストに登録しておくとslackpkgが関与しなくなります。

以下のコマンドを実行してパッケージを削除します。

root# slackpkg clean-system

04

7.残りのパッケージのインストール

では、残りのパッケージをインストールしましょう。筆者はGUI環境としてXfceを使用しているために以下のようなコマンドでパッケージをインストールしました。ご自身の環境に合わせてアレンジして下さい。

root# slackpkg install d e k t tcl x xap xfce

再び起動周りの設定確認

お疲れ様でした。ここまでくればほとんど終了です。再度ブートローダー周りの設定を見直しましょう。

root# vim /etc/lilo.conf
root# lilo -v

では以下のコマンドで再起動しましょう。お疲れ様でした。

root# reboot

最後に

前回の記事で敢えてマニュアルアップグレード方法を書いたのですが、今回Slackpkgを使用する方法で行ってみて、あまりの楽さに驚きました。硬派と言われるSlackwareですが、インストーラーも対話式ですし、案外便利なツールは揃っていますよね。本記事がお役に立てば幸いです。
【関連記事】
Slackware 14.2へアップグレードする(マニュアル編)
Slackware 14.1を使ってみた

Sponsored Link


Slackware 14.2用のfcitx-mozcパッケージを公開しました

$
0
0

こんにちは。今回のテーマは『Slackware 14.2用のfcitx-mozcパッケージを公開しました』です。以前にSlackware 14.1でfcitx-mozcを使用できるようにSlackBuilds.orgにビルドスクリプトを投稿しましたが、ソースコードの置き場所がリンク切れとなってしまいスクリプトに修正を加えました。今回はそのお知らせです。ソースコードはコチラにおいてあります。(2016年7月28日時点では準備中であり、旧バージョンのままです。近日公開予定です。)
【関連記事】


【目次】
SlackBuilds.orgのfcitx-mozcパッケージに不具合あり
バージョンアップすることでトラブルに対応
Slackare 14.2へ対応

SlackBuilds.orgのfcitx-mozcパッケージに不具合あり

2016年7月4日現SlackBuilds.org(SBo)に投稿されているfcitx-mozcのSlackBuildファイルはエラーが出て使えない状態となっています。当ブログをご覧の方からご連絡を頂き気が付きました。本当にありがとうございます。そしてメンテナーとしてご不便をおかけしていること、お詫びいたします。

ビルドに失敗するようになった原因はソースファイルの1つであるjsr305-2.0.0.jarファイルがリンク切れとなったことです。code.google.comにあったソースを取得するはずだったですが、いつの間にかなくなっていました。

バージョンアップすることでトラブルに対応

ソースファイルをどこかに置くことも検討しましたが、バージョンを上げることで前述のソースコードがなくてもビルド出来ることが判明したので、今回はターゲットをVer. 2.17.2313.102としてSlackBuildを書きました。

Slackare 14.2へ対応

また、タイミングが悪くSlackware 14.2へのアップグレードと重なってしまい、なかなか修正版のスクリプトをアップすることができませんでした。ようやくSlackBuilds.orgも14.2への移行が終わったようなので修正版の投稿を行いました。もちろんSlackware14.2でビルド可能なことは確認しています。

現時点(2016年7月28日)ではSBoに受理されて公開待ちの状態となっています。ご不便をおかけしますが、もう少しお待ちいただければと思います。

01

最後に

自分用に書いたSlackBuildファイルでしたがSBoに投稿することで多くの方に使っていただけるスクリプトとなりました。その分不具合があった際にはご迷惑をかける範囲も大きくなっていることを今回の件で再認識しました。今後も不具合などありましたらご連絡いただけると幸いです。即日の対応は難しいと思いますが、できるだけ早く対応できるように心がけます。
【関連記事】
Slackware 14.1にsbopkgを用いてfcitx-mozcを導入する

Sponsored Link


Fedora 23から24にアップグレードする

$
0
0

こんにちは。今回のテーマは『Fedora22から23にアップグレードする』です。基本的には22から23へのアップグレード用に書いた記事と同様の手法でアップグレードできますが、アップグレード用のツールが改良されて日本語のユーザーにも使いやすくなりました。


【目次】
Fedora 24がリリース
Fedora 24へのアップグレード準備
Fedora 23を24にアップグレードする

Fedora 24がリリース

2016年6月21日(米国時間)にFedora 24がリリースされました。延期を重ねてのリリースだったために期待して待っていた方も多くいらしたかも知れません。標準グラフィック環境としてXの代替としてWaylandを採用する予定とのことだったので個人的にはどうなるか注目していたのですが、今回のリリースでは見送られました。今後のリリースで標準化へ向けた動きがありそうですね。
(Waylandに関しては筆者もコチラの記事で触れています。)
詳細なリリース情報は公式サイト(英語)をご覧ください。

Fedora 24へのアップグレード準備

データのバックアップ

システムの大きなアップグレードは思わぬ不具合を起こす可能性もあります。システムが起動しなくなることも考慮してデータや設定ファイルのバックアップを取っておくことをオススメします。

HDD容量の確保

新たなシステムのパッケージをダウンロードしてインストールするためにrootパーティションにはある程度の余裕がないとアップグレード出来ません。最低でも2.5〜3G程度の要領確保は必要だと思います。

最新の状態にシステムを更新する

以下のコマンドでシステムの状態を最新にしましょう。

$ sudo dnf update --refresh

01

open-vm-toolsは削除しなくても良い

Fedora22から23へのアップグレードの際にはopen-vm-toolsを削除する必要がありましたが、今回はその不具合は解消されているので削除する必要はありません。dnf-plugin-system-upgradeも進化した印象です。

Fedora 23を24にアップグレードする

基本的には公式ドキュメントを沿って行っていきます。

dnf-plubin-system-upgradeをインストール

以下のコマンドでプラグインをインストールします。

$ sudo dnf install dnf-plugin-system-upgrade

言語設定は日本語のままで大丈夫

dnf-plugin-system-upgradeがpython3を使用するようになったために文字コードの問題が解消されました。LANG環境変数が日本語のままでも問題なく動作します。ここは日本語ユーザーにとっては嬉しいところだと思います。

1点注意としてはLANG=ja_JP.UTF-8の状態でアップグレード作業を行うと、再起動時に図のような文字化け(俗に言う豆腐)状態になることがあるので、それが気になる方は以下コマンドでLANG変数を変更しておきましょう。
04

$ sudo localectl set-locale LANG=en_US.UTF-8
$ LANG=en_US.UTF-8

システムのアップグレード

ではFedora 24にアップデートしましょう。以下のコマンドで必要なパッケージをダウンロードします。

$ sudo dnf system-upgrade download --releaserver 24

02

以下コマンドでシステムを更新します。

$ sudo dnf system-upgrade reboot

システムが再起動してシステムの更新が始まります。(画像は言語を英語に切り替えて行った場合の図です。)
03

もし、アプグレード時に言語設定を変更した場合は再起動したら以下のコマンドで言語を日本語に戻しておきましょう。

$ sudo localectl set-locale LANG=ja_JP.UTF-8

これでFedora 24にアップグレードが完了しました。

最後に

22から23へのアップグレード時はこれまでのfedupからdnf-plugin-upgradeに変更があったばかりでトラブルも多かったですが、流石に今回は改善が見られたと思います。ただFedoraは実験的な要素が強いディストロですから、これからもコロコロと方式を変更していく可能性はあります。最新技術を追いかけるものの宿命かも知れませんね。
【関連記事】
Fedora 21をFedora 22にアップグレードする
Fedora22から23にアップグレードする

Sponsored Link


Ubuntu 16.04LTSへアップグレードする

$
0
0

こんにちは。今回のテーマは『Ubuntu 16.04LTSへアップグレードする』です。Ubuntu 16.04LTSのポイントリリースである16.04.1が7月にリリースされ、現在Ubuntu 14.04LTSをお使いの方もアップグレードを検討されているのではないでしょうか?UbuntuはLTSを中心に使うユーザーも多くいらっしゃると思うので本記事はLTSからLTSへのアップグレードを中心に扱った記事としました。本記事がお役に立てば幸いです。


【目次】
LTSへのアップグレードする
準備
アップグレード

LTSへのアップグレードする

LTSの更新通知はポイントリリース以降

通常、Ubuntuは新しいバージョンがリリースされるとアップデートマネージャーでアップグレードを促す通知が出ますが、LTSの場合は少々事情が異なります。たとえば2016年4月に16.04LTSがリリースされましたが、この段階では14.04LTSユーザーに「次のLTSへアップグレード出来ますよ」という通知は出されません。LTSのアップグレード通知がされるのはポイントリリースである16.04.1がリリースされた2016年7月21日以降となります。

LTSからLTSへアップグレードする

UbuntuのLTS版は通常のバージョンへのアップグレードだけでなく、直接次のTLS版へのアップグレードすることが可能です。

準備

システムの更新

システムのバージョンアップを行う前に現行システムの更新を行っておきましょう。以下のコマンドを実行します。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

※ dist-upgrade後はシステムの再起動をしましょう。
もちろんGUI操作で行いたい方はソフトウェアとアップデートで更新してもOKです。

データの保存

重要なデータはUSBメディア等に写し、別途保管しておくことをオススメします。Ubuntuのアップグレードは自動で行われ、込み入った操作もないのでデータが消去される事故は起きにくいですが、念の為にバックアップしておきましょう。

リポジトリの設定

まずはアップグレードするリポジトリを取得する設定を行います。

GUIで設定する場合
以下の図のようにシステム設定→ソフトウェアとアップデートを開きアップデートタブで新バージョン通知をLTSに設定します。
01

設定ファイルを直接編集する場合
基本的にはGUIで設定すれば問題ないのですが、直接ファイルを編集したいという方のために記載しておきます。

vim等のエディタで/etc/update-manager/release-upgradeファイルを開きます。
以下のように修正すればLTSがリリースされた際に更新情報が通知されるようになります。

Prompt=lts

02

アップグレード

GUIでアップグレードする場合

ソフトウェアの更新を起動して通常通り更新すると新バージョンへ更新できる旨が通知されます。ここでアップグレードを選択してウィザードに沿って操作すればアップグレードができます。
03

コマンド操作でアップグレードする場合

コマンド操作でアップグレードする場合には以下のコマンドでアップグレードします。

まずはシステムを更新します。

$ sudo apt-get update
$ sudo apt-get upgrade

Ubuntu 16.04LTSがアップグレード可能かチェックします。

$ do-release-upgrade -c

04

もし利用が可能という表示であれば以下のコマンドでアップグレードを開始します。

$ sudo do-release-upgrade

05

最後に

7月21にUbuntu 16.04.1がリリースされた時点でこの記事を書く予定だったのですが、あれこれと飛び回っている内に時間だけが過ぎてしまいました。今後共Linuxディストリビューションへの情報を提供してければと考えていますので宜しくお願いいたします。

【関連記事】
Ubuntu 16.04 LTSがリリース!新パッケージ形式snap導入
Ubuntu 16.04 LTSのLauncherを画面下に配置する

Sponsored Link


Linuxサーバー上にGitリモートリポジトリを作成する

$
0
0

こんにちは。今回のテーマは『Linuxサーバー上にGitリモートリポジトリを作成する』です。プロ、アマを問わずコードを書く作業をされている方はSubversionやGit等のバージョン管理システムを活用していると思います。最近はGitHub等の便利なサービスが普及して自分でリモートリポジトリを用意する必要性も薄れてきた気がします。今回は小規模での開発に活用できるリモートリポジトリをUbuntuをサーバーとして作成してみました。


【目次】
今回Gitリポジトリを構築しようとした環境
ssh接続用のGitリポジトリを準備する
Gitリポジトリを作成する
gitユーザーパスワードによる認証
公開鍵による認証
ログインシェルを変更する

今回Gitリポジトリを構築しようとした環境

作業環境および構築しようとした設定は以下の通りです。

接続プロトコル:ssh
サーバー:Ubuntu 16.04LTS(sshサーバーは設定済み)
サーバー側のGitリポジトリの場所:/opt/git
サーバー側のGit専用ユーザーアカウント:git
クライアント:ssh接続が可能なLinuxマシン

ssh接続用のGitリポジトリを準備する

サーバー側でgit専用のユーザーアカウントを作成する
まずはサーバー側にGitリポジトリ用のユーザーアカウントを用意します。今回はgitユーザーとしました。

root# useradd git

Ubuntuの場合はユーザー作成時にパスワードを決定と思いますが、念の為以下のコマンドでパスワードを付与しておきます。

root# passwd git

そしてクライアントからアクセスされるベースとなるディレクトリを作成します。今回は/opt/gitとしました。gitユーザーで読み書き可能な権限がある場所であればどこでも良いと思います。以下の要領で作成していきます。

root# mkdir -pv /opt/git
root# chown git:git /opt/git

これでサーバー上の/opt/git以下がgitユーザーで書き込み可能となりました。

Gitリポジトリを作成する

ではサーバー上の/opt/git以下にGitリポジトリを作成していきます。

root# su git
$ cd /opt/git
$ mkdir testproject.git
$ cd testproject.git
$ git --bare --shared init

ベアリポジトリには慣例的にディレクトリ末尾に.gitを付けることになっているそうです。技術的には.gitと命名しなくてもリポジトリとしては機能します。

もし他のリポジトリをcloneしてきて/opt/git以下にクローンする場合は以下のようにします。

$ git clone --bare <外部のGitリポジトリ> 

gitユーザーパスワードによる認証

とても簡単なアクセスの承認方法としてサーバー側のgitユーザーパスワードを共有するという手法があると思います。ただし簡単な反面、パスワード管理には忘却や使い回しによる流出等のデメリットも認識する必要があります。

では作成したサーバー上のGitリポジトリをCloneしてみましょう。

$ git clone git@<サーバーIP>:/opt/git/testproject.git testproject

この際にサーバーのgitユーザーのパスワードを聞かれますので入力してcloneします。尚、gitユーザーのパスワードで認証する場合はpushする際にもパスワードを求められます。

公開鍵による認証

gitユーザーのパスワードによるアクセス認証はお手軽ですが、パスワードを知られたくないメンバーがいる場合や複数人でパスワードを管理することに危険性を感じる場合には不向きです。そのような場合には公開鍵による認証を用いることでgitユーザーのパスワードを知らずともリポジトリにアクセス出来るようになります。

公開鍵の作成と登録

クライアント側で以下の用にssh公開鍵を作成します。(今回のクライアントはArch Linuxでの作業を元に記事を書いていますが、他のLinuxまたはMacでも大差ないと思います。)

$ ssh-keygen -t rsa
(操作)公開鍵のファイル名を入力(デフォルトではid_rsa)
(操作)パスワードの設定(設定しない場合はエンターを押せば良い)
(操作)パスワードの確認(設定しない場合はエンターを押せば良い)

以上の操作で~/.ssh以下に秘密鍵と公開鍵が出来上がっています。公開鍵は.pub拡張子がある方です。今回id_rsaとid_rsa.pubを作成しました。クライアント再度のsshは接続の際にデフォルトで~/.ssh/rsa_idや~/.ssh/identity(/etc/ssh/ssh_configによる)を読みにいきますので、それ以外の名前でファイルを作成した場合には読み込むキーの指定が必要となります。

以下の設定はid_rsa以外の名称をつけた場合に設定して下さい。

$ vim ~/.ssh/config

以下のように編集します。

Host <サーバーIP>
IdentityFile ~/.ssh/<秘密鍵ファイル名>

サーバー側でのssh公開鍵の登録

クライアント側で作成したid_rsa.pubをサーバー側にメール等で送付します。sambaやftp等の手段でも構いません。サーバー側では受信した公開鍵ファイルを登録していきます。

$ cat id_rsa.pub >> ~/.ssh/authorized_keys

クライアント側とサーバー側双方の公開鍵に関する設定が終わりました。これでサーバー上のgitユーザーにパスワードなしでssh接続が可能となります。

サーバー上のリポジトリを使用する

では準備が整いましたので準備したtestprojectをクローンしてみましょう。

$ git clone git@<サーバーIP>:/opt/git/testproject.git testproject

編集をコミットしてサーバーにプッシュする

$ cd testproject
$ touch README.md
$ git add --all
$ git commit -m "initial commit"

これで空のREADME.mdファイルを作成してコミットしました。pushしてサーバーへ変更を反映させることでサーバー上のリポジトリが基本的な機能を有していることを確認しましょう。

$ git push origin master

無事pushできればOKです。

ログインシェルを変更する

これまでの設定では認証方式がパスワードか公開鍵かに関わらず、bashでログインできてしまうため、ssh経由でgitアカウントにログインしたユーザーは付与された権限内でファイルの閲覧や読み書きができてしまいます。万一に備えてGitに関する操作以外のことができないようにログインシェルを変えておくこともできます。

サーバー側で以下の作業をします。
まずはgit-shellの場所を調べます。

$ whereis git-shell

筆者環境では/usr/bin/git-shellでした。

root# vim /etc/passwd
# gitユーザーの/bin/bash部分を編集
git:x:1002:1002:,,,:/home/git:/usr/bin/git-shell

この設定によりgitユーザーでログインした際にはgit-shellがログインシェルとなり、Gitリポジトリへのプッシュやクローン等の作業しかできなくなりました。

最後に

これまでGitHubをはじめ誰かが予め作成したリポジトリを使用する機会ばかりだったためにリモートリポジトリを作成して複数の人と作業する環境を構築しようと思い作業してみました。本当はGitLabの導入までやりたかったのですが、それはいずれ機会を見つけて記事にしたいと思います。

Sponsored Link


ZorinOS 11でibus-mozcを用いて日本語入力する

$
0
0

こんにちは。今回のテーマは『ZorinOS 11でibus-mozcを用いて日本語入力する』です。以前に書いたZorinOS 11に日本語入力環境を構築するでもIBusでの入力については触れましたが、今回はもう少し詳しく触れられればと思い記事を書きました。お役に立てば幸いです。


【目次】
日本語入力にIbusという選択も
mozcの再インストール
ibusとibus-mozcのインストール
設定
ログアウト・再ログイン

日本語入力にIbusという選択も

ZorinOS 11では標準の日本語入力としてFcitxが採用されていますが、もちろんiBUSを利用して日本語入力をすることもできます。従来はiBusが標準的な日本語入力として扱われることが多く、iBusを使うことになれているユーザーも多いかも知れません。

iBusはGNOMEに統合されているのでGNOME環境下で使う場合はGNOMEの設定画面からの設定することになります。ZorinOSはデスクトップ環境としてGNOMEを採用していますのでOSの設定画面から設定することになります。因みに個人的にはiBusのGNOMEへの統合はイマイチだと思っていて、fcitxのようにどのようなデスクトップ環境でも独立したユニットとして存在していて欲しかったと言うのが個人的な感想です。

mozcの再インストール

これはZorinOS 11に日本語入力をするでご紹介した問題でmozcが使えない可能性があるためです。既にfcitx-mozcでmozcが機能していることを確認している場合には以下の操作は不要です。

$ sudo apt-get install mozc-server mozc-data --reinstall

ibusとibus-mozcのインストール

まずはibusとibus-mozcをインストールします。

$ sudo apt-get intall ibus ibus-mozc

設定

コントロールパネル>>言語サポートでIMシステムにIBusを選択します。
01

コントロールパネル>>入力メソッドを開きます。
まず「日本語」入力ソースを削除して日本語(Mozc)(IBus)を追加します。
この画面で「メニューバーに現在の入力ソースを表示」も設定しておくと良いです。
02

03

※入力ソース「日本語」を残すかどうかはどのように日本語入力を切り替えたいかで選択が変わってきます。入力ソースとして「日本語」を残す場合は英語と日本語の切り替えは上記画面で設定した「次のソースへ切り替え」ショートカットで切り替えることになります。ただし、今回はibus-mozc側で全角・半角キーで日本語/英語を切り替えたいので、「日本語」を削除して「日本語(Mozc)(IBus)」のみにします。

ログアウト・再ログイン

ログアウトして再ログインします。この段階でシステムの裏側ではibus-daemonが起動している筈です。メニューバーにMozcのアイコンが見えればOKです。今回の設定では入力ソースはMozcのみにして全角・半角キーで切り替えることにしています。
04

最後に

ZorinOSはインストール直後から使いやすいツールが揃っており、Windowsからの移行にも適しているOSだと思いますが、日本語入力に関しては情報が足りないようにも感じましたので記事として発信できればと考えました。
【関連記事】
ZorinOS 11に日本語入力環境を構築する

Sponsored Link


Linuxで使えるGitクライアントを集めてみた

$
0
0

こんにちは。今回のテーマは『Linuxで使えるGitクライアントを集めてみた』です。数あるバージョン管理ツールの中でもGitは多くのプロジェクトで使用されているものの1つではないでしょうか?筆者は基本的にはgitコマンドで全ての操作を済ませてしますのですが、便利なツールがあると作業が非常に捗るのも事実です。今回はLinuxで使えるツールを集めてみました。今回紹介した以外のものもあればご教示いただけると幸いです。
【関連記事】


【目次】
Linuxにも快適なGit環境を
gitk/git-gui
GitKraken
qgit
giggle
git-cola
tig

Linuxにも快適なGit環境を

Linuxユーザーの多くはターミナルにコマンドを打ち込むことに慣れている方が多いためか、便利なGUIツールが紹介される機会が少ないように感じています。Linuxをデスクトップマシンとして使うユーザーが増えている現在ではMacやWinと同様にGUIツールでGit操作を行いたいという需要は高まっていると思います。特にGitはブランチの視覚化やdiffの表示がコマンド操作だけでは面倒でありカラフルなツールを使いたいという声も多いと思います。今回はLinuxユーザーのためのGitツールを紹介したいと思います。

gitk/git-gui

ウェブページ

言わずと知れた公式GUIクライアント

公式ツールということもありgitkとgit-guiを使えばgitコマンドを使わずとも基本的な操作はできます。しかし、stash等の機能を使おうと思うと機能を追加する必要があり、この点ではGitKrakenには及ばない印象です。

gitkがビューアーとしての機能を果たし、操作はgit-guiを用いて行います。
01

GitKraken

ウェブページ

Axosoftが提供するクロスプラットフォームGitクライアント

もしWin,Mac,Linuxで同じツールを使いたいと考えているのであればGitKrakenがオススメです。GitKrakenはAxosoftが開発しているプロプライエタリなGitクライアントツールです。GitKrakenにはFree版とPro版がありFree版は個人使用、オープンソース、非営利活動、教育目的に使用用途が限定されています。(For personal,open source,non-profit,or,educationl use)

シンプルでモダンなUI

GitHabが開発したクロスプラットフォームなデスクトップアプリケーション開発フレームワークElectronを利用して作られており、シンプルで機能的なUIを提供しています。直感的な操作でGitを操作できる感覚はSource Treeにも引けをとらないと感じています。
02

03

qgit

ウェブページ

qtベースのgitクライアント

Linuxで使えるGitクライアントの代表格といえばしばらく前までqgitという印象をお持ちの方も多かったのではないでしょうか?qgitはGTKと双璧をなすUIフレームワークで作成されたgitクライアントです。

機能の追加が少々不便

qgitは使いこなせば便利なツールですが、何をやるにもアクションを登録しなければデフォルトでは使い物にならない点が不満点でしょうか。
04

gitg

ウェブページ

gtkベースのGitブラウザ

gitgはGTKベースのGitクライアントです。qgitがアクションを登録する必要があるのに対して、gitgは操作コマンドを登録する必要はありません。ただ、個人的にはGTK特有の「シンプルな見た目を追求するあまり説明不足に陥る」というGTKアプリのクセがあり、直感的に使えるかというと個人差があるのではないかと思っています。またstash等の機能はサポートされておらず、基本的な機能をシンプルに使いたいユーザーには良いかも知れません。
09

git-cola

ウェブページ

レイアウトがカスタマイズ可能で多機能なオープンソースgitクライアント

git-colaは見た目はpush,pull,stash等の機能もサポートし、レイアウトも自身の好みで配置が自由にカスタマイズ可能なGUIクライアントです。クロスプラットフォームでありWin,Mac,Linux版がリリースされています。異なるOSでも開発環境を揃えたい方にとっては十分選択肢に入るクライアントだと思います。

08

tig

ウェブページ

キャラクターベースUIで動くGitクライアント

GitKrakenのこだわったUIと対局にあるのがtigと呼べるかも知れません。tigはターミナル上で動作するキャラクターベースUIのGitクライアントです。見た目はとっつきにくい印象を持つ方も多いかも知れませんが、使い慣れるとカスタマイズ性に優れ非常に使い勝手が良いクライアントです。筆者もメインではtigを使用しています。

カーソル移動のキーマップはvim方式が取り入れられています。デフォルト状態でもブランチのチェックアウトやステータスの確認、ステージングの管理等は手軽に行うことができます。また前コミットからの差分が見やすく表示されるところも、便利なところです。

柔軟な拡張性

tigの最大の特徴はその拡張性です。標準状態ではpull push fetch等の作業はできませんが~/.tigrcを編集することで機能を拡張してtigでも手軽にgitコマンドの機能を付与することができます。

gitコマンドの拡張版

リッチなgitクライアントとしてSourceTreeのようなツールを連想した方にはtigは拍子抜けするツールかも知れません。どちらかというと普段はgitコマンドで済ませてしまうユーザーを補助するツールという感じがします。しかしカスタマイズ次第で自分だけの使い込んだツールとなることは間違いありません。
06

07

最後に

今回はLinuxで使えるGitクライアントとして5つのツールを紹介しましたが、使ってみたいツールはありましたでしょうか?個人的にはtigがイチオシなのですが、「GUIツールが使いたい」と言う方にはハードルが高いかも知れません。そのような方にはGitKrakenがオススメです。ただし、フリー版は使用にはライセンス上の制限がありますのでご注意を。

Sponsored Link



Ubuntu 16.10をネットインストールで導入する

$
0
0

こんにちは。今回のテーマは『Ubuntu 16.10をネットインストールで導入する』です。Ubuntu 16.10がリリースされてから約1ヶ月が経ちました。もう既にお使いの方も多いとは思いますが、これからUbuntuを使ってみようと言う方に向けてインストールの記事を書きました。


【目次】
Ubuntu 16.10がリリース
Ubuntuのインストールメディアは複数ある目次
ネットインストールのメリット
ネットインストールは英語で
インストールメディアの入手
インストール
再起動・ログイン

Ubuntu 16.10がリリース

2016年10月13日にUbuntu 16.10がリリースしました。Ubuntu 16.10ではMir + Unity8の採用が話題となりデスクトップユーザーの方は高い関心を盛っていた方も多いのではないでしょうか?結果としてはXorgサーバーからの全面的な切り替えではなくMir環境も試せるという選択肢を与えたにとどまりました。詳細はリリースノートをご覧ください。

Ubuntu 16.10は比較的新しいパッケージで構築されるため、不安定な部分も残っています。特にUnity8周りはセッションや音声再生が不安定である報告がされています。安定的な環境を構築したい場合はUbuntu 16.04LTSをインストールすることをオススメします。

Ubuntuのインストールメディアは複数ある

Ubuntu 16.10のインストールメディアはLiveDVDとネットインストール用の二つのメディアが用意してあります。LiveDVDはマシンのHDDにインストールすることなくUbuntuを動かしてみることが可能であり、GUIインストールが可能などの便利な機能を備えていますが、容量が大きく予めダウンロードする容量が大きくなります。一方、ネットインストールは最小限のシステムからインストーラーを起動し、インストールに必要なファイルはオンライン上からダウンロードし、インストールをしていくことになります。どちらも一長一短あるのため、ユーザーが自分に合った手法を取れば良いと思います。

ネットインストールのメリット

ネットインストールのメリットはダウンロードするインストールメディアが非常に小さい容量で済むことです。ダウンロードに時間もかからず手軽にインストール作業に取り掛かることができます。ただし、インターネット環境がないマシンへのインストールする場合にはネットインストールはできませんので、UbuntuのLiveDVDからインストールすることになります。今回はネットインストールでUbuntu 16.10をインストールしていきます。

ネットインストールは英語で

ネットインストールは日本語はまだサポートされていません。筆者環境だけかも知れませんが、日本語を選択してインストールを進めた場合にはインストールが上手くできませんでした。正確にはインストールは完了しますが、必要なパッケージがインストールされず起動できない不具合が起こりました。インストール作業は英語で進めるのが良いと思います。

インストールメディアの入手

公式ダウンロードページからダウンロードできます。お使いのアーキテクチャに合わせて選択して下さい。

インストール

インストールメディアを起動します。インストールを選択します。
01

今回は前述の通り英語を選択してインストールを進めます。
02

ロケーションは「other」から日本を選択します。
03

03

04
05

localeに関してはこの段階ではen_US.UTF-8を選択しておきます。(インストール後に修正可能です)
06

キーボードレイアウトは日本語(Japanese)を選択します。
07

08

09

ホストネームを入力します。分からなければubuntuとでもしておけば良いと思います。
10

ファイルをダウンロードするリポジトリを選択します。特に希望がなければ日本を選択しておけば良いと思います。
11

12

プロキシを設定する必要がある場合は設定します。特に必要がない場合は空欄で結構です。
13

ログインユーザー名を決めます。フルネームはログインユーザーネームと一緒でも構いません。
14

15

パスワードを設定します。ここでは確認のため2回入力を求められます。
16

ホームディレクトリを暗号化しておくか聞かれます。今回はNOを選択します。
17

タイムゾーンが合っているか聞かれます。Asia/Tokyoで問題ないのでそのまま進みます。
18

HDDのパーティショニングに入っていきます。今回はディスク全体を使用する(use entire disk)を選択しました。特に細かい設定はせずガイドにまかせています。
19

20

21

アップデートを自動で行うか聞かれます。筆者は基本的に手動でアップデートするのでNOとしました。
22

インストールが始まります。どのようなソフトウェアパッケージを導入するか聞かれます。今回は基本的なパッケージとUbuntuデスクトップのみを導入しました。ここでXubuntuやKDEを選択すると他のフレーバーのパッケージを導入することも可能です。
23

再起動・ログイン

この後はパッケージがインストールされていきます。終わったらインストールメディアを抜いて再起動します。
再起動後はログイン画面が起動します。図では日本語となっていますが、英語でインストールしているので英語のままです。ログインして設定画面から日本語に変更すれば問題なく日本語で使用できます。
24

最後に

インストールメディアの入手が手軽なのがネットインストールのメリットですが、結局インストール時に必要はパッケージをダウンロードするのでトータルの時間は余り変わらないかも知れません。
【関連記事】Ubuntu 16.04LTSへアップグレードする

Sponsored Link


LinuxからリモートデスクトップでMacを遠隔操作する

$
0
0

こんにちは。今回のテーマは『LinuxからリモートデスクトップでMacを遠隔操作する』です。遠くに置いてあるPCのデスクトップ環境を手元のマシンから操作したいと思ったことはないでしょうか?このような技術はリモートデスクトップと呼ばれ現在では特段珍しい技術でもなくなりました。Windows同士やMac同士、或いはMacからWindowsのデスクトップ環境に接続する使い方をしている方もいらっしゃるかも知れません。当然Linuxでも同様のことができます。今回はLinuxからMacに接続してMacを遠隔操作してみます。


【目次】
LinuxからMacをリモート操作するのは簡単
Linuxで使えるVNCクライアント
Macの設定
Linux側からMacにアクセス

LinuxからMacをリモート操作するのは簡単

リモート操作「される」側がLinuxの場合はLinuxでVCNサーバーを立てなければ行けないので手間が掛かりますが、Macは簡単な設定だけでVCNサーバーが動くのでLinux(だけではないが)側からリモート操作するのは非常に簡単です。
※今回用いたMacはOS X El Capitanです。OSのバージョンによっては設定画面が多少異なる可能性があります。ご了承下さい。

今回はArch Linuxを用いてMacをリモート操作してみました。UbuntuやLinux Mint等のDebian系でもFedoraのようなRedHat系でもVNCクライアントはありますので、興味ある方は試してみて下さい。

Linuxで使えるVNCクライアント

Linuxで使えるVNCクライアントは複数あるので好みに合わせて使用すれば良いと思います。Arch Linuxで手軽にインストール可能なパッケージを数点ご紹介します。

  1. vinagre
  2. vncviewer
  3. gtk-vnc

※筆者の環境の問題かも知れませんが、remminaでは接続方法でvncを選択できなかったためにリストから外しました。

arch linuxを使用している場合は以下のコマンドでインストールすることができます。

$ sudo pacman -S vinagre

Macの設定

Mac側からの設定は特に難しいことはありません。システム環境設定画面→共有を開きます。画面共有にチェックを入れ、出てくるIPアドレスをメモします。また、アクセス許可するユーザーを指定したい場合は設定します。(今回は全てのユーザとしています。)
03

Linux側からMacにアクセス

Mac側の準備が整いましたのでLinuxからアクセスしてみます。今回はvncクライアントととしてvinagreからアクセスします。とはいえ、さほど難しいことはありません。プロトコルにVNCを選択してIPアドレスを入力すればほとんど準備は終わったようなものです。
01

接続するとMacのユーザー名とパスワードを聞かれるので入力します。
02

無事接続できるとMacのデスクトップ画面が出てくると思います。
05

画面の大きさの調整はクライアントによって異なりますがvinagreではデスクトップ全体を映し出すことも可能です。(上記画像とLinux上でのウィンドウサイズは同じです。)
04

最後に

今回はLinuxをVCNクライアントととして使用しましたが、Linux側でVCNサーバーを立てて他のマシンから遠隔操作することも可能です。CUI操作だけでしたらssh接続でOKとういう場合も多いと思いますが、映像や音楽等のGUI操作が適した場合にはリモートデスクトップは大きな力を発揮すると思います。本記事が何かのお役に立てば幸いです。

【関連記事】
Gitクライアントを集めてみた
Linuxで使えるPDF閲覧ソフトを集めてみた

Sponsored Link


【2017年】初心者にオススメなLinuxディストリビューション

$
0
0

こんにちは。今回のテーマは『【2017年】初心者にオススメなLinuxディストリビューション』です。「Linuxって種類が沢山あって、どれが良いのかわからない」「インストールしたらすぐに日本語入力ができるディストロってどれ?」という方のお役に立てればと思います。
2014年から初めて本企画も4回目を迎えました。皆様に有意義な情報をお届けできるように今後も努めて参ります。
【関連記事】
【2014春】初心者にオススメなLinuxディストリビューション
【2015年】初心者にオススメなLinuxディストリビューション
【2016年】初心者にオススメのLinuxディストリビューション



【目次】
どのLinuxディストリビューションを使えば良いのか?
ディストリビューション選びは最初のハードル
自分のレベルにあった選択を
ディストリビューション選択の基準
Debian系
ZorinOS
Ubuntu
SparkyLinux
Linux Bean
Linux mint
Debian
elementary OS
Slackware系
openSUSE
Red Hat系
Korora
Fedora
Mageia
Arch系
Antergos
Manjaro Linux
独立系
Solus

どのLinuxディストリビューションを使えば良いのか?

ディストリビューション選びは最初のハードル

Linuxを使おうと思って調べてみるとUbuntuとかFedoraとか沢山の種類が出てくるけど、何がどう違うのかが分からないという経験はないでしょうか?

この記事は「Linuxって種類が沢山あって、どれが良いのかわからない」という方が最初のハードルをスムーズに超えるお手伝いをしたいと思い書きました。筆者がLinuxを使い始めたころに、「こんなカタログ的なものがあれば良かった」というものを書いたつもりです。お役に立てば幸いです。

自分のレベルと目的にあった選択を

全くのLinux初心者で、単純にLinuxを使ってみたいという方は日本語入力環境が整備されているディストロをオススメします。日本語入力環境の整備は、コマンド入力が必要であったりと、ある程度の慣れが必要な場合があります。

一方で、CLI(Command Line Interface)に抵抗がなく、コマンドを打ち込んで設定する意欲があるのであれば、ある程度、日本語環境が不完全なディストロを選択しても良いと思います。日本語環境の設定を通してパッケージマネージャーの扱いに慣れる等のメリットもあると思います。

また、Linuxを使いたい目的が仕事でLinuxを使う機会がありそうだから触っておきたいという場合にはRedHat系のディストロに慣れておいたほうが良いと思います。

ディストリビューション選択の基準

2015年版と同じく筆者の独断と偏見に基づき「初心者が使う」という視線から以下のように設定しました。

  • 情報量の多さ
  • 日本語環境の充実具合
  • インストールの容易さ
  • インストール直後の使用感

これらの観点からパワーユーザー向けとされるArch Linux,Gentoo Linux,Slackware,CRUX等は紹介しておりません。

※オススメ度は筆者の主観です。あくまで「初心者」が対象です。
※日本語環境は筆者の使った主観を★で表しました。

Debian系

Debianを源流とするLinuxディストリビューションであり、巨大なDebianパッケージ群をAPT(Advanced Package Tool)で管理する特徴があります。

ZorinOS

03
公式HP:zorin-os.com

項目 評価/説明
オススメ度 ★★★★★
パッケージ形式 deb
パッケージ管理方式 APT(既定UI:software galore)
標準UI GNOMEベースの独自UI
日本語環境 ★★★★
日本語入力 ibus-mozcが標準

筆者コメント
ZorinOSはUbuntuベースのシステムにGNOMEをカスタマイズした独自のUIを搭載したディストロです。従来までは近未来的なエッジの効いたデザインが特徴でしたが、ZorinOS 12からはやや落ち着いて丸みのあるフラットデザインに様変わりした印象です。この辺りは好みの分かれる所かも知れません。UIの見た目を手軽に変更する独自のツールまで搭載され、ビジュアルへのこだわりは相当です。

Windowsユーザーがスムーズに移行できるように多くのWindowsメディアを利用できるようにインストール初期からメディアコーデックがインストールされていたりWineがインストールされている等の工夫がされています。

インストールはUbuntu同様に日本語で簡単に進められます。また、日本語環境に関してはZorinOS 11では少々不安定な時もありましたが、ZorinOS 12ではインストール直後から日本語表示、入力ともに問題なく安心して使うことができます。

基本的な操作はUbuntuと同様ですので多くのトラブルはUbuntuに関する情報で対応出来ると思います。Windowsから移行したい方にオススメのディストロです。
06

Ubuntu(Xubuntu,Kubuntu等の公式フレーバー含む)

01
公式HP:Ubuntu Japanese Team

項目 評価/説明
オススメ度 ★★★★★
パッケージ管理方式 APT
標準UI UNITY(GNOME3,KDE,Xfce,LXDE版あり)
日本語環境 ★★★★
日本語入力 日本語Remix版はfcitx-mozcが標準

筆者コメント
UbuntuはDebianをフォークしたディストリビューションであり、高いハード認識と設定をほとんどGUI操作で行える独自のGUIツールを搭載することでデスクトップ用途Linuxの地位確固に貢献しました。Ubuntuから派生したディストリビューションも多く、本記事で紹介するDeb系ディストロは多くがUbuntuの影響を受けています。「インストールしたらすぐに使える」というコンセプトを標榜し、新しい技術を提供し続けています。

Ubuntuは独自のUI(User Interface)であるUnityを採用しており、この独自性がユーザーの間では賛否が分かれているようです。ただ、Unityが気に入らない場合でもGNOME3,KDE,Xfce,LXDE版等が公式フレーバーとして出されていますので、Unityが気に入らない場合は、これらの公式フレーバーを使用する手があります。公式フレーバーについてはコチラを参照下さい。

日本語に関してはUbuntu Japanese Teamが提供している日本語Remex版を使用することをオススメします。インストールは日本語で可能で、ドライバのインストールも自動で行われます。また、Ubuntuは国内にもユーザーが多く、ネット上で情報が手軽に入手できますし、フォーラムも初心者に親切な運営方針を掲げており、初心者に易しいディストロと言えると思います。

01

SparkyLinux

sparky_logo
公式HP:sparkylinux.org

項目 評価/説明
オススメ度 ★★★★
パッケージ形式 deb
パッケージ管理方式 APT
標準UI Xfce,LXDE,LXQt,MATE,KDE
日本語環境 ★★★★
日本語入力 fcitx-mozc

筆者コメント
SparkyLinuxはDebianベースのディストリビューションで、軽量デスクトップを採用し、ユーザーが使いやすいように独自のカスタマイズがなされています。DropBoxやGoogle等のサードパーティリポジトリも独自に導入して、より使いやすい環境を整える工夫がなされています。

インストールは日本語で行うことができ、煩わしい設定なく非常に簡単にインストールが完了します。インストール後の初回起動ではシステムアップデートと言語設定用のウィザードが起動し、不足している言語パッケージをインストール、設定をしてくれます。このような点はDebianと比較すると気が聞いていて初心者の方には嬉しい機能ではないでしょうか?

SparkyLinuxは軽量デスクトップを主な環境としているため、KDE版以外は多少古いマシンでも快適に動作すると思います。このため、古いWindowsマシンが余っている方はSparkyLinuxを入れてみるという選択肢もありだと思います。
03

Linux Bean

linuxbean_logo
公式HP:http://hitaaki.blog47.fc2.com/blog-category-14.html

項目 評価/説明
オススメ度 ★★★★
パッケージ形式 deb
パッケージ管理方式 APT
標準UI LXDE
日本語環境 ★★★★★
日本語入力 uim-anthy

筆者コメント
Linux BeanはUbuntuベースの日本生まれのディストリビューションです。軽量デスクトップであるLXDEを採用し、Win XPが動いていたような古めのマシンでも動作する軽量ディストロです。

日本人が作成したとあって、日本語のサポートは非常に優れています。インストールも日本語で快適に行うことができ、インストール直後から日本語入力も特別な設定なしに使う行うことができます。標準の日本語入力はuim-anthyですが、後述のウィザードでfcitx-mozcに簡単に変更することができます。

また、初回起動時に表示されるLinux Bean設定ウィザードはメディアコーデックや無線LANドライバー等の面倒なインストールをGUIで一括や、IMEの変更、ディレクトリの言語の変更等のインストール後に行う面倒な設定を一括して行えるツールであり、初心者には非常に心強いと思います。

標準のWebブラウザにOperaを採用するなど、他のディストロとは一線を画すディストロですが、便利な独自ツールと親切な日本語環境から初心者にはオススメのディストロです。
04

Linux Mint

02
公式HP:Linux mint japan

項目 評価/説明
オススメ度 ★★★★
パッケージ形式 deb
パッケージ管理方式 APT
標準UI Cinnamon,MATE(Xfce,LXDE版あり)
日本語環境 ★★
日本語入力 GUIツールで設定

筆者コメント
Linux MintはCinnamonやMATE等の洗練されたデスクトップ環境を提供することで非常に人気を集めているディストロです。UbuntuベースとDebianベース(LMDE)の2種類が存在しますが、どちらも独自のMint Toolsというシステム管理ツールにより、システムの設定が簡単に行えるように工夫されています。日本語入力環境は不完全な状態なので自分で設定する必要がありますが、情報がLinux Mint Japanにより情報が得やすいというメリットがあります。

OSのバージョンをアップグレードする際の手法もLinux Mint 17から新しくなり、GUIツールを用いて容易にアップグレード出来るようになりました。(それ以前はリフレッシュアップグレードが推奨されいました。)

2016年版の当記事でエディションが多すぎて分かりづらいと記したのですが、18 “Sarah”以降はエディションの区分けがデスクトップ環境のみとなり、非常にスッキリしました。世界的に人気のディストロLinux Mintは如何でしょうか?

02

Debian

04
公式HP:DEBIAN JP Project

項目 評価/説明
オススメ度 ★★★
パッケージ形式 deb
パッケージ管理方式 APT
標準UI GNOME
日本語環境 ★★★★
日本語入力 uim-mozcが標準

筆者コメント
Debianはコニュニティによって運営されるDebianプロジェクトによって開発が進められており、汎用性と安定性に定評があります。Deb系の源流として多くのディストロの祖となりました。また、多くのアーキテクチャをサポートすることでも知られています。コミュニティの力で企業主導のディストロに劣らないディストロを世に送り続けていることは歴史的にも画期的なことだと思います。この点において同じく多くのディストロの源流であるRedHatとは好対照な存在です。プロジェクトの創設者Ian Murdock氏は2015年の12月に亡くなりましたが、その意思は現在まで受け継がれていると言えると思います。

インストールはGUIに対応し日本語でも簡単にインストール出来るようになりました。日本語環境もインストール直後からuim-mozcが使用可能であり、初心者でも戸惑うことなく導入できると思います。

一方で、「自由」であることを重要視するため、Flash Playerやコーデック、ドライバ等のプロプライエタリなパッケージの導入にはリポジトリの追加や手動インストールが必要等、ひと手間かける必要があり、初心者にはハードルが高いかも知れません。また、システムの安定性を重視するため、パッケージはやや古めです。「Linux入れてプログラミングを勉強する!」という方にはオススメです。

04

elementary OS

elementaryos_logo
公式hp:elementary.io

項目 評価/説明
オススメ度 ★★★
パッケージ形式 deb
パッケージ管理方式 apt
標準ui pantheon
日本語環境 ★★
日本語入力 guiツールで設定

筆者コメント
elementary osはubuntuをベースに独自の軽量デスクトップ環境pantheonを搭載したディストリビューションです。独自に開発したツール群と統合されたシステムを提供しており、UIのデザインは、apple社のos xを意識したシンプルでお洒落な仕上がりです。このUIに魅力を感じてelementary osを使っているユーザーは多いと思います。初期状態からインストールされているアプリケーションは軽量なものを厳選されており、ユーザーが迷うことなく快適に操作できるように環境構築されています。それ故に癖の強いディストロとも言えます。「ユーザーは開発サイドの提供したまま使えば良い」という設計思想が好みの分かれ道でしょうか。

日本語サポートについてですが、インストールは日本後でGUIツールを用いて簡単に行えます。ただし、日本語入力に関しては1月にリリースされている0.4 Lokiに関する限り、とても残念な状態です。恐らくLinuxを全く初めて触る方には日本語入力環境を整えるのは厳しいのではないでしょうか。以前のバージョンではGUIツールでibus-mozcが簡単に登録できましたが、不具合で登録できないようです。手動でのfcitx-mozc導入を乗り越えれば軽快でシンプルな使い心地が待っています。

07

Slackware系

本家Slackwareは中〜上級者向けのディストリビューションですが、今回紹介するopenSUSEは十分初心者向けとして紹介できる汎用ディストリビューションです。

openSUSE

opensuse_bannar
公式HP:opensuse.org

項目 評価/説明
オススメ度 ★★★★★
パッケージ形式 rpm
パッケージ管理方式 YaST(CLIツールとしてzypper)
標準UI KDE(インストール時にGNOME,Xfce等も選択可)
日本語環境 ★★★★
日本語入力 ibus-mozc/anthy

筆者コメント
歴史的な経緯からSlackware系としてカテゴライズされることが多いですが、現状は独立系とも言える独自のツールを搭載したユーザーフレンドリーなヨーロッパを中心に人気のディストロです。Fedora同様に企業色が前面に出ており、2015年からはSUSE Linux Engerprise(SLE)と共同開発していく体制となりました。openSUSEから得られた成果はSLEに還元される仕組みです。初期の頃からコマンドに頼らずシステム設定やパッケージ管理が可能なYaSTというツールを主力としてきただけあって、現在のopenSUSEもGUIツールとなったYaSTでシステム管理、パッケージ管理を行うことができます。

インストールは日本語のGUIインストーラで簡単に行うことができ、デスクトップ環境もGNOME,KDE,Xfce,LXDE等のメジャーどころから選択できます。日本語の表示、入力に関してはインストール直後から特に設定なしで問題なく使うことができ、初心者にも導入のハードルが低いディストロだと思います。

安定版のLeapとローリングリリース版のTumbleweedがありますが、初心者の方には安定版の使用をオススメします。デスクトップマシンからサーバーまで多目的で使用できるopenSUSEは如何でしょうか?

08

Red Hat系

その名のとおりRed Hat社開発のRedHat Linuxがベースとなっているディストリビューションです。パッケージはrpm(RPM Package Manager)を使います。

Korora

Korora_logo
公式HP:kororaproject.org

項目 評価/説明
オススメ度 ★★★★
パッケージ形式 rpm
パッケージ管理方式 DNF
標準UI Cinnamon,GNOME,MATE,KDE,Xfceから選択
日本語環境 ★★★★
日本語入力 ibus-kkc

筆者コメント
Korora Linuxは元々はGentoo Linuxをよりユーザーフレンドリーにするプロジェクトからスタートし、現在はFedoraにノンフリーなパッケージを含むリポジトリを追加することで、より使い勝手の良いFedoraを目指すプロジェクトとして活動しています。彼らの目的は「箱から出したらすぐに使えるシステム」を提供することです。プロジェクトの目指すところはUbuntuと似ていると思います。

Fedoraがフリーなパッケージのみでの構成を目指すのに対して、Kororaは使い勝手を重視しており、特にマルチメディア関連のコーデックやFlash Playerがリポジトリの追加なしに使用可能です。また、Google Chromeのリポジトリが標準で登録されているところもFedoraとは一線を画す姿勢を伺わせます。デスクトップマシンとして日常使いにするのであればFedoraよりもむしろKororaの方が向いているかも知れません。
07

Fedora

08
公式HP:Fedora Project

項目 評価/説明
オススメ度 ★★★
パッケージ形式 RPM
パッケージ管理方式 DNF
標準UI GNOME
日本語環境 ★★★★
日本語入力 ibus-kkc

筆者コメント
FedoraはRed Hat社の支援を受けたプロジェクトによって開発が進められている実験的な要素の強いディストリビューションです。Fedoraの試験運用で得られた成果はRed Hat Enterprise Linux(RHEL)に還元されるという仕組みです。そのため、安全性が未知な最新パッケージが導入されることが多く、バージョンごとに大胆な仕様変更がなされることもあります。

上記のような理由からFedoraは初心者向けではないと言われますが、決して使いにくいディストロではなく、GUIツール(anakonda)でのインストールや日本語設定の容易さを考慮すると最新技術が搭載されたRedHat系ディストロが使えるという点は非常に魅力的です。

尚、Fedoraはフリーであることを重要視するため、フリーではないライセンスのパッケージは公式リポジトリに含まれていません。そのためFlash Playerやマルチメディアコーデック等のパッケージに関してはサードパーティ製のリポジトリをマニュアルで登録する必要があります。
08

Mageia

mageia_logo
公式HP:mageia.org(日本語)

項目 評価/説明
オススメ度 ★★★
パッケージ形式 rpm
パッケージ管理方式 GUIツールおよびurpmiコマンド
標準UI Cinnamon,GNOME,MATE,KDE,Xfceから選択
日本語環境 ★★★★
日本語入力 ibus-mozc/ibus-anthy

筆者コメント
Mageiaはフランス生まれのディストリビューションで系譜としてはMandriva Linuxのフォークであり、Mandrakeの流れを組むことになります。同様にMandrakeの流れを組むユーザーフレンドリーなディストリビューションとしては当ブログでも紹介したPC Linux OSがあります。システム周りの設定ツールとして統一化されたGUIツールがあるところも非常に似ています。

インストールはGUIインストーラで日本語で指示に従うだけで簡単にでき、言語の設定もインストール中に設定すればパッケージの追加なく日本語を使うことができます。(場合によってはibusの設定が必要ですが・・)

パッケージの管理を含め、システム設定はMageia control centerというツールで行うことができます。このツールはWindowsのコントロールパネルに相当するもので、「Linuxはコマンド操作での設定が面倒」と考えている方にも安心して使用することができます。
02

Arch系

Debian,Red Hat,Slackwareのどの系列にも属さない系列は独立系と呼ばれています。有名どころではGentoo LinuxやArch Linux等があります。なかでもArch LinuxはArch系という諸派を生み出しています。今回はArch系から二つ紹介致します。

Antergos

antergos_logo
公式HP:Antegros Japanese Team

項目 評価/説明
オススメ度 ★★★
パッケージ形式 tar.xz
パッケージ管理方式 pacman
標準UI Xfce,KDE,Cinnamon,GNOME,MATE等6種
日本語環境 ★★
日本語入力 手動で設定

筆者コメント
Antergosはスペインで生まれたArch Linuxベースのディストリビューションであり、インストールや設定のハードルが高いArch Linuxをより誰でも使えるような形で提供することを目指しています。プロジェクトの主旨はManjaroとよく似ていると思います。Manjaroとantergosの大きな違いはAntergosがArch Linuxのリポジトリを使用するのに対して、Manjaroでは独自のリポジトリを使用する点です。その点でAntergosは「Arch Linuxをより便利にした」ディストロということになります。

ユーザーフレンドリーなディストロを目指すだけあり、インストーラーのcnchiは日本語でマウス操作で簡単にインストール作業を進めることができます。インストール後の日本語表示は可能ですが、必要に応じて手動でフォントをインストールする必要はあると思います。また、日本語入力に関しては手動の設定が必要なので全くの初心者の方にはハードルが高いかも知れません。しかし一度設定してしまえば、デスクトップ用に設定されたArch Linuxが手に入るという点は非常に魅力的です。
05

Manjaro

manjaro_b_logo
公式HP:manjaro.github.io

項目 評価/説明
オススメ度 ★★★
パッケージ形式 tar.xz
パッケージ管理方式 pacman
標準UI Xfce,KDE,Fluxbox
日本語環境 ★★
日本語入力 手動で設定

筆者コメント
ManjaroはArch Linuxをベースとし、Arch Linuxのシンプルさや透明性の高いシステムを維持しつつ、初心者にも易しいインストール方法とGUI環境を提供することを目指して誕生しました。Arch Linuxは非常に優れたディストロですが、インストールや各種設定が手動であることが多く、初心者向けではありません。一方でManjaroはそのような環境構築の手間を省き、便利で人気のあるアプリケーションがプリセットされたオールインワンな環境を提供してくれます。

インストールはGUI環境でマウス操作で行うことができますし、大抵の設定はManjaro独自のManjaro Hardware Detection(MHWD)と呼ばれる優れたハード認識ツールにより自動で行われていきます。インストール後のパッケージ管理についてもGUIツールがあり、必ずしもコマンドを覚える必要はありません。

日本語入力環境は自分で設定する必要があるため、日本人にとってはインストール直後からすぐ使えるディストロという状況ではないですが、Arch系ディストロにチャレンジしたい方にはオススメのディストロです。

一点、注意としてはManjaroはArch Linuxとリポジトリを共有していないため、厳密な意味ではArch Linuxではありません。よってArch LinuxのビルドシステムであるABS(Arch Build System)も使用することができず、代わりにManjaro-toolsを使うことになります。
09

独立系

多くの場合、RedHat系、Debian系、Slackware系に属さず、独自に開発されたディストリビューションは独立系と呼ばれます。既に紹介したArch系も独立系と呼ばれることが多いのですが、近年多くの派生ディストロを生み出しているので別カテゴリとしました。本項で紹介するSolusはArch系とは別の独自に作られたディストロです。初心者にオススメという主旨からはちょっと外れてしまいますが…(ほぼ趣味です)

Solus

solus_logo
公式HP:Solus Project

項目 評価/説明
オススメ度
パッケージ形式 eopkg
パッケージ管理方式 eopkg
標準UI Budgie
日本語環境 ★★
日本語入力 ibus-anthy

筆者コメント
Solusは2015年12月に正式リリースを行った比較的新しい独立系のディストリビューションです。Solus Projectが開発を進めるシンプルで機能的なBudgieデスクトップを標準環境としています。BudgieはGTK+の技術で作成されており、他のプロジェクトのフォークではなくスクラッチから作られた独自のデスクトップ環境です。使い勝手は旧来のGNOMEに似ていますが、Mate等よりも洗練された印象を受けます。どちらかと言うとelementary OSに近い印象です。パッケージ管理はコマンドベースのeopkgでも管理できますが、GUIのソフトウェアセンターを用いてソフトウェアのインストール、削除がより簡単に行うことができます。

SkypeやSlack,Google Chrome等の人気のあるプロプライエタリなアプリケーションも手軽に導入できるように工夫されている点は実用的ですが、新しいディストロ故に2017年1月現在では公式リポジトリに登録されているパッケージ数が少なく、今後の課題となるのではと個人的には考えています。

OSのインストールは英語ですが、GUIのウィザードに従うだけで簡単にインストール可能です。この辺りは非常に現代的なディストリビューションらしいと言えると思います。日本語の表示関してはインストール直後から困ることはなく、読みやすい美麗な日本語フォントで表示されます。しかし、日本語入力に関しては手動でibus-anthyをインストールし、設定する必要があります。設定自体はとても簡単ですが、Windowsから移行したばかりの方には戸惑う点かもしれません。

人と違うディストロを使ってみたい、新しいもの好きな人には面白いディストロかも知れませんね。
01

最後に

2017年版も2016年版に引き続き、Debian系の紹介に誌面を割いた印象です。やはりUbuntu派生の様々な用途に特化したディストロが多く生まれてきている状態は継続という感じでしょうか。一方で初心者に敬遠されがちだったArch系はインストールしやすい環境が整ってきていることで人気を伸ばして来ている印象を受けています。
また、欧州を中心に諸外国では依然としてrpmパッケージを扱うopenSUSE,RedHat系の人気が根強いように思われます(尤も、ビジネス用途では国内でもRedHat系のシェアは圧倒的と感じていますが…)。
日本語環境に関しては、各ディストロがマルチ言語対応を進める中で日本語表示に関してはかなり問題が解消されてきたように感じる一方で、日本語入力まではサポートしきれないディストロもあるというのが現状のようです。

本記事がLinux選びのお役に立てるならば幸いです。

Sponsored Link


Arch LinuxにSwift 3をインストールする

$
0
0

こんにちは。今回のテーマは『Arch LinuxにSwift 3をインストールする』です。手持ちのArch LinuxでもSwiftを動かしたいと思いたちAURからインストールを試みました。結果的にはエラーメッセージは出るものの一応Swift 3.0.1が動くようになりました。不足している点などはご指摘いただけると幸いです。


【目次】
Arch LinuxにSwift 3.0を入れよう
AURリポジトリのSwiftパッケージはビルド困難
swift-binパッケージをインストールする
ライブラリ関連のエラーが出てしまう

Arch LinuxにSwift 3.0を入れよう

swiftはObjective-Cに代わるiOSの開発言語として誕生し、オープンソース化したことでiOS開発の範囲を越えて使用する場を広げています。Linuxでもswiftは使用することができ、今後はサーバーサイドの開発でも使用されるのではと考えています。そんなswiftをArch Linuxに導入してみます。

AURリポジトリのSwiftパッケージはビルド困難

AUR(Arch User Repository)にはswiftパッケージとswift-binパッケージがあります。swiftパッケージはソースからビルドするためのパッケージですが、ビルドエラーが起こり2017年2月現在ではインストール困難です。一方、swift-binパッケージはUbuntu向けにビルドされたパッケージなのですが、Arch Linuxでも動かすことができます。今回はこのswift-binパッケージをインストールしていきます。

swift-binパッケージをインストールする

pgpキーのインポート

swift-binパッケージをインストールするにはswift-binとncurses5-compat-libsのgpgキーをインポートする必要があります。各パッケージのpgpキーはPACKAGEBUILDファイルの”validpgpkeys”の値です。(リンク:swift-bin,ncurses5-compat-libs)以下のコマンドでpgpキーをインポートします。

$ gpg --recv-keys <PKGBUILD中の'validpgpkeys'の値>

AURリポジトリの依存パッケージのインストール

公式リポジトリで管理されている依存パッケージに関してはyaoultやpackerで自動インストールされるのですが、AURのパッケージ関しては手動でインストールしておきましょう。ncurses5-compat-libsをAURからインストールします。今回はpackerを使用しますがyaoultでも問題ありません。

$ packer -S ncurses5-compat-libs

swift-binのインストール

準備が整いましたのでswift-binをインストールしていきましょう。特別なことは何もなく、AURから他のパッケージと同様にインストールするだけです。今回はpackerでインストールしますが、PKGBUILDをダウンロードしてきてmakepkgコマンドでインストールしてもOKです。

$ packer -S swift-bin

ライブラリ関連のエラーが出てしまう

以上でArch linux上でもswift 3.xを動かすことはできるようになるのですが、残念なことに上記の方法でインストールするとコンパイル時や実行時に下記のようなエラーが出てしまいます。

/usr/lib/libtinfo.so.5: no version information available

これはUubntu用にビルドした際に用いられたライブラリとシステムにインストールされたライブラリのバージョンの差異からくるものと推察しています。過去にAURに存在したlibtinfo-5やlibtinfo5パッケージがなくなり、現在ではncurses5-compat-libsのインストールで入るlibncursesw.so.5リンクしている状態なので、そこが原因かも知れません。いずれにせよArch上でビルドできるようになることが肝心かと思います。

エラーメッセージは出ますが、コンパイルは可能なのでswiftを書いて動かすということ自体は可能です。プログラミングの学習程度であれば支障は無いかと思います。
(本格的なswiftプログラミングはきっとMacで行うでしょうし…)

最後に

恐らく、現状ではswiftはXcode上で使う機会が最も多く、今後もswiftの主戦場はApple製品向けの開発であることは間違いないと思います。Linux上でswiftを動かせるといっても残念ながらiOS開発はできません。

しかしswiftがオープンソース化してクロスプラットフォームで動作するようになるとRubyやPythonのような用途にも活用の場を広げていくと思います。swiftはコンパイラ言語言語でありながらスクリプト言語ような手軽さも兼ね備えているので近い将来、Web界隈でも需要が出てくるかも知れませんね。
【関連記事】
Python3でMySQLに接続する環境をLinuxで整える
Arch LinuxのパッケージマネージャーYaourtを使ってみる

Sponsored Link


Zorin OS 12.1 coreをインストールする

$
0
0

こんにちは。今回のテーマは『Zorin OS 12.1 coreをインストールする』です。ZorinOS 12.1が2月21日にリリースされました。少々遅くなってしまいましたが、導入してみましたのでインストール記事を書こうかと思います。文末でも触れていますZorinOS 12.1はインストール直後には日本語入力ができません。そこの部分については次回記事で触れる予定ですので、ご了承下さい。

※日本語設定につき記事を追加しました。コチラの記事で日本語設定を扱っています。
【関連記事】


【目次】
インストールは相変わらず簡単
LiveDVDの入手
インストール手順
再起動・ログイン

インストールは相変わらず簡単

まずインストールの感想ですが、ZorinOS12と同様に全く難しい設定なしにインストール可能です。これは最近のユーザーフレンドリーなLinuxディストリビューション全般に言える話ですが、導入のハードルは非常に低くなっており、Windowsより簡単なのではないかと思うほどです。

LiveDVDの入手

https://zorinos.com/download/からダウンロード出来きます。ZorinOS 12.1 Ultimateは有料ですがZorinOS 12 coreは無料でダウンロードできます。64bit版と32bit版がありますが、Win XPが動いていたような古いマシンへの導入の場合は32bitが良いかと思います。

インストール手順

ではインストールしていきましょう。まずはLiveDVDを起動します。

必要な項目にチェックを入れて「続ける」をクリックします。

今回は前のOSを削除してインストールします。もし手動でパーティションを変更したい場合は「それ以外」を選択します。

インストール前の確認がありますので、「続ける」を押します。

タイムゾーンを聞かれるのでTokyoを選択します。

キーボード配列は日本語を選びます。

ユーザー名とパスワードを設定します。

ファイルがインストールされるまでしばらく待ちます。

インストールが終わると再起動するように促してきますので、LiveDVDを取り出して再起動します。

再起動・ログイン

再起動するとインストールしたZorinOS 12.1が起動し、ログイン画面が出てきます。パスワードを入力してログインします。

無事ログインできて以下のような画面が出ればOKです。ZorinOSへようこそ。

最後に

ZorinOS 12.1 coreではインストールしただけでは日本語入力できる環境が揃ってはいませんが、簡単な設定で日本語入力可能になります。次回の掲載記事でZorinOS12.1につき触れたいと思います。
【関連記事】
ZorinOS 12.1に日本語入力fcitx-mozcを導入する
Zorin OS 11をインストールする
Zorin OS 10をインストールする

Sponsored Link


ZorinOS 12.1に日本語入力fcitx-mozcを導入する

$
0
0

こんにちは。今回のテーマは『ZorinOS 12.1に日本語入力fcitx-mozcを導入する』です。前回の記事で触れた通りZorinOS 12.1はインストール直後は日本語パッケージの導入が不完全であり日本語入力ができません。今回はZorinOS 12.1へfcitx-mozcを導入し、日本語入力出来る環境にしていきます。

ZorinOS12.1のインストールに関してはコチラをご覧ください。
【関連記事】


【目次】
日本語表示は問題なし
日本語入力設定
もしfcitxが有効にならない場合は

日本語表示は問題なし

日本語パッケージの導入が不十分といっても、日本語フォントの導入や環境変数は日本語に設定してあるため、日本語表示には問題ありません。ZorinOSはUbuntuベースですが、日本語環境に特に配慮されているわけではないので、バージョン毎に日本語環境の使い勝手は微妙に異なります。この辺りはLinux自体が全くの初心者の場合は戸惑うことが多いかも知れません。

日本語入力設定

まずは、設定画面>地域と言語を選択します。すると下画面のように追加パッケージをインストールするようにダイアログが出てきますので「fcitx-mozc」を選択して”install”を押します。

“continue”を押します。

パスワードを求められるのでログイン時と同じパスワードを入力します。

パッケージのインストールが終わったらログアウトして再ログインします。下の画像のようなキーボードアイコンが表示されればOKです。もし切り替わらない場合はシステム再起動をしてみて下さい。

fcitx-mozcで日本語入力出来るようになりました。

もしfcitxが有効にならない場合は

ZorinOS 12.1のim-config設定はデフォルトではautoモードでibus,fcitx,uimのいずれか1つが入ってれば有効になる設定ですので、上記の設定で問題なくfcitxが有効になると思いますが、もしfcitxが有効にならない場合は以下の設定を試してみて下さい。

メニューから「システムツール」>「入力メソッド」を選びます。

「OK」を押します。

「YES」を押します。

「fcitx」を選択してOKを押します。

この設定を反映させるためにログアウトして再ログインします。これでfcitxが有効になると思います。

最後に

わざわざ記事にするほどの内容でもないかとためらっていたのですが、Linuxのハードルの1つに日本語入力の問題があると感じているので、少しでもお役に立てばと思い記事にしました。
【関連記事】
Zorin OS 12.1 coreをインストールする

Sponsored Link


fitbit Charge 2で取得したライフログにAPI経由でアクセスする

$
0
0

こんにちは。今回のテーマは『fitbit Charge 2で取得したライフログにAPI経由でアクセスする』です。最近、オンラインショップだけでなく家電ショップでもアクティブトラッカーの販売が目に付くようになりました。健康意識の高い人のための特別なガジェットだったアクティブトラッカーがより身近な存在になってきているのかなという印象を受けました。今回はfitbit社がアクティブトラッカーを用いて取得したデータをAPI経由で取得してみます。


【目次】
アクティブトラッカーって?
fitbit社のアクティブトラッカー Charge 2を使ってみた
fitbit APIは機能満載
fitbitアカウントを作成
アプリケーションの登録
OAuth認証
fitbit APIへのアクセス

アクティブトラッカーって?

アクティブトラッカーと聞いてもピンと来ない方のために簡単に説明すると、アクティブトラッカーとは腕等に装着することで心拍数や歩数、消費カロリー、睡眠時間を記録してくれるデバイスです。ウェアラブル端末の一種であり、スマートウォッチのカテゴリーとして扱われることもあります。(スマートウォッチの定義自体が曖昧なのですが・・・)

アクティブトラッカーへの事業に参入していくるメーカーも増えてきており、家電ショップで見かけるだけでもJAWBONE,fitbit,GARMIN,Xiaomi,EPSON,SONY,Withings(現NOKIA)等のメーカーが凌ぎを削っている状態です。

fitbit社のアクティブトラッカー Charge 2を使ってみた

アクティブトラッカー(活量計)が市場に出回り始めたのは2013年ごろであったと思いますが、その頃は健康意識が高かったり、ITガジェットに敏感な一部の人のためのものという感じがあり、あまり一般的ではなかったような印象を持っていました。2017年現在では大手家電ショップでもスマートフォン売り場や、ヘルスケア商品棚に陳列され一般市民にも浸透してきた感があります。

ネット上の情報からスペックを比較してfitbit Charge 2を入手しました。本体のレビューは本題から逸れるので割愛しますが、睡眠時のログがレム睡眠を含めて詳細に取れるのが非常に気に入っています。


[画像のリンク先はAmazonの商品ページです]

fitbit製のトラッカーは「無理のないフィットネスを応援する」というコンセプトのもとに日常生活の心拍数や運動量を高い精度(秒単位での測定)で把握できる能力を持っています。フィットネスに特化したエクササイズモード(機種によってはマルチスポーツモード)があり、運動時には更に緻密な測定も可能になります。このような特徴から、きめの細かいライフログを取得したい方にはオススメできるメーカーだと思います。

fitbit APIは機能満載

筆者が本記事を書こうと思った経緯はfitbitのハード的な魅力よりもむしろ充実したAPIに魅力を感じたからです。例えばfitbitの公式アプリでは心拍数は5分間隔で表示されますが、自作のプログラムからAPIにアクセスすれば秒刻みの心拍データを取得ることも可能です。(後述しますが、日中の細かいデータにはデベロッパー本人のデータにしかアクセスできません。)筆者の場合は健康意識からよりもプログラミングで遊べるという動機からfitbitを触ってみました。

他のメーカーではJOWBONEやWithigns等のメーカーがAPIを公開していますが、APIリファレンスを見た限りではfitbitほどの機能は提供されていない印象です。時間があれば他メーカーのAPIも触ってみたいですね。

fitbitアカウントを作成

まずはfitbitアカウントを作らないと始まりません。https://www.fitbit.com/loginにアクセスしてアカウントを作成しましょう。メールアドレスとパスワードだけで簡単に作れます。

このアカウントとfitbit端末を結びつけて装着することでアカウントにデータが蓄積されていきます。運動するも良し、ダラダラするも良し、fitbit端末がバイタル情報を取得して作成したアカウントにデータを蓄積してくれます。(端末からBluetooth通信でスマートフォンアプリを経由してサーバーにデータ蓄積するというのがデータの流れです)

アプリケーションの登録

登録の種類は3種類

アプリケーション登録の種類は以下の3種類があります。

  • Server
  • Client
  • Personal

このカテゴライズが非常に分かりづらいのですが、ServerとClientは認証時の秘密鍵の有無(OAuth2.0の機密クライアントとパブリッククライアント)の違いですが、Personalだけはちょっと他の二つとは異なります。

詳細なライフログへのアクセス可能なのは開発者本人のみ

まず、前提としてfitbit APIで詳細な「日中データ(秒単位や分単位のデータ)」にアクセスできるのはプログラム開発者本人のアカウントのデータのみです。(※1)たとえ家族や友人の同意があっても開発用のアカウントと異なる場合はアクセスできません。そして、自分自身のデータにアクセスするにもアプリケーションタイプをPersonalにしないといけないという2重の制限がついています。

それだけライフログをプライベートな情報と考えていると言うことですね。今回はPersonalでアプリケーションを登録し、自分自身の心拍データを秒間単位で取得してみます。

※1:自作のプログラムから他人の日中データにアクセスしたい場合はfitbit社いレビュー依頼して特別に許可を得ないと駄目みたいですね。

登録作業

登録作業自体はフォームに必要事項を記入するだけなので難しくはありません。ただし、あとの認証作業のことを考慮して「Callback URL」は”http://127.0.0.1:8080/”としておきます。ご自身でOAuth認証を実装する場合は適宜変更して下さい。

登録が完了すると以下の様な画面になります。クライアントIDやクライアントシークレットは後ほど必要になるのでメモしておきます。

OAuth認証

OAuth2.0での認証となりますので、一般的な方法で認証すれば良いのですが、ここではpython-fitbitというライブラリを用いて簡単に行いたいと思います。筆者の環境はArch Linuxですが、適宜ご自身の環境に合わせて読み替えていただければ結構です。

python-fitbitの準備

$ git clone https://github.com/orcasgit/python-fitbit
$ cd python-fitbit
$ sudo  pip3 install -r requirements/dev.txt

gather_key_oauth2.pyによる認証

準備が整ったのでgather_key_oauth2.pyを使って認証を行います。以下のコマンドを実行します。

$ python3 ./gather_key_oauth2.py <client id> <client secret>

ウェブブラウザで以下のようなページがひらきますので先程アプリケーションを登録したアカウントでログインします。

下図のような画面になるので「許可」をクリックします。

これで認証は終わりました。ウェブブラウザ上には以下のような画面が表示されます。

以下のような画面がターミナルに表示されるのでアクセストークンとリフレッシュトークンは後ほどAPIにアクセスする際に必要になるのでメモしておきます。

fitbit APIへのアクセス

fitbit APIは機能がとても多く、ここで全ての説明することは困難です。APIリファレンス(英語)をご覧いただいて興味のある機能を使ってみるのでも面白いと思います。今回は心拍数を取得してみることにしますのでGet Heart Rate Intraday Time Seriesの機能を使用します。

Pythonでコードを書いてみる

APIにアクセスしてJSONを取得するだけであればCRULコマンドやRESTクライアントを用いれば十分なのですが、もう少し遊びたいのでPythonでアクセスして表形式で出力する簡単なコードを書いてみます。今回はサンプルコードなのでトークンの更新処理は省きました。トークン更新についてはhttps://dev.fitbit.com/docs/oauth2/#refreshing-tokensをご覧ください。

先程紹介したpytohn-fitbitを使用する手もあるのですが、HTTPリクエストしてJSON取得するだけの簡単なコードですので自作します。今回は取得したJSONをパースしてtexttableモジュールを使って表にしてみたいと思います。

サンプルコードは以下のようになります。標準出力に表形式で出力するだけでなく、CSVファイルを作成したりプロット用のモジュールを使うともっと面白いことが出来ると思います。
サンプルコード

#! /usr/bin/python3

import requests
from requests.auth import HTTPBasicAuth as hba
import json
import texttable as tt

CLIENT_ID = "<クライアントID>"
CLIENT_SECRET = "<クライアントシークレット>"
ACCESS_TOKEN = "<アクセストークン>"
REFRESH_TOKEN = "<リフレッシュトークン>"
FITBIT_BASE_URL = "https://api.fitbit.com/"

def getHeartRate():
    """
    心拍数を秒単位で取得する
    """
    api_ver = "1"
    detail_level = "1sec"
    date = "2017-05-13"
    start_time = "15:00"
    end_time = "15:15"
    url = FITBIT_BASE_URL + api_ver + "/user/-/activities/heart/date/" + \
            date + "/1d/" + detail_level + "/time/" + start_time + "/" + \
            end_time + ".json"
    headers = {"Authorization" : "Bearer " + ACCESS_TOKEN} 
    res = requests.get(url,headers=headers)
    jsonStr = json.loads(res.text)
    return res.text

def showTable(res_str):
    '''
    JSONをパースしてテーブル形式で出力を行う
    '''
    res_dic = json.loads(res_str)
    datas = res_dic["activities-heart-intraday"]["dataset"]
    row_list = [["TIME","HEAT RATE"]]
    for data in datas:
        heart_rate_list = []
        heart_rate_list.append(data["time"])
        heart_rate_list.append(data["value"])
        row_list.append(heart_rate_list)
    table = tt.Texttable()
    table.set_cols_dtype(["t","t"])
    table.set_cols_align(["l","r"])
    table.add_rows(row_list)
    print(table.draw()) # 表の出力
    
if __name__ == "__main__":
    showTable(getHeartRate())

出力例
一部ですが、こんな感じに出力されます。

最後に

今は無料で公開されているWEB APIが沢山あり大変便利になっています。プログラミングの文法は一通り勉強したけどイマイチ何を作っていいか分からないという方は、いろいろな企業や団体が公開しているAPIを調査してみるのも1つの道だと思います。APIが提供するサービスを上手く取り入れて素敵なWEBアプリやモバイルアプリを作ってみてはいかがでしょうか。

Sponsored Link



【2018年】初心者にオススメなLinuxディストリビューション

$
0
0

こんにちは。今回のテーマは『【2018年】初心者にオススメなLinuxディストリビューション』です。「Linuxって種類が沢山あって、どれが良いのかわからない」「インストールしたらすぐに日本語入力ができるディストリビューションってどれ?」という方のお役に立てればと思います。
2014年から始めた本企画もなんとか5年目を迎えました。最近は記事の更新が滞っておりますが、皆様に有意義な情報をお届けできるように今後も努めて参ります。
【関連記事】
【2014春】初心者にオススメなLinuxディストリビューション
【2015年】初心者にオススメなLinuxディストリビューション
【2016年】初心者にオススメのLinuxディストリビューション
【2017年】初心者にオススメのLinuxディストリビューション



【目次】
どのLinuxディストリビューションを使えば良いのか?
ディストリビューション選びは最初のハードル
自分のレベルにあった選択を
ディストリビューション選択の基準
Debian系
Ubuntu
ZorinOS
Linux mint
Pinguy Linux
MX Linux
Debian
elementary OS
Slackware系
openSUSE
Red Hat系
Korora
Fedora
Mageia
PCLinux OS
Arch系
Antergos
Manjaro Linux
独立系
Solus

どのLinuxディストリビューションを使えば良いのか?

ディストリビューション選びは最初のハードル

Linuxを使おうと思って調べてみるとUbuntuとかFedoraとか沢山の種類が出てくるけど、何がどう違うのかが分からないという経験はないでしょうか?

この記事は「Linuxって種類が沢山あって、どれが良いのかわからない」という方が最初のハードルをスムーズに超えるお手伝いをしたいと思い書きました。筆者がLinuxを使い始めたころに、「こんなカタログ的なものがあれば良かった」というものを書いたつもりです。お役に立てば幸いです。

自分のレベルと目的にあった選択を

全くのLinux初心者で、単純にLinuxを使ってみたいという方は日本語入力環境が整備されているディストリビューションをオススメします。日本語入力環境の整備は、コマンド入力が必要であったりと、ある程度の慣れが必要な場合があります。

一方で、CLI(Command Line Interface)に抵抗がなく、コマンドを打ち込んで設定する意欲があるのであれば、ある程度、日本語環境が不完全なディストリビューションを選択しても良いと思います。日本語環境の設定を通してパッケージマネージャーの扱いに慣れる等のメリットもあると思います。

また、Linuxを使いたい目的が仕事でLinuxを使う機会がありそうだから触っておきたいという場合にはRedHat系のディストリビューションに慣れておいたほうが良いと思います。

ディストリビューション選択の基準

2017年版と同じく筆者の独断と偏見に基づき「初心者が使う」という視線から以下のように設定しました。

  • 情報量の多さ
  • 日本語環境の充実具合
  • インストールの容易さ
  • インストール直後の使用感

これらの観点からパワーユーザー向けとされるArch Linux,Gentoo Linux,Slackware,CRUX等は紹介しておりません。

※オススメ度は筆者の主観です。あくまで「初心者」が対象です。
※日本語環境は筆者の使った主観を★で表しました。

Debian系

Debianを源流とするLinuxディストリビューションであり、巨大なDebianパッケージ群をAPT(Advanced Package Tool)で管理する特徴があります。近年ではDebianから派生したUbuntu派生のディストリビューションが圧倒的であり、Debian/Ubuntu系というカテゴリーの方が分かりやすいと考えています。DebianもUbuntuの生成物を取り入れている部分もあります。

Ubuntu(Xubuntu,Kubuntu等の公式フレーバー含む)

01
公式HP:Ubuntu Japanese Team

項目 評価/説明
オススメ度 ★★★★★
パッケージ管理方式 APT
標準UI GNOME3のカスタマイズ版(KDE,Xfce,LXDE,MATE,Cinnamon版あり)
日本語環境 ★★★★★
日本語入力 17.10からはibus-mozcが初期設定

筆者コメント
Ubuntuに関しては説明の必要も無いぐらい有名なディストリビューションになり、現在ではUbuntuベースの派生ディストリビューションを生み出す源流になりました。簡単に説明を加えるとUbuntuはDebianをフォークしたディストリビューションであり、高いハード認識と設定をほとんどGUI操作で行える独自のGUIツールを搭載することでデスクトップ用途Linuxの地位確固に貢献しました。Ubuntuから派生したディストリビューションも多く、本記事で紹介するDeb系ディストリビューションは多くがUbuntuの影響を受けています。Canonical社の全面的な支援を受け開発されておりDebianに比べて「思想よりも実利をとる」傾向が強いです。「インストールしたらすぐに使える」というコンセプトを標榜し、新しい技術を提供し続けています。

従来Ubuntu標準のデスクトップ環境(DE)はUnityでしたが、GNOME ShellをカスタマイズしたDEとなっております。尚、Ubuntuには公式フレーバーという各デスクトップや目的に応じたカスタマイズ版がありこれらを選択することでKDE,MATE,Budgie,Xfce,Lxdeといったデスクトップを手軽に利用することができます。尚、これまでGNOME用のカスタマイズ版として提供されていたUbuntu GNOMEはUbuntuのDEがGNOME3となったことにより統合されました。公式フレーバーについてはコチラを参照下さい。

日本語に関してはUbuntu Japanese Teamが提供している日本語Remex版を使用することをオススメします。インストールは日本語で可能で、ドライバのインストールも自動で行われます。また、Ubuntuは国内にもユーザーが多く、ネット上で情報が手軽に入手できますし、フォーラムも初心者に親切な運営方針を掲げており、初心者に易しいディストリビューションと言えると思います。

ZorinOS

03
公式HP:zorin-os.com

項目 評価/説明
オススメ度 ★★★★
パッケージ形式 deb
パッケージ管理方式 APT(既定UI:software)
標準UI GNOMEベースの独自UI
日本語環境 ★★★
日本語入力 設定ツールでfcitx-mozcが導入される

筆者コメント
ZorinOSはUbuntuベースのシステムにGNOMEをカスタマイズした独自のUIを搭載したディストリビューションです。従来までは近未来的なエッジの効いたデザインが特徴でしたが、ZorinOS 12からはやや落ち着いて丸みのあるフラットデザインに様変わりした印象です。この辺りは好みの分かれる所かも知れません。UIの見た目を手軽に変更する独自のツールまで搭載され、ビジュアルへのこだわりは相当です。

Windowsユーザーがスムーズに移行できるように多くのWindowsメディアを利用できるようにインストール初期からメディアコーデックがインストールされていたりWineがインストールされている等の工夫がされています。

インストールはUbuntu同様に日本語で簡単に進められます。また、日本語環境に関してはインストール直後から日本語表示に関しては全く問題ないですが入力に関しては、設定画面で言語パッケージをインストールする必要があります。この点はバージョンが変わる度に変動していてインストール直後から入力が出来たり出来なかったりと挙動に一貫性がない状態です。何れにせよGUIで必要な言語パッケージを一括してインストールしてくれるので設定の手間は非常に軽微です。

基本的な操作はUbuntuと同様ですので多くのトラブルはUbuntuに関する情報で対応出来ると思います。Windowsから移行したい方にオススメのディストリビューションです。
06

Linux Mint

02
公式HP:Linux mint japan

項目 評価/説明
オススメ度 ★★★★
パッケージ形式 deb
パッケージ管理方式 APT(独自のGUIツールあり)
標準UI Cinnamon,MATE(Xfce,LXDE版あり)
日本語環境 ★★★★
日本語入力 インストール直後はfictx-mozc

筆者コメント
Linux Mintはシンプルさよりも使い勝手が良くモダンでエレガントな環境と提供することを標榜し、その姿勢に共感する人々から人気の高いディストリビューションです。既存のデスクトップ環境やアプリケーションを組み合わさえるだけでなく、独自のツールも開発してきました。

今でこそCinnamonやMATEといったデスクトップ環境は他のディストリビューションでも取り入れられていますが、もともとはLinux Mint用にGNOMEからフォークしたデスクトップ環境であり、Linux Mintが注目を集めた大きな要因はCinnamon,Mateおよび統一されたツール群よるものだったように思えます。UbuntuベースとDebianベース(LMDE)の2種類が存在しますが、どちらも独自の管理ツールにより、システムの設定が簡単に行えるように工夫されています。

日本語環境に関しては2017年版の記事の時点では日本語入力が手動設定必要でしたが、現在ではインストール直後から表示、入力ともに問題なくスムーズに使い始めることが出来ます。

一方で独自ツールによる管理はやや複雑にも思えます。例えば、パッケージマネージャ(mintUpdate)ではセキュリティに応じてパッケージのレベルが5段階に分かれていますが、これは初心者には混乱を招くのではと考えています。また、OSのアップグレード方法もマイナーアップデートはGUIツール、メジャーアップデートはコマンド操作(mintupgrade)または再インストール(リフレッシュアップグレード)という具合にややシンプルさに欠ける点があるようにも感じています。

とは言え、国内では非常に人気があり使用者も多いディストリビューションですので情報も集まりやすく使いやすいディストリビューションの1つだと思います。

Pinguy OS


公式HP:pinguyos.com

項目 評価/説明
オススメ度 ★★★
パッケージ形式 deb
パッケージ管理方式 APT
標準UI GNOME3のカスタマイズ版
日本語環境 ★★★
日本語入力 デフォルトでは無いが、GUIで設定可能

筆者コメント
Pinguy OSのテーマはズバリ「使いやすさ」。WindowsやMacを使ったことがあるバックグラウンドをもったユーザーが違和感なく「使える」ことを重視しシンプルな設計設計を謳っています。ユーザーがWinやMacからスムーズに移行できるように標準のデスクトップ環境はGNOME3にプラグイン等でカスタマイズされており、使い勝手の向上を目指しています。ただ、古いマシン(Win XPが動いていたような)マシンでの起動は重いかも知れません。

多くのUbuntuベースディストリビューションと同様にインストールは日本語で非常に簡単にできますので導入のコストは非常に低いです。インストール直後の日本語環境は表示を含めて完全な状態ではないですが、GUIの設定ツールを使うことで入力ツール含めて言語パッケージがインストール出来るので、コマンド操作なしに日本語環境を構築することが可能ですが、全く初心者の方には難しいかも知れません。

ソフトウェアの管理には予めsynapticsが入っていますが、初心者の方はUbuntuソフトウェアセンターを使用した方が分かりやすいと思います。
デスクトップ環境は好みが分かれる所だとは思いますが、GNOMEが肌に合う方には使いやすいディストリビューションなのではないでしょうか?

MX Linux


公式HP:mxlinux.org

項目 評価/説明
オススメ度 ★★★
パッケージ形式 deb
パッケージ管理方式 APT
標準UI Xfce
日本語環境 ★★
日本語入力 手動で設定する必要あり

筆者コメント
KM LinuxはDebianベースの軽量ディストリビューションであるantiXと同じくDebianベースのMEPISのコミュニティが協力して生み出したDebianベースのディストリビューションです。このプロジェクトはエレガントで効率的なデスクトップ環境を持ちシンプルかつ安定性のある中量級のOSを提供することです。
そのためデスクトップ環境には軽量にも関わらず多機能なXfceを採用し、環境設定ツールには独自のMXツール群を提供しています。Debienベースですが、コミュニティ独自のリポジトリから提供されるパッケージがあるためプロプライエタリなドライバやFlash Player等のDebianでは提供されていないパッケージも導入が容易です。

インストールは日本語で設問に答えるだけで簡単に行うことが出来ます。またインストール直後から設定無しで日本語表示される点も日本のユーザーには嬉しいところだと思います。

日本語入力環境に関してはGUIツールで設定できず、手動で日本語入力環境を整える必要があります。Debianベースなので情報は多くWEB上で調べるだけで解決するとは思いますが、「最初から日本語入力できないと困る」という方には向いていないかも知れません。

洗練されたデスクトップ環境とDebianの安定性を兼ね備えプロプライエタリなパッケージにも柔軟に対応できるディストリビューションとして国内でもファンが増えてきている印象です。Ubuntuで慣れた方が次に触ってみると面白いかも知れません。

Debian

04
公式HP:DEBIAN JP Project

項目 評価/説明
オススメ度 ★★★
パッケージ形式 deb
パッケージ管理方式 APT
標準UI GNOME
日本語環境 ★★★★
日本語入力 uim-mozcが標準

筆者コメント
Debianはコミニュティによって運営されるDebianプロジェクトによって開発が進められているディストリビューションであり、安定性に定評があります。パッケージ管理ツールとしてにAPT(Advanced Package Tool)を生み出し今日のDeb系の基礎を築き、RedHat社の開発したRPMパッケージによるパッケージ管理方法と双璧をなす存在となりました。現在ではUbuntuの影に隠れ目立たないようにも見えるディストリビューションですが、コミュニティベースでの開発で企業の開発に引けを取らないディストリビューションを世に送り続けていることは歴史的にも画期的なことだと思います。この点において企業の支援を受けて開発されてきたOpenSUSE, Fedora等のディストリビューションとは一線を画す存在です。

インストールが難しいと言われた時代は既に昔となり、当ブログでも扱ってきましたが、インストールはGUIに対応し日本語でも簡単にインストール出来るようになりました。日本語環境もインストール直後からuim-mozcが使用可能であり、初心者でも戸惑うことなく導入できると思います。

Debianプロジェクトは「Debian社会契約」を掲げ「自由」であることを非常に重視するため、メディアコーデックや各種ドライバ等のプロプライエタリなパッケージはDebianの一部として提供されません。よってユーザーはサードパーティ用のリポジトリを手動で追加する必要があるなど、工夫が必要です。この点がプロプライエタリなパッケージも提供し「入れたらすぐ使える」を目指すUbuntuとは大きく異なる点です。

ただ、堅牢で安定したシステムを提供してくれるプログラミングを勉強したい方などには非常に魅力的なディストリビューションだと思います。

elementary OS

elementaryos_logo
公式hp:elementary.io

項目 評価/説明
オススメ度 ★★
パッケージ形式 deb
パッケージ管理方式 apt
標準ui pantheon
日本語環境 ★★
日本語入力 手動で設定の必要あり

筆者コメント
elementary osはubuntuをベースにしたApple社のMacを彷彿とさせるディストリビューションです。デスクトップ環境には独自のpantheonを搭載しており独自に開発したツール群と統合されたシステムで、ユーザーにシンプルで洗練された環境の提供を目指しています。デザインとは何か?ユーザーに何を提供し、何を提供しないべきなのか?公式ドキュメントにはelementary OS の哲学が色濃く出ています。elementary OSは敢えてユーザーのカスタマイズ性を損ねてでもシンプルさと快適さを提供しようとします。この哲学もApple製品の哲学と非常に似ていると感じます。

インストール直後から整った環境が提供されると捉えるか、使いやすさの押し売りと捉えるか・・・ここは非常に好みの分かれるポイントだと思いますが、Linuxが一部のギークだけのものだけではなくなってきていることを象徴するディストリビューションとも言えると思います。

日本語表示に関しては設定ツールを用いて言語設定を行えば比較的容易に設定できますが、日本語入力に関しては残念と言わざるを得ません。ibus-mozc,ibus-anthyの登録の部分で不具合があり、ibus以外のインプットメソッドの選択が必要になると思います。他のディストリビューションで日本語環境を整えたことがある方なら大丈夫だと思いますが、全くの初心者の方が日本語入力できるところまで設定するは大変かと思われます。

SUSE系

ドイツ企業である元S.U.S.Eの開発したディストリビューションの流れを汲み、Slackwareとも歴史的な関わりを持つ一派です。

openSUSE

opensuse_bannar
公式HP:opensuse.org

項目 評価/説明
オススメ度 ★★★★★
パッケージ形式 rpm
パッケージ管理方式 YaST(CLIツールとしてzypper)
標準UI KDE(インストール時にGNOME,Xfce等も選択可)
日本語環境 ★★★★
日本語入力 ibus-mozc/anthy

筆者コメント
歴史的な経緯からSlackware系としてカテゴライズされることもあるため昨年まではSlackware系で紹介をしていたのですが、実質的には現状独立系のディストリビューションですのでSUSE系と位置づけ紹介いたします。独自のツールを搭載し、初心者から開発者までユーザーを問わず誰でも使える ユーザーフレンドリーな環境の提供を目指しています。ドイツ企業が起源のディストリビューションでありヨーロッパを中心に人気のディストリビューションです。Fedora同様に企業色が前面に出ており、2015年からはSUSE Linux Engerprise(SLE)と共同開発していく体制となりました。openSUSEから得られた成果はSLEに還元される仕組みです。初期の頃からコマンドに頼らずシステム設定やパッケージ管理が可能なYaSTというツールを主力としてきただけあって、現在のopenSUSEもGUIツールとなったYaSTでシステム管理、パッケージ管理を行うことができます。

パッケージはRedHat系と同じくRPMパッケージであり、GUIのYaST、コマンドラインのZypperでパッケージ管理を行えます。RPM系のコマンドが使えることからRedHat系のディストリビューションからの転向も非常に容易です。

インストールは日本語のGUIインストーラで簡単に行うことができ、デスクトップ環境もGNOME,KDE,Xfce,LXDE等のメジャーどころから選択できます。日本語の表示、入力に関してはインストール直後から特に設定なしで問題なく使うことができ、初心者にも導入のハードルが低いディストリビューションだと思います。

安定版のLeapとローリングリリース版のTumbleweedがありますが、初心者の方には安定版のLeapがオススメです。日常の中で使えるLinuxとしてOpen SUSEは良い選択だと思います。

Red Hat系

その名のとおりRed Hat社開発のRedHat Linuxが系譜の源流となっているディストリビューションです。パッケージはrpm(RPM Package Manager)を使います。

Korora

Korora_logo
公式HP:kororaproject.org

項目 評価/説明
オススメ度 ★★★★
パッケージ形式 rpm
パッケージ管理方式 DNF
標準UI Cinnamon,GNOME,MATE,KDE,Xfceから選択
日本語環境 ★★★★
日本語入力 ibus-kkc

筆者コメント
Korora Linuxは元々はGentoo Linuxをよりユーザーフレンドリーにするプロジェクトからスタートし、現在はFedoraにノンフリーなパッケージを含むリポジトリを追加することで、より使い勝手の良いFedoraを目指すプロジェクトとして活動しています。「箱から出したらすぐに使えるシステム」を提供するためにFedoraでは標準で取り入れていないリポジトリも追加されています。

Fedoraがフリーなパッケージのみでの構成を目指すのに対して、Kororaは使い勝手を重視しており、特にマルチメディア関連のコーデックやFlash Playerがリポジトリの追加なしに使用可能です。また、Google Chromeのリポジトリが標準で登録されているところもFedoraとは一線を画す姿勢を伺わせます。実用的な使い勝手を求めるのであれば初心者にとってはFedoraよりもむしろKororaの方が向いているかも知れません。
07

Fedora

08
公式HP:Fedora Project

項目 評価/説明
オススメ度 ★★★
パッケージ形式 RPM
パッケージ管理方式 DNF
標準UI GNOME(KDE,Cinnamon,Xfce,MATE,LXQTのspins版あり)
日本語環境 ★★★★
日本語入力 ibus-kkc

筆者コメント
FedoraはRed Hat社の支援を受けたプロジェクトによって開発が進められている実験的な要素の強いディストリビューションです。Fedoraの試験運用で得られた成果はRed Hat Enterprise Linux(RHEL)に還元されるという仕組みです。そのため、安全性が未知な最新パッケージが導入されることが多く、バージョンごとに大胆な仕様変更がなされることもあります。

上記のような理由からFedoraは初心者向けではないと言われますが、決して使いにくいディストリビューションではなく、インストールや日本語設定の容易さを考慮すると最新技術が搭載されたRedHat系ディストリビューションが使えるという点は非常に魅力的です。特にプログラミングを学びたい方は最新のプログラミング環境を整えられるという点で非常に向いているディストリビューションだと思います。

標準のデスクトップ環境はGNOMEですが、SPINSというUbuntuで言う所のフレーバーが用意されており、ユーザーは好みの環境を構築することが出来ます。FedoraのSPINSにに関してはコチラ

尚、Fedoraはフリーであることを重要視するため、フリーではないライセンスのパッケージは公式リポジトリに含まれていません。そのためFlash Playerやマルチメディアコーデック等のパッケージに関してはサードパーティ製のリポジトリをマニュアルで登録する必要があります。
08

Mageia

mageia_logo
公式HP:mageia.org(日本語)

項目 評価/説明
オススメ度 ★★★
パッケージ形式 rpm
パッケージ管理方式 GUIツールおよびurpmiコマンド
標準UI Cinnamon,GNOME,MATE,KDE,Xfceから選択
日本語環境 ★★★★
日本語入力 ibus-mozc/ibus-anthy

筆者コメント
Mageiaは系譜としてはMandriva Linuxのフォークであり、Mandrakeの流れを組むことになります。同様にMandrakeの流れを組むユーザーフレンドリーなディストリビューションとしてはPC Linux OSやOpen Mandrivaがあります。Mandrivaの開発母体がフランスであったこともあり欧州でユーザーの多いディストリビューションです。使い勝手としてはOpenSUSEに非常に近いものを感じます。

インストールは日本語のGUIに従って必要項目を埋めるだけで簡単に終わります。これはMageiaの特徴というわけではないですが、やはりインストールのハードルが低いことは初心者にとって重要な要素だと思います。

日本語環境に関しては比較的整っていてインストール直後から日本語表示は問題ありません。日本語入力についてもGNOMEの場合はGUIでの設定が必要ではあるものの、パッケージのインストールなしに日本語が入力できるというのは嬉しいことです。パッケージの管理を含め、システム設定はMageiaコントロールセンターという設定ツールで行うことができます。このツールはWindowsのコントロールパネルに相当するもので、この点も初心者と考えている方にも安心して使用することができます。

パッケージ管理は基本的にGUIで操作可能なので敢えてコマンド操作をしなくても良いのですが、コマンドライン操作の場合はパッケージ管理はurpmコマンドを使用するため、UbuntuやFedoraともコマンド体系が異なります。この点は日本語で書かれたウェブページにはまだまだ情報が少ない状況ですので、注意が必要かも知れません。

PCLinux OS


公式HP:pclinuxos.com

項目 評価/説明
オススメ度 ★★★
パッケージ形式 rpm
パッケージ管理方式 GUIツールおよびurpm系のコマンド
標準UI MATE,KDE,Xfce等から選択
日本語環境 ★★
日本語入力 iBus/SCIM/uimが設定可

筆者コメント
PCLinuxOSはMandrivaをベースとしたディストリビューションです。上記で紹介したMageiaの親戚のようなディストリビューションです。名前の通りデスクトップ用Linuxを意識して構成されており初心者にも使いやすいシステムを目指しています。設定はほぼGUIツールで出来るように独自の設定ツールが導入されており、初期状態で入っているパッケージも豊富でオフィスツールからネットで動画閲覧まで特別な設定なしで色々出来るデスクトップに仕上がっています。

パッケージ形式はRPMパッケージなのですが、パッケージ管理ツールはDeb系で使われているAPTです。正確にはRPM用にカスタマイズされたAPT-RPMを用いています。よってパッケージ管理に関してはRedHat系にも関わらずDebianやUbuntuと同様のコマンド体系で操作することが出来ます。標準のGUIツールとしてはSynapticが入っています。

インストールから日本語環境構築までは英語環境で行う必要があり、英語の苦手な方にはハードルが高いかも知れません。日本語化はローカライズ設定ツールが付属しておりマウス操作のみでも容易に設定可能です。インストール直後の設定は少々手間がかかりますが、設定してしまえば使い勝手の良いデスクトップ環境が出来上がると思います。

Arch系

Debian,Red Hat,Slackwareのどの系列にも属さない系列は独立系と呼ばれています。有名どころではGentoo LinuxやArch Linux等があります。なかでもArch LinuxはArch系という諸派を生み出しています。今回はArch系から二つ紹介致します。

Antergos

antergos_logo
公式HP:Antegros Japanese Team

項目 評価/説明
オススメ度 ★★★
パッケージ形式 tar.xz
パッケージ管理方式 pacman
標準UI Xfce,KDE,Cinnamon,GNOME,MATE等6種
日本語環境 ★★
日本語入力 手動で設定

筆者コメント
Antergosはスペインで生まれたArch Linuxベースのディストリビューションであり、Arch Linuxの持つ透明性、シンプルさ、ローリングリリースによる常に最新であるという特徴を活かしながらインストールやデスクトップ環境構築の煩雑さを緩和しようとしたディストリビューションです。Manjaroとantergosの大きな違いはAntergosがArch Linuxのリポジトリを使用するのに対して、Manjaroでは独自のリポジトリを使用する点です。その点でAntergosは「Arch Linuxに便利機能を追加した」ディストリビューションということになります。

インストールの敷居の高さを緩和するためAntergosのインストーラはUbuntu等に負けないぐらい簡単にインストール出来るようになっており、日本語でマウス操作でインストールが可能です。Arch Linuxのインストールに挫折したことがある方は拍子抜けするかも知れません。

日本語表示に関してはインストール直後から問題ないのですが、入力に関しては手動での設定が必要です。初心者の方にはややハードルが高いかも知れませんが、Arch Wikiで調べながら日本語入力環境を設定するというのもシステムに慣れる良い機会だと思います。シンプルで最新というキレのあるArch Linuxをより使いやすい形で提供してくれるAntergosはいかがでしょうか?
05

Manjaro

manjaro_b_logo
公式HP:manjaro.github.io

項目 評価/説明
オススメ度 ★★★
パッケージ形式 tar.xz
パッケージ管理方式 pacman
標準UI Xfce,KDE,Fluxbox
日本語環境 ★★
日本語入力 手動で設定

筆者コメント
ManjaroはArch Linuxのシンプルさや透明性の高いシステムと初心者でも手軽に使えるインストール方法とGUI環境を併せ持つ環境の提供を目指しています。コンセプトとしてはAntergosと似ていますが、独自ツールと独自リポジトリでパッケージを管理する点でアプローチに違いがあります。Arch LinuxはLinuxに慣れたユーザーをターゲットに透明性の高いシステムを提供するディストリビューションですが、使う上でコマンド操作や設定ファイルを直接編集する場面も多く、初心者向けではありません。Manjaroはそのような環境構築の手間を省き、便利で人気のあるアプリケーションがプリセットされたオールインワンな環境を提供してくれます。

インストールはGUI環境でマウス操作で行うことができますし、大抵の設定はManjaro独自のManjaro Hardware Detection(MHWD)と呼ばれる優れたハード認識ツールにより自動で行われていきます。インストール後のパッケージ管理についてもGUIツールがあり、必ずしもコマンドを覚える必要はありません。

日本語入力環境は自分で設定する必要があるため、日本人にとってはインストール直後からすぐ使えるディストリビューションという状況ではないですが、情報量の豊富なArch wikiの多くの部分を参考に出来るためArch系のディストリビューションに興味のある方は試してみてはいかがでしょうか?

一点、注意としてはManjaroはArch Linuxとリポジトリを共有していないため、厳密な意味ではArch Linuxではありません。Arch Linuxのパッケージ管理システムを踏襲したArch Linuxライクなディストリビューションと言えると思います。

独立系

多くの場合、RedHat系、Debian系、Slackware系に属さず、独自に開発されたディストリビューションは独立系と呼ばれます。既に紹介したArch系も独立系と呼ばれることが多いのですが、近年多くの派生ディストリビューションを生み出しているので別カテゴリとしました。本項で紹介するSolusはArch系とは別の独自に作られたディストリビューションです。初心者にオススメという主旨からはちょっと外れてしまいますが…(ほぼ趣味です)

Solus

solus_logo
公式HP:Solus Project

項目 評価/説明
オススメ度
パッケージ形式 eopkg
パッケージ管理方式 eopkg
標準UI Budgie
日本語環境 ★★
日本語入力 手動で設定(ibus-anthy)

筆者コメント
Solusは2015年12月に正式リリースを行った比較的新しい独立系のディストリビューションです。Solus Projectが開発を進めるシンプルで機能的なBudgieデスクトップを標準環境としています。BudgieはGTK+の技術で作成されており、他のプロジェクトのフォークではなくスクラッチから作られた独自のデスクトップ環境です。使い勝手は旧来のGNOMEに似ていますが、Mate等よりも洗練された印象を受けます。どちらかと言うとelementary OSに近い印象です。Budgieを使ってみたいけどSolusはちょっと・・という方はUbuntu BudgieにてBudgieを使ってみることが出来ます。

インストールに関しては英語で行う必要がありますが、基本的にはGUIの指示に従っていけば非常に簡単に行えます。パッケージ管理もGUIのソフトウェアセンターを用いてソフトウェアのインストール、削除がより簡単に行うことができます。この辺りは流石に新しいディストリビューションらしいところだと思います。尚、パッケージ管理はeopkgコマンドを用いてCUI操作でも行えます。

SkypeやSlack,Google Chrome等の人気のあるプロプライエタリなアプリケーションも手軽に導入できるように工夫されている点は実用的ですが、新しいディストリビューション故に2017年1月現在では公式リポジトリに登録されているパッケージ数が少なく、今後の課題となるのではと個人的には考えています。

OSのインストールは英語ですが、GUIのウィザードに従うだけで簡単にインストール可能です。この辺りは非常に現代的なディストリビューションらしいと言えると思います。今回使用してみたのはSolis 3ですが、日本語周りの使い勝手は変化ありません。日本語の表示関してはインストール直後から問題なく美麗な日本語フォントで表示されます。しかし、日本語入力に関しては手動でibus-anthyをインストールし、設定する必要があります。

最後に

2018年版もDeb系の紹介が多かった印象です。デスクトップ用途Linuxに関してはやはりUbuntuの影響が大きく、新興のディストリビューションはUbuntuベースのものが多いため、結果的に今年もDeb系の紹介に誌面を多く割きました。

初心者でも扱いやすいArch系のManjaroや独立系のSolusが出てきたことでDeb系、RedHat系以外の選択肢も増えたことは個人的には非常に喜ばしいことだと思っています。初心者の方には却って選択が難しくなってしまうという面があるかも知れませんが、選択肢が多いということはオープンソースOSの醍醐味でもありますので、是非楽しんでLinuxに触れていただければと思います。

日本語表示関してはマルチ言語対応が進む中でインストールから日本語に設定可能なディストリビューションが増え、英語が苦手なユーザーにも取っ付きやすくなった印象はありますが、日本語入力に関してはインストール直後から設定無しで入力できるディストリビューションは限られているのが現状だと思います。日本語入力の観点からはUbuntu(日本語Remix版), Debian, OpenSUSE, Fedora, Mageia辺りが優秀かと考えています。

本記事があなたのLinuxライフに少しでも貢献できれば幸いです。

Sponsored Link


elementary OSに日本語入力環境を整備する

$
0
0

こんにちは。今回のテーマは『elementary OSに日本語入力環境を整備する』です。先日「【2018年】初心者にオススメなLinuxディストリビューション」の記事でelementary OSを取り上げたのですが、日本語入力環境の構築がややネックかと感じましたので記事にしたいと思います。多くのディストロに触れている方にとっては単純なパッケージインストールの話なのですが、初めて触るLinuxがelementary OSという方のお役に少しでも立てれば幸いです。


【目次】
日本語入力環境導入が分かりづらい
fcitxで日本語入力
iBusで日本語入力

日本語入力環境設定が分かりづらい

elementary OSのPantheonの問題なのかiBusの問題なのか判然としないのですが、ibus-mozcをインストールしても設定画面から追加できないという不具合があり、初心者にとっては戸惑う点が多いと思います。(2018年3月ver. 0.4.1にて確認)

システム設定のキーボード設定からibus-mozcが追加できないためibusではなくfcitxにて日本語入力環境を構築するケースが多いようです。ただ、elementary OSでibus-mozcが使えない訳ではないので、今回はibusを利用する方法も含めて紹介したいと思います。

fcitxで日本語入力

インストール

まずは以下のコマンドを実行してficxおよびfcitx-mozcをインストールします。

$ sudo apt-get install fcitx fcitx-mozc --install-recommends

設定

システムのim(インプットメソッド)をfcitxに変更します。

以下コマンドで設定ツールを起動します。

$ im-config

fcitxにチェックを入れOKを押します。

fcitxの設定も確認します。

$ fcitx-config-gtk3 &

特に設定は不要かと思いますが、以下の画像のようfcitx-mozcが追加されていることを確認します。

設定ツールでfcitxを選択し設定します。一度ログアウトし再ログインします。
fcitx-mozcで日本語入力が出来るようになりました。初期設定では日本語/半角英数の切り替えは「全角/半角」キーが設定されています。

iBusで日本語入力

iBusによる入力ではelementary OS標準のテキストエディタscratchにて日本語入力が出来ない不具合があります。ただテキストエディタは他にも選択肢があるのでさほど困ることは無いと思います。

インストール

以下コマンドでibus-mozcをインストールします。

$ sudo apt-get install ibus-mozc

以下のコマンドを実行してデスクトップ環境とiBusの結合を解除します。

$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false

使用する日本語入力をiBusに変更します。以下コマンドで設定ツールを起動しiBusに変更します。

$ im-config

iBusの設定

以下コマンドでiBusの設定画面を起動します。

$ ibus-setup

キーボードを追加するのですが、日本語/半角英数を切り替える方法によりキーボードレイアウトの追加方法が変わりますので場合分けして記載します。

(1) case 1: iBus側でキーボードレイアウトを切り替えて日本語/半角英数を切り替える

恐らく、この方式がiBusが本来想定していた切り替え方式だと思います。つまりiBusの機能によりibus-mozcと日本語レイアウト(半角英数)を切り替える方式です。テキストだと分かりづらいと思いますので具体例を挙げますと、iBusの設定でインプットメソッドの切り替えをAlt + Spaceにしている場合切替時に以下のような画面が出てインプットメソッドを切り替えることができます。

設定時には以下図のようにインプットメソッドとしてibus-mozcと日本語のみを設定します。

インプットメソッド切り替えのショートカットも設定します。

(2) case 2: ibus-mozcのみで日本語/半角英数の切り替えを行う。

これは常時ibus-mozcのみを使用し、ibus-mozcの切り替え機能で日本語/半角英数を切り替える方法です。ibus-mozcのデフォルト設定は「半角/全角」キーが設定されていますので、Windowsを使うことに慣れている方はコチラの方がお馴染みの方法で切り替えが行えると思います。

設定時には以下図のようにインプットメソッドとしてibus-mozcのみを設定します。

起動時にiBusが起動するように設定

以下コマンドでbashrcファイルを編集します。

$ nano ~/.bashrc

以下のフレーズを追記し保存します。

ibus-daemon -xrd

ログアウトし再ログインすればibus-mozcによる日本語入力が可能です。切り替えは設定方法により異なりますのでご注意下さい。

最後に

WinやMacからLinuxに移行する際には様々な壁がありますが、その1つが日本語入力だと思います。(英語ネイティブな方は除きますが)elementary OSはシンプルなソフトウェア構成と使い勝手で最初のLinuxディストロとしても適当だと思いますが、GUIで日本語入力設定が出来ない点が難点かなと考えています。本記事がお役に立てば幸いです。
【関連動画】
ZorinOS 12.1に日本語入力fcitx-mozcを導入する
Fedora 23に日本語入力fcitx-mozcを導入する

Sponsored Link


python製フレームワークBottleで簡単なWebアプリを作る(その1)

$
0
0

こんにちは。今回のテーマは『python製フレームワークBottleで簡単なWebアプリを作る(その1)』です。この記事はBottleのチュートリアルや解説をする記事ではありません。簡単なwebアプリを作りながらプログラミングの面白さや、案外簡単にwebアプリって作れるんだなってことを伝えられればという思いで書きました。もしプログラミングに興味があるけど、何を作って良いか分からない方は一緒に作ってみませんか?今の所、全3回で完結する予定です。


【目次】
Bottleってなに?
今回つくるもの
環境構築
ディレクトリ構成
まずはHello world
テンプレートを使ってみよう
登録画面の作成
次回予告

Bottleってなに?

Bottleはpythonで作られたWebフレームワークです。フレームワークにも関わらず1ファイルで構成されるというシンプルさが魅力的です。そのシンプルさ故にフルスタックフレームワークと比較すると機能的には限定的であり、機能の半分がルーティング機能という感じです。具体的にはセッションやORMの機能はBottle単体ではないために、他のライブラリやプラグインを導入して補う必要があります。

そのシンプルさから学習コストはフルスタックフレームワークであるDjangoと比べると低く、スピーディに動くモノを作りたいと言うときには便利だと思います。用途としては小規模なサイトや実験的なウェブアプリという感じでしょうか。大規模な商用サイトを構築する際には選択肢に入ってこないと思います。(少なくとも現時点では)

尚、Bottleよりも少し後にFlaskというBottleによく似たフレームワークがエイプリルフールのネタとして開発されましたが、今やBottleのお株を奪いそうな勢いで浸透していますね。

今回つくって見るもの

今回は簡単な読書記録アプリを作りながらBottleの使い方を紹介したいと思います。百聞は一見にしかず、多分画像を見ればおおよその機能の予想はつくと思います。

書籍登録画面:書籍情報の登録

登録確認画面:登録前の確認を行う

登録リスト:登録された書籍情報の一覧を表示

環境構築

筆者の環境はArch Linuxで作業をしました。pythonおよび各ライブラリのバージョンは以下の通りです。

  • python: 3.6.5
  • bottle: 0.12.13
  • Jinja2: 2.10
  • SQLAlchemy: 1.28

Bottleのインストール

以下のコマンドでBottleをインストールします。

$pip install bottle

環境によってはsudoコマンドが必要かも知れません。

Jinja2のインストール

今回はテンプレートとしてJinja2を使います。Jinja2はDjangoテンプレートの記載方法を踏襲しながら機能拡張したテンプレートでpythonのテンプレートとしては有名です。Bottleは独自のテンプレートを有していますが、筆者の趣味でJinja2を使います。

以下のコマンドでBottleをインストールします。

$pip install jinja2

余談ですが、Jinjaという名前は”Templete(テンプレート)”と”Temple(寺院)”を掛け、日本語に転じて名付けたらしいのですが、神社は”shrine”と習った筆者からすると「誤訳では?」と勘ぐってしまいます。ま、昨今、寺院と神社の区別がつかない日本人も多いですしね。

この後、SQLAlchemy等の他のライブラリも必要になってきますが、必要に応じてインストールしていきます。

ディレクトリ構成

ディレクトリ構成は以下の通りです。

.
├── apps.py
├── models.py
├── routes.py
├── static
│   ├── css
│   │   ├── bootstrap.min.css
│   │   └── common.css
│   ├── font
│   │   ├── css
│   │   │   ├── open-iconic-bootstrap.css
│   │   │   ├── open-iconic-bootstrap.less
│   │   │   ├── open-iconic-bootstrap.min.css
│   │   │   ├── open-iconic-bootstrap.scss
│   │   │   ├── open-iconic-bootstrap.styl
│   │   │   ├── open-iconic-foundation.css
│   │   │   ├── open-iconic-foundation.less
│   │   │   ├── open-iconic-foundation.min.css
│   │   │   ├── open-iconic-foundation.scss
│   │   │   ├── open-iconic-foundation.styl
│   │   │   ├── open-iconic.css
│   │   │   ├── open-iconic.less
│   │   │   ├── open-iconic.min.css
│   │   │   ├── open-iconic.scss
│   │   │   └── open-iconic.styl
│   │   └── fonts
│   │       ├── open-iconic.eot
│   │       ├── open-iconic.otf
│   │       ├── open-iconic.svg
│   │       ├── open-iconic.ttf
│   │       └── open-iconic.woff
│   └── js
│       ├── bootstrap.min.js
│       └── common.js
├── utils
│   └── util.py
└── views
    ├── add.html
    ├── complete.html
    ├── confirm.html
    └── list.html

いろいろな流儀がありますので、もっとシンプルな方が好ましい場合は適宜変更してみて下さい。特にapp.pyとroutes.pyを分けている部分に違和感がある方も多いかも知れません。このファイルを1つする書き方も多いです。今回はアプリの設定とルーティングという意味合いで分けています。尚、fontはopen-iconicのフォントアイコンを使用するためのディレクトリですので、今の所気にしなくてOKです。jsも今回は使う予定ないのですが、一応使うときのために置いてあります。

まずはHello world

まずは好みのURLにアクセスした際にHTMLを返す簡単なルーティングを体験しましょう。
apps.pyに以下のように記載します。

import bottle
import routes

app = routes.app

if __name__ == '__main__':
    bottle.run(app=app,port=8080, reloader=True, debug=True)

portには未使用のポートを指定して下さい。今回は8080としました。reloader=Trueとしておくと、プログラムを修正した際に起動し直す必要なく、自動で再起動してくれます。debug=Trueとしておくとエラーページにtracebackが表示されるようになるので、開発中は便利です。

routes.pyに以下の記載します。

from bottle import route

@app.route('/add')
def add():
    return("<h3>Hello World</h3>")

この状態でapps.pyがあるディレクトリに移動して以下のコマンドを実行します。

$python apps.py

開発用のサーバーが立ち上がりました。この状態でwebブラウザでlocalhost:8080/addにアクセスしてみましょう。

テンプレートを使ってみよう

出力する度にreturnでHTMLの文字列を生成していたら大変です。テンプレートファイルを読み込んで表示出来るようにしましょう。viewsディレクトリ以下にadd.htmlを以下の内容で生成します。

<!DOCTYPE html>
<head>
    <title>Hello</title>
</head>
<body>
    <h1>{{title}}</h1>
</body>

ではこのlocalhost:8080/addにアクセスがあったらadd.htmlの内容を表示するようにroutes.pyを編集します。

from bottle import route, jinja2_template as template

@app.route('/add')
def add():
    return template('add.html', title="テンプレートのテストだよ")

ではlocalhost:8080/addにアクセスしてみましょう。今回はtitleという変数に”テンプレートのテストだよ”という文字列を渡してテンプレート側の{{title}}部分を置換しました。jinja2では{{}}で囲まれた変数はpythonの変数として扱うことが出来ます。その他にも分岐や繰り返しが使えるなど動的にHTMLを生成することができます。

登録画面の作成

CSSやjavascriptファイル用のディレクトリ作成

staticディレクトリ以下にcssとjavascript用のディレクトリを作成します。プロジェクトディレクトリ下で以下コマンドを実行します。

$ mkdir -p static/css
$ mkdir -p static/js

今回はbootstrap 4を使用するためstatic/cssにbootstrap.min.cssを配置します。

次にroutes.pyに以下のように編集します。

from bottle import route, jinja2_template as template, static_file

@app.get('/static/<filePath:path>')
def index(filePath):
    return static_file(filePath, root='./static')

@app.route('/add')
def add():
    return template('add.html', title="テンプレートのテストだよ")

これでテンプレートファイルviews/add.html中でファイルパスを指定してcssやjsを呼び出せるようになりました。

では登録画面を作っていきましょう。localhost:8080/addにアクセスされたらフォームが並んだ入力画面を返すようにします。先程作成したadd.htmlを以下のように修正します。

<!DOCTYPE html>
<HEAD>
    <link href="/static/css/bootstrap.min.css" type="text/css" rel="stylesheet">
    <link href="/static/css/common.css" type="text/css" rel="stylesheet">
    <title>書籍情報の{{kind}}</title>
</HEAD>
<BODY>
    <nav class="navbar navbar-dark bg-dark">
        <span class="navbar-brand">READING RECORD</span>
    </nav>
    <main class="bd-content py-5 pl-3" role="main">
    <form action="add" method="POST">
        {% if registId %}
            <input type="hidden" value="{{registId}}" name="id"/>
        {% endif %}
    <div class="container">
        <h3>書籍情報の{{kind}}</h3>
        <p>書籍情報を{{kind}}します。</p>
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <label><span class="badge badge-danger">必須</span>書名</label>
                    <input class="form-control" type="text" name="name" value="{% if form['name'] %}{{form['name']}}{% endif %}"/>
                </div>
                <div class="form-group">
                    <label><span class="badge badge-secondary">任意</span>巻数</label>
                    <input class="form-control" type="text" name="volume" value="{% if form['volume'] %}{{form['volume']}}{% endif %}"/>
                </div>
                <div class="form-group">
                    <label><span class="badge badge-danger">必須</span>著者</label>
                    <input class="form-control" type="text" name="author" value="{% if form['author'] %}{{form['author']}}{% endif %}"/>
                </div>
                <div class="form-group">
                    <label><span class="badge badge-danger">必須</span>出版社</label>
                    <input class="form-control" type="text" name="publisher" value="{% if form['publisher'] %}{{form['publisher']}}{% endif %}"/>
                </div>
                <div class="form-group">
                    <label><span class="badge badge-secondary">任意</span>メモ・感想</label>
                    <textarea cols="5" class="form-control" placeholder="感想など" name="memo">{{form['memo']}}</textarea>
                </div>
                <div class="form-group">
                    <a href="/list"><input id="submit" type="button" class="btn btn-secondary" value="キャンセル"/></a>
                    <input id="submit" type="submit" class="btn btn-info" value="登録"/>
                </div>
                {% if error %}
                    {% for e in error %}
                        <p class="text-danger">{{e}}</p>
                    {% endfor %}
                {% endif %}
            </div>
        </div>
    </div>
    </form>
    </main>
</BODY>

また、確認画面用のテンプレートを用意します。views/confirm.htmlファイルを以下の内容で生成します。

<!DOCTYPE html>
<HEAD>
    <link href="/static/css/bootstrap.min.css" type="text/css" rel="stylesheet">
    <title>確認</title>
</HEAD>
<BODY>
    <nav class="navbar navbar-dark bg-dark">
        <span class="navbar-brand">READING RECORD</span>
    </nav>
    <main class="bd-content py-5 pl-3" role="main">
    <form action="" method="POST">
        <input type="hidden" value="{{form['name']}}" name="name" />
        <input type="hidden" value="{{form['volume']}}" name="volume" />
        <input type="hidden" value="{{form['author']}}" name="author" />
        <input type="hidden" value="{{form['publisher']}}" name="publisher" />
        <input type="hidden" value="{{form['memo']}}" name="memo" />
        {% if registId %}
            <input type="hidden" value="{{registId}}" name="id" />
        {% endif %}
    <div class="container">
        <h3>登録情報の確認</h3>
        <p>登録内容を確認して下さい</p>
        <div class="row">
            <div class="col-md-6">
                <table class="table table-bordered">
                    <tr>
                        {% for head in headers %}
                        <th>{{head}}</th>
                        {% endfor %}
                    </tr>
                    <tr>
                        {% for data in form.values() %}
                        <td>{{data}}</td>
                        {% endfor %}
                    </tr>
                </table>
            </div>
        </div>
        <button class="btn btn-primary" name="next" value="regist">登録</button>
        <button class="btn" name="next" value="back">戻る</button>
    </div>
    </form>
    </main>
</BODY>

Jinja2では{% %}で囲まれた場所にpythonのロジックを入れ、分岐や繰り返しを入れることが出来ます。
次にroutes.pyを次のように変更します。

from bottle import Bottle, route, run, jinja2_template as template, static_file, request,redirect

app = Bottle()
app.install(LoggingPlugin(app.config))

@app.get('/static/<filePath:path>')
def index(filePath):
    return static_file(filePath, root='./static')

@app.route('/add', method=['POST','GET'])
def add():
    view = ""
    registId = ""
    form = {}
    kind = "登録"
    # GETされた場合
    if request.method == 'GET':
        # TODO: id指定された場合

        # 表示処理
        return template('add.html'
                , form = form
                , kind=kind
                , registId=registId)

    # POSTされた場合
    if request.method == 'POST':
        # POST値の取得
        form['name'] = request.forms.decode().get('name')
        form['volume'] = request.forms.decode().get('volume')
        form['author'] = request.forms.decode().get('author')
        form['publisher'] = request.forms.decode().get('publisher')
        form['memo'] = request.forms.decode().get('memo')
        registId = ""
        # idが指定されている場合
        if request.forms.decode().get('id') is not None:
            registId = request.forms.decode().get('id')

        # TODO: バリデーション処理
        errorMsg = []

        # 表示処理

        # 確認画面から戻る場合
        if request.forms.get('next') == 'back':
            return template('add.html'
                    , form=form
                    , kind=kind
                    , registId=registId)

        if not errorMsg:
            headers = ['著書名', '巻数', '著作者', '出版社', 'メモ']
            return template('confirm.html'
                    , form=form
                    , headers=headers
                    , registId=registId)
        else:
            return template('add.html'
                    , error=errorMsg
                    , kind=kind
                    , form=form
                    , registId=registId)

簡単に解説を加えると、@app.route('/add', method=['POST','GET'])でエンドポイントへアクセス可能なメソッドを指定しています。ここではGETとPOSTを受けられるようにしました。今回はGETされた場合とPOSTされた場合で表示を切り替えたかったのでBottleのrequestオブジェクトからメソッドを取得して場合分けしています。requests.forms.get()がの使い方が有名ですが、文字化けしてしまうため、decode関数を挟んでいます。POSTでアクセスされた場合は入力チェック(バリデーション)して、問題なければ確認画面用のテンプレートにPOSTされた値を渡して表示します。

localhost:8080/addにアクセスしましょう。値を入力して「登録」を押したら確認画面に遷移すればOKです。

バリデーション処理

ではまだ実装されていないバリデーション処理を追加しましょう。今回は単純に必須入力項目が入力されていない場合にエラーメッセージを出すようにします。登録画面はroutes.pyのaddファンクションでバリデーション処理をTODOで残しておきました。utils/util.pyを以下の内容で生成します。

class Utils():

    @classmethod
    def validate(cls, data):
        errMsg = []
        noInput = 'が未入力です。'
        if not data['name']:
            errMsg.append('書名' + noInput)
        if not data['author']:
            errMsg.append('著者' + noInput)
        if not data['publisher']:
            errMsg.append('出版社' + noInput)
        return errMsg

Utilsクラスのバリデーションを使用できるようroutes.pyに修正を加えます。
import部分にutilクラスのインポートを追加

from utils.util import Utils

先程は処理を記載しなかったバリデーション処理を以下のように修正します。

...
        # バリデーション処理
        errorMsg = []
        errorMsg = Utils.validate(data=form)
        # 表示処理
...

これで必須項目に値が入力されていない場合にエラーメッセージが出るようになりました。

次回予告

さて、ここまでで必須項目の入力チェックを行える確認画面と登録画面が出来ました。しかし、まだ入力した値を確認するだけの状態です。しかし、まだ登録は出来ないし、確認画面から戻る機能もついていません。

次回はSQLAlchemyというORMライブラリを用いてデータベースに値を登録できる機能をつけていきます。

最後に

駆け足で進めてしまった感が拭えないのですが、いかがったでしょうか?普段はLinux関連の記事ばかりでプログラミングに関する記事はあまり書かないので、解説が分かりづらかったかも知れません。時間を見つけて修正したいとは考えています。Bottleの使い方はネット上でいろいろな方が使い方を紹介しているので、この記事も1つの参考として何かの役に立てば幸いです。

Sponsored Link


python製フレームワークBottleで簡単なWebアプリを作る(その2)

$
0
0

こんにちは。今回のテーマは『【python】Bottleフレームワークで簡単なWebアプリを作る(その2)』です。BottleというシンプルなWebフレームワークを使って簡単なwebアプリを作ってみる企画の2回めです。今回はBottleとは少し離れてしまいますが、SQLAlchemyをつかったデータベースとアプリの連携について書いていきたいと思います。

※本記事はpython製フレームワークBottleで簡単なWebアプリを作る(その1)の続きとして書かれていますので、初めての方はまずコチラをご覧になることをオススメします。


【目次】
DBへの登録機能を付与する
DBの準備
SQLAlchemyって何?
SQLAlchemyの導入
モデルの作成
テーブルの作成
登録処理
次回予告

DBへの登録機能を付与する

前回は登録フォームと確認画面への遷移部分を作成し、Bottleのルーティング機能を中心に見てきました。今回はBottleからは少し離れてデータベース周りの処理を行っていきます。なのでBottle特有の処理はあまり登場しません。

DBの準備

まずはデータベースの準備をしましょう。今回はMariaDB(MySQL)を使用します。今回は主題ではないのでmysql自体の操作については簡単に触れるのみにします。

データベースの作成

まずはmysqlにroot権限でログインします。

mysql -u root -p
# パスワード入力してログイン

データベースを作成します。今回はbook_dataという名前で作成します。

[mysql] > cleate database book_data;

ユーザーの作成

book_dataにアクセスするためのユーザーをパスワード付きで作成します。

[mysql] > create user bookuser identified by '{PASSWORD}';

作成したbookuserにbook_dataへの権限を付与します。

[mysql] > grant all on book_data.* to bookuser@localhost identified '{PASSWORD}';

SQLAlchemyって何?

SQLAlchemyはphthon製のORM(Object-relational mapping)です。語弊を恐れずに簡単に言うならばオブジェクトと関連データベースを繋いでくれる役割を果たしてくれるものです。プログラマはORMを利用することでSQLクエリを書くことなく、直感的なオブジェクト操作でCURD操作をすることが出来ます。(まあ、複雑な処理になるとSQLクエリ直接実行することもあるのですが)

SQLAlchemyの導入

SQLAlchemyの導入ですが、今回はpipを使ってインストールします。

pip install sqlalchemy

また、python3でmysqlを使うためにmysqlclientも入れておきます。

pip install mysqlclient

モデルの作成

準備ができましたのでSQLAlchemyを用いてモデルを作成していきます。今回は以下のモデルを作成します。

  • ID: id(int)
  • 書籍名: name(varchar)
  • 巻数: volume(varchar)
  • 著者: author(varchar)
  • 出版社 : publisher(varchar)
  • メモ・感想: memo(text)
  • 作成日時: create_date(datetime)
  • 削除フラグ: del(tinyint)

models.pyを以下のように生成します。(全体のディレクトリ構成はpython製フレームワークBottleで簡単なWebアプリを作る(その1)を参考にしてください)

from sqlalchemy import Column, Integer, String, Text, text, create_engine, DATETIME
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects.mysql import TINYINT
import config.settings
from datetime import datetime

URL = 'mysql://bookuser:{##パスワード##}@localhost/pass_data?charset=utf8'
engin = create_engine(URL, echo=True)

Base = declarative_base()
Session = sessionmaker(bind=engin)
session = Session()


class Books(Base):
    __tablename__ = "books"
    id_ = Column('id', Integer, primary_key = True)
    name = Column('name', String(255))
    volume = Column('volume', String(255))
    author = Column('author', String(255))
    publisher = Column('publisher', String(255))
    memo = Column('memo', Text())
    create_date = Column('create_date', DATETIME, server_default=text('NOW()'), nullable=False)
    delFlg = Column('del', TINYINT(4), server_default=text('0'), nullable=False)

if __name__ == "__main__":
    Base.metadata.create_all(engin)

{##パスワード##}の部分にはbookuser用に作成したパスワードを設定して下さい。SQLAlchemyではデータベースに接続するURLを設定しenginを作成します。データベース毎の違いはここまでで、これ以降は共通の処理で対応出来ます。
declarative_base関数で作成したBaseモデルを継承して各モデルを作成します。また、SQLAlchemyではデータベースで処理を行う際にsessionというオブジェクトで処理を行いますのでsessionも作成しておきます。

テーブルの作成

では、モデルが作成できたので、このモデルを基にデータベースにテーブルを作りましょう。models.pyで

if __name__ == "__main__":
    Base.metadata.create_all(engin)

の箇所はこのために記載しました。models.pyを実行することでモデルをベースにテーブルが作られます。

$ cd [プロジェクトディレクトリ]
$ python3 models.py

これでテーブルが作成されました。試しにmysqlで確かめてみましょう。

$ mysql -u bookuser -p[パスワード] book_data

mysql内で以下のコマンドを実行します。

[mysql] > show tables;

登録処理

モデルの準備とデータベースへのテーブル作成ができましたので、フォームから投稿されたデータをデータベースに登録する処理を書いていきます。

routes.pyの修正

routes.pyにregist関数を追加します。

@app.route('/regist', method='POST')
def regist():

    # データ受取
    name = request.forms.decode().get('name');
    volume = request.forms.decode().get('volume');
    author = request.forms.decode().get('author');
    publisher = request.forms.decode().get('publisher');
    memo = request.forms.decode().get('memo');
    registId = request.forms.decode().get('id')

    if request.forms.get('next') == 'back':
        response.status = 307
        response.set_header("Location", '/add')
        return response
    else:
        if registId is not None:
            # 更新処理
            books = session.query(Books).filter(Books.id_==registId).first()
            books.name = name
            books.volume = volume
            books.author = author
            books.publisher = publisher
            books.memo = memo
            session.commit()
            session.close()
        else:
            # データの保存処理
            books = Books(
                    name = name,
                    volume = volume,
                    author = author,
                    publisher = publisher,
                    memo = memo)
            session.add(books) 
            session.commit()
            session.close()

これでlocalhost:8080/registにデータをPOSTするとデータベースに登録されるようになります。確認画面で「戻る」ボタンが押された場合にはPOSTされる’next’の値が’back’になるためhiddenのinputフォームに登録されている各値をlocalhost:8080/add(登録画面)にPOSTして画面遷移する作りとしました。今回追加した機能はPOSTされたデータをデータベースに追加する処理ですが、将来的には一覧画面からデータの更新処理も行いたいので、registIdの有無で場合分けを行っています。

データの登録処理はモデルを生成してsession.add関数に作成したモデルを入れるだけです。session.commitが行われるまで実行されないので気をつけて下さい。また、処理が終わったらsession.closeすることもお忘れなく。

データの更新処理はsession.query関数にfilterを適用し目的のデータをモデルとして取り出し、そのモデルに修正を加えてcommitすればOKです。この程度の処理でしたらSQLクエリを発行しても苦ではないと思いますが、pythonのモデルとしてデータベース処理が扱える点は便利ですね。

テンプレートファイルの修正

確認画面のテンプレートファイルviews/confirm.htmlにも以下の様に修正を加え、localhost:8080/registに登録データをPOSTするように修正します。

<form action="" method="POST">

ここの部分を以下のように修正します。

<form action="regist" method="POST">

次回予告

今のままではデータ保存処理を行った後に、確認画面にとどまってしまいますので今後はデータ保存後は一覧画面に遷移するようにします。一覧画面作成を中心にデータの更新、削除等を行っていく予定です。

最後に

今回も駆け足になってしまいました。全体の完成図や動きが分からないと実感が掴めないと思いますので実際に動くデモサイトの準備をしているところです。またソースについてはGithub等へのUPを検討しています。次回が最終回の予定です。

【関連記事】
python製フレームワークBottleで簡単なWebアプリを作る(その1)

Sponsored Link


【python】Bottleフレームワークで簡単なWebアプリを作る(その3)

$
0
0

こんにちは。今回のテーマは『【python】Bottleフレームワークで簡単なWebアプリを作る(その3)』です。BottleというシンプルなWebフレームワークを使って簡単なwebアプリを作ってみる企画の3回目です。今回は登録した書籍の一覧画面を作成していきます。編集機能と削除機能を有する単純な一覧画面を作っていきます。

※本記事はpython製フレームワークBottleで簡単なWebアプリを作る(その2)の続きとして書かれていますので、初めての方はまずコチラをご覧になることをオススメします。


【目次】
一覧表示画面の作成
削除機能の追加

一覧表示画面の作成

BDに登録された書籍の一覧を表示する画面を作っていきます。

一覧画面用の関数をroutes.pyに登録します。中身は非常に単純でDBから取得した書籍一覧のオブジェクトとヘッダー配列をテンプレートに渡しています。

list関数(views.py)

@app.route('/list')
def list():
    # DBから書籍リストの取得
    bookList = session.query(Books.name, Books.volume, Books.author, Books.publisher, Books.memo, Books.id_)\
            .filter(Books.delFlg == 0).all()
    headers = ['書名', '巻数', '著者', '出版社', 'メモ','操作']
    return template('list.html', bookList=bookList, headers=headers)

テンプレート
テンプレートも渡されたヘッダー配列とオブジェクトをループで表示するだけです。

template/list.html

<!DOCTYPE html>
<HEAD>
    <link href="/static/css/bootstrap.min.css" type="text/css" rel="stylesheet">
    <link href="/static/css/common.css" type="text/css" rel="stylesheet">
    <link href="/static/font/css/open-iconic-bootstrap.css" type="text/css" rel="stylesheet">
    <title>一覧</title>
</HEAD>
<BODY>
    <nav class="navbar navbar-dark bg-dark">
        <span class="navbar-brand">READING RECORD</span>
    </nav>
    <main class="bd-content py-5 pl-3" role="main">
    <div class="container">
        <div class="row">
            <h3>読書リスト</h3>
        </div>
        <div class="row form-group">
            <a href="add"><button class="btn btn-info">新規追加</button></a>
        </div>
        <div class="row">
            <table class="table table-bordered">
                <!-- table header -->
                <thead class="thead-dark">
                <tr>
                    {% for header in headers %}
                    <th>{{header}}</th>
                    {% endfor %}
                </tr>
                </thead>
                <!-- table body -->
                {% for list in bookList %}
                <tr>
                    <td>{{list.name}}</td>
                    <td>{{list.volume}}</td>
                    <td>{{list.author}}</td>
                    <td>{{list.publisher}}</td>
                    <td>{{list.memo}}</td>
                    <th>
                        <a href="add?id={{list.id_}}">
                            <button class="btn btn-secondary"><span class="oi oi-pencil" title="edit"></span></button>
                        </a>
                        <a href="delete/{{list.id_}}">
                            <button class="btn btn-secondary"><span class="oi oi-trash" title="delete"></button>
                        </a>
                    </th>
                </tr>
                {% endfor %}
            </table>
        </div>
    </div>
    </main>
</BODY>

編集・削除機能の追加

一覧画面から内容を編集機能と削除機能を行える機能を付けていきます。テンプレートにはすでにボタンを追加してあるのでroutes.pyに関数を追加します。

編集機能

編集に関しては既存のadd関数を再利用します。追加ボタンを押下した際にGETパラメータでIDを渡してやります。

add関数(views.py)

@app.route('/add', method=['POST','GET'])
def add():
    view = ""
    registId = ""
    form = {}
    kind = "登録"
    # GETされた場合
    if request.method == 'GET':
        # id指定された場合
        # ここの部分を追加
        if request.query.get('id') is not None:
            book = session.query(Books).filter(Books.id_==request.query.get('id')).first()
            form['name'] = book.name
            form['volume'] = book.volume
            form['author'] = book.author
            form['publisher'] = book.publisher
            form['memo'] = book.memo
            registId = book.id_

            kind = "編集"
        # ここまで
        # 以下省略

削除機能

一覧画面の削除ボタンが押された場合の削除機能はURL指定された書籍IDの書籍を論理削除することにします。(サンプルのため論理削除の是非については議論しません)

delete関数(views.py)

@app.route('/delete/<dataId>')
def delete(dataId):
    # 論理削除を実行
    book = session.query(Books).filter(Books.id_==dataId).first()
    book.delFlg = 1
    session.commit()
    session.close()
    redirect('/list')

最後に

とりあえずBottleを使用した簡単なウェブアプリの紹介を終えます。正直Bottleの機能の中でもルーティング機能しか紹介できず、あまり参考にならない記事になってしまったなと反省しています。ただBottleも専用の便利なプラグインが開発されており実用的なWebアプリケーションの作成にも耐えられる用になってきています。もう少しその辺りをお伝え出来る記事を書くべきでしたが、力不足でした。また機会があればチャレンジしたいと思っています。

【関連記事】
python製フレームワークBottleで簡単なWebアプリを作る(その1)
python製フレームワークBottleで簡単なWebアプリを作る(その2)

Sponsored Link


Viewing all 226 articles
Browse latest View live