2016/11/30

XDMでグラフィカル・ログイン

LightDMを使うことを一時断念しXDMでログインできるように設定しておきます。この辺りの設定は1年ほど前にSONY vaioにNetBSD/i386を入れた時の実績があるので、あまり心配はしていませんでした。

"The NetBSD Guide"の"9.10. Graphical login with xdm"に従って標準的な設定をおこないます。
  1. /etc/rc.confに「xdm=YES」を追加します。
  2. ユーザのホームディレクトリに~/.xsessionを用意します。
これでxdmでグラフィカル・ログインできるようになりました。ところが一般ユーザでログインするとMATEが起動せずxdmに戻ってしまいます。ホームディレクトリにある~/.xsession~/.xinitrcへのシンボリックリンクになっていて、startxを使ったときにはMATEが起動できていたのです。

Webで調べてみたところ最後の「exec mate-session」を「exec ck-launch-session mate-session」にしなければならないようです。 この変更をおこなうとxdmでログインして無事にMATEが起動するようになりました。今のところ~/.xsessionには最低限の設定しかおこなっていません。
#!/bin/sh

# setting locale
export LC_ALL=ja_JP.UTF-8
export LANGUAGE=ja_JP.UTF-8
export LANG=ja_JP.UTF-8

# setting Input Method
#export XMODIFIERS="@im=SCIM"

# execute scim as daemon
#scim -d

# So, let's go to MATE
exec ck-launch-session mate-session
# $Id:$

2016/11/28

小技でCDの音質は改善されるもの?

最近LPレコードが復活しつつあるようです。CDが登場したのは30年以上前ですが、LPは消えたかに見えましたが愛好家の世界では生き続けていたそうです。CDは、登場した頃から言われていたことですが、LPに比べて音が薄っぺらいと評価されています。CDが登場した時代の技術水準を考えればやむを得ないところですし、人間の可聴音域や、デジタル量子化を踏まえれば、仕方のないことです。

LPは隅から隅までアナログの世界ですので、音質を向上させるためには、アナログを意識したテクニックを駆使しなければなりません。レコードの回転数の変動が音質悪化に直結しますから、回転が安定するようにターンテーブルを重くするとか、振動を避けるように設置するとか、気を使います。電気信号もアナログ技術の世界なので、ノイズが入らないようにして、アンプの周波数特性にも気を配らなければなりません。

愛好家はそこが楽しいのでしょうが、誰もがオーディオ機器にお金や時間を注ぎ込めるわけではありません。CDはLPに比べると、とても扱いが楽でした。音質がLPに比べて悪いと言われようが、圧倒的な使い勝手の良さを有していました。

それでも「出来る範囲」(←ここが重要です) で音質を改善したいものです。ちょっとした小技を駆使すると、音質が改善されると「主観的」に主張する意見がみられた記憶があります。例えば、「CDを冷やす(?)と良い」とか、「CDの周囲に緑色を塗っておけばよい」など、都市伝説のような小技を語るひとがいたように思います。

これらの小技でCDの音質が改善される理由としては、次のように理由づけていたような記憶があります。「これらの対処をすることで、CDに記録されたビット列の読み取り精度が向上するから、音質も良くなるのだ」というのです。 思わず「なるほど!」と思ってしまいそうな理屈ですが、そう簡単には納得できません。

 ひとまずCDに対処することで読み取り精度が向上することを認めるとしましょう(本当は、そこも真偽を確かめたいところではあるのですが)。CDはLPとは違うのでデジタル処理が最初に行われます。LPならレコード盤から音を拾うところが改善されれば最終的な音質もよくなるでしょう。しかしCDの場合は、読み取られたビット列が直ちにD/A変換されるわけでもないでしょう。エラー訂正やデジタル信号処理が行われたあとでD/A変換されるはずです。特にエラー訂正のことを考えれば、CDからの読み取り精度がちょっとくらい良かろうが悪かろうが、出力される信号には影響がないと思います。

電子回路の世界にとっては、デジタル信号と言っても結局はアナログ波形でしかないことは承知しています。またD/A変換が済んだ後は、LP時代と同じくスピーカーまではアナログ回路の世界であることも間違いありません。

愛好者的な立場では、際限なくお金を費やして、自分のオーディオ環境を作り上げていくことが面白くてしかたないのでしょう。それを否定する意図はありません。ただ主観的な評価ではなく客観的な判断が欲しいこと、そして費やせるお金には限りがあることを踏まえた意見が欲しいことを望んでいる気持ちがあるのです。


LightDM再考

Windows Vistaが入っているdynabook SS SX/15AのOSをNetBSD/i386に入れ換えようとしています。昔ならXにはtwmで良かったのでしょうが、さすがに地味すぎるので、MATEを使うつもりです。日本語環境は出来ていませんが、MATEが使えるところまでは確認しています。

この一ヶ月ほどはLightDMを使えるようにしようとしてきました。NetBSDのpkgsrcにはLightDMが取り込まれていません。WIPにはありますが、バージョンが古いし、いつになったら正式にpkgsrcに入ることになるのかわかりません。そこで自前でコンパイルし、これは無事に終わりました。しかし構成ファイルにどのような設定をしたらよいのか、よくわかりません。LightDMというのは、単純化して表現するとしたら(グラフィカルな)ログイン画面に過ぎないと思うのですが、それにしては設定項目が多すぎます。また「Seat」という概念も、なんのことやら見当もつきません。

Webで資料を探したり、LightDMのソースを読んでみたり、いろいろと試行錯誤すれば、結局はなんとかなるとは思います。問題は、それほど精力を傾けるべき対象なのか、ということです。しかも、今それをしなければならないのか、ということです。

LightDMは今風でカッコよいのですが、僕としては単なるログイン画面として使うだけになるでしょう。それならばxdmもあります。またコンソールでログインしてstartxするという手もあります。要するにLightDMが無くても代替策はいくらでもあるのです。

来春Windows Vistaのサポートが終了する前に、NetBSD/i386で環境を作り上げてしまわなくてはなりません。Windows Vistaで出来ていたことが全てNetBSD/i386+MATEでも出来てくれれば万々歳ですが、それを確認するには、まだまだ環境構築を進めていかなければなりません。LightDMに引っ掛かっている余裕はないのです。

とりあえず今はLightDMを脇において、NetBSD/i386の環境構築を先に進めようと思います。いずれ余裕が出来たら、LightDMを使ってみることにしましょう。

2016/11/26

大学の「グローバル化」と「出島オプション」

東京大学出版会の広報紙『UP』の2016年11月号に「留学生支援の場から見た日本の大学の国際化」(大西晶子)という文章が掲載されていました。文中では『中央公論』(第129巻第7号、2015年、pp.178-195)に掲載された「外国人教員から見た日本の大学の奇妙なグローバル化」(エドワード・ヴィッカーズ、ジェルミー・ラプリー)が参照されていました。どちらも興味深く読みました。

特に後者が言及していた日本の大学における国際化の将来は考えさせられました。3つの可能性があり、1)大成功、2)大失敗、3)出島オプションとのことです。そして最も可能性が高いのが3番目の「出島オプション」と考えているようです。

前者によると「出島」で表現することは、これまでの議論の中でもみられたそうです。江戸時代に長崎の出島にオランダ人を閉じ込めたことに基づく比喩表現ですが、わかりやすい例え話だと思いました。

後者で「出島」と表現しているのは、大学において外国出身者が阻害されている状況をあらわしているわけですが、これは大学にかぎらず企業でも同様の状況はあり得るし、同じ日本人でありながら正社員と非正規雇用者との関係においても同様の状況にあるのではないかと思います。それが顕在化していないかもしれませんが。

延々と「更新の確認」を続けるWindows VistaのWindows Update

dynabook SS SX/15AのWindows VistaのWindows Updateは延々と「更新の確認」を続けています。11月20日(日)の午後から「確認」し続けていますから、明日で一週間になります。何を確認しているのか不明ですが、プログラムのバグによる無限ループにしか見えません。

今年の春頃から遅くなり始めて、夏頃には「確認」に数日かかるようになり、秋が終わる今は「確認」が終わらなくなりました。今すぐWindows Updateを打ち切っても構わないとは思いますが、せっかくなので明日まではこのままにしておこうと思います。おそらく明日になっても同じ状況でしょう。

2016/11/22

Lisa Batiashvili演奏によるチャイコフスキー「ヴァイオリン協奏曲ニ長調作品35」

チャイコフスキー作曲「ヴァイオリン協奏曲ニ長調作品35」を聴いています。ソリストの違いにより曲の雰囲気が変わってくるところが興味深いので、CDをいろいろと買ってみて聴き比べています。

ショップの店頭で「チャイコフスキー&シベリウス:ヴァイオリン協奏曲[直輸入盤] 【CD】」を見つけました。発売日が2016年10月28日ということですから、出たばかりですね。

ソリストはLisa Batiashviliで、指揮者がDaniel Barenboimです。これまで買ったCDでは、タイトルやケースに出ているのはソリスト自身だけでした。ところがこのCDではダニエル・バレンボイムが登場しているので、それでいいのかと思わなくもありません。

演奏は、これまでに聴いてきたものとはアレンジが違い、独特です。これがソリストの発想なのか、指揮者の意向なのかわかりません。もしかするとお互いに話し合ったのかもしれません。噂に聞くところによると、ソリストと指揮者の主張が最後まで折り合わず「喧嘩別れ状態」で演奏会に臨んだ事例もあるらしいですから、曲に対する思い入れはかなりあるのでしょう。

独特のアレンジではありますが、そこが楽しいところでもあります。いろいろなソリストによる演奏を聴き比べると、それぞれの個性が際立って、また別の演奏も聴いてみたいと思うようになるのです。

2016/11/21

大阪堂島のアリラン亭「ユッケジャン鍋焼きうどん」の食べ方

大阪堂島にアリラン亭という韓国料理のお店があります。お店の関係者は韓国出身者が多いようです。お昼のランチメニューには「ユッケジャン鍋焼きうどん 」(950円)というものがあり、僕は必ずこれを注文します。かなり辛い料理で、以前は食べ終わると頭の中から汗が噴き出しているという感じでしたが、最近はそうでもないような気がします。日本人向けに味をマイルドに変えたのか、僕の味覚が辛さに慣れたのか、答えはわかりません。

韓国では食事に金属製の箸とスプーンを使うそうです。このお店でも韓国式のスプーンはありますが、お箸は日本風の割り箸です。

また、このメニューにはご飯がついてきますが、日本式のお茶碗ではなく、韓国で使う金属製の蓋つきの容器で出てきます。

さて問題はここからです。この「ユッケジャン鍋焼きうどん」をどのように食べたらよいのでしょうか。もちろん食べたいように食べれば良いというのは、その通りです。周りのお客さん(当然ほとんどが日本人)の様子を観察していると、日本の食習慣に従い、ご飯のお茶碗を持つような感じで、ご飯とスープを交互に口に運んで食べているようです。

これに対して別の方法があるのではないか、と思って僕は食べています。そしてそれこそが韓国における普通の食べ方ではないのか、とも思っています。もう何年も前にピースボートに乗船したとき、船内で親しくしていた韓国の方に教えてもらった記憶があります。その後ソウルに観光旅行で行ってきたときも同じような食べ方をしていたように思います。

実際にどうしているかというと、注文した料理が運ばれてきたら直ぐに、ご飯を全てユッケジャンの中に入れてしまい、よく混ぜて食べるという方法です。食べるときにはスプーンを主に使うので、お箸の出番はあまりありません。

こうい食べ方を日本では品がないとされていて、実行に移すのは勇気がいります。例えば吉野家で牛丼と味噌汁を注文し、丼に味噌汁を入れて混ぜて食べたら、それは無いだろうと僕も思います。しかし今から食べようとしているのは韓国料理なのです。韓国料理には韓国風の食べ方があるはずです。

この食べ方は間違っていないだろうと思っていますが、若干の後ろめたさも同時に感じていました。すると、この窮状を救ってくれる救世主があらわれたのです。大阪の千里にある国立民族学博物館で『韓国食文化読本』というのを見つけたので買ってみました。同書の19ページには「クッパプ(국밥)・・・汁(湯)に入れて食べる」という項目があり、上述した食べ方は韓国ではおかしくないことが書かれていました。

これで安心して今後も「ユッケジャン鍋焼きうどん」を食べることができそうです。

2016/11/15

『戦争と平和』

文豪トルストイによる名作『戦争と平和』は昔から気になっていました。読んでみようと思いながらも躊躇していた理由は、かなりの長編なので読むには覚悟を要しそうだというのもありますが、おおまかなストーリーの流れを知らないので、先の見えない物語を読み続けられるか心配だったのです。

有り難いことにNHK BSプレミアムで2016年9月1日に映画「戦争と平和」が放映されました。この作品は1956年に制作され、オードリー・ヘップバーンがナターシャを演じており、3時間を超える大作です。どんな映画であっても描かれているのは監督のイメージする原作のエッセンスであり、原作そのものを余すところなく語られているとは限りません。そうだとしても、トルストイの『戦争と平和』の全体像が見えてきました。この映画は2017年1月1日の午前中にも放送されるようです。

さらにNHK BSプレミアムでは2016年9月25日から全8回でBBC制作ドラマ「戦争と平和」が放送されました。映画を見て予習したおかげでストーリーの展開が分かっていたので、安心してドラマを楽しめました。各回45分で全8回なので6時間あまりの作品です。1956年の映画の2倍くらいの時間がありますが、それでもストーリー展開が早く、原作ではもっと長々と描写されているんだろうと思いました。

『戦争と平和』では、大雑把にいうと、ナポレオンがモスクワに攻め込み「冬将軍」に負けた時代のなかで、ロシア貴族の家系に属するピエール、アンドレイ、ナターシャをめぐる人間模様が表現されています。『戦争と平和』について登場人物が多すぎるので読むのが大変だということをよく言われます。作品に登場させる人物を絞り込むか増やすのかは作家の裁量です。ナポレオンのロシア遠征という大きな問題を扱っていれば、登場人物が多いのはやむを得ないでしょう。

原作を読んでみる気になったので調べてみると新潮文庫岩波文庫から出ているようです。翻訳作品でありがちですが、訳が良いとか変だとかamazonなどにコメントがついています。青空文庫にあると良かったところですが、まだ作業されていないようでした。

ナポレオンのロシア遠征はロシア人の歴史にとって大事件であり、チャイコフスキーの「序曲1812年」も有名です。この作品は、ナポレオンを追い払ったロシアが歓喜に沸き、祝砲を打ち、教会の鐘が鳴り続けるなかで演奏が終わります。普通のコンサートでは大砲も鐘も楽器を使って摸倣するだけですが、極めて稀に本物の大砲を打ったり、本当に教会の鐘を鳴らす演奏があるそうなので、さぞかし迫力があることでしょう。いちど体験してみたいものです。

2016/11/13

スター・トーク2

National Geographic Channelで2016年11月5日から「スター・トーク2」の放送が始まりました。前回とは番組進行が微妙なところで違っていますが、大筋には変更ありません。番組進行役はNeil deGrasse Tysonです。彼は事前にゲストとの対談を済ませており、その様子をビデオで紹介し、それを発端にしてスタジオに呼んだゲストとの機知に富んだ対話を繰り広げます。

スタジオのゲストは2人で、ひとりはコメディアンで男性の場合も女性の場合もあり、限られたメンバが交替で出演しているようです。もうひとりのゲストは進行役のニールの同僚などが多く、たいていは博士号を持っています。

番組は公開収録スタイルを採用しており、途中で休憩を挟みながら番組を撮影しているようです。番組自身はCMを含めて1時間弱ですが、実際の収録が何時間なのかは不明です。

バラエティー番組のようなスタイルですが、話題は低俗ではなく、考えさせられる内容です。かと言って謹直な堅い内容ではなく、これがアメリカ人気質なのか、駄洒落が飛び交いながら番組が進むので、楽しく視られます。

Neil deGrasse Tysonは、子供の頃にCarl Edward Saganと会ったことがあるという逸話を持っています。カール・セーガンというと1980年に放映された「コスモス」で有名です。2014年には「コスモス:時空と宇宙」をNeil deGrasse Tysonが制作しています。

Star Talk Radio Show with Neil Degrasse Tyson」 というのが公式Webと思います。番組収録はニューヨークのAmerican Museum of Natural Historyでおこなっているようですし、Hayden Planetarium Programsとして「StarTalk: Everything You Ever Need to Know About Space Travel, Sci-Fi, the Human Race, the Universe, and Beyond」(September 27, 2016)という情報も掲載されています。いつかは番組の収録に参加して生の雰囲気を味わいたいものです。

Windows VistaのWindows Updateが遅いのは一体何を処理しているのか?

今年の春先よりdynabook SS SX/15AのWindows VistaでWindows Updateを行うと *異常に* 時間がかかるようになりした。それでも梅雨前くらいまでは1日くらい(それでも十分長いですが)で終わっていたものが、秋頃からは3日くらいかかるようになりました。延々と「更新プログラムを確認しています」のメッセージが出たまま処理が進みません。

Webで検索すると同じような状況に遭遇している事例は多いのですが、何が問題なのかはっきりしないようですし、確実に解決できる方法も見つかっていないようです。

TOSHIBAのオフィシャルサイトに情報番号:013596として「2016年11月以降に「Windows Update」で“更新プログラムを確認しています”メッセージのまま数時間画面が切り替わらない<Windows Vista(R)>」(更新日:2016年11月10日) という対処方法が掲示されました。対応機種にはdynabook SS SX/15Aも含まれています。さっそく指示されたとおりに対処してみましたが、状況は改善されていないように思います。お馴染みの「更新プログラムを確認しています」のメッセージが出たまま、もう数時間が過ぎています。おそらく数日間このメッセージを見続けるような「嫌な」予感がしています。

Windows Vistaは来春にはサポート期限を迎える予定ですし、世間的にはVistaは失敗作(僕はそういう印象を持っていないのですが) として扱われています。Windows Updateの更新が遅くても、積極的に修正しようとする状況にはないのかもしれません。

Vistaの利用者側としては、もう見切りをつけて他のOSに移行しているのでしょう。僕もNetBSD/i386に移行しようと環境を構築中です。しかしVistaを提供しているMicrosoftは、来春までサポートすると宣言しているので、投げやりな対応とならず最後まで誠実なサポートを続けてもらいたいものです。仮にVistaのユーザがいなくなったとしても、Microsoftがサポートを投げ出す理由にはならないはずです。

2016/11/11

LightDMとLightDM GTK+ GreeterにGNU Stowを適用してみる

pkgsrcを利用せずにLightDMとLightDM GTK+ Greeterをビルドするので、インストール先は/usr/localになります。何も対処せずにインストールしても良いところですが、今後の管理を考えてGNU Stowを利用してみることにしました。stow自体はpkgsrcにあったので、既にインストールしてあります。

stowを使うために気をつける点は次のとおりです。
  1. 管理用のディレクトリとして/usr/local/stowを作っておきます。 別のディレクトリでも構いませんが、いずれにしても指定したディレクトリをconfigureprefixオプションで指定することになります。
  2. configureでは必ずprefixオプションを「--prefix=/usr/local/stow/パッケージ名」のように指定しなければなりません。
まずstow対応にしてLightDMをビルドします。
# cd lightdm-1.20.0
# env CPPFLAGS='-I/usr/pkg/include -I/usr/X11R7/include' ./configure --prefix=/usr/local/stow/lightdm-1.20.0
# end LD_LIBRARY_PATH='/usr/pkg/lib:/usr/X11R7/lib:/usr/lib' gmake
# gmake install
次に同じくstow対応でLightDM GTK+ Greeterをビルドします。
# cd lightdm-gtk-greeter-2.0.2
# env PKG_CONFIG_PATH='/usr/local/lib/pkgconfig' ./configure --prefix=/usr/local/stow/lightdm-gtk-greeter-2.0.2
# gmake
# gmake install
さていよいよstowを使ってみます。まず手始めにLightDMに適用してみました。
# cd /usr/local/stow
# stow lightdm-1.20.0
# ll ..
total 2
lrwxr-xr-x  1 root  wheel   23 Nov 11 10:34 bin -> stow/lightdm-1.20.0/bin
lrwxr-xr-x  1 root  wheel   23 Nov 11 10:34 etc -> stow/lightdm-1.20.0/etc
lrwxr-xr-x  1 root  wheel   27 Nov 11 10:34 include -> stow/lightdm-1.20.0/include
lrwxr-xr-x  1 root  wheel   23 Nov 11 10:34 lib -> stow/lightdm-1.20.0/lib
lrwxr-xr-x  1 root  wheel   27 Nov 11 10:34 libexec -> stow/lightdm-1.20.0/libexec
lrwxr-xr-x  1 root  wheel   24 Nov 11 10:34 sbin -> stow/lightdm-1.20.0/sbin
lrwxr-xr-x  1 root  wheel   25 Nov 11 10:34 share -> stow/lightdm-1.20.0/share
drwxr-xr-x  3 root  wheel  512 Nov 11 10:31 stow
シンボリックリンクが張られることにより/usr/local/binなどにファイルがあるかのように見せかけることが出来ます。それは良いのですがbinディレクトリ自身がシンボリックリンクになってしまっています。このままでは他のパッケージに含まれるファイルを置けません。

どうしてものかと思いましたが、事前にパッケージに含まれるディレクトリを作っておくことにしました。これならシンボリックリンクが張られる対象はファイルだけになるので、複数のパッケージがあっても大丈夫でしょう。

stowなんかを使うのを止めてしまうという選択肢もあると思います。GNU Stowというものが期待していたよりも相当単純な機能しか提供していないツールでしたが、同様の仕組みを自前で作ることを考えれば、それなりに利用できるでしょう。stowで管理することにしても邪魔になるわけでもありませんし、もしかすると将来的には良かったと思える時がくるかもしれません。

結局次のようにして対処しました。
# cd /usr/local
# (cd stow/lightdm-1.20.0; find . -type d) | xargs mkdir -p
# (cd stow; stow lightdm-1.20.0)
# (cd stow/lightdm-gtk-greeter-2.0.2; find . -type d) | xargs mkdir -p
# (cd stow; stow lightdm-gtk-greeter-2.0.2)
GNU Stowには類似ツールがないのでしょうか。例えばGNU screenとtmuxのように、同じような機能を持つツールが複数あるのなら、使い比べてみたいものです。

2016/11/10

LightDM GTK+ Greeter 2.0.2のビルドに必要なexo-csource

LightDM 1.20.0のビルドは成功していますが、使うためにはグリーターというものが必要になるようです。Wikipediaではいろいろなグリーターが紹介されていますが、LightDM GTK+ Greeter 2.0.2を使うことにします。

configureを実行したらbin/exo-csourceが無いと言われてしまいました。Webで調べてみるとpkgsrc/x11/xfce4-exoに含まれているようです。そこでpkgsrcからx11/xfce4-exoをビルドしたのですが、依存関係にあるパッケージも入ってきてしまいました。

pkgsrcを利用する利点のひとつが「ビルドするために必要なパッケージも同時に入れてくれる」ことなので、依存関係にあるパッケージが入るのは構いません。しかし「こんなパッケージが必要なのか?」と思うものが入ることもあるので、もうちょっと何とかならないかとは感じています。今回入ったのは以下のパッケージです。ISBN云々というパッケージが入ってくるのですが、こんなもの要るのでしょうか。
  1. p5-Business-ISBN-Data-20140910.003nb1 Data for the p5-Business-ISBN package
  2. xauth-1.0.9         X authentication utility
  3. p5-Business-ISBN-3.003 Perl5 module to work with International Standard Book Numbers (ISBNs)
  4. p5-URI-1.71nb1      Perl5 Uniform Resource Identifiers class (URI, RFC 2396)
  5. libxfce4util-4.12.1nb2 Xfce basic library
  6. xfce4-conf-4.12.0nb4 Xfce client-server configuration storage and query system
  7. libxfce4ui-4.13.0nb1 Xfce widget library
  8. xfce4-exo-0.10.7nb2 Xfce extension library
余談ですが、FreeBSDにもportsというpkgsrcに類似した仕組みがあります。こちらもpkgsrcと同じように「依存関係の謎」によりインストールされてしまうパッケージがあります。僕が特に気になっているのは「パッケージが必要とするgccやLLVM/Clangのバージョンが決め打ちになっていて、いろいろなパッケージを入れていくと、次第に複数のバージョンのコンパイラーが入ってしまう」ことです。

exo-csourceがあればconfigureが通るかと思いきや「configure: error: Package requirements (liblightdm-gobject-1 >= 1.3.5) were not met:」というエラーが出てしまいました。エラーの補足説明で「Perhaps you should add the directory containing `liblightdm-gobject-1.pc' to the PKG_CONFIG_PATH environment variable」とあるので、環境変数で指定しておけば大丈夫のようです。

最終的に以下のコマンドにより/usr/localへのインストールが出来ました。
# cd lightdm-gtk-greeter-2.0.2
# env PKG_CONFIG_PATH='/usr/local/lib/pkgconfig' ./configure
# gmake
# gmake install

2016/11/07

「報告型の課題」となるレポートを書くときの心構え

放送大学(学部でも大学院でも)では学期の途中で通信指導という名の中間レポートの提出が義務付けられています。マークシート形式の場合もありますが、せっかく学んでいるのですから記述式(字数は1,000字前後)に挑戦したいものです。

厄介なのは、どんな課題であっても何かを調べてから書き始めることになるわけですが、調べれば調べるほど深みに嵌まる気持ちに追い込まれることです。何も調べずにレポートを書くのは学問を舐めていると思いますが、そうかと言って際限なく調べればよいというものでもないと思います。何かリミッターのようなものがないと、全精力を通信指導に注ぎ込んでしまうはめになります(現実性を無視した観念論的発想としては悪くないのかもしれませんが、日常生活では他にもやることがあるのです)。

論文の書き方について語った書籍は数多くありますが、僕が気に入っているのはNHKブックス [954]として2002年に出た『論文の教室 レポートから卒論まで』(戸田山和久)です。新版が出ているそうですが、そちらは読んだことがありません。

本書の文体は独特で、四角四面な畏まった記述を期待していると、腹立たしさを感じるかもしれません。しかし僕自身はとても参考になる本だと思っています。いろいろと参考になるところが多いのですが、今回のテーマにに関わるのは以下の箇所です(110ページから引用)。
ところで、学生から提出された報告型のレポートを読んで気づくのは、キミたちが「いろいろ調べてわかったことを書くのが報告型の課題だ」と 思っているのではないかということだ。えっ。違うんですか、という声が聞こえてくる。違うだなこれが。
あまり長々と引用してもしかたないので、続きは書籍を読んでもらいたい。何の方向性もないままに資料を集めまくって、何を書いたらよいのか分からなくなり、まとまりのない報告が出来上がると語られています。

これは非常に大切な指摘だと思います。インターネットで検索をかければ、真理も法螺も含めて山のような情報にアクセスできます。なんて幸せなんだろうと思えるのは一瞬だけで、その後には苦痛が待っています。

レポートに何を書くのか何のアイディアも浮かんでいない時点では、制約を設けずに大量の情報を集めるのも悪くないでしょう。しかしインターネット上には個人が1,000年生きても読み切れないほどの情報が溢れています。闇雲に情報を収集しても行き詰まるだけです。

情報を集めてみてレポートを書く種となりそうだなと(一瞬でも) 思った事柄が出てきたら、それを育ててみるべきでしょう。もしかすると執筆途中で何度も障害に行く手を阻まれそうになるかもしれません。しかしそれを乗り越えた先に、自分のオリジナルの着想で仕上げたレポートが待っているはずです。

lightdm-1.20.0の自前pkgsrc化は後回し

LightDM 1.20.0がビルドできたので、次は自前のpkgsrc化を図るつもりでしたが、考え直して後回しにしようと思います。LightDMを使おうとしている目的は「Windows Vistaがサポート終了となるのでdynabook SS SX/15AのOSをNetBSD/i386に入れ換えること」です。現状ではMATEが動きそうだという感触をつかんだだけで、Vistaの代替環境を構築するという最終目的はまだまだ先にあります。それなのに横道にそれてpkgsrcを作ることに意識を向けてしまうのは本末転倒でしかありません。lightdmはWIPにあるので、いずれlightdm-1.20.0に追いついてくれるかもしれないし、代替環境の構築が済んで時間的な余裕ができたらpkgsrc化に着手できるかもしれません。

lightdm-1.20.0のビルドは出来たものの、気になっていることがあります。ビルド中に「ld: warning: libintl.so.1, needed by /usr/pkg/lib/libgio-2.0.so, may conflict with libintl.so.8」という警告メッセージが出ていましたが、なぜかlibintl.soが重複しているのです。
/usr/local/sbin/lightdm:
    -lgio-2.0.0 => /usr/pkg/lib/libgio-2.0.so.0
    -lgobject-2.0.0 => /usr/pkg/lib/libgobject-2.0.so.0
    -lglib-2.0.0 => /usr/pkg/lib/libglib-2.0.so.0
    -lpcre.1 => /usr/pkg/lib/libpcre.so.1
    -lgcc_s.1 => /usr/lib/libgcc_s.so.1
    -lc.12 => /usr/lib/libc.so.12
    -lintl.1 => /usr/lib/libintl.so.1
    -lpthread.1 => /usr/lib/libpthread.so.1
    -lffi.6 => /usr/pkg/lib/libffi.so.6
    -lgmodule-2.0.0 => /usr/pkg/lib/libgmodule-2.0.so.0
    -lz.1 => /usr/lib/libz.so.1
    -lXdmcp.7 => /usr/X11R7/lib/libXdmcp.so.7
    -lxcb.2 => /usr/X11R7/lib/libxcb.so.2
    -lXau.7 => /usr/X11R7/lib/libXau.so.7
    -lgcrypt.20 => /usr/pkg/lib/libgcrypt.so.20
    -lgpg-error.0 => /usr/pkg/lib/libgpg-error.so.0
    -lintl.8 => /usr/pkg/lib/libintl.so.8
    -lpam.4 => /usr/lib/libpam.so.4
/usr/libにあるlibintl.so.1の他に/usr/pkg/libにあるlibintl.so.8があり、どちらも参照されています。どうしてこのようなことになるのでしょうか。

気持ち悪いので対処しておこうと思いましたが、同様のバイナリが他にもあるのを確認しました。例えば/usr/pkg/bin/mate-sessionもそうです。警告メッセージが出るくらいですから望ましい状態ではないのでしょうが、もしかすると実害はないのかもしれません。これも将来的に解決する課題ということにして、当面は放置します。

昔々は(2000年以前頃)Makefileなどを変更してビルドしたものですが、今はautoconfautomakelibtoolなどが整備されconfigureを利用するのが一般的です。さらに(つい最近知ったのですが)stowというのがあるそうです。これはconfigureを用いて/usr/local以下などにインストールされたパッケージを管理できるそうです。lightdm-1.20.0に使ってみようと考えています。

2016/11/04

LightDM 1.20.0を暫定的にビルド&インストール成功

LightDM 1.20.0のビルドが出来るように暫定的な対処を続けた結果、最後までビルドできるようになり、/usr/local以下にインストールできました。細かいところは省きますが、次のような問題がありました。
  1. Shared object "libXi.so.7" not found」というエラーが出る。 
  2. No rule to make target 'liblightdm-gobject-1.deps', needed by 'all-am'. Stop.」というエラーが出る。
  3. libsystem.c:29:21: fatal error: xcb/xcb.h: No such file or directory」というエラーが出る。
  4. libsystem.c:138:1: error: conflicting types for 'setgroups'」というエラーが出る。
1番目の問題は昨日から出ているものです。GNU libtoolを使っているようなのですが、「libtool --config」で確認すると「shlibpath_var=LD_LIBRARY_PATH」になっていました。shlibpath_varはマニュアルでは「The environment variable that tells the dynamic linker where to find shared libraries. 」と説明されています。要するに環境変数LD_LIBRARY_PATHを設定しておかなければならないという事なのでしょうか。この環境変数でパスを指定したらうまくいったので、正式な対処方法は不明ですが、暫定的にこの方法で対応します。

2番目の問題はLightDMが提供するビルド方法の問題ではないかと思います。提供されるtarballにはこのファイルが含まれているのですが「make distclean」をしたときに消されてしまうのですが、消してはいけないファイルなのではないでしょうか。当面は「make distclean」した後にtarballから復活させることにします。

3番目の問題はconfigureに関わる問題のようです。このファイルは/usr/X11R7/includeにあるのですが検索対象になっていないようです。非標準ディレクトリと見做されているのでしょうか。configure実行時に指定する環境変数CPPFLAGSに追加しておくことにします。

4番目の問題はGNU拡張とNetBSD標準との差異が原因と思われます。LightDMはLINUX上で開発されたと思われますが、NetBSDなどとの移植性に注意を払っていない印象を受けます。移植性を確保するというのは難しい課題であることは認めます。ややもすると自分の開発環境で問題なければ、それで良しとしてしまいがちです。この問題に対処するため「__NetBSD__」が定義されている否かで条件コンパイルするようにして暫定的な対処をおこないました。

以上の問題を解決し、以下のコマンドでビルドが成功し、/usr/local以下へのインストールにも成功しました。次はWIPを参考にして自前のpkgsrcを作ってみようと思います。
# cd lightdm-1.20.0
# env CPPFLAGS='-I/usr/pkg/include -I/usr/X11R7/include' ./configure
# end LD_LIBRARY_PATH='/usr/pkg/lib:/usr/X11R7/lib:/usr/lib' gmake
# gmake install

2016/11/03

LightDM 1.20.0をビルドしてみる

まず最初にLightDM 1.20.0を単独でビルドできるか試してみます。これが上手くいってからpkgsrc化をおこなおうと思っています。ビルドするためにはconfigureしてからmake && make installするわけですが、この場合のインストール対象は/usr/local以下になります。いろいろな問題が発生して、ビルドヲ正常終了するところまで辿りつけません。

いきなり次のような問題が発生しました。
  1. configure: error: libgcrypt not found」というエラーが出ました。
  2. NetBSD標準の/usr/bin/makeではビルドできませんでした。
  3. liblightdm-gobject/language.cでコンパイルエラーになりました。
  4. ビルド中に「ld: warning: libintl.so.1, needed by /usr/pkg/lib/libgio-2.0.so, may conflict with libintl.so.8」という警告が出ました。
  5. Shared object "libXi.so.7" not found」というエラーが出てビルドが止まりました。

1番目の問題は、pkgsrcでインストールされるディレクトリが/usr/pkg以下になっていることが原因だと思います。見つからないと訴えているファイルは/usr/pkg/libにあるのですが検索対象になっていないのでしょう。以下のようにしてconfigureを実行することで対処しました。
 # env CPPFLAGS='-I/usr/pkg/include' ./configure

2番目の問題はconfigureで生成されたGNU make 4.1を利用することで対処しました。これはMATEをビルドする時にインストールされたものです。

3番目の問題はWIPにあるパッチを参考にして対処しました。setlocale()の引数にLC_IDENTIFICATIOが使われていますが、これはGNU拡張なのでNetBSDには入っていません。WIPのパッチではコンパイル対象から外しているだけですが、当面はこれで凌ぐとしても、きちんと直すにはどうすれば良いのでしょうか。2012年10月30日付のバグ報告「lightdm-1.4.0 fails to build on uclibc due to LC_IDENTIFICATION undeclared」(Bug #1073080)がありました。問題は把握しているようですが、何の進展もありません。
--- liblightdm-gobject/language.c.org    2016-11-03 13:12:38.000000000 +0900
+++ liblightdm-gobject/language.c    2016-11-03 13:22:49.000000000 +0900
@@ -227,10 +227,16 @@
         if (locale)
         {
             gchar *current = setlocale (LC_ALL, NULL);
+#ifdef LC_IDENTIFICATION
             setlocale (LC_IDENTIFICATION, locale);
+#endif
             setlocale (LC_MESSAGES, "");

+#ifdef _NL_IDENTIFICATION_LANGUAGE
             gchar *language_en = nl_langinfo (_NL_IDENTIFICATION_LANGUAGE);
+#else
+            gchar *language_en = NULL;
+#endif
             if (language_en && strlen (language_en) > 0)
                 priv->name = g_strdup (dgettext ("iso_639_3", language_en));

@@ -270,10 +276,16 @@
         if (locale)
         {
             gchar *current = setlocale (LC_ALL, NULL);
+#ifdef LC_IDENTIFICATION
             setlocale (LC_IDENTIFICATION, locale);
+#endif
             setlocale (LC_MESSAGES, "");

+#ifdef _NL_IDENTIFICATION_TERRITORY
             gchar *country_en = nl_langinfo (_NL_IDENTIFICATION_TERRITORY);
+#else
+            gchar *country_en = NULL;
+#endif
             if (country_en && strlen (country_en) > 0 && g_strcmp0 (country_en, "ISO") != 0)
                 priv->territory = g_strdup (dgettext ("iso_3166", country_en));

4番目の問題は何をした時に出てきたメッセージなのかを突き止めなければなりません。確かに/usr/lib/libintl.so.1/usr/pkg/lib/libintl.so.8があります。しかし何をした時に出るのかが分からないと対処のしようもありません。

5番目の問題は本来出てはいけないメッセージのような気がします。問題となっているファイルは/usr/X11R7/lib/libXi.so.7として存在しているので、特別に何も設定しなくても参照できなくてはいけない筈です。ダイナミックライブラリが見つからない時には、環境変数LD_LIBRARY_PATHを設定するとか、ファイル/etc/ld.so.confを使うというのが常套手段ですが、それは非標準ライブラリを利用したい場合の話であってlibXi.soは違うのではないでしょうか。想像するに、configureで生成されたファイルの何処かでダイナミックライブラリの検索パスを壊しているような気がします。

Xディスプレイマネージャを利用するか否か

dynabook SS SX/15AのWindows VistaをNetBSD/i386に移行するためにMATEを使うつもりです。まだ日本語環境は整っていませんが、MATE自体は動くようなので今後の見通しは悪くありません。今は試験的に利用しているだけなのでコンソールでログインしてからstartxでMATEを起動しています。問題は今後もこれでいくかどうかです。

キャラクタベースでログインしてからウィンドウ環境に移行するのでは、まるでDOS+Windows 3.1の時代を彷彿させます。個人的に使うだけなのでこれでも構わないのですが、今風のLinuxではグラフィカルにログインするので、今のMicrosoft Windowsもそうですし、同じ環境を準備しておくことにします。もし使いにくければ、外すのはすぐに出来ることです。

さてディスプレイマネージャとして何を使うことにしましょうか。NetBSD/i386のインストールでXを入れたのであればxdmが入っているはずです。これは昔からありますが、最近は使っているのを聞いたことがありません。できれば当世風のディスプレイマネージャを利用したいと思います。

Webを検索すると言及されることが多いのがSLiMとLightDMです。しかし残念ながらNetBSDのpkgsrcには見当たりません。どちらもWIPにはありますが、何時になったら正式にpkgsrcに取り込まれるか見当もつきません。

試しにLightDMをビルドしてみましたが、問題ありませんでした。しかし環境を整えるための設定方法が分からず、いろいろと自前で設定しておく必要がありそうです。また使われているのが2012年8月30日リリースの1.3.3版というのも気になります。最新は2016年10月15日リリースの1.20.0版なので、かなり更新されているし、バグも取れているのではないかと思います。

一方でSLiMは問題がありそうです。そもそもビルドできませんでした。WIPで使われているのは2008年9月25日リリースの1.3.1版で相当旧いし、SLiM自体が2013年10月2日リリースの1.3.6版を最後に更新が止まっているようです。問題がないからメンテナンスしないのかもしれませんが、事情がよく分からないので今後の利用には不安があります。

当面はLightDM 1.20.0を自前でpkgsrc化してみようと思います。そしてマシン起動後にLightDMでログインできるようにして、ユーザ環境はMATEが使えるようにしてみるつもりです。そこまで出来ればWindowsの代替に近づくでしょう。そして日本語入力環境をインストールし、FirefoxやLibreOfficeなどの主要なアプリケーションが入れば実際に使える環境に近づきます。

2016/11/01

LightDMをpkgsrc/wipからインストール

ディスプレイマネージャとしてLightDMを入れておきます。これはまだWIPなのでpkgsrc本体には取り込まれていません。現状のファイルを別途入手してpkgsrc/wip/lightdmに展開しておく必要があります。

ビルドするために依存関係にあるパッケージが幾つかあるようですが、MATEをビルドしたばかりなので追加でビルドしなければならないパッケージはありませんでした。そのためあっという間にLightDMのビルドが完了しました。

ただしwipの制約なのかPKG_PATHが設定されているとビルドが異常終了してしまいます。これは環境変数を消しておけば問題ありません。

とりあえずlightdm-1.3.3nb1がインストールされたのですが、MATEと同じく、次に何をすればよいのか見当がつきません。

MATEのスクリーンショット

pkgsrcからMATEをインストールしましたが次に何をすればよいのか分かりません。よく分からないながらも~/.xinitrcの最後にexec mate-sessionを入れれば良いみたいです。

とりあえず無事に動いてくれました。

Webで検索した記事を読んでいるとDbusとかHALが必要だと出てくるのですが、まだ設定していません。それでも構わないのか、何か設定しなければならないのか、どちらなのでしょうか。謎です。

今はキャラクタベースでログインしてからウィンドウ環境に移行していますが、Microsoft Windowsのようにウィンドウベースでログインする環境にしてみようと考えています。それが使いやすいか否かは追々考えることにして、そのような環境を準備してみようと思います。