暗号解読を読んだ

id:ogijunさんのところで見つけてそのままクリックで即買いしたもの。

暗号解読〈上〉 (新潮文庫)

暗号解読〈上〉 (新潮文庫)

趣味としての面白さも勿論あるけれども、自分がまだまだ経験薄プログラマのせいか、RSA暗号のできるまでの歴史的なところが知れたのはとても勉強になった。正直言って、頻度分析ですらも「そういう手段があるのか」と感嘆してしまった。
自分は公開鍵と秘密鍵の仕組みを理解するのにとても苦労したのだけれども、この文章に出会っていたならば一瞬で理解していたかもしれないなとか思った。なので、この本は暗号解読の歴史に見る面白さという面と、現在我々が使っている暗号の仕組みを勉強できる意味との両方の意味でお勧め。

暗号解読 下巻 (新潮文庫 シ 37-3)

暗号解読 下巻 (新潮文庫 シ 37-3)

最後の方の量子力学のところは半分くらいしか理解できなかったので、また別の知識がついたら読み返してみたい。

はてブをスライドショーにするツールを作った

以前、id:naoyaさんがはてなブックマーク棚卸しというのを書いていて、自分も年末なり何かしらの区切りで今までブックマークしたページを読み返してみようと思っていたのだけど、どうもはてなブックマークのページをカチカチめくってやる気になれず、結局自動で見せてくれるツールを作った。

Hateview
Hateview

例えばid:clonedだとこんな感じ。過去から順にブックマークを表示して、クリックするとwindow.openでそのページを開きつつスライドショーは一時停止する。右上についてるコントローラは多分想像通りの挙動なので適当に。
元々自分用に作ったものだけれど、公開されているブックマークならどのidでも見れるようにしたので、どうぞご利用ください。

出張 Shibuya.js 24 に行って来た

各々のセッションに一言感想。

説明巧いなぁ。上手いじゃなくて巧みの方。昔、EclipseデバッグモードでJavaを動かして初めて挙動がわかったこととかいっぱいあったけど、時系列で処理を見せてくれると物凄く判り易い。

Wikiを使ってるのは知らなかった。SPAMとかの課題が問題なければ、かなり現実的な方法かもと思った。

  • 新世代ブラウザのクロス開発まとめ

思っていたよりもブラウザ間の互換がとれてきているのね。

  • JSの JSによる JSのための マルチスレッド

JSのスレッドの手段が結局setTimeoutかsetIntervalしかないよね、というところで思考停止だったけど、中間コンパイル挟んで中々面白い実装だなぁと思った。

  • ECMAScript4 リファレンス実装

全然知らない内容だったので面白かった。確かにまとまるのは難しそう。

  • 5分でわかる Photoshop の正しい使いかた

このプレゼンのお陰でPhotoshopの売り上げが何パーセントか上がるのではないだろうか。コマンドラインのあれ、真面目にやりたいよ。

細かいところで愚直に頑張っているんだねjQuery、というのが伝わった。

素晴しく面白かった。あんなテンポのプレゼンは練習しても出来なさそうだ。

iGoogleのガジェットで使うJSのようなイメージかな。

fireに感動。

ma.laドメイン内ではてなドメインにアクセスしたら警告が出るGreasemonkeyでも作るか。

最終出社日

9月末で某検索エンジンの会社を退職することになりました。そして本日が最終出社日。
このブログを書いている間に一つの会社に入り一つの会社を去ることになった。入社したときの記事から見返していると何だか懐かしい。
大変お世話になりました。
10月からは新しい会社で働くことになります。今後とも宜しくお願いします。

原理を知ることの大切さ

shi3zの日記 – マシン語を知らない子ども達

話の骨子としては原理を知っていることの強みなのではないかと思う。ここでいう原理というのはかなり広義な意味でというか仕組みくらいの意味合いで。
どのようにして実現しているかを知っていると、凡そ的外れなことは考えないし応用が利くことが多い。また、できるできないの区別が付いたり、解決に必要な方法を見つけやすかったりすると思う。そして、これはプログラミングに限らず言えることだろうと思う。
ギターで例えると、音量の許容量にオーバーして波形の両端が矩形波のようになることが歪みなのだと知っていれば、入力が小さければ歪まないことにも、弱く弾いても強く弾いてもあまり音量差がなくなることにも違和感を感じない。闇雲につまみをいじるよりも簡単に音作りが覚えられる。あくまでも例え話だけれど。
原理を知ることは何かを学習する上での近道なのだと思う。原理の上で起こっている現象は無数のパターンがあって、それを覚えるのにはあまりにも労力と時間がかかる。けれども、原理に基づいて現象を計算できるようになれば、パターンの記憶はそれほど必要なくなるだろう。
だから、プログラムが動く原理、CPUやマシン語などを知っていることは、プログラムを学習する近道になるのだと思う。
ただし、原理を知るよりも現象を数パターン覚える方が早い場合もあるだろうから、やりたい事が出来るようになるための最善の方法論ということが一概に言えないところが悩ましいのだと思う。

APCのインストール

そういえば自宅サーバーにAPCを入れたときのログを貼っていなかったのでメモ。PHP6では組み込み予定みたいだけれども、まだ期間がありそうなので。

$ cd ~/download
$ wget http://pecl.php.net/get/APC-3.0.14.tgz
$ cp ./APC-3.0.14.tgz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./APC-3.0.14.tgz
$ cd ./APC-3.0.14
$ phpize
$ ./configure \
--enable-apc \
--enable-apc-mmap \
--with-php-config=/usr/local/php/bin/php-config \
--with-apxs=/usr/local/apache2/bin/apxs
$ make
$ sudo make install
$ sudo cp -p /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/apc.so /usr/local/php/lib/php/extensions/
# php.ini
extension=apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.stat=0

年俸制とか裁量労働制に対する正しい理解

このエントリの目標はシステムエンジニアなどにありがちな「残業代は年収に含む」とか「裁量労働制なので残業代は出ない」といった「本当に?」と思う事柄について、法律や判例では現状どのように判断されているのかということを概観すること。よって「細かいことを言うと人間関係がぎくしゃくする」というようなことは完全に棚に置く。正しいとされていることをまずは知りたいので。
きっかけとしては最近上司の横暴な話とかを周りの人からよく聞くので、今は自分自身の問題ではないけれど、明日には我が身と思って調べてみようと思った。
※できるだけ信用できそうなソースを参考にしたつもりだけれども、私は法律の素人なので間違いや勘違いがあるかもしれません。

労働時間

労働基準法では労働時間について定めている。

(労働時間)
第三十二条 使用者は、労働者に、休憩時間を除き一週間について四十時間を超えて、労働させてはならない。
② 使用者は、一週間の各日については、労働者に、休憩時間を除き一日について八時間を超えて、労働させてはならない。

労働基準法

では、この「労働させてはならない」労働を命令した場合にはどうなるのか。所謂、残業や休日出勤について。

(時間外、休日及び深夜の割増賃金)
第三十七条 使用者が、第三十三条又は前条第一項の規定により労働時間を延長し、又は休日に労働させた場合においては、その時間又はその日の労働については、通常の労働時間又は労働日の賃金の計算額の二割五分以上五割以下の範囲内でそれぞれ政令で定める率以上の率で計算した割増賃金を支払わなければならない。

労働基準法

このように割増賃金が規定されている。基礎知識として休憩と休日も引用しておく。

(休憩)
第三十四条 使用者は、労働時間が六時間を超える場合においては少くとも四十五分、八時間を超える場合においては少くとも一時間の休憩時間を労働時間の途中に与えなければならない。
② 前項の休憩時間は、一斉に与えなければならない。ただし、当該事業場に、労働者の過半数で組織する労働組合がある場合においてはその労働組合、労働者の過半数で組織する労働組合がない場合においては労働者の過半数を代表する者との書面による協定があるときは、この限りでない。
③ 使用者は、第一項の休憩時間を自由に利用させなければならない。

労働基準法

(休日)
第三十五条 使用者は、労働者に対して、毎週少くとも一回の休日を与えなければならない。
② 前項の規定は、四週間を通じ四日以上の休日を与える使用者については適用しない。
(時間外及び休日の労働)

労働基準法

「災害等による臨時の必要がある場合の時間外労働等」などの別規定を考慮する必要もあるけれども、基本的には上に挙げたものが適用される。
尚、労働基準法に違反する契約や就業規則は無効とされる。

(この法律違反の契約)
十三条 この法律で定める基準に達しない労働条件を定める労働契約は、その部分については無効とする。この場合において、無効となつた部分は、この法律で定める基準による。

労働基準法

振替休日・代休

代休を振替休日として処理されていることはないか。違いについては労働基準法のあらまし:〔3〕振替休日と代休の相違点に書かれている。休日に労働させられる場合には割増賃金が発生する。

就業規則

常時10人以上の労働者を使用する事業場では必ず就業規則を作成しなければなりません。
また、労働者が10人未満であっても、就業規則を作成することが望まれます。

就業規則作成の手引 – 東京労働局

このように定められており、ほとんどの会社で就業規則が存在するにも関わらず、就業規則を見たことがない人が自分も含めて自分の周りには多い。しかし、労働基準法第百六条には

常時各作業場の見やすい場所へ掲示し、又は備え付けること、書面を交付することその他の厚生労働省令で定める方法によつて、労働者に周知させなければならない。

労働基準法

とあるように、周知されるべきものである。

年俸制

労働基準法では年俸を規定するものはないようだ。よって12で割るなどした金額が月給ということになる。法的な根拠は労働基準法に定められている。

第二十四条 賃金は、毎月一回以上、一定の期日を定めて支払わなければならない。

労働基準法

では、年俸制における時間外労働はどうなっているのだろうか。

3. 問:年俸制でも必要ですか?
答:賃金の支払形態によって割増賃金の支払いが免除される規定はなく、時間外労働等に対し割増賃金の支払いが必要です。
なお、年俸に割増賃金を含むことが契約上明らかであり、割増賃金相当部分が他の部分と区別でき、かつ、法定金額以上支払われた場合は法違反ではありません。

大阪労働局:割増賃金

なるほど、年俸制ということかどうかは関係なく時間外労働なら割増賃金を支払う必要があるようだ。しかし、ここでいう「年俸に割増賃金を含むことが契約上明らかであり」というのはどういうことか。言われてみれば「残業代は給与に含まれるものとする」という契約条件は自分自身も見たことがある。

一定の時間外労働を想定し、残業代(時間外労働の割増賃金)を含めた年棒額を設定している場合もありますが、割増賃金が実際の時間外労働の範囲に応じて設定されている場合には問題はありませんが、あらかじめ一定の割増賃金分を含んだ総支給額としての年棒額ならば、内訳を明確化し(年棒額と想定時間外割増賃金額)、また、実際の時間外労働がその範囲を超えていたときには、割増賃金の不足分を支払うことが必要となります。

年棒制

これならば納得ができる。内訳が明確な場合、それを超える時間外労働が発生した場合には割増賃金が発生するようだ。しかし、明確ではない場合はどうなるのだろうか。予め明確な内訳を通達していない場合はそもそも残業代を含むという契約が無効になるのか、それとも法廷で内訳の基準が算出されるのか。争われている判例があれば読んでみたい。
「残業代は給与に含まれるものとする」こと自体が違法でないことは労働局の文章にも書かれている。

残業代を固定額(定額)で支払うことは、実際の時間外労働等によって算出した割増賃金に相当する金額が支払われている限り、必ずしも違法ではないと解されます

茨城労働局 超過勤務分を特定できない職務手当は割増賃金に充当できない

このように固定額を支給することは違法ではないようだ。ただし続けて

定額払いの方法が適法とされるためには、割増賃金相当部分をそれ以外の賃金部分から明確に区別することができ、割増賃金相当部分と通常時間に対応する賃金によって計算した割増賃金とを比較対照できるような定め方がなされていなければなりません。

茨城労働局 超過勤務分を特定できない職務手当は割増賃金に充当できない

とあるように、やはり定額がどの部分であるのかが明示されている必要がある。
年俸制ではないけれど、割増賃金を固定残業給方式にしている場合、時間外労働による割増賃金分がそれを超えているとして、差額分の支払を命じた事例として三晃印刷事件がある。

裁量労働制

労働基準法では専門業務型裁量労働制を以下のように定めている。

第三十八条の三 使用者が、当該事業場に、労働者の過半数で組織する労働組合があるときはその労働組合、労働者の過半数で組織する労働組合がないときは労働者の過半数を代表する者との書面による協定により、次に掲げる事項を定めた場合において、労働者を第一号に掲げる業務に就かせたときは、当該労働者は、厚生労働省令で定めるところにより、第二号に掲げる時間労働したものとみなす。

労働基準法

「事業場外労働のみなし労働時間制」は第三十八条の二に、「企画業務型裁量労働制」は第三十八条の四に定めがある。
実際の説明としては、東京労働局の文章を参考にした。労使協定で定められる項目に「1日のみなし労働時間数」がある。このみなし労働時間が法定労働時間を超える場合は割増賃金が発生するようだ。

みなしにより計算された時間が法定労働時間を超えたり深夜業がなされたりする場合には、割増賃金が必要となります

独立行政法人 労働政策研究・研修機構/データベース(労働政策研究支援情報):労働問題Q&A > 労働時間・休憩・休日

みなし労働については、以前、ホワイトカラーエグゼンプションに関する提言 概要(PDF)に対する批判として残業代を支払わないようにするために労働時間制を導入するのではないかというものがあったように記憶している。
さて、みなし労働時間制だと残業代は支払われないのだろうか。

裁量労働で労使協定によりみなし労働時間制を採用し、みなし労働時間が法定労働時間を超えていなければ、実際の労働時間には関係なく、みなし時間に応じた年俸が設定されていればよいこととなります。

兵庫労働局 – 時間外、休日及び深夜労働の割増賃金について

労使協定によって定める労働内容に不一致がなければ、例えば1日のみなし労働時間が8時間の場合に、6時間の労働でも10時間の労働でも8時間とみなされる。しかし、忙しくてとても終わらないのに8時間とみなされている場合などは労使協定の改善が現実的な方法のようだ。

明らかに「みなし労働時間」が実際の労働時間にそぐわない場合は、労使協議の上、適正な労使協定を結ぶ必要があります。

和歌山労働局 時間外労働・休日労働・深夜労

まとめ

就業規則は周知していなければならない。
年俸制だから残業代はない」という考え方は誤り。ただし、裁量労働制である場合においては、みなし労働時間として計算するので法定労働時間内且つ労使協定に違反しない場合は割増賃金の発生はない。
年俸に固定残業代を含むことは違法ではないが、固定額が明示されている必要があり、「残業代は給与に含まれるものとする」などの補足を付与するだけで残業代が全く発生しないということはない。

PHPカンファレンス2007に行ってきた

http://www.php.gr.jp/seminar/20070901/

感じたことを素直に。PHPはまだまだ発展途上だなと思った。それは未熟という意味ではなくて、仕様模索中とでもいうか。
PHP6では内部的にバイナリ扱いしかなかった文字列がUnicodeとして保持されるようになるみたい。他にもnamespaceなどが導入されたり。良い方向性だと思うし、是非そうなって欲しいけれども、なんと言うか遅いなとも思う。
なぜこのような違和感を感じるのかというと、それは恐らく4とか5とか6とかいうバージョン番号なのだろう。PHP4がPHP1.0でPHP5がPHP2.0とかなら物凄くしっくりとくる。
Javaは初期バージョンから国際化やセキュリティなどの言語の本質的な部分が固まっていたように思う。だから、文法的な改変もほとんどなかった。JDK5.0で大きく変化したのには驚いたといえば驚いたけど。特にオートボクシングは本当にやるとは思ってなかった。
どちらが善悪ではないと思うけれども、そういう理解で使わないと結構な仕様改定が近い将来に来るのは中々ストレスかもしれない。逆に新しい機能の取り込みに積極的なのは良いところもあるかなと思う。json_encode関数とかの導入は早かったし。
さて、カンファレンス自体は少々全体的に間延びしている感はあったけれど、実際に業務利用している人たちの見解が聴けたので良かった。
<?phpシェルは是非ともSourceForgeなどでプロジェクト化して欲しいです。そうしたらコミッタになろうかな。

アンインストールのコード譜

ひょんなことからメールでリクエストを頂いたので、ワンコーラス分だけど、耳コピしてみた。

アンインストール

アンインストール

イントロ
repeat_startFmDbCm7Ebrepeat_end

Aメロ
repeat_startFmEbDbadd9Bbm7Cm7repeat_end

Bメロ
AbDbFmEb
AbDbFmAbEb

サビ
repeat_startFmDbAbEbrepeat_end

Aメロ終わりのBbm7・Cm7とBメロ終わりのAb・Ebは二分音符分の長さで。Bメロとサビの間にあるジミヘンコードみたいなのは、恐らく構成音はC、E、Bb、Ebと思われる。ウクレレ記法でどう書くかわからなかったので書いていない。7thとか9thが少し怪しいかもだけど、凡そこんな感じでしょう。