2017-11-12

ASUS TransBook T100HA と Ubuntu 17.10

廉価なノート PC に Fedora をインストールして愛用してきましたが、唯一まともに Fedora を使えるようにできなかったのは、昨年の Amazon.jp プライムデー 2016 で破格な値段の誘惑に負けて買ってしまった ASUS TransBook T100HA でした。

この PC ではじめてタッチスクリーンを Linux で使うことができるとワクワクしたのですが、いまのところ Fedora では成功していません。先月も Fedora 27 のベータ版をインストールしてみましたが、インストールはできたものの、タッチスクリーンをはじめ WiFi やサウンドデバイスなどをほとんど利用できませんでした [1]

今回は Ubuntu 17.10 をインストールして、一歩前進した成果を得られましたので、その成果をまとめました。

Ubuntu 17.10 GNOME デスクトップ

Ubuntu 17.10 について

2017 年 10 月 19 日にリリースされた Ubuntu 17.10(コードネーム Artful Aardvark)での大きな変更点は、デスクトップシェルが Unity から GNOME Shell に変更されたことです [2]

そうであれば、パッケージ管理以外は Fedora とそう大きな違いがないだろうと安易に考え、ASUS TransBook T100HA に Ubuntu 17.10 をインストールしてみることにしてみました。

ブート可能な USB インストーラの作成

問題は、Ubuntu 17.10 のインストール用 USB メディアをどうやって作成するか、ということでした。

何故問題なのかというと、自宅の PC に Windows OS の環境が無いからです。会社から支給されている Windows PC(英語版の Windows 7 Enterprise)は、USB メディアの読み書きには暗号化がされていなければならず、インストーラ作成には使えません。

仕方がないので Fedora Media Writer [3] を使って、[4] からダウンロードした Ubuntu 17.10 の iso イメージ ubuntu-17.10-desktop-amd64.iso を USB メモリに書き込みました。

Ubuntu 17.10 のインストール

幸い、Fedora Madia Writer で作成した Ubuntu 17.10 のインストール用 USB メモリは、なんら問題なく使用できました。Ubuntu のインストール方法については省略させていただきますが、スクリーンの向きはインストール時からインストール後まで時計回りで 90°回転した状態です。ここでタッチスクリーンが使えることを確認できました。

WiFi の有効化

今回、ようやく内臓の WiFi デバイスを有効にすることができました。参考にさせていただいたサイト [5] の通りにはいかなかったのですが、大いに参考になりました。

まず、dmesg コマンドで表示されるカーネルメッセージから、文字列 brcm を含む行を探します。

$ dmesg | grep brcm
[    6.622292] usbcore: registered new interface driver brcmfmac
[    6.623441] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43340-sdio.txt failed with error -2
[    9.640039] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
[   10.648333] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50

上のエラーが出ている二行目の brcmfmac43340-sdio.txt を、次のようにして /lib/firmware/brcm/ 内に作成します。

$ ls /sys/firmware/efi/efivars/nvram-*
/sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113
$ sudo cp /sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113 /lib/firmware/brcm/brcmfmac43340-sdio.txt
[sudo] password for bitwalk: 
$ ls /lib/firmware/brcm/
bcm4329-fullmac-4.bin     brcmfmac4330-sdio.bin    brcmfmac4354-sdio.bin
bcm43xx-0.fw              brcmfmac4334-sdio.bin    brcmfmac4356-pcie.bin
bcm43xx_hdr-0.fw          brcmfmac43340-sdio.bin   brcmfmac4356-sdio.bin
brcmfmac43143-sdio.bin    brcmfmac43340-sdio.txt   brcmfmac43569.bin
brcmfmac43143.bin         brcmfmac4335-sdio.bin    brcmfmac43570-pcie.bin
brcmfmac43236b.bin        brcmfmac43362-sdio.bin   brcmfmac4358-pcie.bin
brcmfmac43241b0-sdio.bin  brcmfmac4339-sdio.bin    brcmfmac43602-pcie.ap.bin
brcmfmac43241b4-sdio.bin  brcmfmac43430-sdio.bin   brcmfmac43602-pcie.bin
brcmfmac43241b5-sdio.bin  brcmfmac43455-sdio.bin   brcmfmac4366b-pcie.bin
brcmfmac43242a.bin        brcmfmac4350-pcie.bin    brcmfmac4371-pcie.bin
brcmfmac4329-sdio.bin     brcmfmac4350c2-pcie.bin
$

モジュールをロードし直すと WiFi のデバイスが有効になります。

$ sudo modprobe -r brcmfmac
$ sudo modprobe brcmfmac

GNOME 設定 (gnome-control-center) の画面で WiFi が利用できることを確認できます。

gnome-control-center

念の為、再起動後に dmesg コマンドでメッセージを確認すると以下のようになっています。

$ dmesg | grep brcm
[    6.820576] usbcore: registered new interface driver brcmfmac
[    9.001962] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Feb 20 2015 12:54:17 version 6.10.190.55 (r536162) FWID 01-6cb01dcc
$

画面を回転させる

内臓の WiFi が利用できるようになったので、あとは画面を時計反対回りに 90°回転させて細かい設定を、と思っていたのですが、Wayland に対応した GNOME の画面を回転させるやりかたを知りません。たぶんコマンドレベルでは gsettings set を使うんだろうなと思うのですが具体的に判らないので、とりあえず、ログイン画面でディスプレイマネージャーを Ubuntu on Xorg に変更して [6]、次のコマンドを「自動起動するアプリケーションの設定」(gnome-session-properties) に登録して使うことにしました。

画面回転

xrandr -o left

タッチスクリーン座標回転

xinput set-prop 'SIS0457:00 0457:113D' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1
gnome-session-properties

これで画面が普通(ランドスケープ)の向きで、タッチスクリーンも使えるようになりました。

画面を回転した GNOME デスクトップ

まとめ

ASUS TransBook T100HA で Linux を使うにあたって、何も問題なくすべての内蔵されている機能が利用できれば良いのですが、現実にはそうではありません。使いたい機能を優先度の高い順に並べると下記のようになり、✔ を付加した項目が今のところ利用できるようになった機能です。

  1. タッチスクリーン ✔
  2. WiFi ✔
  3. オーディオ関係
  4. Bluetooth
  5. カメラ

まだ二項目しか出来るようになっていませんが、それでも内臓の WiFi を使えるようになったことは自分にとっては大きなことで、この PC の使用頻度が上がること間違いなしです。

既に後継の製品 TransBook T101HA が魅力的な価格で販売されているので思わず買いたくなります。しかし Linux をインストールして使うとなれば同じような問題にぶつかることを恐れて躊躇します。快適 Linux ライフの実現への道はまだまだ続きます。

参考サイト

  1. bitWalk's: Fedora 27 の 32 bit UEFI サポートと ASUS TransBook T100HA
  2. 第493回 Ubuntu 17.10の変更点:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
  3. How to create and use Live USB - FedoraProject
  4. Ubuntu 17.10 | Ubuntu
  5. Latest steps to install Ubuntu on the Asus T100TA | John Wells
  6. How to Switch to Xorg from Wayland in Ubuntu 17.10 [Quick Tip]

 

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

2017-10-29

JavaFX: LineChart を使いこなそう (8) 日付軸

JavaFX のチャートを使いこなせるようになりたいと、ずいぶん前に LineChart のサンプルを示しました [1]。その時には、横軸にカテゴリの軸を使って整数値の年を文字列に変換して表示しましたが、今回は DateAxis クラスを使って、日付として軸を設定してみます。

使用した環境は以下の通りです。開発版の NetBeans IDE で JDK 9 を使用できることを確認したので、経験を積むためにも Java 9 を積極的に使っていきたいと考えています。

  • OS: Fedora 27 beta (x86_64)
  • Java: jdk-9.0.1-9.0.1-ga.x86_64 (Oracle)
  • IDE: NetBeans IDE Dev (Build 201710270002) [2]

LineChartSample8.java

DateAxis は JavaFX 標準で用意されているクラスではありません。何人かの方が Axis クラスを継承して DataAxis クラスを作成して公開されていますが、ここでは Christian Schudt 氏および Diego Cirujano 氏が著作者 (author) になっているソースを使用させていただきました [3]

プロジェクトは、前述した以前のサンプル [1] の構成と同じですが、プロジェクト内に上記 DateAxis.java を加えています[左図参照]。

それぞれのソースを紹介したいのですが、長くなってしまいますので、ここではメインの LineChartSample8.java だけ紹介します。すべてのソースは GitHub [4] にありますので、そこからクローンして下さい。

リスト:LineChartSample8.java 
package linechartsample8;

import java.util.Calendar;
import java.util.Date;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.chart.XYChart.Series;
import javafx.stage.Stage;

public class LineChartSample8 extends Application {

    @Override
    public void start(Stage stage) {
        stage.setTitle("Line Chart Sample (8)");
        //defining the axes
        DateAxis xAxis = new DateAxis();
        NumberAxis yAxis = new NumberAxis();

        xAxis.setLabel("X軸ラベル(年)");
        yAxis.setLabel("Y軸ラベル(数値)");

        //creating the chart
        LineChart<Date, Number> lineChart = new LineChart<>(xAxis, yAxis);
        lineChart.setData(getChartData());
        lineChart.setTitle("折れ線グラフのサンプル");

        Scene scene = new Scene(lineChart, 800, 400);
        String ClassName = getClass().getSimpleName();
        scene.getStylesheets().add(getClass().getResource(ClassName + ".css").toExternalForm());

        stage.setScene(scene);
        stage.show();
    }

    private ObservableList<XYChart.Series<Date, Number>> getChartData() {
        double y1 = 0.1;
        double y2 = -0.1;
        Series<Date, Number> series1 = new Series<>();
        Series<Date, Number> series2 = new Series<>();

        series1.setName("系列1");
        series2.setName("系列2");

        for (int i = 2011; i < 2021; i++) {
            series1.getData().add(new XYChart.Data<>(getYear(i), y1));
            y1 = y1 + Math.random() - .5;

            series2.getData().add(new XYChart.Data<>(getYear(i), y2));
            y2 = y2 + Math.random() - .5;
        }
        ObservableList<XYChart.Series<Date, Number>> seriesList = FXCollections.observableArrayList();
        seriesList.add(series1);
        seriesList.add(series2);

        return seriesList;
    }

    private Date getYear(int i) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(i, 0, 1, 0, 0);
        return calendar.getTime();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

コンパイルオプション

DateAxis.java のインポート宣言で、パッケージ com.sun.javafx.charts はモジュール javafx.controls で宣言されていますが、エクスポートされていませんというメッセージでエラーになっています。このエラーは、Java 8 では見られなかったものです。

これは Java 9 でモジュールシステムを導入したことにより、パッケージレベルでのカプセル化が可能になったため、JDK の内部 API を使用するとコンパイル エラーにすることが可能になったためのようです。このエラーの解決には代替機能を探すことが推奨されていますが、一時的にこの強力なカプセル化を壊す方法がコンパイラのオプションに --add-exports として追加されています [5][6]。今回は、これを利用します。

--add-exports javafx.controls/com.sun.javafx.charts=ALL-UNNAMED

NetBeans IDE で、このプロジェクトの「プロジェクト・プロパティ」ダイアログを表示させ、「コンパイル」画面の「追加コンパイラ・オプション(L):」のエントリに上記オプションを追加します。これでコンパイルが通るようになります。

コンパイラ・オプションの設定

実行例を以下に示します。

LineChartSample8 の実行例

このサンプルでは、一見、前回の実行例と違いがないように見えますが、Date 型という「数値」で軸を作っていますので、ウィンドウのサイズを変えると目盛り間隔が調整されます。日付を軸に使いたいときは日付に対応した軸を使ったほうが当然便利なのです。日付(通常は、日や時間単位の間隔)を横軸にしてデータのトレンドをプロットするニーズが多いので重宝しています。

参考サイト

  1. bitWalk's: JavaFX: LineChart を使いこなそう (2)
  2. NetBeans IDE ダウンロード
  3. sco0ter / ExtFX / source / src / main / java / extfx / scene / chart / DateAxis.java — Bitbucket
  4. bitwalk123/LineChartSample8
  5. ヌーラボのアカウント基盤を Java 9 にマイグレーションして起きた問題と解決法 | ヌーラボ
  6. Java Platform, Standard Edition Oracle JDK 9 Migration Guide, Release 9

 

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

2017-10-28

Java 9 と NetBeans IDE

Java 9 が 9 月 22 日にリリースされ、つづけて 10 月 17 日にクリティカルパッチアップデート 9.0.1 が Oracle 社からリリースされました [1]。私は Java のプログラミングでは NetBeans IDE を愛用していますが、JDK 9 に対応した正式版はまだリリースされていません。しかし、NetBeans IDE の開発版では対応していますので試してみました。

使用した環境は以下の通りです。

  • OS: Fedora 27 beta (x86_64)
  • Java: jdk-9.0.1-9.0.1-ga.x86_64 (Oracle) [1]
  • IDE: NetBeans IDE Dev (Build 201710270002) [2]

これは Java のバージョン System.getProperty("java.version")、JavaFX のバージョン System.getProperty("javafx.runtime.version") およびプラットフォーム System.getProperty("os.name") を表示するだけの簡単な JavaFX の GUI プログラム [3] を実行させた例です。

JavaVersion の実行例

開発版は毎日のように更新されていますが、さすがに毎日インストールし直すことはできません。しかし、週に何回かはインストールし直しています。いずれリリースされる JDK 9 対応の NetBeans IDE 正式版に備え、従来版との違いを確認しながら Java 9 を使い始めています。

参考サイト

  1. Java SE Development Kit 9 - Downloads
  2. NetBeans IDE ダウンロード
  3. bitwalk123/JavaVersion

 

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

2017-10-15

Fedora 27 の 32 bit UEFI サポートと ASUS TransBook T100HA

Fedora 27 のベータ版が 10 月 3 日にリリースされました [1]。メインの PC は dnf コマンドで先月アップグレードを済ませてしまっていましたが、このリリースで Live イメージが公開されるのを待っていました。

Fedora 27 では 32 bit UEFI がサポートされるので [2]、64 bit 対応のオペレーティングシステムが動くのに、起動部分だけ 32 bit UEFI にしか対応していなかった廉価な PC にも Fedora をインストールできる可能性が出てきました。既に Fedora が稼働している PC ではインストール用のメディアがなくともアップグレードできますが、Fedora がインストールされていない PC に Fedora を試すには、インストール用のメディアを作成できなければなりません。

このところ、廉価なノート PC に Fedora をインストールして、サブノートとして愛用してきましたが、幸いなことにほとんどの場合で Fedora のインストールに成功しています。唯一まともに Fedora を使えるようにできなかったのは、Amazon.jp プライムデー 2016 で破格な値段の誘惑に負けて買った ASUS TransBook T100HA でした。なんとか Ubuntu 14.04 をインストールして使えるようにはしたものの [3]、ほとんど使わずに埃を被ってしまっていました。

Ubuntu 14.04 on T100HA

ただ Linux が使えるということだけでは不十分で、普通のやりかたでアップデートやアップグレードを重ねて新しい機能を試すことができないと、趣味で Linux 使っている側面の欲求を満たせません。今回、ASUS TransBook T100HA へ Fedora 27 のベータ版を普通にインストールすることに成功したので、顛末をまとめておきます。

Live イメージのダウンロード

まずは [4] のサイトから Fedora 27 Beta Workstation の Live イメージ(ISO フォーマット)をダウンロードしておきます。

MediaWriter で USB メモリのインストールメディアを作成

Fedora 上でダウンロードした ISO ファイルを MediaWriter を使ってインストール用 USB メディアを生成します。しかし残念ながら Fedora 27 ベータ版の MediaWriter が正常に起動しなかったので、Fedora 26 の MediaWriter を使用しました。

  • OS: Fedora 26 (x86_64)
  • MediaWriter: mediawriter-4.1.0-1.fc26.x86_64

Live イメージを作成するブランクの USB メモリを準備し、USB ポートに挿入しておきます。

MediaWriter を起動するにはメニューから選択するか、端末エミュレータ上で以下のように入力します。

$ mediawriter

起動した MediaWriter の画面から、'Custom Image' をクリックします。

'Custom Image' の選択 (MediaWriter)

あらかじめダウンロードしておいた Live イメージ Fedora-Workstation-Live-x86_64-27_Beta-1.5.iso を選択します。

ISO ファイルの選択 (MediaWriter)

次に作成する、すなわちイメージを書き込みするメディアを選択します。

私は粗忽者なので、ここでのメディアの選択を怠り、大切なデータに何度も上書きをしてしまっています。くれぐれもここで正しい書き込み先を設定することを忘れないようにしてください。

作成するメディアの選択 (MediaWriter)

赤い 'Write to Disk' のボタンをクリックすると、root のパスワードの入力を求められます。

root のパスワード入力 (MediaWriter)

イメージの書き込みが始まりますので、終了するまでしばらく待ちます。

イメージの書き込み (MediaWriter)

書き込みとチェックが終わった後、青い 'Close' ボタンが現れますので、クリックして MediaWriter を終了します。

イメージの書き込みの終了 (MediaWriter)

作成したインストールメディアの BOOT フォルダ内をみると確かに BOOTIA32.EFIBOOTX64.EFI というように 32 bit と 64 bit 用の両方のファイルが存在していることを確認できます。

インストールメディアの BOOT フォルダ内のファイル

ASUS TransBook T100HA へのインストール

今回作成したインストールメディアを使って ASUS TransBook T100HA へインストールしました。インストールについては特に問題はありませんでした。Ubuntu 14.04 をインストールしていたときと同じくログイン画面では画面の縦横が逆になっています。

ログイン画面

デスクトップ環境は Cinnamon を使用しており、画面を反時計回りに 90°回転させています。

ディスプレイの設定と回転した画面 (Cinnamon)

インストールは問題なくできたものの、単純に最新に近いカーネルであれば良いというものではなく、正常に動作しないデバイスは相変わらずです。以下に不具合を簡単にまとめました。

  • タッチパネルが効いていない[要調査]
  • 内蔵の WiFi が使えない
  • Bluetooth が使えない
  • 内蔵のサウンド関連のデバイスを使えない
  • キーボードのレイアウトが時々おかしくなる

結局のところ、無い無い尽くしのままです。しかし、タッチパネルについては設定次第である程度使えるようになる可能性があるので、引き続き情報を収集しながらしばらく使ってみます。

追記 (2017-10-17)

この記事を書いたときにはあれこれ試していて時間切れになってしまったので、あとになってもう少し調べました。そもそもタッチパネルの設定ってどうするのか皆目判らなかったので、まずは xinput コマンドで現在の入力デバイスの一覧を表示してみました。

$ xinput --list
⎡ Virtual core pointer                     id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
⎜   ↳ ASUS Tech Inc. ASUS HID Device           id=11 [slave  pointer  (2)]
⎜   ↳ ASUS Tech Inc. ASUS HID Device           id=12 [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                    id=18 [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                    id=20 [slave  pointer  (2)]
⎣ Virtual core keyboard                    id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard              id=5 [slave  keyboard (3)]
    ↳ Power Button                             id=6 [slave  keyboard (3)]
    ↳ Video Bus                                id=7 [slave  keyboard (3)]
    ↳ Power Button                             id=8 [slave  keyboard (3)]
    ↳ Sleep Button                             id=9 [slave  keyboard (3)]
    ↳ ASUS Tech Inc. ASUS HID Device           id=10 [slave  keyboard (3)]
    ↳ Intel HID events                         id=13 [slave  keyboard (3)]
    ↳ Asus WMI hotkeys                         id=14 [slave  keyboard (3)]
    ↳ gpio-keys                                id=15 [slave  keyboard (3)]
    ↳ gpio-keys                                id=16 [slave  keyboard (3)]
    ↳ ASUS Tech Inc. ASUS HID Device           id=17 [slave  keyboard (3)]
    ↳ Logitech USB Receiver                    id=19 [slave  keyboard (3)]
$

なにか足りないような…。Ubuntu 14.04 をインストールした時の記事を確認すると肝心のタッチパネル SIS047 の id がポインタデバイス (Virtual core pointer) の一覧に表示されていません。

そこで、Fedora を起動した時のログを確認してみました。

$ dmesg | grep SIS0457
[    3.515740] acpi SIS0457:00: Failed to change power state to D0
[    3.540067] acpi SIS0457:00: Cannot transition from (unknown) to D3hot
[    3.688347] input: SIS0457:00 0457:113D as /devices/pci0000:00/808622C1:05/i2c-5/i2c-SIS0457:00/0018:0457:113D.0004/input/input7
[    3.688587] hid-multitouch 0018:0457:113D.0004: input,hidraw3: I2C HID v1.00 Device [SIS0457:00 0457:113D] on i2c-SIS0457:00
$

システム的にはこのデバイスに対応していているようですが、最初にコケているように見えます。念の為、前後のメッセージも調べました。

...
...
[    3.506907] ACPI Exception: AE_BAD_PARAMETER, Returned by Handler for [UserDefinedRegion] (20170531/evregion-300)
[    3.507044] ACPI Error: Method parse/execution failed \_SB.P33X._ON, AE_BAD_PARAMETER (20170531/psparse-550)
[    3.507150] acpi 80860F14:03: Failed to change power state to D0
[    3.515514] ACPI Exception: AE_BAD_PARAMETER, Returned by Handler for [UserDefinedRegion] (20170531/evregion-300)
[    3.515633] ACPI Error: Method parse/execution failed \_SB.P33X._ON, AE_BAD_PARAMETER (20170531/psparse-550)
[    3.515740] acpi SIS0457:00: Failed to change power state to D0
[    3.540067] acpi SIS0457:00: Cannot transition from (unknown) to D3hot
[    3.560977] intel_ish_ipc 0000:00:0a.0: enabling device (0000 -> 0002)
[    3.580160] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[    3.581751] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    3.583369] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    3.583901] mmc0: new HS200 MMC card at address 0001
[    3.586134] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[    3.645433] mmc1: new ultra high speed DDR50 SDIO card at address 0001
[    3.674941] mmcblk0: mmc0:0001 CGND3R 58.2 GiB 
[    3.676063] mmcblk0boot0: mmc0:0001 CGND3R partition 1 4.00 MiB
[    3.676611] mmcblk0boot1: mmc0:0001 CGND3R partition 2 4.00 MiB
[    3.677065] mmcblk0rpmb: mmc0:0001 CGND3R partition 3 4.00 MiB
[    3.688347] input: SIS0457:00 0457:113D as /devices/pci0000:00/808622C1:05/i2c-5/i2c-SIS0457:00/0018:0457:113D.0004/input/input7
[    3.688587] hid-multitouch 0018:0457:113D.0004: input,hidraw3: I2C HID v1.00 Device [SIS0457:00 0457:113D] on i2c-SIS0457:00
[    3.692801]  mmcblk0: p1 p2 p3
...
...

う〜ん、わからん。Ubuntu 14.04 に戻すことが頭をよぎりましたが、積極的に使用しなかったディストリビューションに戻しても仕方がないので、引き続きコツコツと調べることにします。Fedora でタッチパネルを使えるようになるまでの道程は遠いです。

 

参考サイト

  1. Releases/27/Schedule - FedoraProject
  2. Changes/32BitUefiSupport - FedoraProject
  3. bitWalk's: ASUS TransBook T100HA と Ubuntu 14.04 LTS
  4. Fedora Workstation Beta のダウンロード
  5. Input device configuration - FedoraProject

 

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

2017-09-17

Fedora 27 のリリーススケジュール

Fedora [fɪˈdɒr.ə] は、レッドハット社が支援するコミュニティー Fedora Project によって開発されている RPM 系Linuxディストリビューションです。Fedora のリリースサイクルは概ね春と秋の年二回ですが、いつもリリースの遅れが目立っていました。次回リリースされる Fedora 27 ではアルファリリースを廃止し、ベータリリースを経て正式リリース (GA) になります。なお、Fedora の開発版は従来通り Rawhide です。

Fedora 27 のリリーススケジュールを参考サイト [1] から抜き出しました。

Fedora 27 Key Milestones

2017-02-28 Branch Fedora 26 from Rawhide (Rawhide becomes future F27)
2017-06-20 Change Checkpoint: Proposal submission deadline (Changes requiring mass rebuild)
2017-07-04 Change Checkpoint: Proposal submission deadline (System Wide Changes)
2017-07-11 Fedora 26 Release
2017-07-12 Mass Rebuild
2017-07-25 Change Checkpoint: Proposal submission deadline (Self Contained Changes)
2017-08-01 Change Checkpoint: Completion deadline (testable)
Software String Freeze
2017-08-15 Branch Fedora 27 from Rawhide (Rawhide becomes future F28)
2017-08-29 Software Translation Deadline
Bodhi activation point
2017-09-05 Beta Freeze (*)
Change Checkpoint: 100% Code Complete Deadline
2017-09-19 Beta Release (Target date) (actual)
2017-09-26 Beta Release (Rain date) (actual)
2017-10-10 Final Freeze (*)
2017-10-24 Fedora 27 Final Release (GA) (Target date) (actual)
2017-10-31 Fedora 27 Final Release (GA) (Rain date)

 

参考サイト

  1. Releases/27/Schedule - FedoraProject

 

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

2017-09-03

Fedora で Cinnamon デスクトップ環境

Cinnamon(シナモン)は、GTK+ 3 ツールキットをベースとしたデスクトップ環境で、元々 Linux Mint(リナックス・ミント)のために開発されました。2011 年に初版がリリースされていますので、比較的新しいデスクトップ環境です。今回は、プライベートで愛用している Fedora で、デスクトップ環境を GNOME から Cinnamon 変更しましたので、変更の仕方や使用感などを報告したいと思います。

Cinnamon デスクトップ

動作環境は次の通りです。

  • OS: Fedora 26 (x86_64)

いままでのデスクトップ GNOME

ここ数年は、Fedora でデフォルトの GNOME のデスクトップ環境を使ってきました。しかし、安物の PC (HP Stream 11) に Linux (Fedora) をインストールして使っているので、あまり高精細でないディスプレイの解像度 1366×768 では GNOME はちょっと使いにくいと感じていました。

GNOME デスクトップ (1366×768)

そもそも GNOME のデスクトップに期待していたことは、タブレットの環境でタッチパネルの操作に適した UI の操作感を Linux で試してみたいと思ったことだったのですが、現実は、そこそこ使える格安の PC に Linux をインストールすることに満足してしまい、いまだに自分はタッチパネルの世界で Linux を使っていません。

Cinnamon デスクトップ

Cinnamon はもともと Linux Mint のために開発されたのですが、この Linux ディストリビューションでは、洗練され、最新で快適な Linux デスクトップを提供することを目標としている Ubuntu をベースとしたディストリビューションです。たしかに Linux Mint のデスクトップは洗練されたものに見えるので、デスクトップだけでも使ってみたいと思っていたのですが、幸い今では他のディストリビューションでも Cinnamon を利用できるようになっており、Fedora でも利用できるようになっていますので、切り替えてみました。

切り替え方法は後述するとして、Cinnamon にデスクトップ環境を変更した結果を下記に紹介します。

Cinnamon デスクトップ (1366×768)

使用したテーマは以下のようにしました(メニュー → 設定(システム設定) → テーマ)。

デスクトップのテーマ設定

システム情報は次のようになっています(メニュー → 設定(システム設定) → システム情報)。

システム情報

Cinnamon デスクトップ環境での操作は、仕事で使っている Microsoft Windows 7 の操作と似ており、細かいところはさておき、なんなく使えるようになりました。日本語メッセージにもよく対応していると思います。

GNOME → Cinnamon への変更手順

話が前後しましたが、GNOME から Cinnamon にデスクトップ環境を変更する方法をまとめました。

まず、GNOME 端末などの端末エミュレータを起動してルート権限で操作します。ここでは su でルートにログインして操作しています。

$ su
パスワード:
#

利用可能なグループパッケージを表示します。

# dnf grouplist
メタデータの期限切れの確認は、1:49:31 時間前の 2017年09月03日 06時54分52秒 に実施しました。
Available Environment Groups:
   Fedora Custom Operating System
   最小限のインストール
   Fedora Server Edition
   Fedora Workstation
   Fedora Cloud Server
   KDE Plasma デスクトップワークスペース
   Xfce デスクトップ
   LXDE デスクトップ
   Hawaii Desktop
   LXQt Desktop
   Cinnamon デスクトップ
   MATE デスクトップ
   Sugar デスクトップ環境
   開発環境とクリエイティブワークステーション
   Web サーバー
   インフラサーバー
   基本的なデスクトップ環境
インストール済みグループ:
   C 開発ツールとライブラリー
   開発ツール
   ...
   (以下省略)
   ...

Available Environment Groups にある Cinnamon デスクトップ をインストールします。

# dnf groupinstall "Cinnamon デスクトップ"
   ...
   ...
   ...
トランザクションの要約
================================================================================
インストール  137 パッケージ

総ダウンロードサイズ: 193 M
パッケージ展開後のサイズ: 518 M
これでいいですか? [y/N]: y
パッケージをダウンロードしています;
   ...
   (以下省略)
   ...
完了しました!
#

ログアウトしてログインし直すだけで十分のはずですが、念の為、再起動します。

# reboot

ログイン画面でログインするアカウントを選択し、下記のようにギア状のアイコンをクリックしてデスクトップ環境を変更します。なお、以降のスクリーンショットは実機では取れないので、Oracle VirtualBox 上にインストールした Fedora 26 のスクリーンショットを使っています。

デスクトップ環境の変更

選択肢を見ると、既に Cinnamon にチェックが入っていますが、不具合なのでしょうか、この状態でログインしても実際には GNOME デスクトップ環境のままです。ですので、面倒なようですが、一旦 GNOME を明確に選択(チェック)して(GNOME デスクトップ環境へ)ログインします。

デスクトップ環境を切り替える専用のツールに switchdesk というのがありますが、うまく動かなかったので、このようなやり方をしています。

GNOME で一旦ログイン

ログアウトしてから、あらためて Cinnamon を選択(チェック)してログインし直すと、Cinnamon のデスクトップ環境に切り替わります。デスクトップの切り替えに問題があるのは、このように後で他のデスクトップ環境を追加した直後だけで、以降は切り替えに問題はありません。

ログアウト後、Cinnamon をあらためて選択(チェック)してログイン

なお、Fedora のインストール時から Cinnamon をデスクトップに使いたい場合は Fedora Spins で Cinnamon 用のインストールイメージ [1] が用意されています。

 

参考サイト

  1. Fedora Cinnamon デスクトップ

 

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

2017-08-06

【備忘録】JavaFX GUI メッセージの国際化 --- NetBeans IDE

JavaFX で GUI アプリケーションを作るとき、表示する文字列は英語でなければならない案件ばかりだったため、GUI アプリケーションの国際化について考えてきませんでした。しかし最近になって、ついにというか、ようやくというか、少なくとも英語環境と日本語環境の両方に対応する必要がある案件が出てきましたので、やり方を調べました [1]

使用している環境は以下の通りです。

  • OS: Fedora 26 (x86_64)
  • Java: jdk1.8.0_141-1.8.0_141-fcs.x86_64 (Oracle)
  • IDE: NetBeans IDE 8.2

この環境のロケール [2] は下記のようになっています。

$ locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
$

国際化の目標

ここでの目標は、ソースを再コンパイルすることなく、実行環境のロケールに応じたメッセージを表示することです。今回は英語をデフォルトとして日本語環境で日本語メッセージを表示することを目標とします。

Hello World!

サンプルとして、NetBeans IDE で空の JavaFX アプリケーションのプロジェクトを作成したときに生成される Hello World! のソースを国際化対応することにします。

メイン・メニューから「ファイル(F)」→「新規プロジェクト(W)...」を選んで、新規プロジェクトを作成するダイアログを開きます。

 

新規プロジェクトのダイアログの「プロジェクト(P)」の欄で JavaFXアプリケーション を選択し、下の「 次 > 」ボタンをクリックして次へ進みます。

 

プロジェクト名(N)」は HelloWorld としました。「終了(F)」ボタンをクリックしてダイアログを終了します。

 

実行すると(いつものように)以下のように表示されます。

 

Java のソースは以下のようになっています。コメント行は取り除きました。

リスト:HelloWorld.java 
package helloworld;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloWorld extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction((ActionEvent event) -> {
            System.out.println("Hello World!");
        });
        
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        
        Scene scene = new Scene(root, 300, 250);
        
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }  
}

プロパティ・ファイルの追加

国際化に対応させる文字列は、プロパティ・ファイルに保存します。プロパティ・ファイルはキーと値がペアになった形式になっており、キーはプログラムがテキストを読み出すために使用する識別子、値は実際のテキストになります。各ロケールに対して、プロパティ・ファイルを作成しますが、キーは各ロケール共通で、文字列のみが異なります。まずはデフォルトのプロパティ・ファイルを作成します。

HelloWorld パッケージを選択、右クリックでプルダウンメニューを表示させ、「新規」→「その他...」を選択します。

 

「新規ファイル」のダイアログが表示されますので、「カテゴリ(C)」のリストから「その他」を選び、「ファイル・タイプ(F)」のリストで「プロパティ・ファイル」を選びます。下の「 次 > 」ボタンをクリックして次へ進みます。

 

「New プロパティ・ファイル」ダイアログで作成するプロパティ・ファイル名を設定します。ここではプロジェクト名と同じ HelloWorld とします。

 

ブランクの HelloWorld.propertier が生成されます。

 

国際化ウィザードの利用

国際化ウィザードは対象となるソースから文字列を抽出し、プロパティ・ファイルにキーとペアを書き出して、Java プログラムがプロパティ・ファイルと連携するよう、ソースの文字列の箇所に java.util.ResourceBundle.getBundle() を埋め込んでくれます。

国際化ウィザードを利用するには、メイン・メニューから、「ツール(T)」>「国際化(Z)」>「国際化ウィザード(I)」を選択します。

 

国際化ウィザートのダイアログの最初のステップ「1. 国際化するソースを選択する」では、国際化の対象となるソースを選択します。この例では HelloWorld.java のみです。下の「 次 > 」ボタンをクリックして次へ進みます。

 

次のステップ「2. ソースのリソースを選択」では、ソースとリソースであるプロパティファイルを対応させるのですが、この例では同じ名前の HelloWorld.propeties しかありませんので、そのまま下の「 次 > 」ボタンをクリックして次へ進みます。

 

「3. フィールドの生成」ステップでは、この場合、何も変更せず、下の「 次 > 」ボタンをクリックして次へ進みます。

 

最後の「4. 見つかった文字列の変更」ステップではウィザードは抽出した文字列からキーが先生されて表示されます。この例ではこのまま「終了(F)」ボタンをクリックしてウィザードを終了させます。

 

ウィザード終了後、HelloWorld.java の文字列の箇所は下記のように java.util.ResourceBundle.getBundle() で置換されています。

リスト:HelloWorld.java(国際化ウィザード終了後) 
package helloworld;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloWorld extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText(java.util.ResourceBundle.getBundle("helloworld/HelloWorld").getString("SAY 'HELLO WORLD'"));
        btn.setOnAction((ActionEvent event) -> {
            System.out.println(java.util.ResourceBundle.getBundle("helloworld/HelloWorld").getString("HELLO WORLD!"));
        });
        
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        
        Scene scene = new Scene(root, 300, 250);
        
        primaryStage.setTitle(java.util.ResourceBundle.getBundle("helloworld/HelloWorld").getString("HELLO WORLD!"));
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }   
}

空だった HelloWorld.properties には以下のようにキーと値のペアが書き込まれています。

リスト:HelloWorld.properties 
SAY\ 'HELLO\ WORLD'=Say 'Hello World'
HELLO\ WORLD!=Hello World!

日本語ロケールの追加

国際化に対応した HelloWorld.java と、デフォルトの HelloWorld.properties ファイルの準備ができたので、今度は日本語のメッセージを用意します。

デフォルトの HelloWorld.properties ファイルを選択して右クリックしてプルダウンメニューを表示させ、「追加(A)」→「ロケール...」を選択します。

 

「新規ロケール」のダイアログが表示されますので、「事前定義ロケール(P)」のリストから ja_JP を選択して「 OK 」ボタンをクリックしてダイアログを閉じます。

※「事前定義…」ってなんだ?と思いましたが、英語版のメッセージは Predefined ですので、要するに「定義済み…」という意味なのでしょう。

 

HelloWorld_ja_JP.properties が生成されます。生成後は HelloWorld.properties と同じ内容になっていますので、次のように編集しました。

リスト:編集後の HelloWorld_ja_JP.properties 
SAY\ 'HELLO\ WORLD'=「こんにちは、世界!」と出力
HELLO\ WORLD!=こんにちは、世界!

あらためてプロジェクトをビルド・実行すると。以下の通り、ばっちりメッセージが日本語に変わりました(下左図)。

念の為 HelloWorld.jar を Windows 10(日本語版, 32bit)へコピー・実行して確認してみたところ、同様に日本語メッセージが表示されました(下右図)。

 

参考サイト

  1. GUIフォームの国際化 - NetBeans IDEチュートリアル
  2. ロケールとは - 国際化対応言語環境の利用ガイド

 

国際化に関しては、こんなに古い本しか出回っていません。😢

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