2014年07月02日

mineoでスマホを使っている - その2

前回mineoでスマホを使っているというエントリで、このk-opticomのMVNOのサービスに接続するときにエラーが出るということをチラッと書いた。端末を初期化したらそれは解決したというようなことも書いたのだけれど、その後、またこの症状が再発するようになった。具体的には、「高度な設定」の「設定を有効にする」をクリックしたあと、エラーが出て接続できないというものだ。もちろん、Wi-fiを切っておいた上で再起動してみたり、手順を最初からやり直してみたり、常識的に考える対応は全てやった上で、エラーが出て接続できないというものだ。それもどうしようもないレベルのものならともかく、ひたすら同じことを根気よくやっていると諦めた頃につながるというのだからかえってやっかいだ。「こういうときにうまくいってこういうときはダメ」というのなら問題の切り分けができるのだが、「たまたまうまくつながる」ではどこに問題があるのかわからない。
ただ、Webを検索してみると、けっこう同じような事例があるようだ。ということは、サービス側でもエラーの原因を把握しているかもしれないと思い、サポートに問い合わせてみた。その結果、上記のような常識的な対応の他に、「データローミングをONにし、データローミング設定を日本/海外(自動)にする」という対処方法を試してみるようアドバイスを頂いた。やってみると、これが一発で効いた。
ただ、「データローミング」は、よく(海外で使った場合)高額な料金の請求が来てトラブルのもとになると聞いたことがある。そこで改めてその件についてサポートに問い合わせたら、国内で使う分には別途の料金は発生しないとのことだった。
ということで、端末の機種とかいろいろ条件はあるのだろうけど、接続がうまくいかないときには、この「データローミングをON」という方法を試して見る価値はあるのかもしれない。
posted by 松本 at 22:29| Comment(2) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2014年06月30日

mineoでスマホを使っている

とりあえずUbuntuとは関係ないのだけれど、この6月からk-opticomのmineoというサービスでスマホを使い始めた。その報告。

もともと私はスマホを使う必要もなかったのだけれど、3年ほど前、仕事の都合から携帯の電話番号がひとつ余分に必要になり、といってiPhoneやキャリアのAndroidoはもちろん、ガラケーの契約さえ余分に増やす余裕はなかったので、ちょうどサービスを始めていたb-mobileのイオンSIMでAndroidを使うことにした。中古で1万円弱のIDEOSを入手しておけば月額1,500円弱で(音質的にはかなり問題はあったが)050の番号が持てたので、これはこれで助かった。

そうこうするうちに各社でMVNOや付随のサービスがはじまり、面白いのでIIJとDTIのSIMを試してみたら、IIJのが気に入ったので、イオンは解約し、IIJのSIMとFusionのIP-Phone SMARTを併用することで050の番号を確保することにした。この組み合わせはけっこうよく、月額980円で運用できるのも助かった。そうこうするうちに3,000円で中古のXperia SO-01を入手したので、ようやく運用がスマホらしくなった。

ここにきて、MVNOのSIMを利用する理由が、「安い電話番号」から「スマホ利用」へとシフトするようになった。といっても主な用途は
  • Googleのナビでカーナビの代用
  • 出先でテザリングしてモバイルルーターの代用
  • 050の電話の受発信
  • Googleのカレンダーでのスケジュール管理
  • 音楽再生
  • 写真・動画の撮影
といった程度で、たいしたスマホユーザーではない。
それでも、そうやってスマホを使うようになると、だんだん5年も前の古いXperiaだと使いづらさを感じるようになる。上記のようにヘビーユーザーではないからかまわないといえばかまわないのだけれど、けっこう気軽に持ち歩いている端末なのであちこち傷んできてもいる。そろそろ買い替えかなあと思っていたところにk-opticomがMVNOのサービスを始めるというニュースがあった。

ここ数年、この手のニュースはひきもきらない。その度に競争があって私の愛用していたIIJのサービスが向上するので、それはそれで嬉しいのだが、といって乗り換えを検討するようなものでもないと感じていた。ところが、今回注目したのは、それまでMVNOは基本的にDocomoの電波を使うものばかりだったのが、k-opticomはKDDI(au)の電波を使うのだという。

どっちの電波がいいのかは、私にはわからない。都会で使うならどっちでも同じだろうし、田舎で使うならそれはその地方によってどっちがいいかは一概にはいえないはずだ。ただ、スマホを買い換えることを考えていた私にとっては、auであることの意味は大きい。というのは、Docomoのスマホは基本的にはどれでもMVNOのSIMが使えるので、中古品でもそこそこの値札が付いているからだ。一方のauのスマホは、MVNOのSIMが対応しないから買い手がau内での乗り換えに限られ、市場が小さいせいで同クラスの機種が数割安い。中古のスマホを検討しているうちにそんなことに気がついていたから、「これはオトクじゃないだろうか」と考えた。おまけにk-opticomのmineoという名のこのサービスは、先行割引キャンペーンをやっていたので、最終的に初期手数料分以上の割引が発生するからIIJから乗り換えるにもそれほど惜しいことはない。

ということで、適当な端末を中古で購入し、mineoに乗り換えた。購入したのは京セラ製のUrbano L01。買ってから気がついたのだけれど、世界的なメーカーであるSonyEricsonのXperiaとちがって、圧倒的に情報が少ない。「スマホなんてどれでも同じ」と思っていたけれど、いろいろいじることを考えたらメジャーなモノのほうが有利なのかもしれない。とはいえ、あとのまつりなので、これはこれで使うことにする。

さて、使ってみた感想だが、正直、XperiaをIIJのSIMで使ったときに比べてトラブルが多い。これは端末のせいなのかmineoのサービスのせいなのか、はたまたauの仕様のせいなのか切り分けが全くできないのだけれど、けっこう「あれ?」と思わされることが多い。IIJ-Xperiaのときは全く迷うことがなかったのに比べれば、ずいぶんとちがう。

まず、SIMをセットしたとき、なかなか「高度な設定」をオンにできなかった。何度やってもエラーになる。つまり、電波は受信しているのにサービスが利用できない。SIMカードを挿しなおしてみたり再起動してみたりと、いろいろやってもうまくいかず、諦めかけたときにようやくつながった。なにがなんだかわからない。それから、自動車の運転中にトンネルに入るなどしていったん接続が切れると、再接続しない。手動で接続をやり直す必要がある。テザリングをしようとするとすぐに切断され、設定をデータ通信のみにしてやらないと使えない。などなど、「ちょっとこれはどうしよう」というような不具合が続出した。それを何とか運用で乗り切ろうといろいろアプリを試しているうちについにシステムのようすがおかしくなった。しかたないと、諦めて初期化してみると、「あれ?」と意外だったんが、上記の問題がほとんど解決したことだ。いまでは再接続もちゃんとしてくれるし、設定を切り替えなくともテザリングもできる。ただ、なぜ初期化する必要があったのかを含め、原因がさっぱりわからない。

と、いろいろ文句もあるのだけれど、やっぱり(比較的)新しい端末は使いやすい。旧式のXperiaではうまく運用できなかったFusion IP-Phoneの公式アプリもうまく使えるし、Googleの各種サービスも使いやすくなった(ただナビだけは古いもののほうが使い慣れていてよかったのだけれど)。そしておそらくアプリの運用がうまくいっているせいだろうけれど、1GBある月間の通信量のほとんどを使い残して6月は終わった。IIJのときは月間500MBでかつかつだったことを思えば、かなりの余裕だ。

それなりに利用価値が高いから当分これでいってみることにしよう。とにもかくにも、税金入れても月額千円ちょっとなのだから。

posted by 松本 at 15:48| Comment(0) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2014年06月26日

Openboxでゲーム用のランチャーを作成した

以前、Openboxログイン時間制限用のスクリプトを書いたという記事で息子がゲーム(Minetest)をするのに時間制限を加えるためのスクリプトを作成した件を書いた。ゲーム専用のアカウントを用意し、そこでスクリプトを自動起動させ、1週間の制限時間を超えたら強制的にログアウトするように設定したものだ。これに関しては、毎週月曜日に制限がリセットされるようにしていたのを毎週日曜にするよう息子から要望があった程度で、まあ順調に作動している。
さて、このスクリプト作成の伏線は「MinecraftもどきのMinetestに息子がはまった」という件だったわけだが、その後、Mincraftが課金型ゲームだというのは私の誤解だったことがわかり、また、当初に支払うアカウント作成のための料金約3000円を息子が自分で負担することを約束したので、Minecraftで遊ばせることを承認した。その際、Minetestはどうするかと尋ねたら、そっちはそっちで引続き遊びたいという。別々に制限をかけたらややこしいので、まとめて制限をかけたい。それならば、以前、Minetest専用に作成したアカウントでMinecraftも遊ばせるようにすればいい。

Minetestを専用アカウントで使用するようにしたのは、もともとはUbuntuの場合、英語環境のアカウントでなければUIが崩れてしまうというバグがMinetestにあったからだ。それを逆手にとったとも言える。通常のアカウントから起動したのでは遊べないから、専用アカウントに行かねばならず、そこで時間制限を受けるという算段だ。Minecraftに関しては、以前はLinux環境へのインストールにそれなりの手数が必要だったようだが、いまではリポジトリにMinecraftを自動でインストールしてくれるプログラムが用意されている。だからソフトウェアセンターなりパッケージマネージャなりからクリックひとつでインストールできるのだが、そうやってしまうと全てのアカウントからMinecraftが遊べてしまう。

それでは困るので、ここは手作業でMinecraftの公式サイトからLinux用のパッケージをダウンロードし、それをスクリプトから起動してやることにした。こうすれば、それ相応の知識がない限り、他のアカウントからはMinecraftが起動できない。どうしても専用アカウントに縛られるから、そこで時間制限を逃れられなくなるはずだ。

そういう方針を立てたとき、ここで必要になるのはOpenboxで起動するように設定してある専用アカウントにランチャーを用意してやることだと気がついた。専用アカウントにログインすると、自動でランチャーが立ち上がる。そのランチャーからはMinetestかMinecraftが選べるようになっていて、どちらかを起動して遊ぶ。それ以外の起動方法はわからなくしておけば、息子はこのルートをとらざるを得ないから、制限時間以上には遊べないだろう。

ということで適当なランチャーを探したのだけれど、たかがゲーム2つを起動するためだけの最小限の機能のランチャーなんて、かえって見つからない。それならばPythonで書いてやろうと、また素人のプログラミングをやったのが下記のスクリプトだ。
#!/usr/bin/python
# coding: UTF-8

import os;
import ConfigParser
from Tkinter import *

if __name__ == "__main__":
    inifile = ConfigParser.SafeConfigParser()
    inifile.read("/home/~/config.ini")
totaltime = int(inifile.get("int","totaltime"))

if totaltime > 299:
    elapsedtime = "今週の残り時間はありません。"
else:
    elapsedtime = str(totaltime/60)+"時間"+str(totaltime -
int(totaltime/60)*60)+"分過ぎました。残り" + str(4-totaltime/60)+"時間"+str(59 -
(totaltime - int(totaltime/60)*60))+"分です。"

def craft():
    os.system( "bash /home/~/mclaunch.sh")

def mtest():
    os.system( "minetest")


class MyApp:
  def __init__(self, parent):
    self.myParent = parent
    self.myContainer1 = Frame(parent)
    self.myContainer1.pack()

    button_name = "MineCraft"
    self.button1 = Button(self.myContainer1,
      command=self.buttonHandler(button_name, 1, "MineCraft"))

    self.button1.configure(text=button_name, padx=80, pady=20, command=craft)
    self.button1.pack(side=LEFT,padx=50, pady=50)

    button_name = "MineTest"
    self.button2 = Button(self.myContainer1,
      command=self.buttonHandler(button_name, 2, "MineTest"))

    self.button2.configure(text=button_name, padx=80, pady=20, command=mtest)
    self.button2.pack(side=LEFT,padx=50, pady=50)


  def buttonHandler(self, arg1, arg2, arg3):
         print ""

  def buttonHandler_a(self, event, arg1, arg2, arg3):
         print ""

root = Tk()
root.title(elapsedtime)
myapp = MyApp(root)
root.mainloop()
息子の要望で、残り時間が表示されるようにしておいたが、これは以前の制限スクリプトで用意したconfig.iniという初期設定ファイルを読み込むことで対応している。再読み込みはしていないので表示される残り時間はログイン時点でのものだが、それでも十分だろう。なお、例によって素人のプログラムなのでサンプルから取り込んだ際に不要になった行もいくつか残っている。その他にも恥ずかしい間違いは多々あると思うが、何にしても一応は動くので、公開しておく。なお、スクリプト中のmclaunch.shというのはMincraft起動用のスクリプトである。

ゲームを制限したら、今度はYouTubeにはまりだした。一応こちらも制限はかけているのだけれど、なかなかうまく運用できていない。その話はまた別の機会に書くことにしよう。
posted by 松本 at 12:24| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2014年05月27日

CUPSのアップデートでプリンタが使えなくなった

今回はじめて起こったわけではないのだが、というか、最近になって何度か起こったようなので気になって書くのだが、ソフトウェアアップデートでCUPSのアップデートがあったあとにプリンタが使えなくなっていた。対処方法は非常にベーシックなもので、設定からプリンタに行っていったんプリンタを削除し、改めてインストールすればOK。このとき接続先の選択を間違えて最初うまく行かなかったが、私のところの環境どおりにUSB接続を選択したら問題なかった。
CUPSはCommon UNIX Printing System、つまりプリントサーバーなので、そのアップデートで一時的な不具合が発生するというのは理解できる。ただ、今回の件は、たまたまその直前のアップデートにCUPSが含まれていたことを覚えていたからあっさり片付いたけれど、覚えていなかったらもうちょっと解決に時間がかかったかもしれない。

Ubunutのアップデートはほとんど自動化されていてアップデートマネージャのダイアログが出たら「はい」とクリックすれば済むようになっている。そこでいきおいいい加減になるのだけれど、やっぱり何が更新され何が新たにインストールされるのかのチェックは怠ってはならないと改めて思い知らされた。それと、できれば履歴が簡単に把握できるSynapticパッケージマネージャを使ったほうが安全かもしれないとも思った。楽ができるようになったとはいえ、やっぱりこれはLinuxなんだから。
posted by 松本 at 19:57| Comment(0) | TrackBack(0) | Ubuntuでの失敗・トラブル | このブログの読者になる | 更新情報をチェックする

2014年05月14日

MicrosoftのOfficeがWineで使えなくなった

Ubuntuを使っている以上、基本的にオフィス系のソフトはLibre Officeということになる。これはこれで何の不足もないし、使い慣れてしまえばそれなりに便利なのだが、不便を感じないことが全くないのかというとそうでもない。それは主に一般に普及しているMicrosoftのOfficeとの互換性の問題だ。どうしてもレイアウトは崩れるし、特にOffice 2007以降もうすっかり標準として定着した.docx形式の互換性がよろしくない。ある程度はだいじょうぶなのだけれど、たとえばコメントの再現性とか図形の処理なんかで情報が失われる場合がけっこうあったりして痛い。
まあ、そのあたりも誤魔化し方をある程度は会得してきたわけだけれど、やっぱり本来のMS Officeでどう見えるのか、確認する手段は必要だ。ずいぶん前には仮想環境のXP上の古いオフィスを使ったし、Microsoftが無償配布していたビューワーも利用できた。ただし、このビューワーはずいぶん古いもので、最近のファイルは互換性の問題がある。困ったなあと思っていたら、MS Office 2010の試用版がビューワーとして利用できることがわかった。これはMicrosoft自身が認めていた使用法なのだが、試用版の1ヶ月の使用期限が過ぎたものは、文書の保存、編集などはできないが、閲覧は可能になっている。これをビューワーとして使用できると説明されていた。そして、このMS Officeは、Ubuntu上でWineを利用して走らせることができる。フォントさえ共通させておけばレイアウトもWindows上での表示とほぼ変わらない。これは便利だ。
ということで、ここ数年はUbuntu上でOffice 2010の試用版をビューワーとして使用してきたのだけれど、これができなくなってしまった。

というのは、Office 2013の登場に伴って、MicrosoftがOffice 2010の試用版の配布をやめてしまったからだ。これは当然のことだろう。それならばOffice 2013の試用版を使えばいいかというと、これがWine上では走らない。インストーラーがネットワーク利用になっていることが要因だと思うのだが、インストールさえできない。
これには困ってしまった。もちろん、デュアルブーになっているWindowsの方に入ればOffice 2013を起動することはできるのだが、Ubuntu上で気軽にチェックすることができなくなってしまった。
解決方法としては、Office 2010の正式版を入手できるうちに入手することだろうか。インストールできることはわかっているし、正式版を購入したらどこにインストールしようが遠慮することもないだろう。しかし、普段使うわけでもなく、ただ確認用にたまに起動するだけのソフトにお金をかけるのも悔しい。
とりあえずはOffice Onlineでしのぐのだけれど、これはこれで使い勝手がよくないし、レイアウトの再現性も「本当に大丈夫なの?」と思ってしまう(確認する手段がいまはないのでなんともいえないのだけれど)。こんなことなら、Office 2010の試用版のインストーラーをどこかに保存しておけばよかったとも思うが、やっぱり配布元が配布をやめたようなソフトは使うべきはないだろうし。
posted by 松本 at 00:21| Comment(0) | TrackBack(0) | Ubuntuでの失敗・トラブル | このブログの読者になる | 更新情報をチェックする

2014年04月21日

Openboxログイン時間制限用のスクリプトを書いた

前回「MinecraftもどきのMinetestに息子がはまった」と書いたが、ゲームにはまって抑制が効かなくなるのも困るので、親子の間で時間制限をかけることに合意した。1日30分とか2日で1時間とか、いや1日1時間はしたいとか、いろいろ攻防があった挙句(もともとテレビは見ないし、Wiiもやめるという前提で)、1週間に5時間ということで落ち着いた。ただし、これをいちいち手作業で管理していたら大変だから、1週間に5時間しかつかえないように設定したい。Mintestそのものにはそういう機能はないので、外部からペアレンタルコントロールをかける必要がある。これはシステムのレベルでも行えないことはないのかもしれないけれど、たまたま他の必要からMintest専用アカウントをつくったので、このアカウントへのログイン時間を制限すればいい。となると、以前作成した「lxdeでペアレンタルコントロール」のスクリプトを改造すればいいのではないかと考えた。
けれど、考えはじめてみると、1週間の時間制限というのは案外難しい。Pythonで書くとして、経過時間を外部ファイルに書き出して記録するのが実際的だなと考えた。そして、週のはじめにその経過時間をゼロにリセットする。曜日を整数として取得すると月曜日が0だから、これを利用すればいいんだろうと考えた。
けれど、よく考えたら、必ずしも毎日アカウントにログインするとは限らない。「月曜日ごとにリセットする」というスクリプトでは、たとえば初回のログインが水曜日だったら数値はリセットされない。最終のログインが週末とも限らないから、「前回のログイン曜日よりも小さなログイン曜日になったらリセット」というのも使えない。全く使わない週も可能性としてはあるわけで、そこまで考えたら、やっぱり日付を取得してきっちりと週のはじめを読んでやらないといけない。
ということで、次のようなスクリプトを書いた。例によって基本がわかっていない私は、あちこちから拾ってきたサンプルのつぎはぎである。公表するのも恥ずかしいようなものだが、私はプログラマではないので、プログラマにとって恥ずかしいようなことでも恥と思わずにできる。素人の強みだ。


#!/usr/bin/python
# coding: UTF-8

import datetime
from datetime import date
import time
import ConfigParser
import os;
import locale
import pynotify


if __name__ == "__main__":

    inifile = ConfigParser.SafeConfigParser()
    inifile.read("./config.ini")

lastdate = inifile.get("int","lastdate")
totaltime = int(inifile.get("int","totaltime"))

lastyear = int(lastdate[0:4])
lastmonth = int(lastdate[5:7])
lastday = int(lastdate[8:10])
d = datetime.date.today()
d0 = date(lastyear, lastmonth, lastday)
days = d - d0
dayow = d0.weekday() - d.weekday()

if int(days.days) > 6:
        totaltime = 0
else:
        if dayow >0:
                totaltime = 0
        else:
                totaltime = totaltime

while totaltime < 360:
        time.sleep(60)
        totaltime = totaltime +1
        st = """[int]"""+ "\n" +"""lastdate        =        """+ str(d) + "\n" + """totaltime        =        """ + str(totaltime)
        f = open('config.ini', 'w')
        f.write(st)
        f.close()

pynotify.init( "1週間の制限5時間です" )
n = pynotify.Notification("制限時間になりました。", "また来週!", "dialog-warning")
n.show()

time.sleep(60)
os.system( "openbox --exit") 


別にconfig.iniという初期設定ファイルを作成しておく。内容は、

[int]
lastdate=2014-04-16
totaltime=0

という感じだ。これをOpenbox環境のアカウントでautostartに仕込んでおく。ただし、ここで重要なのは、スクリプト中に指定してある初期設定ファイルの場所を絶対パスに書き換えておくこと。あるいはcdでディレクトリを変更しておけばいいのかもしれないが、相対パスだと自動起動がうまく働かなかった。しばらく悩んでしまった。

1分毎に設定ファイルを書き換えるスクリプトなので、うるさいといえばうるさいのだけれど、ゲームの終了時のイベントを読んで設定ファイルを記録するスクリプトを書けなかったので、しかたない。これでとりあえずは十分に役に立っているようだ。現在のところこのスクリプトでわかるように制限時間を経過すると1分だけ時間猶予を与えてから強制ログアウトするようになっている。なんだか息子はこれを逆手に取って制限時間後にログインし、1分だけ遊ぶというおかしなことをやっているようだから、ここは10秒ぐらいに短縮したほうがいいのかもしれない。

「どうやって制限しているの?」と尋ねられたので、上記のような大まかな構造だけは説明した。息子はその設定ファイルがどこにあるのかを探し出したいらしいが(もちろん書き換えたいのだ)、それは秘密にしてある。もしもそれを探しだし、書き換えるぐらいの力量がついたら、ペアレンタルコントロールなんか不要になるんだろう。いつかそんな日が来ることを願っている。
posted by 松本 at 10:56| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2014年04月18日

MinecraftもどきのMinetestに息子がはまった

小学生とパソコンをどうつき合わせるかというのはなかなか悩ましい問題だ。近頃のパワフルなパソコン、特にオープンでたいていのアプリケーションがそろってしまうUbuntuなんかを使ったら、たいていのことができる。創造力を育むには絶大な力をもったツールだ。だから、そういう世界を味わってほしいし、そのためには早くからパソコンを与えたい。けれど、いったん与えたら、それは動画再生装置かゲームマシンにしかならない。こちらが期待したような使い方を決してしてくれないのが小学生というものだ。

それがわかっていたから、最初はブラウザを隠し、ワープロぐらいしかつかえないようにしたパソコンを与えていた。そのうちにアニメーションに興味をもつようになり、アニメ制作ソフトや画像制作ソフトをインストールした。さらに初歩のプログラミング用の環境も整えたが、これはさすがに手に余ったようだ。適切な指導者がいればそうでもないのだろうが、私にはそういったことはできないのだし。

そうやってそれなりにコントロールをかけてきたつもりではあるのだけれど、そのうちに表面から消えているブラウザの起動のしかたを覚えてしまった。しかたないのでペアレンタルコントロールをかけて検索ぐらいはできるようにしていたのだけれど、そうなると情報がどんどん入ってくる。今年にはいって、「マインクラフトをやりたい」と言いはじめた。

それがゲームだというぐらいの知識は私にもある。調べてみたらLinux環境でもできるようだし、classicであれば対戦のようなこともなく、ひたすらものを作っていくだけのことらしいので、それはそれでありかなとも思った。その後いろいろあって、結局、ゲーム機(Wii)を卒業するのであれば、その代わりにMinecraftをやってもいいということにした。ただし、週5時間以内という制限をかけるという条件だ。

さて、このMinecraftだが、基本的には課金型のゲームのようだ。ただ、自分でサーバーを立てるつもりならその必要もないようすではある(ちがうかもしれない)。小学生というビギナーがネットのトラブルにまきこまれないためにも、できたらここはパブリックなサイトではなく、ローカルでちまちまとやりたい。サーバーを立てて稼働させるというのがよさそうだと考えた。

とはいえ、私はプログラマではないサーバー構築は以前書いたようにBitNamiを使って試みたことはあるが、やっぱりあやふやだ。研究するにも時間がかかるが、あいにくとここのところ少し忙しい。もうちょっと手軽にできないかと考えていたら、MinecraftもどきのMinetestというゲームに行き当たった。これならUbuntuのリポジトリにも入っているから、数クリックで手軽に導入できる。Minecraftよりもシステム要件は低いし、とりあえずローカルではじめられるし、中身はだいたいMinecraftだし、ま、これでもいいかという気になった。試しに息子にやらせてみたら、気に入ってくれた。ただし、やっぱり本物のMinecraftの方がいいようで、これで数カ月の猶予をくれる、というだけの話のようだけれど。

ただ、ちょっと現行版のMinetestには問題があって、日本語環境ではメニューがおかしなことになってしまう。いったん使い方がわかってしまえばさほど問題ではないのかもしれないが、試しに動かしてみた私にはさっぱりだった。これはシステム環境を英語にすれば問題がなくなる。しかし、小学生の普段使いの環境は、やっぱり日本語のほうがいいだろう。

ここで思いついた。どうせ使用時間の制限をかけなければいけない。だったら、Minetest専用のアカウントをつくり、そこにログインする時間に対して制限をかければいい。個別のアプリケーションの稼働時間のログをとってそれに対して制限をかけるのはちょっと私の手に余るなあと思っていたのだけれど、特定のアカウントに対する制限ならPythonのスクリプトで書けそうだ。

ということで、英語環境の専用アカウントを用意し、ここにはOpenBoxでログインさせることにした。Minetest実行以上の機能は不要だから。そしてどんなスクリプトを書いたのか、それは次回にとっておこう。あまり長い記事を書くのも辛いので。
posted by 松本 at 13:44| Comment(2) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2014年03月24日

Trusty Tahr(Ubuntu 14.04)の印象

LTSに甘えて、というわけでもないのだけれど、メインマシンのUbuntuを12.04からついにアップデートせずに最後まできた。元のASUS UL20Aを購入したのが2010年の年の暮れ。インストールしたのはMaverick Meerkatだった。確か次のNattyにアップグレードし、Oneiricはパスして(ただし出先のマシンでは愛用した)、LTSであるPrecise Pangolinをインストールしたのが2年近く前、そこからアップグレードをサボり続けてきた。もちろん、最新の動向に完全に無関心だったわけではなく、息子に与えたサブマシンや出先で使ったよそのマシンにはそれぞれの時点での最新のUbuntuを導入してきた。ただ、その際の印象がPreciseと大差ない感じだったので、あえて面倒なアップグレードを避けてきたというのが正直なところだ。アップグレードのメリットを感じなかったと言ってもいいかもしれない。

とはいいながら、メインマシンを新しいAspire V5に替えてインストールするUbuntuに古いものを選ぶ手はない。そしてどうせインストールするのなら、もう1ヶ月もすればリリースになる予定なのだからLTSの14.04(Trusty Tahr)を、少々気が早いけれど、プレリリースのDaily Buildで導入しよう、というのが自然な流れだったわけだ。

さらに、旧メインマシンのASUS UL20AにもTrustyを導入した。これは息子に譲るつもりだから、やっぱり最新のものにアップグレードしておきたい。手順としてはインストール用のUSBを作成し、そのインストーラーからアップデートする方法をとった。この方法のほうがアップデートマネージャでアップグレードするより早いようだ。ただ、過去にインストールしたアプリケーションはすべて失われたようなので、これは一からインストールする必要があるようだ。各種設定は保存されていた。

ということで2台のマシンがTrustyになったので、その印象。ひとこと「どこが変わったの?」

Ubuntuがすっかり安定したということなのだろう。あるいは、旧バージョンもアップデートで最新版に近い対応がとられるようになったことが関係しているのかもしれない。細かなUIのちがいなどあることはある。デフォルトも少し以前と変更されているような気がする。けれど、大きな変化は感じられない。以前よりどこか洗練された感覚はある。だが、どこがどうとはっきりわからない。ともかくも、うまく動く。使っていて不具合はない。それで十分、というか、それ以上でも以下でもない。

強いていうなら、インプットメソッドを管理するiBusの仕様が少し変わったのかもしれない。あるいはプレリリースのバグなのかもしれないが、日本語入力以外のインプットメソッドにするとキーボード配列が変わってしまう。以前はアプリケーションごとに設定されていた入力メソッドの切換が(そうするオプションはあるのに)、システム全体で共通してしまっている。これは以前のものに慣れていた身としてはちょっとやりにくい。

あと、これはTrustyの問題ではないのだけれど、半年ぐらい前からGoogleのChromeの動作がやたらと重くなって困っている。これが解消するかと思ったら、まるで変わらない。ちょっとガッカリだ。以前はChromeはとにかく速い、というイメージがあったのだけれど、ここのところやたらとひっかかる。これはひょっとしたらChromeの問題でさえなく、訪問先のサイトの問題であるのかもしれない。広告表示のためにやたらと外部サイトへのアクセスが増えているのが原因のような気がするのは気のせいだろうか。広告のない個人運営のサイトなどで引っかかることがほとんどないので、そんな気がするのだけれど。

デフォルトでマシンに入っていたWindows 8を見ると、MicrosoftはOSを新たな方向に進化させようとしているようだ。Ubuntuはその数年前からUnityで新たな方向への進化を遂げたのだけれど、これはMSの採用した方向性と全くちがう。スタートラインではよく似ていた両者がだんだんと離れていくのをみるのも感慨深いものがある。私はすっかりUnityになじんでしまった。便利だ。とにもかくにも。
posted by 松本 at 11:28| Comment(0) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2014年02月27日

新しいマシン、新しいUbuntu

事情があって新しいマシンが必要になり、愛用のASUS UL20Aとほぼ同じ大きさ・形のAcer V5 131-Mを入手した。で、いろいろ細かいことはあるのだけれど、とにもかくにもUbuntuをインストールした。ただ、このインストールが実に奇妙な方法でやってしまったので、これは一例報告ものかなと。

普通、Windows 8の入った最近のPCはUEFIからブートするため、以前よりもデュアルブートでのインストールがやりにくくなっている。ただ、この方法は概ね確立されてきたようすで、あちこちにステップバイステップの方法が掲載されている。だから大丈夫だろうとタカを括って購入したわけだが、やってみるとどうもうまくいかない。セキュアブートもオフにしたし、起動ドライブの順番も変更したし、F12キーもアクティブにした。もちろんそれ以前にWindows側の高速起動をオフにすると、回復ディスクを用意するとか、ひと通りのことももちろんやった。だが、何度トライしてもUSBドライブに導入したライブイメージからの起動ができない。そもそも起動ドライブとして認識してくれないのだ。
これは、ひょっとしたらUSBメモリの仕様の問題かもしれない。2本ほど試してみたけれど、両方とも同じような安物だから。あるいは、なにか単純なミスなのだろうか。あるいはまだ正式リリースされていない14.04のイメージを使ったからだろうか。ともかくも、USB起動ができない。

ただし、UEFIをオフにしてレガシーBIOSにしてやると、簡単に起動する。インストールだってできる。ただし、インストールしても、もともとMBRの存在しないところにGRUBがインストールできないせいなのか、BIOSからUbuntuが起動できない。起動ドライブが見つかりませんというメッセージでさっぱりダメ。

そもそも、デュアルブートにしようと思ったら、UEFIからUbuntuのライブ起動を行わなければならないらしい。UEFIから起動してインストールしてやればそのUbuntuはUEFIから立ち上がるようになる。つまりWindowsとのデュアルブートができる。BIOSから起動してインストールしたら、BIOSからしか立ち上がらない。よってUEFIは利用できず、デュアルブートもできない、というのが、私がWebの情報から読み取ったところだ。

さて、困った。困ったけれど、せっかく買ったPCを使わないわけにいかない。そして、使うならUbuntuだ。だったらもう、Windowsは諦めるかとも思った。どうせ年に数回しか起動しないのだから、どうしても必要になれば古いマシンを引っ張り出せばいい。実用的にはなんの問題もない。けれど悔しい。

それならば、WindowはUEFIで起動することにし、UbuntuはBIOSから起動することにして、起動時にF2でUEFI(BIOS)設定を呼び出して切り替えることでデュアルブートができないだろうかと考えた。常識的に考えたら無理だ。UEFIとGRUBがコンフリクトするだろう。だいたい、GRUBはディスクのトップにもってこなければいけないのに、ディスクのトップはUEFI関連の起動用パーティションで予約され、変更ができない。

しかし、「最悪Windowsは捨てればいいや」と思ってるから、気楽なもの。まず、Ubuntuのライブ起動で立ち上げて、Gpartedを起動する。これで、本来は変更してはならないWindowsのインストールされた領域を縮小し(警告が出るのは無視)、さらにはその領域の前の部分を後ろにずらして、ディスクの前の方、UEFIが使うらしい領域のすぐ後ろに空き領域をつくってやる。これをBIOS用の予約領域に指定してやり、UbuntuをWindows領域を削って作ったパーティションにインストール。そして、再起動すると、見事にUbuntuが立ち上がった。そして再起同時にF2でBIOSをUEFIに切り替えると、無事にWindows 8が立ち上がった。

こんな変則的なことをやってる人は、まずいないだろうなと思う。そして、くれぐれも、真似はしないようにと書いておく。Windowsを捨てても惜しくないと思ったからこそできたことで、ちょっとの環境の違い、ちょっとの手順の違いで、たぶんWindowsとは永遠におさらばという結果になる方法だと思うから。

そうまでしてUbuntuを使いたいのかと言われれば、胸を張って「そうだ」と答えよう。すべての仕事がこれでできる。ごく最近も、奇跡のように短期間で1冊の本をUbuntuで編集できた。ほんと、これのおかげで生きていけるんだから。
posted by 松本 at 23:43| Comment(2) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2013年10月12日

タッチパッドの有効・無効を切り替えるツール

息子に使わせている古いDellのInpiron mini 12の話なのだが、「タッチパッドに手が触れて文字が消える」と苦情がきた。実際、このマシンはタッチパッドが大きめで、それはそれで使いやすくもあるのだけれど、誤動作も多い。必要に応じてタッチパッドの有効・無効が切り替えられれば便利だろうとは思う。
で、これはUbuntuの通常ならシステム設定のマウスの設定でごく簡単に行える。ただし、このマシンはスペックの関係でLXDEを使っている。そして、LXDE上ではタッチパッドの設定を変更する手軽なGUIのツールが見つからない。
もちろん方法がないわけではなく、Synclientというコマンドで簡単に無効化することができる。とはいえ、小学生の子どもにいちいち端末を開いて設定させるのも考えものだ。
そこで、PythonでGUIツールを書いてみることにした。Synclientの使い方はこちらにあるので、そこに記載された
$ synclient TouchpadOff=1
をボタンを押すことで実行するようにすればいい。有効にする場合はこの1を0にすればいいから、そちらもボタンをつくっておく。GUIの設計なんて複雑なことはできないから、ここはそこらに転がっていたサンプルコードを流用。こんな具合になった。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygtk
import gtk
import os;

class Application():
 
    def __init__(self):
        self.window = gtk.Window()
        self.window.set_title("タッチパッド設定")
 
        self.create_widgets()
        self.connect_signals()
 
        self.window.show_all()
        gtk.main()
 
    def create_widgets(self):
        self.vbox = gtk.VBox(spacing=20)
 
        self.hbox_1 = gtk.HBox(spacing=20)
        self.button_1 = gtk.Button("タッチパッドを有効にする")
        self.hbox_1.pack_start(self.button_1)
        self.button_2 = gtk.Button("タッチパッドを無効にする")
        self.hbox_1.pack_start(self.button_2)
 
        self.hbox_2 = gtk.HBox(spacing=10)
        self.button_exit = gtk.Button("終了")
        self.hbox_2.pack_start(self.button_exit)
 
        self.vbox.pack_start(self.hbox_1)
        self.vbox.pack_start(self.hbox_2)
 
        self.window.add(self.vbox)
 
    def connect_signals(self):
        self.button_1.connect("clicked", self.callback_1)
        self.button_2.connect("clicked", self.callback_2)
        self.button_exit.connect("clicked", self.callback_exit)
 
    def callback_1(self, widget, callback_data=None):
        os.system( "synclient TouchpadOff=0" )
 
    def callback_2(self, widget, callback_data=None):
        os.system( "synclient TouchpadOff=1" )

    def callback_exit(self, widget, callback_data=None):
        gtk.main_quit()
 
if __name__ == "__main__":
    app = Application()
これにたとえばtouchpad_config.pyのような名前をつけてやり、ダブルクリックで動作するようにデスクトップファイルを設定してやる。たとえばこんな感じ。
[Desktop Entry]
Encoding=UTF-8
Name=タッチパッド設定
Comment=configure touchpad
Exec=python /(パス)/touchpad_config.py
Icon=
Terminal=false
Type=Application
Categories=
これを息子のデスクトップに置いていた。便利に使ってくれているようだ。
posted by 松本 at 19:46| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年10月11日

PulseAudioを削除した

小学生の息子に与えたDellのInspiron mini 12なのだが、動画を再生したときに音がひどいのが気になっていた。YouTubeを見たい息子からも苦情がくる。もともとスペックの貧弱なネットブックだし、「Poulsboの呪い」というやつでビデオのドライバが十分ではなく、動画は決してなめらかとは言いがたい。音がひどいのもその関係だろうと思っていた。
ただ、ハードウェア的な故障ではない。たとえばスピーカーのコーンが破れているのなら、イヤホンで聞いたときはまともな音になるはずだ。以前はそれなりに音も出ていたのだから、やはりこれはOSのアップグレードにともなうソフトウェア的なトラブルだろうとは見当をつけた。ならば、どうにかなるのではないか。

サウンド設定の問題、ドライバの問題、カーネルのレイテンシの問題など、いろいろ情報を探してみたのだが、どうもピッタリとくるものがない。諦めかけたところで、PulseAudioによる遅延を指摘しているブログ記事を見つけた。実はこれも疑ってはいたのだけれど、対処方法がわからなかった。ところが、どうやらPulseAudioは削除してしまえばいいらしい。

もちろん不要なプログラムがデフォルトで含まれているわけはないので、PulseAudioを削除することによるマイナスはあるようだ。ただ、少なくともYouTubeの動画をブラウザで再生する分には、PulseAudioを経由しなくても音は出る。ということで、パッケージマネージャを開いてPulseAudioを削除してやった。関連ファイルがいくつか同時に削除されるが気にしない。再起動すると、嬉しいことに以前よりも音がだいぶマシになった。

非力なマシンだからこその対応だが、こんなふうに工夫することで使い物になるのだから、やっぱりUbuntuはありがたい。改めて思った。
posted by 松本 at 08:23| Comment(0) | TrackBack(0) | Ubuntuでの失敗・トラブル | このブログの読者になる | 更新情報をチェックする

2013年10月07日

lxdeでペアレンタルコントロール

古いDellのInspiron 12にUbuntuを入れて数年前から息子に与えているのだが、小学生にあまりネットの世界をウロウロさせるのもどうかと思ってメーラーもブラウザも、もちろんその他のSNS系のアプリケーションも表面からは隠してあった。ちなみにこのInspiron12、13.04にアップグレードしてからはグラフィックの描画がつらくなってきたので、デスクトップ環境をLXDEで運用するようにしている。LXDEの場合、メニューバーからメニューを削除しておけば、一見したところどんなアプリも起動できない。それでは何もできないので、こちらが許可したアプリ、たとえばワープロだとかお絵かきソフトだとかはショートカットのアイコンをデスクトップに置いてある。これでだいたいはことが済む。Synfigなんてアニメのアプリも、本人の希望に応じて使えるようにした。ただ、Web関係だけは許可しなかった。

けれど、本人はもちろん、ネットでいろいろと情報を仕入れたい。ウチにはテレビがないので、友だちとのあいだで話題になるアニメ関係の情報とか、DVDを借りてきて観る映画の情報(特にハリー・ポッターだ)、あるいは友だちとやるゲームの関係の情報とかを検索したり、YouTubeで見たりしたいらしい。
こちらはそれは禁止しておきたいのだが、ある日、うっかり私が彼のパソコンで調べ物をしようとしたところを見られてしまった。もちろん私はブラウザを立ち上げるわけだが、その手順を秘密にしておきたいので、わざわざ端末を開いてFirefoxと入力して起動している。そこを一瞬見られたわけだ。すると彼は、端末にアプリケーション名を入れれば起動できるのだということを悟ってしまった。それでも私は、「やれるもんならやってみろ」と大きく構えていたが、ついにある日、Firefoxの正しいつづりを見つけてしまった。

こうなったら、放置するわけにはいかない。それまではパソコンは使いたいときに使えというかっこうで任せていたのだけれど、それは、ワープロで文章を書くとか画像ソフトで絵を書くとかは、小学生にとってそうそう根気の続く作業ではないからだ。放っておいても何時間もパソコンにかじりつく心配はない。ほんの30分もやったら飽きてしまう。ところが、Webの世界をぼんやり眺めていたら、いくらでも時間が過ぎる。いわゆるペアレンタルコントロールをすべきタイミングだ。

ペアレンタルコントロールは、大きく分けて2種類の対策を施せばいいだろう。1種類は有害サイトのフィルターリングで、これはFirefoxのアドオンを使えばいい。具体的にはFoxFilterというので間に合いそうだ。無償版はロックがかけられないのだけれど、英語を理解しない小学生に設定の変更は難しかろうから、しばらくのあいだのしのぎにはなる。

もう1種類は、PCそのものの使用時間を制限することだ。夜遅くまでパソコンにかじりつかれてはかなわないから、夜8時半にはシャットダウンしてほしい。学校が遠く朝早い関係で、できれば夜9時には床につかせたいからだ。これに関しては、Gnome Nannyというのがよさそうなのだが、あいにくなことにこれはGnome環境でなければ動かず、LXDEでは論外だし、仮にGnome環境に変更するにしても最新のUbuntuではバグが出て使い物にならないらしい(もちろんアップデートにより動くようになるのは遠くないだろうが)。ともかくも、これは諦めるべきだ。

ただ、このGnome Nanny、Linux-PAMというモジュールを操作するものらしく、したがってLinux-PAMを直接設定してやればパソコンの使用可能時間をコントロールすることができそうだとわかった(このあたりとか)。ただ、けっこう高度な設定らしく、何度かトライしたけれど失敗。どこがどうなっているのかよく理解できないのにあまり深追いしても傷を負いそうなのでいいかげんなところで諦める。

ということで困ってしまったのだが、調べていると同じような悩みを解決するためにシェルスクリプトを書いたという記事があった。なるほど、一定時間を経過したらスクリプトで強制的にログアウトさせてやればいいわけだ。つまり、
#!user/bin/bash
sleep 33m
killall -9 lxsession
というスクリプトをたとえばlogout.shというような名前で保存し、LXDEなのでLXDEの設定のAutostartフォルダ内に
[Desktop Entry]
Encoding=UTF-8
Name=Auto Log Off
Comment = Will automatically log individual off after a set period of time
Exec=bash (パス)/logout.sh
Terminal=true
というような内容でデスクトップファイルをつくっておく。すると、ログイン時に「33分後にログアウトする」というスクリプトが自動スタートするわけで、つまり1回のログインで33分までしか使用ができないという制限になる。

ただし、いきなりログアウトするとデータが失われる可能性があるので、やはり警告は必要だろう。警告も同じシェルスクリプト内に書けばいいのだけれど、そこまでプログラミングに詳しくないので、以前ちょっとかじったPythonを使って、警告のスクリプトを次のように書いた。
#!/usr/bin/env python
# -*- coding:UTF-8 -*-

import pygtk
pygtk.require('2.0')
import gtk
import datetime
import time

time.sleep(1800)

d = datetime.datetime.today()

class HelloWorld:
    def __init__(self):
        self.window = gtk.Window()
        self.window.set_title('時間です!')
        self.window.connect('destroy_event', self.end_application)
        self.window.connect('delete_event', self.end_application)

        self.label_show = gtk.Label()
        self.label_show.set_markup('<span size="24000">\n\n<b>きみがコンピュータを使いはじめて30分がたちました。\nいったん休憩してください。\n3分後に自動的にシャットダウンするので、\nすべてのファイルを保存してください。\nわかったら、「わかりました」ボタンを\nクリックしてください。\n\n</b></span>')

        self.button_hw = gtk.Button()
        self.button_hw.set_label('もうちょっと使いたい')
        self.button_hw.connect('clicked', self.set_hw_txt)

        self.button_gn = gtk.Button()
        self.button_gn.set_label('いま何時?')
        self.button_gn.connect('clicked', self.set_gn_txt)

        self.button_quit = gtk.Button()
        self.button_quit.set_label('わかりました')
        self.button_quit.connect('clicked', self.end_application)

        self.vbox = gtk.VBox()
        self.vbox.add(self.label_show)
        self.vbox.add(self.button_hw)
        self.vbox.add(self.button_gn)
        self.vbox.add(self.button_quit)

        self.window.add(self.vbox)

        self.window.show_all()

    def set_hw_txt(self, widget, data=None):
        self.label_show.set_markup("\n\n<big><b>いったんパソコンを終了して休憩してください。\nそれからもう一度起動すれば使えますよ。</b></big>\n\n\n\n\n")

    def set_gn_txt(self, widget, data=None):
        self.label_show.set_markup("\n\n<big><b>時計を見てください!\nただちにコンピュータをシャットダウンしてください。</b></big>\n\n\n\n\n")

    def end_application(self, widget, data=None):
        gtk.main_quit()
        return False

def main():
    hw = HelloWorld()
    gtk.main()

if __name__ == '__main__':
    main()
このPythonスクリプトも、やはり同じようにAutostartにデスクトップファイルをつくって自動起動させる。そうすると、強制ログアウトになる3分前に警告メッセージが出るという寸法だ。なお、変なダイアログがいっぱいあるのは、コードをもらってきた先のサンプルに合わせなければいけなかったからで、このあたり、Pythonのことを何も理解していないのがバレバレだろう。

とはいえ、これでは再ログインすればまた33分使えてしまう。最大の課題は夜8時半以降は使わせないことだから、夜8時以降はログインできないようにしなければならない。これもやはりPythonのスクリプトで制御する。つまり、
#!/usr/bin/python
# coding: UTF-8

import time
import os;
import datetime
import locale
import pynotify

d = datetime.datetime.today()

t= d.hour
h = float(t)
if h > 19 :
pynotify.init( "午後8時を過ぎています" )
n = pynotify.Notification("午後8時を過ぎています", "パソコンをすぐにシャットダウンしてください。", "dialog-warning")
n.show()

time.sleep(10)
os.system( "killall -9 lxsession" ) 

というスクリプトをたとえばtimeup.pyとかいうファイル名で保存しておき、それをやはりAutostartでログイン時に起動するようにしておく。すると、datetime関数で時刻を取得し、それが19時より大きい(つまり20時以降)であれば警告を出して10秒後にログアウトするしくみだ。実際、これでやってみると20時以降のログインはあっさりと弾かれる。24時を過ぎるとログインできてしまうのだけれど、さすがに小学生、そんな時間まで起きていないので、これはこれでいいだろう。

なんとも始末のわるいことに自動起動のスクリプトを3つも使ってしまっている。もちろん少しでもプログラミングのわかっている人なら、これを1つにまとめることなど造作もないだろう。それはそう思うのだけれど、とりあえず素人としては、用が足りれば十分。これでしばらくしのげそうだ。
posted by 松本 at 00:13| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年07月17日

synfig studioでアニメ制作

しばらくエントリを書かなかったのは、Ubuntuを使わなくなったのではなく、新しいことを試す時間がなかったからだ。この春からメインの仕事に新たな分野が加わったのだけれど、これがなかなか手強く、時間をとられている。相変わらず文書をつくったり印刷物をつくったりと、Ubuntuの助けなければやっていけない毎日だけれど、それはこれまで積み上げてきたものでだいたい片付く。新たな技術や新たなアプリを必要とするものではない。Ubuntuそのものも安定してきていて、困ることもあまりない。したがって、ネタもない。あったとしても書く時間がない。

そんな毎日なのだけれど、数日前、小学5年生の息子が「アニメを作りたい」と言ってきた。パソコンでできないかという。彼には以前の私の愛機Inspiron mini 12を渡してあるので、「かんたんなものならできるはずだ」と請け合った。

以前、やはり息子のリクエストでpencilを試している。このときは、お世辞にも成功とはいえなかった。だが、原理はそのときにだいたい把握している。他のアプリもあるかもしれない。

探してみると、synfig studioがよさそうだとわかった。さっそく自分のマシンで試してみると、そこそこわかりやすい。そこで、息子のInspiron mini 12にも入れてみることにした。

その前に、システムのアップデート。なにせあんまり使っていないマシンだから、大量にアップデートがある。その後再起動したら、起動しない。ここはpoulsboの呪いだ。すっかり忘れていたが、アップデートは慎重にしないとこういうことになる。調べてみたら12.10以降では改善しているようなので、いっそ新規インストールと考えた。ここからのことは長くなるので、余力があれば別エントリにしよう。

ともかくも、アップデートが終了し、synfigのインストール。13.04ではリポジトリにも入っているようだが、ここは公式サイトからダウンロードしたdebファイルを使用。リポジトリのものはなぜか動作しなかった。ひょっとしたらなにか勘違いかもしれないが。

さて、このsynfig、ベクターグラフィックをタイムラインにそって、いくつかのキーフレームで移動させれば、その間のコマを自動で補完してくれるというすぐれもの。ごく基本的な操作だけネットの情報を頼りに把握してそれを息子に伝えたら、1日で(ほんの4秒間だけだけれど)、「不死鳥が炎のあいだを舞う」動画を完成したのには驚いた。いまどき、小学生の方がカンが優れているのかもしれない。

Synfigは基本的にベクター画像を扱う。ビットマップも描けるようだが、ビットマップに関しては別途描画用のソフトで用意する方が賢いようだ。それをインポートして背景にし、その上でベクターを移動させるとうまくいく。息子がもう少し上達したら、技を盗んでやろうかと思う。


posted by 松本 at 13:04| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年04月18日

LibreOfficeで数式を組む

先日から子ども向けの数学の問題をつくっているのだけれど、これが案外と厄介だ。一つ前のエントリでフォントの問題を書いたが、実はフォントだけではない。もともとワープロは数式を組むようにはできていないので、きれいに組み上げることがなかなかできない。たとえば分数なんかは、OpenOfficeそのままでやろうとおもったら図形文字を利用するしかないだろう。文字枠の中に数字を入れて2行にし、上の行の文字に下線を修飾しておいてからその行間を75%程度にすればそれっぽくなる。これを必要な場所に持っていけば、なんとかゴマカシがきく。けれど、しょせんごまかしでしかない。何箇所もそういうごまかしをしていると、手間がかかる上に仕上がりがだんだんと醜くなる。これはよろしくない。

同じワープロソフトでもMS Wordには数式のエディタがある。LibreOfficeにも数式エディタはあるのだけれど、これは出力がPDFで、ワープロに数式を埋め込むことができない。かといって数式エディタをワープロとして使うには、文字の書式指定の能力が不足する。いまひとつ、役に立たない。

なにかいい方法はないかとリポジトリを調べていたら、Abi Wordに数式のプラグインがあることがわかった。Abi WordはGnomeの公式ワープロソフトで、LibreOfficeに比べれば知名度はいまひとつだけれど、歴史のあるワープロだ。私もUbuntu移行直後には何度か試用した。ただ、LibreOffice(当時はOpenOffice)の完成度がどんどん上がってきたので、その後、特に注目もしないできた。だが、数式がきれいに組めるのなら、使ってもいいかもしれない。

インストールしてみると、たしかにメニューの「自動テキスト」のEquationから数式を組むことができる。ただ、このダイアログに出てくるボックスには、Latexのフォーマットで数式を流しこむ。つまり、数式の処理自体はLatexでやってしまい、それを画像としてワープロ上に表示してしまえということらしい。

ちなみに、Latexは私なんかが解説を加えるまでもない伝統的な組版に特化したマークアップ言語で、理科系の学生の中にはこれでひいひいいわされる人びとが毎年一定数発生する、というものらしい。Latexの基礎となるTexについて私が初めて聞いたのはもう20年も前になるから、相当古いものであるのはまちがいない。組版技術としては相当のものらしいが、ページレイアウトの利便性ではWYSIWYGのDTPソフトにはかなわず、理数系の学術分野以外では常にマイナーな位置に置かれてきた。だから私も、使ったことがない。
言い方を換えれば、Latexがわかるぐらいなら、最初からLatexで数学のテキストをつくっているわけで、わからないからワープロソフトで組もうとして苦労している、といっていい。とはいえ、いまさらLatexを勉強するのも鬱陶しい。マークアップ言語でタグをゴリゴリ書いていくのは、たとえそれがHTMLでも勘弁願いたい世界だ。ちょっとなあと思う。

けれど、試しにごくかんたんな数式をそのままボックスに入れてみると、思いの外きれいな結果が得られた。ちょっと複雑なものに関しては特殊な記法があるようだが、これはWebを検索すればすぐに出てくる。やってみると、必要な分はどうにかなりそうだ。

ただし、Abi Wordは、やっぱりワープロとしてはLibreOfficeにかなわない。どうかなわないかというと、インライン変換ができない。ここにあるような方法をとればインライン変換もできるようになるらしいが、ここでふと気がついた。オープンソースな世界だから、Abi WordでできることはLibreOfficeでもできるように誰かががんばってくれているかもしれない。そこで調べてみると、TexMathsというプラグインを導入すれば、同様にLatex形式の数式をワープロ文書中に挿入できることがわかった。早速ダウンロードして適用。

ただし、そのままでは使えない。依存関係があって、Latexとdvipngというプログラムを予めシステムにインストールしておかなければならない。これはどちらもリポジトリにあるものそのままでOKなようだ。

ということで、LibreOfficeできれいな数式が組めるようになった。ワープロ編集画面中の数式の表示はたぶんAbi Wordはフォントがベクターデータなので、きれいだ。LibreOfficeはpngのビットマップデータなので、美しくない。けれど、プリンタで出力すればちがいはわからない。十分だろう。

どちらのワープロソフトも、Latexのデータを一方通行で画像データにしているので、一旦作成した数式の再編集はできないようだ。これはちょっと不便だが、その都度、Latex形式のデータをコピーしておくという運用で乗り切ることができる。これでずいぶんと、作業が楽になった。
posted by 松本 at 22:31| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年04月17日

数学の問題作成にStixフォント

数日前、子ども向けの数学の問題をつくろうと思った。中学生の数学で、xとかyの文字が出てくる。こういう変数は伝統的にイタリック体で表すことになっている。ただし、数学の教科書に出てくるイタリック体は、一般の欧文書体のイタリック体に比べてやや特殊だ。なかなかぴったりくるフォントがない。

それなら適切なフォントをダウンロードすればよかろうと、数式用のフォントで検索をかけると、Stixというオープンなプロジェクトのフォントがあることがわかった。公式サイトから入手ドできるようなので、早速ダウンロードした。そして、この圧縮ファイルを解凍してフォントフォルダに突っ込んでやったが、なにも起こらない。

よくよく見てみたら、どうやらフォントファイルの形式がUbuntuで扱えるものとはちがっている。とはいえフォントデータそのものはあるわけだから、なにか適切なプログラムで変換できるだろうと見当をつけた。ローカルで使うだけなら、それで問題はないはず。

けれど、フォント作成・変換のツールを探し始める前に気がついた。データの形式がちがうために壁にぶち当たったユーザーは私だけではないはずだ。オープンソースの強みは、その私以前の誰かをあてにできることだ。ずっと以前に誰かがこのStixフォントのデータをUbuntuで扱える形式、たとえばOTFに変換してくれているかもしれない。

そこでまずは手はじめにとリポジトリ内を検索してみたら、あっさりとotf-stixというプログラムが見つかった。これをインストールすることで、あっさりと問題解決。

このStixフォント、イタリック体の形式がいいだけでなく、組版で頭を悩ませるもととなる二倍カッコ、三倍カッコなどにも対応している。分数の組みはそのままでは対応していないようだが、カッコや積分記号などは不細工にそこだけフォントサイズを変えるというのではなく、そのまま書体だけ指定すればうまくいってしまう。これはなかなかいいかもしれない。
posted by 松本 at 08:24| Comment(2) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年03月31日

なんちゃってAndroidアプリの開発 - その2

前回少しもったいをつけすぎたかもしれない。端的にいえば、jsWaffleというツールを使えば、HTMLで書いた文書をAndroidのアプリにすることができる。それだけの話だ。だが、せっかくもったいをつけたのだから、私がそこにたどり着くまでの経緯を書いておこう。

Webサービスを使って.apkファイルの作成をする中で、「これって単純にHTMLで書いた文書を埋め込んでいるだけじゃない。だったら、そのぐらいのことはこのWebサービスでなくったってできるかもしれない」と気づいた私は、早速Googleに聞いてみた。検索キーワードはAndroid、HTML5、アプリ作成、そのぐらいだったと思う。その結果、すぐに出てきたのがこのスライドだった。

http://www.slideshare.net/kujirahand/html5javascriptandroidseminar

このスライドは非常にわかりやすく、Androidアプリ開発の中でのHTML5の立ち位置を示してくれていた。なるほど、「なんちゃってアプリ」程度ならHTMLでごまかすのがいちばん簡単そうだと、改めて自分のカンが当たっていたのを確認した。そして、そのためのツールとして、jsWaffleやPhonegapといった選択肢があることもわかった。

さて、となると、その線で一歩を進めたい。調べてみるとPhonegapの方が世界的にはユーザーが多そうで、その分だけ情報も多そうだ。けれど、jsWaffleは、上記のスライドの作者が開発者ということもあって、このスライドをそのまま追っかけていけば片付いてしまいそうだという手軽さがある。なによりもまず、ツールがUbuntuで動かなければならない。

さらに調べてみると、基本的に開発環境はクロスプラットフォームなことがわかった。だったら書かれている手順通りにいけばいい。

スライドには、Aptana Studio2を最初に用意するように書いてあるが、これはEclipseでも可能とのことで、それならとリポジトリからEclipseをインストールしかけたが、さらに調べてみるとその次に書いてあるAndroid SDK Tool(ADTプラグイン付き)というのをダウンロードするとオマケで最新のEclipseがくっついてくることがわかった。だから結局、下準備としてはAndroid SDK Tool(ADTプラグイン付き)をダウンロードするだけ。そのままバイナリで配布されてくるので、インストールの手間さえない。

次にjsWaffleのインストール。これは公式ページから。むしろこっちのほうが厄介で、というのは、これにはAdobe AIRで動くからだ。本来はjsWaffleのインストールでAdobe AIRが自動でインストールされる手はずなのに、Linux版のAdobe Airがサポート外になってしまっているため、ここが通らない。結局手動で非サポートのAdobe Airをインストールし、その上にやはり手動でjsWaffleをインストールすることになる。たぶんここがいちばん手間がかかった。

インストールが済んでしまえば、あとは公式ページやスライドにあるインストラクション通りに進めるだけ。そして、たしかに/asset/www内にあるindex.htmlを書き換えるだけで、あっさりと「なんちゃってアプリ」ができてしまった。

一瞬まよったのは、「じゃあどうやってコンパイルするんだ?」ということ。これは心配無用、自動でbinフォルダ内に.apkファイルができている。これを実機にインストールするだけ。なお、私の使っていたパソコンは非常に非力なので、デモ環境でテストするよりも実機でテストする方が早いという情けない実情だった。

このあと、アイコンの変更やら何やらと追加の作業はあるのだけれど、基本的にはこれだけでアプリができてしまう。jsWaffle恐るべしだ。

posted by 松本 at 14:00| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年03月29日

なんちゃってAndroidアプリの開発 - その1

私はプログラマではない。20年ぐらい前には少しだけプログラミングに興味をもったこともあった。15年ぐらい前に(どんな言語だったかは忘れたけれど)「Hello World」だけは書いた。それがプログラミングに関する知識の全てだった。

けれど、表計算シートのマクロからはじまって、ここ数年、少しずつ、少しずつ、プログラミング的な作業をするようになってきた。そして昨年秋には、ついにPythonで初歩的なプログラムを組んでみることになった。この話は一段落したらネタにしようと思い続けて、なかなか手をつけられずにいる。とるに足らない小さなプログラムでも、自分にとっては大変なプロジェクトだったのだから。

その大変な思いに比べたら実にあっけないほどかんたんに、この3日で「スマホ・アプリ」をつくってしまった。と言ったら話が太すぎる。「なんちゃってAndroidアプリ」というほうが実態に近い。けれど、とにもかくにも.apkファイルができて、端末にインストールできたのだから、驚いた。まさかできるとは思わなかった。

発端は、仕事に行った先の事務所の人が、「スマホのアプリってできない?」と言ったことだ。それが今週の月曜日。彼女が関係のイラストレーターからオープンなイラスト素材を入手した。それでもって「アプリ」ができて配布ができたらいいなと、その程度の話だった。

もちろん私は「できませんよ」と言った。いくら素材があっても、3日でアプリはできない。ちなみに私は月曜日と木曜日と金曜日に別件でその事務所に仕事に通うことになっていた。たいして忙しい仕事ではなく待ち時間が大量に出るので、その空き時間でなにかできないことはないだろう。けれど、やったこともないアプリ開発なんて、3日でやるのはありえない。

けれど、半端な時間は十分にある。だったら、せめてやり方だけでも調べておくか(その上で「この程度でできますよ」とか提案できれば次の仕事になるかもしれないし)と、検索を始めた。

このときに思い出したのは、以前にネタ系のブログをやっていたときに行き当たった「アプリをつくるWebサービス」だ。ブラウザ上でインタラクティブにコンテンツを指定していくだけでアプリができるという。さがしてみると、確かに私の記憶にあったサイトを含めていくつか類似のサービスが出てきた。そのなかで比較的使いやすそうだったのがhttp://ibuildapp.com/で、ここでポチポチとコンテンツのアップロードを始めたら、夕方帰る前には.apkファイルができてしまった。スマホのメモリカードにコピーしてインストールすると、確かに動く。サイトに「5分でアプリができる」と書いてあったのは大げさとしても、実際にコーディングゼロ、数時間でアプリができてしまった。

けれど、勘違いしてもらっては困るのは、私は英文のこのWebサービスをけっして推奨しようとは思わないことだ。できたアプリの動作は重く、広告は見苦しく、そしてなによりも「これって本当に安全なの?」という疑念を晴らせなかったからだ。もちろん、怪しいサイトではないのかもしれない。けれど、そうでないと言い切る証拠もない。危ない橋はわたらないのが安全だ。私はすぐにそのアプリを削除した。念のため、端末の初期化までやっておいた。安心のために。

ただ、このWebサービスを使い、あるいは類似のいくつかのサイトを試用してみて、わかったことがある。これらの「アプリ作成サイト」は、基本的にはたいしたことはやっていない。いくつかの方法は選択できるようだが、最も単純にはHTMLをアプリとしてコンパイルしているだけだ。HTMLの中にはJAVA scriptも組み込めるからそこまでやったら相当高度なアプリもできる。そこまでやらなくても、ホームページのインタラクティブな文書、つまりはリンクをつけてコンテンツのあいだを移動するようなことだけでも、「はい、アプリでございます」とコンパイルすることができる。「なんちゃってアプリ」だ。

私が月曜日の午後に片手間につくったのは、そういう種類のアプリだった。だが、もしもHTMLをコンパイルするだけでアプリができるのだったら、そのためのツールぐらい出回っていてもおかしくない。Webサービスを使って実地にやってみることで、そこに思い至った。じゃあどんなツールがあるんだろうと探したら、なんともご機嫌なツールが見つかった。その話は次回においておこう。
posted by 松本 at 21:41| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年03月06日

いまさらながらにGoogleのナビが便利

カーナビは、長く夫婦喧嘩のタネだった。どこか新しい場所に車で出かけるたびに、妻がカーナビが必要だという。私は、月に1度使うかどうかわからないようなものに高いお金をかけるのはばかげていると返す。平行線のまま、いつも空気はわるくなっていた
そのうちに、Googleがナビをリリースして、私は妻に、「いまにカーナビなんて買うのは時代遅れになる。タブレットを車にセットしたらそれでカーナビ代わりになるんだから」と言った。これがますます事態を剣呑なものにした。なぜなら、スマホもタブレットも、お金のない私たちには無縁のものだったからだ。

けれど、妻は2年前にiPhoneユーザーになった。ただ、それですぐに事態が解決したわけではなかったのは、当時のiPhoneのGoogleのナビは、音声案内がなかった。だから、相変わらずナビ問題は消えなかった。音声案内なしでは、ドライバは画面を注視しなければいけないので、実用上問題がある。
一方の私は、1年半前にAndroidユーザーになった。Android版のGoogleのナビは、音声案内もある。そこで少し試用してみたが、このときは使い方がいまひとつよくわからなかったのと、たぶんイオン通信のレスポンスの悪さ、そしてIDEOSの電池の持ちの悪さで常用するには至らなかった。なにせIDEOSはナビで使っていると電池が数時間で尽きてしまう。これではどうにもならない。

最終的にナビ問題を解決したのは、昨年AppleのiOS付属のマップの悪評散々の中、Googleが満を持してリリースしたiOS用のマップとナビだった。これはほぼ完璧なナビ機能で、なんの文句もない。たしかに電池食いではあるが、これは車のシガーソケットから充電するケーブルを用意することであっさり解決した。よく見れば百均でさえそんなケーブルは売っている。私のIDEOSも、IIJのSIMに変更したこともあって、ケーブルさえ刺せばナビとして十分機能することがわかった。妻はFMトランスミッター付きのクレードルまで買ってきて、これでナビと音楽の問題が一気に解決した。

と、前フリが長くなったが、先日、中古3,000円のXperia SO-01Bを買って、IDEOSとの変化でまっ先に気に入ったのがこのGoogleのナビだった。おそらくAndroidのバージョンがIDEOSは2.2なのに対してXperiaは2.3とひとつ高いことが関係しているのだろうが、ナビの機能が一段と進歩している。たとえばiPhoneのナビでは経路の設定から外れて進行するとすぐに計算をしなおして新しい経路で案内を再開してくれるのに、IDEOSのナビでは経路を外れたまま、元の経路に戻るか設定をやり直すまで案内は中断していた。これはちょっと面倒だったが、XperiaではiPhone同様にすぐに新しい経路に導いてくれる。UIも少しちがっているようだ。

使い込むほどに便利さがわかってくるGoogleのナビは、これだけでスマホをもつ価値を感じさせてくれる。月額1000円とか500円のSIMカードが出まわるこの頃だから、最安でカーナビを用意する方法のひとつかもしれない。中古の端末を数千円で手に入れられるのだし。
posted by 松本 at 08:32| Comment(0) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2013年03月04日

いまさらながらに初期のXperiaを買った

スマホユーザーになったのは一昨年の10月だから、1年半にはならない程度だ。「小さなパソコン」であるスマホには、それ以前から非常に興味はあった。けれど、このときスマホを買ったのは、単純にもう一台の電話が必要だったからだ。月1,000円のイオンSIMと中古で1万円ちょっとの日本通信のIDEOS、それに月額500円の日本通信のモバイルIPフォンを組み合わせれば、単なる携帯電話としても最安に近い出費で最低限のスマホが持てる。そういう低レベルの話だった。

このIDEOSは、やはり相当に低スペックで、正直、電話として使うのは相当に厳しかった。けれど、Googleの各種サービスやTwitterなど、スマホならではの使い勝手もあり、まずは最低限こんなものといえなくもなかった。通信速度の遅さには正直辟易して途中でイオンSIMからIIJのmioに乗り換えたし、近々日本通信のモバイルIPフォンともおさらばして昨年秋から試用しているFusionのIPフォンに全面移行しようと思っているけれど、まあ、お世話になった端末だった。

ただ、しつこいようだけれど低スペックなので、昨年秋ぐらいから乗り換えを考えはじめていた。とはいえ金はない。中古のスマホの値段が下がってきているので、5000円を切ったら適当なものを買おうと思ってきた。そして実際、数カ月前から5000円程度でAndroid携帯の中古や新古品が出まわるようになってきていた。

ただ、そのほとんどがSIMカードが合わなかったり、状態が悪かったり、IDEOSよりはマシといえスペックが低かったりと、いまひとつ踏み切るのに二の足を踏むようなものばかりだった。ところがこの1ヶ月でさらに中古相場が下がってきていた。そろそろかなあと思っていたら、たまたま先週末、量販店の店頭で特売品のXperia SO-01を見た。3,000円である。いままで見た中で最安で、しかもあのXperiaではないか。

いや、たしかにソニエリは手放しでほめられるような製品をつくっているわけではない。ちょっと突っ走り過ぎたり、妙なクセがあったりというのがWebでの評判だ。けれど、やっぱりユーザーの信頼は得ている。スペックも悪くない。Android採用としては初代にあたる古い機種だけれど、当時はこれでもずいぶんと話題になったものだ。3,000円なら、昼飯を何回か抜いたと思えばそれで済む。念のため初期不良の交換ができることだけを確認して、買った。衝動買いのように。

さて、このXperia、ちゃんとIIJのsimも入って、なんの問題もなく動いている。拍子抜けするぐらいふつうだ。いちおう、使いはじめにあたってAndroidを2.3にアップデートした。やり方はいくらでもWeb上にころがっていた。Linux上からでも実行できたようだが、はじめそれがわからずに久々にWindowsを立ち上げたので、そっちからやった。だからよけいに、ここで書くことはない。

端末を移行するにあたってちょっとだけ面倒だなと思っていたのは、日本通信のモバイルIPフォンの撤収がまだできていなかったこと。電話番号の変更の通知が終わるまでIDEOSと2台持ちかなあと覚悟していた。けれど、按ずるより産むがやすしで、なんとXperiaにも日本通信のモバイルIPフォンのアプリはインストールできた。ちゃんと通話もできるので、なんの問題もない。気がつけば、すんなりと移行が済んでいた。

ただし、ひとつ気になる問題は残っている。それは、Xperiaの充電がときに失敗することだ。充電しているつもりでも、気がついたら電池が減っている。Googleに聞いてみると、どうやらこれはXperia SO-01固有の問題のようで、これで修理に出したという事例がいくらでも出てくる。どうやら充電用のUSBコネクタが弱点らしい。

ただ、いまのところ、これは運用で乗り切れそうな感じがする。検索で上がってくる事例ではいくら工夫しても充電ができない症状が多いようだが、このマシンに関しては端子の挿し直しをしたりシステムの再起動をしたりすればどうにかなりそうだ。だから、たぶん最初の持ち主もここまで我慢して使ったのだろうし、そして3,000円というような捨て値で売られる結果にもなったのだろう。まあ、初期不良の交換は1ヶ月以内なので、もう少しだけようすを見て考えようとはおもう。

それにしても、IP電話関連のアプリを2つも常駐させていると、電池の減りの早いこと。これはさっさと日本通信のモバイルIPフォンの方はおさらばすべきだろう。仕事の関係でちょうど3月いっぱいで終わりにすると都合がいいので、あと少しだけ我慢。

posted by 松本 at 20:44| Comment(0) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2013年01月29日

Soxは便利

以前、soxでカセットテープ音源のスピード調整という記事でAudacityなみの処理をコマンドラインから行うSoxというアプリを使った経験を書いたが、再びこのSoXを利用したので一例報告まで。

発端は、妻がBluetooth接続のスピーカーを買ったことだ。5年ばかり前の引越しの際に妻が長年愛用したカセットコンポを処分して以来、我が家にはオーディオ機器がなかった。今回買ったBluetoothのスピーカーは、オーディオ機器というにはあまりに貧弱だが、それでもたとえばテレビのスピーカーなんかに比べればはるかにマシで、いい音がする。ある意味、音質に限界のあるMP3ファイルの再生にはちょうど似つかわしいかもしれない。ということで、MP3プレーヤーとして使えるスマホを音源として、久々に音楽のある生活が戻ってきた。

ところが、ここで困るのがMP3ファイルの音のレベルの差だ。音源がレコードやCDならその1枚の中でレベルはきっちり調整されている。自分で録音したテープなら、録音するときにそのあたりは気を使ってできるだけ差の出ないようにしている(というか、はるか昔、「エアチェック」をやっていた高校生の私は、けっこうそのあたりに気を使ったものだ)。しかし、MP3ファイルはバラバラのソースからバラバラに入手したものをまとめて聞くので、レベルの差が気になる。曲が替わるたびに音量を変更するのは現実的ではないし、かといって突然大きな音になったり聞き取れなくなるのもの快適ではない。

ということで、MP3の録音レベルを統一する必要がある。Audacityでやれば簡単なのだけれど、いちいちファイルを開いてフィルタをかけ(「正規化」というフィルタでたいていはOKだ)、エクスポートするという操作をファイルの数だけ繰り返すのはたいへんだ。となると、SoXでバッチ処理がよかろうということになる。

調べてみると、SoXの正規化は、
sox infile outfile gain −n
というコマンドでOKなようだ。これをバッチでやるには(元ファイルが.ogg形式として)、

for i in `ls *.ogg`; do echo -e "$i"; sox $i a/$i.ogg gain -n; echo -e "$i.ogg"; done

というスクリプトになるようだ。なお、このコマンドは該当するファイルの存在するディレクトリにはいって実行し、実行前に予めそのディレクトリ内に「a」という名前のフォルダを作成しておく必要がある。このスクリプトの詳細な意味は、実のところ私にもよくわかっていない。前の記事に書いたスクリプトを必要に応じて変更しただけだし、そのさらに元のスクリプトの出典は、その記事のどこかにリンクをはってあるはずだから、必要な方はぜひたどってほしい。

ともかくも、これで録音レベルは揃った。音楽を聞くのもなかなか一筋縄ではないな。
posted by 松本 at 21:19| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする