:::: MENU ::::

C.a.T!

CATch a TAIL!

Japanese sub culture and tech.

  • 9月 09 / 2012
  • 0
engineer, java

logbackを使う

昔はJavaにおけるロギングフレームワークといえばcommons-logging、log4jあたりが鉄板でしたが、今はlogbackslf4jあたりが鉄板なのかなと。
というわけで、logback+slf4jを使うための設定をまとめてみます。

自分はMavenを使ってモジュールのBuildをしているのでMavenのコンフィグレーションです。
まず、必要な依存性として以下を定義。

[code lang=”xml”]
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-ext</artifactId>
<version>${org.slf4j.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${org.slf4j.slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${ch.qos.logback.logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${ch.qos.logback.logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>${ch.qos.logback.logback.version}</version>
</dependency>
[/code]

あと、commons-loggingやlog4jのライブラリが依存に入っていると競合して想定した動作をしてくれないため、これらのライブラリが使われていないことをチェックする定義を書きます。
これは、maven enforcer プラグインの力を借ります。

[code lang=”xml”]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<searchTransitive>true</searchTransitive>
<excludes>
<exclude>commons-logging</exclude>
<exclude>log4j:log4j</exclude>
<exclude>org.slf4j:1.5*</exclude>
</excludes>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
[/code]

もし、このプラグイン設定をして Build でエラーが出るようなら、mvn dependency:tree コマンドで依存ツリーを表示し、commons-logging などが無いか確認します。
もし、使っているライブラリからの依存で読み込まれていたら、そのライブラリの dependency 定義で exclusion してやります。

[code lang=”xml”]
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
[/code]

これで、logback.xml を書いてやればOK。
logback.xml の書き方はあちこちに参考になる記事がありますのでそちらを見てみてください。
これで、変に依存ライブラリにログが吸い込まれたりすることもなく、ロギングコントロールを一本化できます。
ログはデバッグの要なので、ロギングフレームワークもしっかり固めておきたいところ。

  • 6月 18 / 2012
  • 0
engineer

landslideはHTMLプレゼンフレームワークとしてお手軽

時間無いなかさっとプレゼンを作らなければならないことがたまにありますが、そういうときに便利なのがHTMLプレゼンフレームワーク。
いろいろありますが、landslideというフレームワークがすごく便利。
何がいいってmarkdownで書けること。
markdownで書いて、コマンドでhtmlまたはpdfに変換して即プレゼンできる。
Ubuntuリポジトリにも入ってるのですぐ始められます。
吐かれるhtmlは、html5slides用のhtmlになります。
シンプルできれいな画面です。

landslide -i slides.md

で、CSSやJS、画像を埋め込んだhtmlが生成できるので、公開にも向いています。
PDFにもできますしね。

  • 5月 27 / 2012
  • 0
engineer

アメリカでプリペイドSIMを使う

サンフランシスコにいる期間は1週間程度だったので、いらないかと思っていたけどやっぱり街をうろつく時にすごく不便だったのでプリペイドSIMを買って日本から持って行っていたSIMフリーフォンに刺して使っていました。

その時のメモ。

最初AT&Tに行ったんだけどプリペイドは置いてない、と言われてT-Mobileを薦められた。

競合を勧めるってのもすごいなあ、と思いつつ近くにT-Mobileもあったのでそちらに行ってみる。

どんなメニューがあるのか全く知らずに言ったんだけど、とりあえず I’d like to buy a pre-paid SIM. と言ったら端末はどんなの使ってるのとか滞在期間聞かれた。I have Google nexus one. I’m going to stay here for ten days. とか答えると、じゃあ一日3ドルで通信し放題のプランがいいよと言われた。

正確には一日あたり200Mまでは3Gの速度で通信できて、それ以降は2G速度になるらしい。

あと、アクティベーションに10ドルかかる。

十分安いのでそのプランで契約。

後は、SIMのアクティベーションからテストまでお店の人がやってくれる。

お金を払って無事通信できるようになりました。

AT&Tは、通信し放題だと1ヶ月の契約が必要になったみたいなので、旅行とか短期で使うならT-Mobileの方が安上がりかも。

やはり、行ったことない場所、外国は情報収集がしづらい状況もあるので、ネット使えるとだいぶ安心感上がります。

海外を旅する時用にSIMフリー端末を1個持っておくと便利。

対応してくれたにいちゃんが、フランクで日本に親戚居るんだよとか、近辺のオススメの場所とか教えてくれました。

日本の親切さとちょっと違うんだよなあ。

  • 5月 18 / 2012
  • 0
engineer

サンフランシスコ ベイエリアをうろついて

仕事でだけど、今、サンフランシスコに来ている。

1週間という非常に短い期間だけど、とても刺激的だ。

ほんの少ししか触れてないけど、感じた日本との違いとかをまとめてみたい。

こっちでは、基本的に昼間は仕事して夜はこっちの開発者ユーザグループのイベントに参加して過ごした。

最近は、日本でも開発者ユーザグループのイベントとか勉強会が多くなってきたが、こちらは数もさることながら、スピーカが豪華。

有名企業の人があたりまえのようにやってくる。

今日は、Yahooの人とかNetfixの人が喋ってた。

この企業のオープンさは日本にはまだまだ浸透していない。

オープンにすることによって、パートナを得たり、優秀な技術者を得たり、いろいろメリットがある。

あと、日本の勉強会とかに比べて、年いってそうな人が多かった。

自分よりずっと年寄りがたくさんいる。

そのへんは、ディベロッパがコードを書くことに対する評価が高いからだろうか。

あと、こっちではやはり起業に対する学生や若い人の意識が高い。

いい企業でそれなりの金をもらったら勝ちではなく、起業して自分で事業を起こさないと勝ちとは言えないと思っている。

思っているというより、大学でそういうことを植え付けているようだ。

Stanford大学とのご縁で来ているので少し授業なども受けさせてもらったのだが、起業に関するものが結構多い。

SpotifyのCo-founderなんか呼んでるセッションもあった。

最近は日本でもこういうことやり始めているのかもしれないけど、学生の意識はまだ低いように思う。

それは、起業というものに対する障壁の高さも影響はしているとは思う。

こちらでは、エンジェル投資家もたくさん居るし、VCが供給するお金も日本と比べてケタ違いだ。

その辺の環境の違いからあきらめている、ということかもしれない。

この辺は、日本からも少しずつ世界的なサービスが出てきているので、改善はされると思う。

シリコンバレーに言って起業すればいい、というのは日本にとって損失なので国ももっとサポートすべきかもしれない。

とまあ、相変わらずチャンスに満ちた国だなあと実感した。

アメリカンドリームってまだあるんだなあ、と。

あとどうでもいい違い。

とりあえずお店とかオフィスに行くと「調子はどうだい?」「ばっちりだよ。昨日はこんなことあったよ。」みたいなやりとりが必ず行われる。なんかネタ用意しておかないと結構困る。ホテルとかで会う全然知らない人にも言われる。

大学キャンパス内の人密度が低い。Stanford独特かもしれないけど、日本の主要な大学に比べて明らかに人が集中していない。お昼時でも。いろんな場所にカフェとか食べる場所があるのも影響しているのかもしれない。

プールがどこでもある。小さなホテル、モーテルでもある。法律で義務付けられているのかと思うほどある。

ポテト食い過ぎ。ハンバーガ屋とかでセット頼むと、ポテトだけでおなかいっぱいになるぐらい盛られる。みのりん並。

バスが適当。時間も適当だし結構適当に止まって下ろしてくれる。

日本食流行ってるらしいけど、怪しい日本食。ラーメンを食ったが、なんともおかしな味付けだった。寿司は割とまともだったが、友人がエビの天ぷらを頼んだところ、エビチリが出てきたりいろいろおかしい。

車のマナーがいい。スピードは出すけど、きちんとルールを守るし、歩行者をきちんと優先してくれる。信号がない横断歩道で待ってると、大体止まってくれる。

ライバルのお店を勧めるおおらかさ。AT&TにSIM買いに行ったら、店員が「プリペイドはないです。あっちのT-Mobileで買えるよ。」と教えてくれた。おおらかだ。T-Mobileの人もすごい親切だった。

電車の本数が少ない。1時間に1本とかしかない。車の国なので仕方ない気もするが、もう少しなんとかしてほしい。

ただ、総合的に考えると日本より住みやすい気がする。

保険とか高くて大変だけど、おおらかさと昔の日本みたいなローカルコミュニティがまだ機能しているので、困ってもなんとかなりそう。

というわけで、会社やめてこっちに住みたい。

  • 12月 18 / 2011
  • 0
engineer

ASUS webstorageを使ってみた

だいぶ前に買った ASUS Transformer に、1年間の無料利用権が付いていたので今さらながらASUSのストレージサービスを使ってみた。

有料プランは容量は無制限。

年間使用料も30ドル弱(2400円ぐらい)と他のサービスと比較して異様に安い。

利用形態は、Dropboxのようなクライアント-サーバ同期型。

WindowsとMac用のクライアントがあります。

Webからアップロード、ダウンロードもできる。

モバイル用クライアントも、iPhone、Androidと一通り揃っている。

で、肝心の使用感ですが、とにかく遅い。

安かろう、悪かろうという言葉がぴったり。

なんというか、複数のマシンで同期させる使い方にはお勧めできない。

使い方としてはバックアップ用途なら結構いい選択肢かもしれない。

なにしろ容量無制限だしね。

年間2500円ぐらいならそんなに悪くないでしょう。

というわけで、とりあえず自炊本のバックアップとして使ってます。

数十Gあるのでアップロードにものすごい時間がかかりますが、まあ放置しておくだけなので気にならない。

1Tぐらいある音楽とかも上げるかどうかは迷うところ。

年末クーポンで20%オフなので、追加で1年分購入しておいた。

まあ、突然サービスやめるとかリスクは高そうだけど2000円以下だったし。

速くて安いストレージサービスが欲しいですねえ。

  • 4月 13 / 2011
  • 0
engineer

TwitterクローンのStatusNetを使ってみた

バックアップの完了イベントとかBuildの完了イベントとかを通知する汎用的な手段が欲しいなあ、と思っていて、普通に考えるとIRCということで会社で採用しようとしたのですが、思いの他IRC文化がなく、なかなか浸透させれずにいました。

それで別の手段を考えたわけですが、まあWebならみんなさすがに使えるでしょ、ということでTwitterクローンに通知する作戦に変更。

Twitterクローンで結構良さげなStatusNetというのを構築してみました。

その辺のメモ。

うちはユーザデータベースをLDAPで持っていて、そちらで認証させたかったのですが、思いのほか情報が少なかったのでまとめてみました。

Ubuntu へのインストールケースで書きますが、他のディストリビューションでもほとんど苦労しないと思います。

まず、関連パッケージのインストール。

# sudo apt-get install mysql-server mysql-client
# sudo apt-get install apache2
# sudo apt-get install php5 libapache2-mod-php5 php5-cli \
php5-common php5-curl php5-gd php5-ldap php5-tidy \
php5-xmlrpc php5-suhosin php5-memcache php5-mysql \
php5-dbg php-apc php-mail-mime php-mail-mimedecode
# sudo apt-get install prosody
# sudo apt-get install memcached

次に、StatusNetのアーカイヴをApacheで公開可能なディレクトリに解凍します。

ここでは、/var/www/statusnet に解凍したとします。

オーナは、Apacheユーザにしておきましょう。

解凍したアーカイヴの直下に、config.php.sample というのがあると思います。

これが設定ファイルのサンプルですが、ごちゃごちゃしてるので使いません。

同じ直下に config.php というファイルを作成し、以下のように設定します。

  • config.php
<?php
if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
// 基本的な設定
$config['site']['name'] = 'サイトの名前(necotter)';
$config['site']['server'] = 'サイトを運営するサーバ(example.com)';
$config['site']['path'] = 'サイトのパス(necotter)';
$config['site']['fancy'] = true;
$config['db']['database'] = 'mysqli://statusnet:パスワード(necopass)@localhost/statusnet';
$config['db']['type'] = 'mysql';
$config['mail']['check_domain'] = false;
$config['mail']['notifyfrom'] = '通知メールのFrom(Necoadmin <[email protected]>)';
$config['mail']['domain'] = 'メールアドレス生成に使うドメイン(example.com)';
$config['mail']['backend'] = 'sendmail';
$config['mail']['params'] = array(
'sendmail_path' => '/usr/sbin/sendmail',
);
// LDAPの設定
addPlugin('apacheAuthentication',
array('provider_name'=>'LDAPの名前、なんでもいい(necodap)',
'authoritative'=>'ture',
'autoregistration'=>'false',
'domain'=>'ドメイン(example.com)',
'email_changeable'=>'false',
'password_changeable'=>'false',
'password_encoding'=>'ssha',
'host'=>'LDAPサーバホスト(localhost)',
'port'=>'LDAPサーバのポート(389)',
'starttls'=>'false', // LDAPS使うならここはtrue
'binddn'=>'管理者ユーザのDN(cn=admin,dc=example,dc=com)',
'bindpw'=>'管理者ユーザのパスワード(necopass)',
'basedn'=>'ユーザのベースDN(ou=People,dc=example,dc=com',
'scope'=>'sub',
'attributes'=>array(
'username'=>'ユーザIDに使うLDAP属性(uid)',
'nickname'=>'ニックネームに使うLDAP属性(uid)',
'email'=>'メールアドレスに使うLDAP属性(mail)',
'fullname'=>'フルネームに使うLDAP属性(cn)')
));

続いて、Apache の設定です。

ちょっと変なのですが、Apache側でLDAPで認証させてそれをもってStatusNet側の認証も通すのですが、StatusNet側ではフルネームなどのアカウント情報を改めてLDAPから取得します。

StatusNet側の認証をLDAPで直接やるプラグインもあるのですが、どう設定してもうまく動いてくれなかったので、こんな方法をとってます。

  • /etc/apache2/site-avairable/necotter
Alias /necotter /var/www/necotter
<Directory "/var/www/necotter">
  # funcyURLの設定
RewriteEngine On
  # NOTE: change this to your actual StatusNet base URL path,
  # minus the domain part:
  #
  #   http://example.com/        => /
  #   http://example.com/mublog/ => /mublog/
  #
RewriteBase /necotter/
  ## Uncomment these if having trouble with API authentication
  ## when PHP is running in CGI or FastCGI mode.
  #
  #RewriteCond %{HTTP:Authorization} ^(.*)
  #RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?p=$1 [L,QSA]
<FilesMatch ".(ini)">
    Order allow,deny
</FilesMatch>
  # LDAPの設定
AuthType Basic
AuthName "necotter"
AuthBasicProvider ldap
AuthLDAPURL ldap://localhost/dc=example,dc=com?uid
Require valid-user
</Directory>

次にMySQLデータベース。

ユーザとデータベースだけ作っておきます。

# mysql -u root -p
mysql> create database statusnet;
mysql> grant all privileges on statusnet.* to statusnet@localhost identified by 'necopass';
mysql> quit;

この時点で一度 Apache を起動して StatusNet 上の設定の場合 http://example.com/necotter/ にアクセスして、問題なく画面が表示されることを確認しておきます。

実は、画面を確認することが目的ではなくて、データベースを初期化することが目的なのですが。

画面が問題なく表示させたら、再び mysql に接続して、データベースのスキーマを少し変更します。

これは、メールアドレスの重複を許すためのチートです。

StatusNetでは、メールアドレスが必須なのですが、Botを作り始めると同じメアドを使いたくなるので。

そういうことしないのであればこの操作はいりません。

# mysql -u statusnet -p
mysql> alter table user drop index email;
mysql> quit;

以上でおわりです。

これで、Twitterと同じような MicroBlog が立ちあがります。

APIもTwitterとほぼ同じなので、Botはほぼ同じ実装で機能させれます。

なかなかよくできていて、企業内の限られた人数で運用するにはぴったりと思います。

  • 1月 26 / 2011
  • 0
engineer

git のマージツールを設定する

会社で導入したら、周りの人間に使い方理解できないとか、意味不明なことを言われている git ですが、マージツールとかを使いやすいものに替えるだけでも障壁を下げれるのかと思いその辺の設定をまとめておきます。

マージツールのオススメは、マルチプラットフォームで動く Perforce Visual Merge and Diff Tools (p4merge) です。

こいつを git のマージツールとして設定します。

Mac前提でまとめますが、他の環境でも同じなので多分問題ないです。

まず、p4merge をインストール。

Macなので /Application にドロップするだけ。

次に、以下のようなシェルを書きパスが通ったディレクトリに保存して実行権を付けておきます。

Linuxとかなら P4MERGE 変数をインストールした p4merge コマンドに書き替えるだけ。

  • p4merge
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
${P4MERGE} $*
  • p4diff
#!/bin/sh
P4MERGE=/Applications/p4merge.app/Contents/MacOS/p4merge
[ $# -eq 7 ] && ${P4MERGE} "$2" "$5"

次に、git のグローバルコンフィグに以下のエントリを足して、git mergetool で使うツールとして p4merge を指定します。

  • ~/.gitconfig
[merge]
keepBackup = false;
tool = p4merge
[mergetool "p4merge"]
cmd = p4merge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
keepTemporaries = false
trustExitCode = false
keepBackup = false
[diff]
external = p4diff

これで、git mergetool でグラフィカルにサクサクマージしましょう。

  • 1月 17 / 2011
  • 0
engineer

Squidで中間Proxyを立てる

実験環境なんかで、プライベートなネットワーク組むことがよくあるのですが、その際外部ネットワークに HTTP だけは通したいことがよくあります。

OSのパッケージインストールとか、Mavenビルドとかね。

そういうときには Proxy を立てますが、いっつも忘れるのでメモ。

構成的には、プライベートネットワーク内のマシンは、ここで立てるProxyサーバを通して社内ネットワークに接続。

社内ネットワークには、インターネットに出るための社内Proxyサーバが別途立っていて、そこを通らないと Firewall が越えられない前提。

さらに、社内ネットワークのマシン群には、社内Proxyを通さずにHTTPする必要がある。

微妙に、特殊かもしれませんが。

使うのは定番のSquidです。

Ubuntu だと、

# sudo apt-get install squid

で、/etc/squid/squid.conf を以下のように。

#1

http_access allow CONNECT SSL_ports

#2

cache_peer parent.proxy-server parent 3128 7 no-query

#3

acl local-servers dstdomain my.internal.domain

always_direct allow local-servers

#4

never_direct allow CONNECT

#5

forwarded_for off

#1 で SSLポート(デフォルトで定義がある)への接続を許可。

#2 で 社内Proxy(parent.proxy-server)を親Proxyとして設定。これで、外へのアクセスは、社内Proxyへパス。

#3 で 社内ネットワーク(my.internal.domain) へのアクセスは社内Proxyにパスせず直接接続。

#4 で 社外ネットワークに接続する場合のSSL接続は、社内Proxyへパス(SSLはデフォルトで直接接続しようとする)

#5 で 一応IP隠す。

という感じ。

設定は、順番で動作が変わるのでその辺はまることがある。

  • 5月 29 / 2010
  • 0
engineer

スキャンした本をユビキタスライブラリ化する

ScanSnapで本をPDF化していくわけですが、ただPDF化するだけじゃなく、どこからでも見れるようなライブラリにしたい。
というわけで、以下のようなシステムを構築しました。

したいことは、

  • 普段使いのMacで読める
  • TVの画面で読める
  • iPhone、iPad等のモバイルで外出先で読める
  • スキャン後に面倒なことはしたくない

の4点。
で、システムは以下のようなシステム構成になりました。
f:id:clover-leaf:20100529140217p:image
メディアサーバ(media server) というサーバを1台用意して、こいつにPDFを保存して、いろんなところから見れるようにする作戦です。
宅内のMac(my computer)からは、pKizzyというPDF管理のソフトウェアを使いLANでライブラリを共有するようにしました。
外出したときは、iPhone、iPadのGoodReaderを使ってWebDAVによってライブラリにアクセスするようにしました。
もちろん、直接 iPhone、iPadに転送してもよいですが、ファイル数が増えると面倒になってくるので、必要なときに取りにいけるようにしました。
TVで見る場合は、メディアサーバがHDMIでTVに繋がっているので、メディアサーバでpKizzy+ビュア使って見ます。
この操作には、ロジのdiNovo miniがッピッタリ。
トラックバッドよりトラックボールの方がいいですけど。

今回PDFを見れるようにしますが、既に同じような発想で iTunes ライブラリが共有されていて、いろんな方法で iTunes ライブラリにアクセスできるようにしています。
ムービーをTVで見れるようにもなってます。

スキャン作業の方は、スキャンマシン(scan console) でスキャンした本を、できるだけ手間暇かけずにメディアサーバに転送してライブラリ化します。
これは、MacOSX標準機能の Automator を活用します。
これで、どこにいてもその状況にあった方法でライブラリにアクセスできて、かなり快適です。
自前サーバで運用していますが、WebDAVの部分はDropBox使うとかいろいろ応用はできます。
その辺は、みなさん好きなストレージを使えばよいかと。
私の場合、1000冊とか結構大きなライブラリになりそうなので、確実に有料コースでないと運用できないので、自宅サーバ上に構築することにしました。

構築、利用方法は次回。

  • 5月 17 / 2010
  • 0
engineer

ScanSnap + 裁断器を購入して自炊生活

f:id:clover-leaf:20100517224041p:image:w200

長らく迷っていたScanSnapによる本のPDF化にようやく踏みきりました。

現在の蔵書量を考えるときっと満足する買い物になるはず。

買ったのは定番の、ScanSnap S1500(M)PK-513L です。

さっそくマンガを使って練習してみました。

基本工程は、

1. 外側の表紙をはがす

慣れるとスルっとはがせるようになります。

ただ、あまり乱暴にすると多分やぶけてしまいます。

表紙、背表紙を順に丁寧に引っぱれば問題なし。

2. 1cm以上の厚みがある場合は分割

裁断器で切るときあまり厚いと切れないので適度に分割します。

分割するところでガバっと開ききってしまって、カッターで上からスルスル割きます。

ページを両サイドに開くように力を少し入れながら切ると、カッターの移動もスムーズ。

3. 表紙(カバー)を切る

まず、切る幅の設定ですが、本来の幅より5mm程度引いた幅で裁断します。

コミックなら12.5mm。

本によってはちょっと絵が切れたりしますが、製本状態ではどうせほとんど見えない境目なので気にしたら負けです。

最初に、表紙(カバー)を切ります。

まず、舌の部分を折りたたんだまま中心部分を裁断します。

切れたら、舌の部分を広げて、今度は舌の方を刃に向けて切ります。

これで表紙(カバー)ができます。

4. 表紙を切る

これはそのまま表紙の端をスケールにあわせて、中心部分を裁断。

5. 本体を裁断

これもそのままのりづけされている本の中心部分をザクっと切りおとします。

力を入れなくてもあっさり切れるので、ハンドルをぐいぐい押し付けしなくてもいい。

切ったらパラパラっとめくってみて、ページ間が繋っていないか軽く確認。

よくあるのは、カラーページと普通のページの境目はのりづけが多めなので、くっついていることがあります。

くっついていたら手でひっぱって分けます。

6. 裏表紙を切る

4で残った裏表紙の背の部分を切り落します。

4でやってもいいけど、順番に重ねていった方が作業がスムーズ。

7. 裏表紙(カバー)を切る

3で残った裏表紙(カバー)の背の部分を切り落します。

舌の部分も3と同じ要領で切ります。

これで裁断完了。

8. ScanSnapping

ScanSnapでスキャンします。

主な設定は以下。

  • 読み取りモード
    • 画質の選択: スーパーファイン
    • カラーモードの選択: カラー
    • 読み取り面の選択: 両面読み取り
    • 継続読み取りを有効にします: チェック
  • 読み取りモード > オプション
    • 文字をくっきりします: チェック
    • 白紙ページを自動的に削除します: なし
    • 文字列の傾きを自動的に補正します: なし
    • 原稿の向きを自動的に補正します: なし
  • ファイル形式
    • ファイル形式の選択: PDF
    • マーカー部分の文字列をPDFキーワードにします: なし
    • 検索可能なPDFにします: チェック
    • 対象言語: 日本語
    • 対象ページ: 全ページ
  • 原稿
    • 原稿サイズの選択: サイズ自動検出
    • マルチフィード検出: 重なりで検出(超音波)

ここで注意は、あまり一度にたくさん読み込ませないこと。

ジャムったり、複数枚同時にスキャンしようとしてしまったりエラーが起きやすくなります。

障害が発生するとかなりの確立でスキャン停止して、直してから継続スキャンできますが、時間のロスなので、小分けにした方が賢いです。

私は、30P弱にしてます。

30Pセット、スキャンボタン、スキャン完了、30Pセット、スキャンボタン、スキャン完了… を繰り返します。

9. 保存

保存するファイル名は、『[著者]作品名』という名前で保存します。

これは、管理ソフトに持っていくときに使います。

10. 管理ソフトに登録

このへんはややこしいので後ほど別エントリで書こうと思います。

こんな感じで慣れると数分で1冊処理できるようになります。

ScanSnapがまじ高速ですごい。

少しずつしかできないけど、徐々にスキャンして部屋を広くするぜ。

固定ページ:1234