トレースボックスを自作するには?

絵描き向けの話題です。

紙に描いた下絵をクリンナップするとき、下からライトを当て透かしながら作業出来る台が存在します。トレースボックスやライトボックスと言われる物で、写真家やアニメーター、漫画家が良く使っています。

このトレースボックス、昔は蛍光管が入った厚みのあるボックス型が主流でした。しかし、現在は技術の進歩と日本の狭い住宅事情が相まって、薄型が流行っています。この薄型のタイプはトレースシートやライトボードとも呼ばれており、LEDライトが使われています。大きさも厚みも画板と同程度なので、置き場所を取らないと言うメリットがあります。ですが、その薄さ故に見過ごせないデメリットも存在します。ライトが一体化しているため、寿命が来ても交換出来ません。そのため、コストパフォーマンスが悪く高額です。

そこで、旧来の蛍光管入りトレースボックスの購入を検討してみるのですが、満足の行く性能の物は普及価格帯には存在しません。どれも1万円を超えてしまうので、ホビーユースでは躊躇してしまいます。

では、自作はどうでしょうか?蛍光管と木材、配線をホームセンターで購入し、DIYしてしまった方がおりました。しかも、それなりに薄型です。

大改造!劇的ビホー→アクター 2 薄型トレースボックスの製作 (リンク切れ)

なんと、材料費は5000円以内、既製品の半額以下です。「本当に出来るの!?」と思われるかもしれませんが、構造が単純なので根気さえあればいけそうです。木材やスチール板で腕を乗せても耐えられる箱を作り、内部に蛍光管を仕込むだけですから。ただし、失敗したり途中で投げ出してしまったら、金銭的損失は大きいです。面倒くさいのが嫌いな方は素直に既製品を購入したほうがいいでしょう。

2017年追記:価格も下がってきて、安い物なら5000円以内で購入できたりします。A3以下で間に合うようなら素直に買いましょう。A2サイズなど巨大なものなら、まだまだ自作してもいいかもしれません。その場合は、LEDテープを使うのが吉。蛍光灯はそろそろ生産終了しますので。

トレース台はこちら。

自作用LEDテープはこちらからどうぞ。

自作用アクリル、塩ビ、ポリスチレン板はここから。

アレックス・ロス、コミックをアートにまで押し上げた人物

アレックス・ロス公式サイト

彼はアメリカのコミック作家です。かつて、年老いたスーパーマンやバットマン、アメリカの象徴アンクルサムを扱ったコミックを芸術的な絵柄で描き上げました。その作風は1コマ1コマ丁寧にアクリル絵の具を使って仕上げていきます。枚数とスピードが要求されるコミックには向かない画風で描き上げられた世界は、圧倒的な存在感を醸し出し見る者を魅了します。

サイトにはタツノコプロのガッチャマンらしき絵もあり、そのサイン本も売られていたようです。手に入れられなかったのが残念です。あのガッチャマンの滑稽なタイツ姿を魅力的に仕上げる画力は流石です。

Linuxでのntpdateとcronを使った時刻合わせ

Linuxでの時刻合わせを自動化してましょう。この処理はntpdで合わせたほうが、より正確に調整できます。今回は、それほど気にしないのでntpdateを1日1回cronで起動するようにしました。コンソールから"crontab -e"を実行後、次のように記述。

0 0 * * * /usr/local/bin/ntpdate -s kudpc.kudpc.kyoto-u.ac.jp > /dev/null 2>&1

cronに直にコマンドを書かず、編集しやすいようにスクリプトに書き出しておいてもいいでしょう。私の場合は、次のスクリプトを/usr/local/bin/ntpdate.shとして保存しました。

#!/bin/sh
# UNIXの時間をサーバーに合わせる。
# -s 結果は /var/log/messagesへ出力。
# ntp serverは http://www.jst.mfeed.ad.jp/network.htmlを使用。
#
/usr/sbin/ntpdate -s ntp1.jst.mfeed.ad.jp \
ntp2.jst.mfeed.ad.jp \
ntp3.jst.mfeed.ad.jp
#
# マザーボードの時間を UNIX TIMEに合わせる。
/sbin/clock --systohc

上記スクリプトをcronとして設定。どのアカウントでも機能するように、root権限で/etc/crontabに書込みます。

00 00 * * * root /usr/local/bin/ntpdate.sh

最後にcronを再起動してセット完了。

$ /etc/rc.d/init.d/crond restart

DiCEでDDNSを運用してみる

私は固定IPを保有していないので、ネット再接続時にIPが変わると、自宅サーバへ外部からの接続が不可能になります。そこで、DDNS用更新ソフトにDiCEを導入しました。これはIPの変更を検知してDDNS設定を自動的に書き換えてくれるソフトです。LinuxPC起動時に自動的に常駐するよう、/etc/rc.localへdicedコマンドを追記しましょう。

/usr/bin/local/dice/diced -d -l

もし、DiCEを使いたくない場合は、ディストリビューションパッケージに含まれるWgetを駆使して、HTTPリクエストを送ることでも実現可能です。

ProFTPの設定方法

Vine Linuxでの設置方法です。FTPには標準ディストリビューションのProFTPを使うことにします。パッケージから探してインストールしましょう。

次に難解な設定です。構築するディレクトリ構成は、少し特殊にしてみようと思います。rootの下にあるpubディレクトリは、全FTPアカウントで共通、同一ディレクトリを表示させる。そこを読み取り専用で公開し、更新モジュール等を管理側から提供できるようにする。FTPユーザ側から見ると下記のようになります。

root (0777)
|
|-pub (0744)

ここでつまづいたのが、この共有ディレクトリpubの作り方。Windows環境でFTPを運用していたときは、WarFTPの機能でバーチャルマッピングで自由に構成可能でした。しかし、ProFTPにはそんな便利な機能ありません。探しに探して行き着いたのはmount。Linuxのファイルシステムを利用しろと言うことです。詳細は/usr/share/doc/proftpd-x.x.x/howto/Chroot.htmlの文末に載っています。ProFTPの機能だけを検索していたばかりに、このシンプルな解答に気づかず苦労しました。灯台下暗し…皆さんも探し回る前にまずはマニュアルを熟読してください。

mount情報は再起動すると初期化されてしまいます。そこで、これをPC起動時に自動的に反映させるようにします。起動時に必ず読み込まれるスクリプト/etc/rc.localに以下の要領で追記。

$ mount --bind olddir newdir <-olddirが共有元

これでnewdirにアクセスするとolddirが操作できるようになります。ちなみに、300個ほどマウントしても大丈夫らしいです(詳細)

次はWAN側からの接続を受け入れるようにしましょう。ProFTPは標準ではPORTコマンドを受付けません。固定ポートが空いてしまうのでセキュリティ的な問題からでしょうか。私も通常ポートの21番は避けたいので、全く別のポートをPASVモードで使用するようにしました。

また、動作方法は、inetd経由でセッション毎に起動するように変更。個人利用ということもあり、メモリ節約のためにデーモン起動での常駐は外しました。少々動作が重くなりますが、セッション毎に設定ファイルを読直すので、DDNSでのIP変化にも対応できるというメリットがあります。

まずはFTP通信ポートの設定、21番以外にしたい場合、inetd設定のためにポート定義名を/etc/servicesに追加します。

ftpEX xxx/tcp <-xxxはポート番号、定義名はftpEX
ftpEX xxx/udp

この定義名(ftpEX)を使って/etc/inetd.confに起動条件を追記してください。tcpwrapperを使って後々通信制御をしたいのでtcpd経由で起動させるようにします。

ftpEX stream tcp nowait root /usr/bin/tcpd in.proftpd

以上でinetdで動作させる下準備は整いました。

お次は一番悩むftpdの詳細設定です。/etc/proftpd.confのコメントやマニュアルを参考にして設定しました。また、パソコンおやじさんのProFTPD設定も参考にしています。

Port xxx <-/etc/servicesと同じ番号にする
MasqueradeAddress xxx <-ルータのWAN側アドレス又はドメイン名(DDNS等)
PassivePorts xxx yyy <-最小ポート番号 最大ポート番号
ServerType inetd <-inetd起動<
DefaultRoot ~/ftp <-各アカウント以下のftpディレクトリをルートとするように設定

LogFormat allinfo "%t :  %u (%a [%h]) : [%s], %T, %m (%f)"
LogFormat write "%t : %u : %F (%a)"
LogFormat read "%t : %u : %F (%a)"
LogFormat auth "%t : %u (%a [%h])"

ExtendedLog /var/log/proftpd/all.log ALL allinfo
ExtendedLog /var/log/proftpd/write.log WRITE write
ExtendedLog /var/log/proftpd/read.log  READ read<
ExtendedLog /var/log/proftpd/auth.log AUTH auth

UseReverseDNS off
IdentLookups off

# Allow clients to resume downloads (default on)
AllowRetrieveRestart on
# Allow clients to resume uploads (default off)
AllowStoreRestart on
# The maximum number of clients allowed to connect per host.(default none: no limit)
MaxClientsPerHost 3
MaxClients 30
# Sets the idle connection timeout (default: 600)
TimeoutIdle 300

<Directory ~/pub>
<Limit READ DIRS RETR>
AllowAll
</Limit>
<Limit WRITE STOR DELE MKD RMD RNFR RNTO SITE_CHMOD>
DenyAll
</Limit>
</Directory>

デーモン常駐はさせないのでサービスはオフに変更です。

最後に、inetdを-HUPオプションで再起動させて設定完了。

$ chkconfig proftpd off
$ chkconfig --list proftpd
$ killall -HUP inetd