>>2014年04月21日Openboxログイン時間制限用のスクリプトを書いた前回「MinecraftもどきのMinetestに息子がはまった」と書いたが、ゲームにはまって抑制が効かなくなるのも困るので、親子の間で時間制限をかけることに合意した。1日30分とか2日で1時間とか、いや1日1時間はしたいとか、いろいろ攻防があった挙句(もともとテレビは見ないし、Wiiもやめるという前提で)、1週間に5時間ということで落ち着いた。これをいちいち手作業で管理していたら大変だから、1週間に5時間しかつかえないように設定したい。Mintestそのものにはそういう機能はないので、外部からペアレンタルコントロールをかける必要がある。これはシステムのレベルでも行えないことはないのかもしれないけれど、たまたま他の必要からMintest専用アカウントをつくったので、このアカウントへのログイン時間を制限すればいい。なると、以前作成した「lxdeでペアレンタルコントロール」のスクリプトを改造すればいいのではないかと考えた。考えはじめてみると、1週間の時間制限というのは案外難しい。Pythonで書くとして、経過時間を外部ファイルに書き出して記録するのが実際的だなと考えた。週のはじめにその経過時間をゼロにリセットする。曜日を整数として取得すると月曜日が0だから、これを利用すればいいんだろうと考えた。考えたら、必ずしも毎日アカウントにログインするとは限らない。「月曜日ごとにリセットする」というスクリプトでは、たとえば初回のログインが水曜日だったら数値はリセットされない。最終のログインが週末とも限らないから、「前回のログイン曜日よりも小さなログイン曜日になったらリセット」というのも使えない。使わない週も可能性としてはあるわけで、そこまで考えたら、やっぱり日付を取得してきっちりと週のはじめを読んでやらないといけない。いうことで、次のようなスクリプトを書いた。例によって基本がわかっていない私は、あちこちから拾ってきたサンプルのつぎはぎである。公表するのも恥ずかしいようなものだが、私はプログラマではないので、プログラマにとって恥ずかしいようなことでも恥と思わずにできる。pynotify.Notification("制限時間になりました。--exit")別にconfig.iniという初期設定ファイルを作成しておく。内容は、[int]lastdate=2014-04-16totaltime=0という感じだ。これをOpenbox環境のアカウントでautostartに仕込んでおく。ここで重要なのは、スクリプト中に指定してある初期設定ファイルの場所を絶対パスに書き換えておくこと。cdでディレクトリを変更しておけばいいのかもしれないが、相対パスだと自動起動がうまく働かなかった。1分毎に設定ファイルを書き換えるスクリプトなので、うるさいといえばうるさいのだけれど、ゲームの終了時のイベントを読んで設定ファイルを記録するスクリプトを書けなかったので、しかたない。これでとりあえずは十分に役に立っているようだ。現在のところこのスクリプトでわかるように制限時間を経過すると1分だけ時間猶予を与えてから強制ログアウトするようになっている。なんだか息子はこれを逆手に取って制限時間後にログインし、1分だけ遊ぶというおかしなことをやっているようだから、ここは10秒ぐらいに短縮したほうがいいのかもしれない。「どうやって制限しているの?」と尋ねられたので、上記のような大まかな構造だけは説明した。息子はその設定ファイルがどこにあるのかを探し出したいらしいが(もちろん書き換えたいのだ)、それは秘密にしてある。それを探しだし、書き換えるぐらいの力量がついたら、ペアレンタルコントロールなんか不要になるんだろう。いつかそんな日が来ることを願っている。|2014年04月18日MinecraftもどきのMinetestに息子がはまった小学生とパソコンをどうつき合わせるかというのはなかなか悩ましい問題だ。近頃のパワフルなパソコン、特にオープンでたいていのアプリケーションがそろってしまうUbuntuなんかを使ったら、たいていのことができる。創造力を育むには絶大な力をもったツールだ。いう世界を味わってほしいし、そのためには早くからパソコンを与えたい。与えたら、それは動画再生装置かゲームマシンにしかならない。こちらが期待したような使い方を決してしてくれないのが小学生というものだ。それがわかっていたから、最初はブラウザを隠し、ワープロぐらいしかつかえないようにしたパソコンを与えていた。そのうちにアニメーションに興味をもつようになり、アニメ制作ソフトや画像制作ソフトをインストールした。初歩のプログラミング用の環境も整えたが、これはさすがに手に余ったようだ。適切な指導者がいればそうでもないのだろうが、私にはそういったことはできないのだし。やってそれなりにコントロールをかけてきたつもりではあるのだけれど、そのうちに表面から消えているブラウザの起動のしかたを覚えてしまった。しかたないのでペアレンタルコントロールをかけて検索ぐらいはできるようにしていたのだけれど、そうなると情報がどんどん入ってくる。今年にはいって、「マインクラフトをやりたい」と言いはじめた。それがゲームだというぐらいの知識は私にもある。調べてみたらLinux環境でもできるようだし、classicであれば対戦のようなこともなく、ひたすらものを作っていくだけのことらしいので、それはそれでありかなとも思った。その後いろいろあって、結局、ゲーム機(Wii)を卒業するのであれば、その代わりにMinecraftをやってもいいということにした。週5時間以内という制限をかけるという条件だ。このMinecraftだが、基本的には課金型のゲームのようだ。自分でサーバーを立てるつもりならその必要もないようすではある(ちがうかもしれない)。小学生というビギナーがネットのトラブルにまきこまれないためにも、できたらここはパブリックなサイトではなく、ローカルでちまちまとやりたい。サーバーを立てて稼働させるというのがよさそうだと考えた。いえ、私はプログラマではないサーバー構築は以前書いたようにBitNamiを使って試みたことはあるが、やっぱりあやふやだ。研究するにも時間がかかるが、あいにくとここのところ少し忙しい。手軽にできないかと考えていたら、MinecraftもどきのMinetestというゲームに行き当たった。これならUbuntuのリポジトリにも入っているから、数クリックで手軽に導入できる。Minecraftよりもシステム要件は低いし、とりあえずローカルではじめられるし、中身はだいたいMinecraftだし、ま、これでもいいかという気になった。試しに息子にやらせてみたら、気に入ってくれた。本物のMinecraftの方がいいようで、これで数カ月の猶予をくれる、というだけの話のようだけれど。現行版のMinetestには問題があって、日本語環境ではメニューがおかしなことになってしまう。使い方がわかってしまえばさほど問題ではないのかもしれないが、試しに動かしてみた私にはさっぱりだった。これはシステム環境を英語にすれば問題がなくなる。小学生の普段使いの環境は、やっぱり日本語のほうがいいだろう。使用時間の制限をかけなければいけない。Minetest専用のアカウントをつくり、そこにログインする時間に対して制限をかければいい。個別のアプリケーションの稼働時間のログをとってそれに対して制限をかけるのはちょっと私の手に余るなあと思っていたのだけれど、特定のアカウントに対する制限ならPythonのスクリプトで書けそうだ。いうことで、英語環境の専用アカウントを用意し、ここにはOpenBoxでログインさせることにした。Minetest実行以上の機能は不要だから。どんなスクリプトを書いたのか、それは次回にとっておこう。長い記事を書くのも辛いので。100%で送るパソコンライフの日常Ubuntuのある日々このブログはもともと「MacintoshでUbuntu」というタイトルで2006年にスタートしたもので、1年ほどたって別の場所に引っ越し、その際に現在のタイトルに改名しています。何度かの引っ越しを経て、ここにたどりつきました。今回、旧ブログもこのブログに合併し、カテゴリとして「MacintoshでUbuntu」として分類してあります。Ubuntuを使いはじめたその日から付けているブログなので、ずいぶんと古い記事が占める割合が多くなっています。そこで、ご覧になる方に、重要なお願いがあります。情報は古くなっている可能性が高く、また、私は決して専門家ではありませんので、内容をあまり信用しないでください。古いエントリで「あれができない、ここでトラブルを起こした」と書いてあっても、さらに新しいエントリで「あれは解決した」と書いてあることも多くあります。ブログ内検索も活用し、新しい情報で、なおかつそれを鵜呑みにせずに、自由な「Ubuntuのある日々」をお楽しみ下さいませ。私もubuntuです。すみません、取り乱しました。