2014-12-30

【備忘録】XMind と Fedora 21

XMindは、マインドマップを作成できるソフトウェアです。

マインドマップを用いることで、物事を視覚的・構造的に整理しやすくなります。普段の業務の中に出てくるアイデアや発想、打ち合わせの内容などをマインドマップに書きとめておくことで、それぞれの物事の関係が非常に分かりやすくなります。こういった PC 上のツールがなければ、紙に書き出せば良いのですが、一度でも PC で利用できるツールを使ってしまうと、もう紙には戻れません。

マインドマップを扱うソフトウェアには、FreeMind という GPL の下で配布されるツールがあり、Fedora で利用できるのですが、個人的にはクローズドソースである XMind の方が機能的に使い易いと思っているので、こちらを使っています。XMind には無料版の XMind と、有料版の XMind Plus、XMind Pro が提供されています。ぞれぞれの機能の違いは下記にまとめられています。

alien による deb ⇒ RPM 変換

ここでは、無料版を Fedora で利用する場合について紹介します。Linux 用パッケージは以下のサイトから入手します。

Linux 版は残念ながら Debian/Ubuntu の deb パッケージのみ提供されていますが、これを alien で RPM へ変換することにします。以前、本ブログの過去記事「【備忘録】マインドマップツール XMind と alien --- rpm, deb などの変換ツール」で、alien を使った変換方法を紹介していますので、これと同じことをします。

# alien --to-rpm --scripts xmind-jp-linux-3.5.1.201411201906_amd64.deb
xmind-3.5.1-2.x86_64.rpm generated

これを、yum localinstall でインストールしようとしたところ、エラーになってしまいました。

# yum localinstall xmind-3.5.1-2.x86_64.rpm
読み込んだプラグイン:langpacks
xmind-3.5.1-2.x86_64.rpm を調べています: xmind-3.5.1-2.x86_64
xmind-3.5.1-2.x86_64.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ xmind.x86_64 0:3.5.1-2 を インストール
--> 依存性解決を終了しました。
adobe-linux-x86_64                                          |  951 B  00:00     
...
(省略)
...
updates/21/x86_64/pkgtags                                   | 1.3 MB  00:01     

依存性を解決しました

================================================================================
 Package      アーキテクチャー
                            バージョン       リポジトリー                  容量
================================================================================
インストール中:
 xmind        x86_64        3.5.1-2          /xmind-3.5.1-2.x86_64        109 M

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

合計容量: 109 M
インストール容量: 109 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test


Transaction check error:
  ファイル /usr/bin (パッケージ xmind-3.5.1-2.x86_64 から) は、パッケージ filesystem-3.2-28.fc21.x86_64 からのファイルと競合しています。
  ファイル /usr/lib (パッケージ xmind-3.5.1-2.x86_64 から) は、パッケージ filesystem-3.2-28.fc21.x86_64 からのファイルと競合しています。

エラーの要約
-------------

#

自動変換した XMind のSPEC ファイルで /usr/bin/usr/lib の両ディレクトリを定義しているが故の競合であると予想されます。あまり害が無いので rpm コマンドで強制的にインストールするのもアリですが、ここでは SPEC ファイルを編集して yum でエラーが出ないパッケージを作ることにしました。

無料でダウンロードできる XMind は、「デュアルライセンスについて XMind」を読む限り、RPM パッケージでの再配布ができそうですが、確認が不十分ですので、現在のところ、RPM パッケージの作成方法を以下に紹介するに留めます。

SPEC ファイルの編集

alien には、パッケージ変換に使用するファイルを一時ディレクトリに保存してくれる --generate というオプションがあります。このオプションを使って、以下のようにして SPEC ファイルを含むビルドに必要なファイルを取得します。

$ alien --to-rpm --scripts --generate xmind-jp-linux-3.5.1.201411201906_amd64.deb
Warning: alien is not running as root!
Warning: Ownerships of files in the generated packages will probably be wrong.
Directory xmind-3.5.1 prepared.
$ ls xmind-3.5.1
etc  usr  xmind-3.5.1-2.spec
$ 

ディレクトリ xmind-3.5.1 の中にある xmind-3.5.1-2.spec を編集します。と言っても下記の %file セクションの数箇所(緑の行)をコメントアウトするだけです。

Buildroot: /home/bitwalk/ダウンロード/xmind-3.5.1
Name: xmind
Version: 3.5.1
Release: 2
Summary: Professional & Powerful Mind Mapping Software
License: see /usr/share/doc/xmind/copyright
Distribution: Debian
Group: Converted/non-free/editors
...
(省略)
...
(Converted from a deb package by alien version 8.90.)

%files
%dir "/etc/"
%config "/etc/XMind.ini"
#dir "/usr/"
#dir "/usr/bin/"
"/usr/bin/XMind"
#dir "/usr/lib/"
%dir "/usr/lib/xmind/"
"/usr/lib/xmind/.eclipseproduct"
"/usr/lib/xmind/about.html"
%dir "/usr/lib/xmind/about_files/"
"/usr/lib/xmind/about_files/about_cairo.html"
"/usr/lib/xmind/about_files/mpl-v11.txt"
"/usr/lib/xmind/about_files/pixman-licenses.txt"
"/usr/lib/xmind/artifacts.xml"

RPM パッケージのビルド

編集した xmind-3.5.1-2.spec$HOME/rpmbuild/SPECS へ保存し、ディレクトリ xmind-3.5.1 を、xmind-3.5.1-2.x86_64 に名前を変えて $HOME/rpmbuild/BUILDROOT へコピーします。$HOME/rpmbuild/SPECS へカレントディレクトリを移し、下記のようにして RPM パッケージをビルドします。

$ rpmbuild -ba xmind-3.5.1-2.spec
ファイルの処理中: xmind-3.5.1-2.x86_64
...
(省略)
...
パッケージに含まれないファイルの検査中: /usr/lib/rpm/check-files /home/bitwalk/rpmbuild/BUILDROOT/xmind-3.5.1-2.x86_64
警告: インストール済み(ただしパッケージに含まれない)ファイルが見つかりました:
   /xmind-3.5.1-2.spec
書き込み完了: /home/bitwalk/rpmbuild/SRPMS/xmind-3.5.1-2.src.rpm
書き込み完了: ../xmind-3.5.1-2.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.noBYpc
+ umask 022
+ cd /home/bitwalk/rpmbuild/BUILD
+ /usr/bin/rm -rf /home/bitwalk/rpmbuild/BUILDROOT/xmind-3.5.1-2.x86_64
+ exit 0
$ 

この場合、xmind-3.5.1-2.x86_64.rpm は、$HOME/rpmbuild/ に出力されます。インストールでは下記のように警告のようなものが出ますが、他パッケージと競合せずにインストールができます。

# yum localinstall xmind-3.5.1-2.x86_64.rpm
読み込んだプラグイン:langpacks
xmind-3.5.1-2.x86_64.rpm を調べています: xmind-3.5.1-2.x86_64
xmind-3.5.1-2.x86_64.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ xmind.x86_64 0:3.5.1-2 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package      アーキテクチャー
                            バージョン       リポジトリー                  容量
================================================================================
インストール中:
 xmind        x86_64        3.5.1-2          /xmind-3.5.1-2.x86_64        109 M

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

合計容量: 109 M
インストール容量: 109 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction (shutdown inhibited)
  インストール中          : xmind-3.5.1-2.x86_64                            1/1 
Unknown media type in type 'all/all'
Unknown media type in type 'all/allfiles'
Unknown media type in type 'uri/mms'
Unknown media type in type 'uri/mmst'
Unknown media type in type 'uri/mmsu'
Unknown media type in type 'uri/pnm'
Unknown media type in type 'uri/rtspt'
Unknown media type in type 'uri/rtspu'
  検証中                  : xmind-3.5.1-2.x86_64                            1/1 

インストール:
  xmind.x86_64 0:3.5.1-2                                                        

完了しました!
# 

デスクトップ環境が MATE の場合は、メニューには「アプリケーション」→「オフィス」→「XMind」と登録されています。GNOME 3 の場合は、下記のようにアイコンが加えられます。

起動中の画面です。

以下のように無事起動しました。なお、デスクトップ環境は MATE を使っています。

ちょっとしたアイデアを整理したり、ブレインストーミングに使ったり、なかなか重宝するツールです。ロジックツリーなどマインドマップ以外のレイアウトも利用できるので、仕事の整理にも活用しています。下記は自分の強みをまとめているものです。使用例として紹介しておきます。

 

2014-12-27

【まとめ】ギーク向けに特化した Firefox OS スマホ Fx0

12 月 23 日に KDDI から発表された Firefox OS 端末 Fx0 ですが、12 月 25日に KDDI 直営店で発売されても、買いに行くことができません。au オンラインショップで注文するにしても、まずは関連する情報をまとめてみました。


Fx0 LGL25 | Firefox OS | au

auから発売されるFirefoxOS搭載のハイエンドスマホFx0の概要紹介ページです。


Firefox OS搭載の『Fx0』を並んでゲットするも格安SIMでは運用できず

ついに発売されたFirefox OS登載端末『Fx0』。ライターの中山氏は早速購入したようですが、回線契約で落とし穴にはまったようです。


au「Fx0(LGL25)」が発売!開封レビュー等も

auは「Firefox OS」を搭載した新型スマートフォン「Fx0(LGL25)」を "au Online Shop"、"au SHINJUKU"、"au NAGOYA"、"au OSAKA"、"au FUKUOKA"において先行発売しました。なお全国のショップでは1月6日より発売となります。


ネジも専用:写真で解説する“採算度外視”なFirefoxスマホ「Fx0」

KDDIが国内キャリアとして初めて発売したFirefox OS搭載スマホ「Fx0」。田中プロ自らが「ギーク向けで採算度外視」と紹介する超個性派モデルに触ってみた。


KDDI、Firefox OSスマートフォン『Fx0』LGL25の3Dプリンタ用データを無償公開

KDDI がFirefox OS スマートフォンFx0 LGL25 のCADデータを公開しました。参考リンク先のau Firefox OS ポータルサイトから無料で入手でき、ダウンロードしたZIP ファイルには外装全体と背面カバーの2種類のSTL データが入っています。


 

2014-12-21

【備忘録】USB Webcam と Cheese

Cheese は GNOME の Web カメラ用 (Webcam) アプリケーションで、2007 年に開催された Google Summer of Code に参加した Daniel G. Siegel 氏のプロジェクトで開発されました。Fedora では、以前からデスクトップのメニューの「サウンドとビデオ」に収録されていることは知っていましたが、使う機会がなく、何に使うアプリケーションかも知りませんでした。

たまたま Cheese を開いてみる機会があり、これが Webcam アプリであることを初めて知りました。試しに手許にあった ELECOM の UCAM-DLL300TRD を接続してみたら、普通に使えてビックリしました。PC は Fedora 21 x86_64 です。

なぜ、自宅の Linux で使いもしない Webcam を持っているかというと、数ヶ月前に Webcom を使う Skype の会議があり、時間もなかったのでやむなく会社の Windows の ノート PC 用に購入していました。上記 Webcam は販売終了の製品ですが、UVC, USB Video device Class に対応している Webcam であれば Linux で使えるようなので備忘録として残しておきます。

  1. Apps/Cheese - GNOME Wiki!
  2. Cheese (software) - Wikipedia, the free encyclopedia
  3. 第147回 UbuntuでUSBウェブカメラを使う:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

2014-12-18

人工知能が急に進化し始めた! | TheWave

Deep Learning とは、機械学習アルゴリズムの1つで、人間の脳を模した構造をもつニューラルネットワークを多層に重ねた構造を持っています。日本語では「深層学習」と訳されます。Deep Learning の大きな特徴は、多段に重ねることによって抽象的なデータの表現を獲得することができることで、このことから真の人工知能への第一歩であると考えられています。

進化というものは、ひとたびブレークスルーが起きれば、どんどん先へ進んでいくもののように感じています。人工知能の進化をは異なりますが、100m 走における 10 秒の壁を思い浮かべます。

ソフトバンクの Pepper も、普及と共にどんどん進化していって凄い人工知能を持ったロボットになるのかもしれません。

調べてみると、既にオープンソースでも Deep Leaning に関するものがいくつか存在するようです。とりあえず、Deeplearning4j 4. を試してみようかと考えています。PC を買い換える動機になるような…。

関連サイト

  1. ニューラルネットの逆襲 | Preferred Research
  2. Pepper(ペッパー)登場 | 特集 | ロボット | ソフトバンク
  3. 「鉄腕アトム」も夢じゃない。AIの飛躍的進歩 | ガジェット通信
  4. Deeplearning4j - Open-source, distributed deep learning for the JVM

2014-12-15

魅惑の Qyoto (7) - Fedora 21 での動作確認

Qyoto は Qt の .NET バインディングです。Fedora 20 の時に、新しい Qyoto を入手して「魅惑の Qyoto」と題して、Mono 環境でサンプルを紹介していましたが、一時期 CentOS 7 へ乗り換えてから中断していました。Fedora 21 では、Fedora 標準のレポジトリから Qyoto のパッケージが利用できますので、まずは動作確認をしてみます。

Fedora 21 における Mono の開発環境

Fedora 21 における Mono / Qyoto の開発環境の主要なパッケージは、下記の通りです。

  • mono-core-2.10.8-8.fc21.x86_64
  • qt-4.8.6-18.fc21.x86_64
  • qyoto-4.14.3-1.fc21.x86_64
  • qyoto-devel-4.14.3-1.fc21.x86_64

Fedora 21 で Mono のバージョンが 2.10 から 3.4 へ移行するものと思っていましたが、あらためて Changes/Mono 3.4 - FedoraProject を確認すると、ターゲットリリースは Fedora 22 になっていました。なお、Mono の最新バージョンは 3.8 です。

Mono の今後

Microsoft は 11 月 12 日、.NET Framework のサーバーサイド向け技術 .NET Core をオープンソース化することを発表して関係者を驚かせました 1.。"Microsoft" という言葉と "オープンソース" という言葉が、今や同一の文章の中で使われる時代になったのです。Mono Project はこの動きに呼応して、今後統合に向けて動いていくことを表明しています 2.

  1. 「.NET Core」がオープンソース化、MacやLinuxもサポート | SourceForge.JP Magazine (2014年11月13日)
  2. .NET Source Code Integration | Mono(2014年11月18日)

そういうわけで、.NET にまつわる技術動向が注目されますが、まずは現状でできることを整理しておきましょう。

Hello World 再び

mono のバージョンは 2.10 ですが、ひとまず Hello World のプログラムの動作を確認してみます。「魅惑の Qyoto (1) - Hello Wold!」で紹介したサンプルで確認しますので、ソースを再掲します。

List: hello-qyoto.cs
using System;
using Qyoto;

/**
 * ZetCode Qyoto C# tutorial
 *
 * This program creates a quit
 * button. When we press the button,
 * the application terminates. 
 *
 * @author Jan Bodnar
 * website zetcode.com
 * last modified October 2012
 *
 * modified by Fuhito Suguri
 * last modified 13-May-2014
 */


public class QyotoApp : QWidget
{
    public QyotoApp ()
    {
        WindowTitle = "mono/qyoto";

        InitUI ();

        Resize (180, 60);
        Move (300, 300);
        Show ();
    }

    public void InitUI ()
    {    
        QPushButton but = new QPushButton ("こんにちは、世界!", this);

        Connect (but, SIGNAL ("clicked()"), qApp, SLOT ("quit()"));
        but.SetGeometry (10, 10, 160, 40);
    }

    [STAThread]
    public static int Main (String[] args)
    {
        new QApplication (args);
        new QyotoApp ();
        return QApplication.Exec ();
    }
}

コンパイルおよび実行例を以下に示します。

$ mcs hello-qyoto.cs -pkg:qyoto
$ mono hello-qyoto.exe

Mono の最近のバージョンについては、下記からパッケージをダウンロードして試してみる予定です。

  1. software.opensuse.org: パッケージのインストール: home:tpokorra:mono / mono-opt

2014-12-14

【備忘録】RPM Fusion

RPM Fusion は、Fedora プロジェクトに収録されていないパッケージを提供するレポジトリです。参考サイト [1] にあるように、いわゆる Fedora 非公式パッケージ用リポジトリです。

リポジトリは、オープンソースの free と、それ以外の nonfree の二種類が設けられ、free では Fedora に収録できないパッケージ、nonfree には、ビデオカードのドライバなどソースコード非公開のソフト、あるいは MP3 関連アプリや DVD 復号化ソフトといった、ライセンスの問題で Linux ディストリビューションに収録することが難しいパッケージが割り当てられています。

本ブログでは既に RPM Fusion については 2009 年に紹介していますが、ずいぶんと時間が経ったので、あらため紹介します。ただ、Fedora 21 がリリースされたことによって、RPM Fusion の方で何か変わったというわけではありません。

下記からのサイトから Fedora 21 用の、レポジトリへアクセスする RPM パッケージをダウンロードします。

ダウンロードしたパッケージを yum でインストールします。

# yum localinstall rpmfusion*.rpm
読み込んだプラグイン:langpacks
rpmfusion-free-release-21.noarch.rpm を調べています: rpmfusion-free-release-21-1.noarch
rpmfusion-free-release-21.noarch.rpm をインストール済みとして設定しています
rpmfusion-nonfree-release-21.noarch.rpm を調べています: rpmfusion-nonfree-release-21-1.noarch
rpmfusion-nonfree-release-21.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ rpmfusion-free-release.noarch 0:21-1 を インストール
---> パッケージ rpmfusion-nonfree-release.noarch 0:21-1 を インストール
--> 依存性解決を終了しました。
adobe-linux-x86_64                                          |  951 B  00:00     
google-chrome                                               |  951 B  00:00     
updates/21/x86_64/metalink                                  | 7.5 kB  00:00     

依存性を解決しました

================================================================================
 Package                 アーキテクチャー
                                バージョン
                                     リポジトリー                          容量
================================================================================
インストール中:
 rpmfusion-free-release  noarch 21-1 /rpmfusion-free-release-21.noarch    9.7 k
 rpmfusion-nonfree-release
                         noarch 21-1 /rpmfusion-nonfree-release-21.noarch 9.9 k

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

合計容量: 20 k
インストール容量: 20 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction (shutdown inhibited)
  インストール中          : rpmfusion-free-release-21-1.noarch              1/2 
  インストール中          : rpmfusion-nonfree-release-21-1.noarch           2/2 
警告: rpmfusion-nonfree-release-21-1.noarch: ヘッダー V3 RSA/SHA256 Signature、鍵 ID a668b376: NOKEY
  検証中                  : rpmfusion-nonfree-release-21-1.noarch           1/2 
  検証中                  : rpmfusion-free-release-21-1.noarch              2/2 

インストール:
  rpmfusion-free-release.noarch 0:21-1  rpmfusion-nonfree-release.noarch 0:21-1 

完了しました!
#

参考サイト

  1. Fedora非公式パッケージ用リポジトリ「RPM Fusion」正式オープン | マイナビニュース

2014-12-13

【備忘録】OpenSSH

SSH, Secure Shell は、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコルです。一般に普及しているのはオープンソースで開発されている OpenSSH で、Linux でも標準的に利用されているので、単に SSH と言った場合、OpenSSH の実装系を指すことが多いそうです。

さて、Fedora 21 Workstation の PC へ、枕元のノート PC から ssh で接続しようとしたところ繋がりません。調べてみると sshd が有効になっていなかったので、systemctl コマンドで有効にしました。

# systemctl enable sshd.service

あとで状態を確認すると以下の通り。

# systemctl status sshd.service
 sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since 土 2014-12-13 14:13:35 JST; 6h ago
 Main PID: 894 (sshd)
   CGroup: /system.slice/sshd.service
           └─894 /usr/sbin/sshd -D

12月 13 14:13:35 localhost.localdomain sshd[894]: Server listening on 0.0.0....
12月 13 14:13:35 localhost.localdomain sshd[894]: Server listening on :: por...
12月 13 14:44:45 localhost.localdomain sshd[1526]: Accepted password for bit...
Hint: Some lines were ellipsized, use -l to show in full.

これだけで、なにも追加で設定をすることなく他の PC から ssh で接続できてメデタシですが、設定等が詳しく紹介されているサイトがあるので、備忘録としてまとめました。

関連サイト

2014-12-10

祝 Fedora 21 リリース

Fedora 21 がようやくリリースされたようです。

Fedora 21 は下記のサイトから、Base パッケージの元に、Workstation、Server そして Cloud の 3 種類のパッケージで配布されています。

関連サイト


2014-12-08

国内初となるKDDI(au)のFirefox OS採用スマホ「LGL25」、デザインなどの情報が流出

12 月 8 日付の BUZZAP の記事によると、KDDI の Firefox OS 第一弾は iPhone のようなホームボタンを備えたデザインだという記事が載りました。どのようなルートで情報がリークしたのかは判りませんが、比較的低価格で入手できそうだというのは嬉しい事です。

調べてみると他でも同じような記事が出ていましたので、そのうちいくつかのリンクも紹介します。

ロシア語?で何を言っているのか、ところどころしか解らないのですが、LGL25 が映っています。

2014-12-06

『第二の地球を探せ! 「太陽系外惑星天文学」入門』を読んで

1995 年、ペガスス座51番星 (51 Pegasi) という恒星に、木星クラスの質量を持った惑星の存在が確認されました。これがはじめて発見された太陽系外惑星でした。それ以来、数多くの太陽系外惑星が発見されています。

本書は、天文学の現在までの歩みと、系外惑星の発見に情熱を注ぐ「プラネット・ハンター」たちの熱いドラマを交えて、数々の観測法が分かりやすく紹介されています。

地球に似た惑星は、銀河系、あるいは宇宙全体でどれくらいあるのか、地球以外にも生命は存在するのか―。21世紀を牽引する科学分野のひとつ、太陽系外惑星研究の第一人者が伝える、天文学・惑星科学の最先端の書です。

本書の「おわりに」の章が 2014 年 9 月で結んであり、初版 1 刷が 2014 年 10 月 20 日と、まさに最新の内容になっています。

私は、本書の内容に驚きと感動を覚えながら、一気に読みきってしまいました。

今から 10 年以上も前になりますが、2000 年 6 月に有限会社ビットウォークを設立して間も無いその年の暮れ、SETI@home にハマっていた私は、偶然にも O'Reilly の刊行予定に Beyond Contact: A Guide to SETI and Communicating with Alien Civilizations が載っているのを見つけました。迷わず O'Reilly Japan に連絡を入れて翻訳権と邦訳出版の交渉を始めました。

この手の科学読み物の翻訳業務は、会社の中核となるビジネスに育てられるかもしれないと、せっせと翻訳に励んだのですが…、結局、諸事情により出版までには至りませんでした。しかし、それこそ嘗めるようにして精読していたため、今も当時の太陽系外惑星の観測方法や発見状況がしっかり記憶に残っていたのです。そのため、この「第二の地球を探せ!…」を読んだ時、10 年ちょっとの間の技術の進歩に目を見張ったのでした。

すばる望遠鏡ケプラー衛星などによる最新の成果が平易な解説と共に散りばめられており、天文学ファンでなくとも読み進められる内容だと思います。

何光年も離れた恒星へ探査機を向かわせるためには、まだまだ人類の科学は未熟なのかもしれません。しかし、地球に届く光(赤外線などを含む)を観測することはできます。経済的な理由で、望遠鏡を衛星に載せて観測する次世代の地球型系外惑星撮像ミッションは、当初のスケジュールよりかなり遅れているそうですが、それでも近い将来、地球型系外惑星の撮像を目にする日がやってくることでしょう。

天文学ファンにはもちろんのこと、科学技術の進歩にご興味のある方へ、オススメの一冊です。

2014-12-03

週刊「マイ3Dプリンター」1月5日創刊へ--関連企業との連携で“一般普及”後押し

3D プリンターもいよいよ普及期にさしかかっているのでしょうか。いや、工業的には既に実用化していますが、低価格の 3D プリンターはこれからが普及期と言えるのかもしれません。そんな中でディアゴスティー二から「マイ3Dプリンター」が創刊されるそうです。マイ〜の響きに思わず買ってしまいたくなります。

ブックマークをしておきながら記事にするのを忘れてしまっていましたが、遅ればせながら備忘録としてブログに残しておきます。


2014-11-30

プログラミング用フォント Ricty Diminished

Linux の環境に限ったことではありませんが、同じ文字数で画面右側の文字列末尾が揃って、かつ、ゼロとオーなど似たような文字を判別しやすい、プログラミングやソースコードの表示に適した等幅フォント、しかもフリーなものを継続的に探しています。

いろいろ調べてみると、Ricty というフォントが日本語を使う環境では高い評価を受けているようです。このフォントはに種類のフォント、InconsolataMigu 1M を合成したものです。ライセンスの関係でフォントの合成を自分で行う必要があり、合成したフォントの再配布ができません。

自分で合成するのは面倒なので、私は姉妹フォントである Ricty Diminished を使用しています。Inconsolata と Circle M+ 1m を Ricty 生成スクリプトで合成したフォントです。 IPA ゴシックのグリフを含まないため、使用可能な漢字グリフの数が少ない代わり、SIL Open Font License の下で配布が可能です。

ダウンロードしたフォントを展開して、Linux のデスクトップ環境ではフォントビューアを使ってインストールします。左は Fedora 21 β版の MATE での例です。Fedora の Eclipse では Monospace という等幅合成フォントがデフォルトで、いまひとつ使いにくいところがあったのですが、Ricty Diminished を使うことで快適感が増しました。

最適なフォントというものは主観的な要因が大きいので人それぞれなのですが、ご興味があれば試して見る価値があると思います。

ちなみに、フォントビューアでインストールしたフォントは、$HOME/.local/share/fonts に格納されます。

参考サイト

  1. 最高に見やすいプログラミング用フォントRictyの生成と使い方 - ウェブソク
  2. プログラミング用フォントをまとめてみました(Source Code Pro/Ricty/Consolasなどなど) | memobits
  3. コーディングに役立つ? 画面上できれいに揃う等幅フォントまとめ - NAVER まとめ

2014-11-29

東芝ブランドの野菜が販売開始へ--都内の百貨店など12店舗で

11 月 28 日に、東芝ブランドの野菜の発売が開始されたそうです。野菜生産をしている工場、「東芝クリーンルームファーム横須賀」は、以前にフロッピーディスク工場の入っていた建屋の 4 階を改装して造られており、ISO クラス 8(米国連邦規格ではクラス 10 万に相当)のクリーンルームの栽培室の中で発芽から育苗、栽培、収穫までを行い、無農薬・低生菌の野菜を供給できることが特徴なのだそうです。

既に富士通も始めている「クリーンルームの特性を活かした無農薬生産」は、地味なようですが、Google が地図情報と自動運転の技術を引っさげてで自動車業界へ参入しようとしていることに匹敵するほどのインパクトを社会に与えるかもしれません。いつの間にか「無農薬の野菜」とは、大自然の中で栽培された野菜ではなく、環境が管理されたクリーンルーム内で栽培された、自然界に存在しない植物、なんてことが当たり前の感覚になるかもしれません。それでも、遺伝子操作をした害虫に強い野菜と比べると、抵抗感は段違いに低いです。

富士通や東芝の IT 産業から、設備の有効活用とはいえ、野菜生産の事業に展開した決断力とその精力的な取組みには拍手喝采を贈りたいです。日本の半導体産業は「産業のコメ」と呼ばれ国の基幹産業でしたが、今後は、半導体産業の施設やインフラを活用して、価値を持たせた野菜生産を始めとした農業のビジネスモデルの改革に貢献することになるかもしれません。半導体産業はかつての「産業のコメ」ではなく、そう遠くない将来に本物の米作りに応用される日がやってくるような気がします。

東芝ブランドの野菜が首都圏で販売が開始されたということで、どのような反響があったのか気になるところですが、今のところ、反響が判るような記事を探し出せませんでした。継続的に情報をアップデートして行く予定です。

関連サイト

  1. 東芝:プレスリリース (2014-05-15):野菜生産の事業化について
  2. 東芝:プレスリリース (2014-09-30):植物工場「東芝クリーンルームファーム横須賀」での生産開始について
  3. 東芝もクリーンルームで野菜生産 富士通に続き - ITmedia ニュース
  4. 【CEATEC 2014 Vol.37】東芝は野菜も作る!11月から購入可能 | RBB TODAY
  5. “ITと野菜”の意外な関係--東芝、富士通が野菜を展示したCEATEC JAPAN 2014 - CNET Japan
  6. 富士通がレタスを販売。半導体用クリーンルームを野菜工場化して無農薬・低カリウム実現 - Engadget Japanese
  7. 富士通と東芝が野菜作り?「ITと野菜」の意外な関係 - NAVER まとめ
  8. Googleは自動車を支配するか 共存か、対立か 進化する自動運転(前篇) (1/2)

追記

その後の追加情報です。


2014-11-28

フォクすけとおでかけ写真をシェアしよう!

12 月 にいよいよ日本で発売される予定の Firefox OS 搭載端末の登場を今か今かと待っていますが、Mozilla Japan は、これを記念したソーシャルメディアキャンペーン「フォクすけとおでかけ写真をシェアしよう!」を実施するそうです。

このキャンペーンは、Firefox OS を意識した衣装に着替えた日本発の Firefox マスコットキャラクター「フォクすけ」と一緒に日本各地の名所や街角の写真を撮影し、Twitter や Facebook に公開設定でシェアしてくれる人の募集を開始しています。

キャンペーン参加者には、もれなく「オリジナルフォクすけステッカー」を、また、抽選で 20 名にフォクすけぬいぐるみが贈呈されるそうです。

私は、フォクすけぬいぐるみより、発売される端末にこそ興味があるのですが、とにかくキャンペーンが盛り上がって Firefox OS の知名度が上がるのは良いことだと思います。

関連サイト

  1. au Firefox OS Portal Site
  2. FireFox OS搭載スマホ、12月に国内に来るかも : ギズモード・ジャパン
  3. フォクすけ | Facebook
  4. フォクすけ(@foxkeh)さん | Twitter

2014-11-23

Fedora 21 と JavaFX

JavaFX は Java 仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Java SE 7 Update 2 以降に標準搭載 1. されているのですが、Fedora で利用できる OepnJDK のパッケージには JavaFX (OpenJFX) のライブラリは含まれていませんでした。

約一年ぶりに Fedora 21 がリリースされますが、Java の 開発環境が OpenJDK が 7 から 8 へ移行するということで、JavaFX のライブラリも含まれているかもしれない…、と理由の無い期待を抱いていたのですが、Fedora 21 の β版を試した限りでは残念ながら OpenJDK のパッケージに JavaFX は含まれていませんでした。

Fedora 20 や CentOS 7 を使っていた時には JavaFX のプログラミングをするために、Oracle が公開している JDK の rpm パッケージ 2. をインストールし、JavaFX に対応している NetBeans IDE 3. もインストールしていました。

今回の Fedora 21 の環境(β版)では、JDK 早期ビルド版が公開されているサイト 4. から、JDK 8u40 Build b15 をインストールして、NetBeans IDE 8.0.1 上で使用してみました。NetBeans IDE 上の Java プラットフォームマネージャに、下記のようにダウンロードした Java 8 を追加します。ここでは「Java 8」がダウンロードした JDK、「Java 8(デフォルト)」が、Fedora のパッケージである OpenJDK になっています。

いつものバージョン確認のサンプルの実行結果です。

なお、環境を整えさえすれば OpenJFX を自分でビルドすることができそうですので、折りを見て挑戦してみます 5.

参考サイト

  1. Java 7 に JavaFX が追加される (2011/12/30)
  2. Java SE Development Kit 8 - Downloads
  3. Welcome to NetBeans
  4. JDK 8u40 Early Access Releases — Project Kenai
  5. Building OpenJFX - OpenJFX - OpenJDK Wiki

2014-11-22

やっぱり Fedora

Fedora の次のバージョン 21 がおよそ一年ぶりにリリースされるまであと僅か。私は 7 月に CentOS 7 がリリースされたのに合わせて Fedora から CentOS に乗り換えたばかりだったのですが、ひさしぶりの Fedora のリリースを前に我慢ができず、結局 Fedora に戻してしまいました。Fedora 21 Workstation の β版を使い始めて、正式リリースを待っています。

デスクトップは MATE を使いたかったのですが、下記のようになってインストールができませんでした。

$ su
パスワード:
# yum groupinstall "MATE デスクトップ"
読み込んだプラグイン:langpacks
パッケージ ibus-gtk3-1.5.9-5.fc21.x86_64 はインストール済みか最新バージョンです
パッケージ ibus-gtk2-1.5.9-5.fc21.x86_64 はインストール済みか最新バージョンです
パッケージ chrony-1.31-1.fc21.x86_64 はインストール済みか最新バージョンです
依存性の解決をしています
--> トランザクションの確認を実行しています。
...
(省略)
...
--> 衝突を処理しています: fedora-release-workstation-21-1.noarch は fedora-release-nonproduct と衝突しています
--> 衝突を処理しています: fedora-release-nonproduct-21-0.16.noarch は fedora-release-workstation と衝突しています
--> 依存性解決を終了しました。
エラー: パッケージ: fedora-release-nonproduct-21-0.16.noarch (fedora)
             要求: fedora-release = 21-0.16
            インストール: fedora-release-21-1.noarch (@updates-testing)
                fedora-release = 21-1
            利用可能: fedora-release-21-0.16.noarch (fedora)
                fedora-release = 21-0.16
エラー: fedora-release-workstation conflicts with fedora-release-nonproduct-21-0.16.noarch
エラー: fedora-release-nonproduct conflicts with fedora-release-workstation-21-1.noarch
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest
# 

パッケージ fedora-release-workstationfedora-release-nonproduct が衝突しています。どうやら、Fedora 21 からグループパッケージの管理が少し変わったようで、そのまま同時にはインストールできないようです。そこで、yum groupinfo で構成を確認しました。

# yum groupinfo "MATE デスクトップ"
読み込んだプラグイン:langpacks

Environment Group: MATE デスクトップ
 Environment-Id: mate-desktop-environment
 説明: MADE デスクトップは GNOME 2 ベースのパワフルなグラフィカルユーザーインタフェースを提供します。シンプルさを求める人や従来型のデスクトップインタフェースで使いたい人にお勧めします。
 Mandatory Groups:
   +admin-tools
    base-x
    core
   +dial-up
   +fedora-release-nonproduct
    fonts
    guest-desktop-agents
    hardware-support
   +input-methods
   +mate-desktop
    multimedia
    networkmanager-submodules
    printing
   +standard
 Optional Groups:
   +3d-printing
    libreoffice
   +mate-applications
   +mate-compiz
# 

これによると mate-desktop というサブグループをインストールすれば出来そうでしたので、早速試しました。

# yum groupinstall "mate-desktop"
読み込んだプラグイン:langpacks
google-chrome                                               |  951 B  00:00     
updates/21/x86_64/metalink                                  | 7.5 kB  00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ NetworkManager-l2tp.x86_64 0:0.9.8.7-3.fc21 を インストール
--> 依存性の処理をしています: xl2tpd のパッケージ: NetworkManager-l2tp-0.9.8.7-3.fc21.x86_64
...
(省略)
...
---> パッケージ libwmf-lite.x86_64 0:0.2.8.4-40.fc21 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                     アーキテクチャー
                                    バージョン                     リポジトリー
                                                                           容量
================================================================================
Installing for group install "MATE":
 NetworkManager-l2tp         x86_64 0.9.8.7-3.fc21                 fedora  95 k
...
(省略)
...
 xl2tpd                      x86_64 1.3.6-6.fc21                   fedora 141 k

トランザクションの要約
================================================================================
インストール  54 パッケージ (+58 個の依存関係のパッケージ)

総ダウンロード容量: 129 M
インストール容量: 431 M
Is this ok [y/d/N]: y

パッケージ群をインストール後、ログアウトしてデスクトップを MATE に変更してログインし直しました。


2014-11-09

ブログサービス『Blogger』(blogspot)にアクセス障害発生中! それでもブログを見る方法を解説 - Buzz+ バズプラス

Blogger (blogspot) が、どうやらダウンしたらしいと確信したのは、自分のブログだけでなく、他の知っている Blogger のサイトへのアクセスを何度も試してからでした。それぐらい、このサイトのネットワーク障害を経験したことがありません。

もともと、www.blogger.com で登録していたのに、ふと www.blogger.jp に転送されていることに気付いたのは、使い始めて何年も経ってからでした。そういう訳なのか何なのかは判りませんが、Blogger がカバーしている他のドメインでも閲覧することができるようですので、障害が日本だけで発生しているのであれば、下記のようにしてブログを閲覧することもも可能です。

そもそも Google のサービスにおいて、障害状況を知りたい時はどうすればよいのでしょうか。Google 検索で探してみた結果、以下のサイトを見つけました。

Blogger だけでなく、Google の全てのサービスの状況が確認できます。

RSS Feed を利用すると以下のような情報をゲットできます。


Date: Sat, 08 Nov 2014 12:17:00 GMT
From: Apps Status Dashboard
Subject: Blogger

 November 8, 2014 4:17:00 AM PST

Blogger service has already been restored for some users, and we expect a resolution for all users within the next 12 hours. Please note this time frame is an estimate and may change.

 November 8, 2014 1:02:00 AM PST

We're investigating reports of an issue with Blogger. We will provide more information shortly.

We have received reports users in Japan are not being able to access blogspot. We are investigating the issue.


障害が滅多に無いからこそ、こういう情報が必要なのかもしれません。

 

2014-11-08

【備忘録】入力ストリームにおける文字セットの指定 (Java)

Java でプログラミングをする時、私の場合 Linux 上で Eclipse か NetBeans IDE を使っています。作ったプログラムを Windows 上で使用する場合もあるのですが、時々、読み込んだファイルの文字が、いわゆる「文字化け」を起こしていて慌てることがあります。

例えば、テキストファイル filename.txt を読みこむ場合、入力ストリームを以下のようにします。

BufferedReader br = new BufferedReader(new FileReader("filename.txt"))

(日本語版の)Windows 上で読み込むテキストファイルの文字セットが Shift_JIS (cp932) であれば問題は起こりませんが、例えば UTF-8 だったりすると「文字化け」が発生します。入力ストリームの文字セットに UTF-8 を指定する場合は、次のようにします。

FileInputStream in = new FileInputStream("filename.txt");
InputStreamReader sr = new InputStreamReader(in, "UTF-8");
BufferedReader br = new BufferedReader(sr);

Linux (CentOS 7) 上では文字セットを UTF-8 にしているので、Windows 上で同じ形式のファイルを読み込む場合、うっかり配慮を忘れてしまったりするので、備忘録として書き留めておきました。

参考サイト

 

2014-11-06

Eclipse で Commons Math を試す (2)

Cmmons Math を利用した、前回の記事で紹介したサンプルをベースに、データや重回帰分析でフィッティングした多項式をプロットできるようにしました。使用したライブラリは Nebula Visualization Widgets の XY Graph です。

GUI の部分を無理矢理くっつけた、やっつけ感が満載のサンプルではありますが、期待どおりのプロットを表示してくれます。読み込む 100,000 組の xy が対になっているデータは、前回と同様、fdata01.zip (fdata01.txt) を使います。

List: MulRegGuiTest.java
package commonsmathtest;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import org.apache.commons.math3.stat.regression.OLSMultipleLinearRegression;
import org.eclipse.draw2d.LightweightSystem;
import org.eclipse.nebula.visualization.xygraph.dataprovider.CircularBufferDataProvider;
import org.eclipse.nebula.visualization.xygraph.figures.Trace;
import org.eclipse.nebula.visualization.xygraph.figures.Trace.TraceType;
import org.eclipse.nebula.visualization.xygraph.figures.XYGraph;
import org.eclipse.nebula.visualization.xygraph.figures.Trace.PointStyle;
import org.eclipse.nebula.visualization.xygraph.util.XYGraphMediaFactory;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class MulRegGuiTest {
    Shell shell;

    private File file;
    private int m = 100000, n = 5;
    private double[][] X;
    private double[] y;
    private double[] c;
    
    public MulRegGuiTest(Display display, File file) {
        this.file = file;

        // multiple regression analysis
        calcMulReg();

        // GUI
        shell = new Shell(display);
        shell.setText("MulRegGuiTest");
        shell.setSize(800, 400);

        shell.setLayout(new FillLayout());

        initUI();

        shell.setLocation(100, 100);
        shell.open();

        // event loop
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }

    private void calcMulReg() {
        X = new double[m][n];
        y = new double[m];

        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
            String str;
            int i = 0;

            while ((str = br.readLine()) != null) {
                double xValue = Double.parseDouble(str.substring(0, 6));
                y[i] = Double.parseDouble(str.substring(6, 20));
                for (int j = 0; j < n; j++) {
                    X[i][j] = Math.pow(xValue, (double) j);
                }
                i++;
            }
            br.close();
        } catch (FileNotFoundException e) {
            System.out.println(e);
        } catch (IOException e) {
            System.out.println(e);
        }

        OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
        regression.setNoIntercept(true);
        regression.newSampleData(y, X);

        c = regression.estimateRegressionParameters();
        // double[] residuals = regression.estimateResiduals();
        // double[][] parametersVariance = regression.estimateRegressionParametersVariance();
        // double regressandVariance = regression.estimateRegressandVariance();
        double rSquared = regression.calculateRSquared();
        // double sigma = regression.estimateRegressionStandardError();

        // Result
        System.out.println("# of DATA\t" + m);
        System.out.println("Coefficients");
        for (int j = 0; j < n; j++) {
            System.out.println("C(" + j + ") =  " + c[j]);
        }
        System.out.println("R-squared = " + rSquared);
    }

    private void initUI() {
        // use LightweightSystem to create the bridge between SWT and draw2D
        LightweightSystem lws = new LightweightSystem(shell);

        // create a new XY Graph.
        XYGraph xyGraph = new XYGraph();
        xyGraph.setTitle("Mulreg Example");

        xyGraph.primaryXAxis.setTitle("x axis");
        xyGraph.primaryYAxis.setTitle("y axis");

        xyGraph.primaryXAxis.setShowMajorGrid(true);
        xyGraph.primaryYAxis.setShowMajorGrid(true);

        // set it as the content of LightwightSystem
        lws.setContents(xyGraph);

        xyGraph.primaryXAxis.setAutoScale(true);
        xyGraph.primaryYAxis.setAutoScale(true);

        // create a trace data provider, which will provide the data to the trace.
        CircularBufferDataProvider traceDataProvider1 = new CircularBufferDataProvider(false);
        CircularBufferDataProvider traceDataProvider2 = new CircularBufferDataProvider(false);
        traceDataProvider1.setBufferSize(m);
        traceDataProvider2.setBufferSize(m);

        for (int i = 0; i < m; i++) {
            traceDataProvider1.setCurrentXData(X[i][1]);
            traceDataProvider1.setCurrentYData(y[i]);

            traceDataProvider2.setCurrentXData(X[i][1]);
            traceDataProvider2.setCurrentYData(linearCoupling(i));
        }

        // create the trace for raw data
        Trace trace1 = new Trace("data", xyGraph.primaryXAxis, xyGraph.primaryYAxis, traceDataProvider1);

        // set trace property for raw data
        trace1.setTraceType(TraceType.POINT);
        trace1.setPointStyle(PointStyle.CIRCLE);
        trace1.setPointSize(1);

        // add the trace to xyGraph
        xyGraph.addTrace(trace1);

        // create the trace for regression
        Trace trace2 = new Trace("fitting", xyGraph.primaryXAxis, xyGraph.primaryYAxis, traceDataProvider2);

        // set trace property for regression
        trace2.setPointStyle(PointStyle.NONE);
        trace2.setTraceColor(XYGraphMediaFactory.getInstance().getColor(XYGraphMediaFactory.COLOR_RED));;
        trace2.setLineWidth(2);

        // add the trace to xyGraph
        xyGraph.addTrace(trace2);
    }

    private double linearCoupling(int i) {
        double y = 0;
        for (int j = 0; j < n; j++) {
            y = y + c[j] * X[i][j];
        }
        return y;
    }

    public static void main(String[] args) {
        File readFile = new File("/home/bitwalk/ドキュメント/fdata01.txt");

        Display display = new Display();
        new MulRegGuiTest(display, readFile);
        display.dispose();
    }
}

実行例

重回帰分析をするために用意したサンプルは人為的に作ったものですので、プロットしても面白味がありません。しかし、100,000 程度のデータ数でも簡単にプロットできることが確認できたので、もっと応用範囲を広げてみようと思います。

 

2014-11-04

Eclipse で Commons Math を試す (1)

Cmmons Math a. は 、Apache のトッププロジェクトである Apache Commons にある Apache Commons#Commons Proper に属する、数学と統計学の軽量コンポーネントです b.Apache License Version 2.0 に従って配布されています。いろいろなコンポーネントを利用できますが、ここでは、多項式係数を最小二乗法で求めてみます。

なお、最初に扱うサンプルは、以前 NetBeans IDE で試したもの c. と同じものを Eclipse 上でも試し、その上で SWT と組み合わせて視覚化したいと考えています。ただ、大量のデータをそのままプロットできるかどうか…。まずは、NetBeans IDE で試した時のおさらいをします。当時使用したデータファイルのリンク先に不具合があるので、今回、新たにデータの格納先を 4shared に確保しました。

使用環境

  • OS : CentOS 7 (Linux)
  • JDK : java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64
  • IDE : Eclipse Luna Service Release 1 (4.4.1)

サンプル

100,000 組の xy が対になっているデータ fdata01.zip (fdata01.txt) を使って、c.、次の 4 次の多項式でフィッティングするために、その係数 c0,  c1,  c2,  c3,  c4 を最小二乗法で求めます。

y = c0 + c1x + c2x2 + c3x3 + c4x4

以下が Commons Math を利用したサンプルプログラムです。なお、使用した Commons Math は Version 3.3 です。なお、Java 1.5 以上が必要です。

package commonsmathtest;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.apache.commons.math3.stat.regression.OLSMultipleLinearRegression;

public class CommonsMathTest {

    public static void main(String[] args) {
        int m = 100000, n = 5;
        double X[][], y[];
        X = new double[m][n];
        y = new double[m];

        File file = new File("/home/bitwalk/ドキュメント/fdata01.txt");

        try (BufferedReader br = new BufferedReader(new FileReader(file))) {
            String str;
            int i = 0;
            while ((str = br.readLine()) != null) {
                double xValue = Double.parseDouble(str.substring(0, 6));
                y[i] = Double.parseDouble(str.substring(6, 20));
                for (int j = 0; j < n; j++) {
                    X[i][j] = Math.pow(xValue, (double) j);
                }
                i++;
            }
            br.close();
        } catch (FileNotFoundException e) {
            System.out.println(e);
        } catch (IOException e) {
            System.out.println(e);
        }

        OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
        regression.setNoIntercept(true);
        regression.newSampleData(y, X);

        double[] c = regression.estimateRegressionParameters();
//        double[] residuals = regression.estimateResiduals();
//        double[][] parametersVariance = regression.estimateRegressionParametersVariance();
//        double regressandVariance = regression.estimateRegressandVariance();
        double rSquared = regression.calculateRSquared();
//        double sigma = regression.estimateRegressionStandardError();

        // Result
        System.out.println("# of DATA\t" + m);
        System.out.println("Coefficients");
        for (int j = 0; j < n; j++) {
            System.out.println("C(" + j + ") =  " + c[j]);
        }
        System.out.println("R-squared = " + rSquared);
    }
}

実行例を以下に示しました。ここでは R2 (決定係数)も計算しています。

run:
# of DATA 100000
Coefficients
C(0) =  37.76585776133077
C(1) =  0.049683847037500665
C(2) =  6.988983959854228E-6
C(3) =  -4.217424916004811E-7
C(4) =  2.686562674530102E-10
R-squared = 0.7654053656031088

小数点以下が全て前回と全く同じになっているというわけではなく、ほんの僅かな違いが確認できますが、無視して良いでしょう。さて、これをプロットできるか、次回試してみます。

参考サイト

  1. Commons Math: The Apache Commons Mathematics Library
  2. Apache Commons Math
  3. bitWalk's: NetBeans IDE で Commons Math を試す
  4. The Commons Math User Guide - Statistics 1.5 Multiple linear regression
  5. bitWalk's workshop - CommonsMath

 

2014-11-03

Appleの新言語「Swift」をオープンソースで実装するプロジェクトがスタート

Swift は、従来の Objective-C に代わる言語として、iOS や OS X 向けのアプリケーション開発で使用できる、2014 年 6 月に Apple から発表された新しいプログラミング言語です。

Swift は Apple 以外のプラットフォームには対応していないため、Swift 言語のオープンな実装を作成するプロジェクトとして Phoenix が立ち上げられました。開発は Cocoa のフリー実装と言える GNUStep の開発者である Greg Casamento 氏が率いるそうです。

今後、大きなプロジェクトになるかもしれない、一つのオープンソースプロジェクトの誕生を暖く見守りたいです。

  1. Appleの新言語「Swift」をオープンソースで実装するプロジェクトがスタート、GNUStepの開発者も参加 | SourceForge.JP Magazine
  2. Ind.ie Projects / phoenix | GitLab
  3. Ind.ie — Designing Hope
  4. Swift - Overview - Apple Developer