楽するための努力は惜しまない 書評「仕組み」仕事術

4月 7th, 2008 admin

最少の時間と労力で最大の成果を出す「仕組み」仕事術
泉 正人
ディスカヴァー・トゥエンティワン
売り上げランキング: 2
おすすめ度の平均: 4.5

4 仕事の仕組みを見直すチャンス
2 消される
5 これいいです!
5 実用的です(^−^)
5 これが実行できたら凄い

仕組みを作って楽に仕事をしよう、これはなんて素敵で画期的なんだぜイエーイ?

この本を読んで人に説明して気がついた。あれ、これプログラミングじゃねえかと。
danさんも言っていますが、どう考えても仕組みづくりというのはプログラミングと同じです。処理すべきタスクを細分化して、具体的な文章に落として順序を並び替えて逐次実行する・・・やっぱりプログラミングですね。

要点メモ

  • 仕組みとは「誰が、いつ、何度やっても同じ成果が出せるシステム」のこと
  • 成功体験・ルーチンワークを仕組み化する
  • 上司が部下にすべきは仕組みづくり、人の管理ではなく仕事の管理をしてあげることが大切
  • 仕組みを作るだけでなく「仕組みが遂行される仕組み」もつくる(小さな目標を作る、他人を使うなど)
  • チェックリストでつくった仕組みの場合は何も判断しなくてよい程度に細かく作りこむ
  • TODOリストの処理の場合は優先順位をつけずに作業系タスクから機械的にこなす(判断の時間がもったいないので)
  • お金に関しても仕組み化はつかえる(ルーチン化がお勧め)
  • 情報は一元化して管理しろ

実践できていることと、これから実践すること

上記のポイントの中で、「仕組みが遂行される仕組みに他人を使う」というのは僕が勉強会を開いてるのと同じだなと思いました。忙しいと思って後回しになることも人とやると思えばきちんと時間が作れるものです。またお金に関するルーチン化もやっています。「20万円ののなかから毎月2万円貯金しろといわれても無理だけど、18万円で生活してみろと最初から言われれば別に難しくない」みたいな話を聞いてから、自分のお金は自動的に毎月積み立てられるような商品に申し込みました。

今後実践していくこととしては、まずは自分の仕事の非プログラミングな部分のルーチン化を進めていくことだと思います。今の僕の場合だと毎月の経理の処理や、サイトの更新などが苦で仕方がないのですが、それも手順が明確になっていればずいぶん楽だし、それにかかる時間も短縮できるはずです。

いつか非プログラマの人に「あ、プログラムって仕組みづくりのことか」って言ってもらえたら面白いだろうなと思いました。

act_as_authenticated+fcgiでapplication error

4月 1st, 2008 admin

webrickなら大丈夫なんだけど、fcgiにしたとたんにact_as_authenticatedまわりのUser.saveでfcgiこける
ログにもなにもでていない。

原因はUserモデルのencrypt_passwordのところでログにパスワードとかを書き出そうとしてp passwordとかやってるところだった。

要はact_as_authenticatedが原因ではなくpで標準出力に文字をだしているということ。試してみたところcontrollerなどでpするのもだめでした。
いろいろ特殊な環境だったのでなにが原因かはわかりませんが、とにかく標準出力になにか出そうとしてはだめらしい。

第2回「ふつうのHaskell読書会」@CSNAGOYA 開催しました。

4月 1st, 2008 admin

3月30日に名古屋の芸術創造センターにて「ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門」の読書会を行いました。当日は雨の中、全部で7人も集まっていただきました。

読書会のスタイル

今回は1章~3章までをサンプルプログラムを打ち込みながら、順番に音読というスタイルで行いました。
エクストリームリーディング(ER)という手法では黙読を行ったりするんだそうですが、なんだか寂しいので音読です。「予習はしない」というERのよいところだけを採用しています。とりあえずわかんなくても音読しておけば勉強した感が得られるというのもポイントです。

学んだこと

僕はコテコテのPHPerなのでHaskellに学ぶことはかなり多いです。以下各章ごとに気になったことまとめ

第1章Haskellプログラミングを始めよう

  • Windowsでの環境構築はインストーラを実行するだけ
  • LLとか言われてるけどコンパイルが必要(それってLLなの?)
  • 対話型インタプリタghciが便利(Rubyのirbみたいなもの)

第2章 Haskellの基礎(1) 関数とリスト

unixのcat,head,tailもどきを作りながらHaskellの基本を学ぶ章。やっていることが単純ということを差し引いてもコードが少ないことに驚かされる。
はやくも束縛、アクション、遅延評価など新しい言葉や考え方がでてきて「ドラクエでたとえてくれ」って気持ちになる

  • アクションという概念があり、関数とは区別される
  • mainアクションというC言語でいうmain関数に相当するものから実行(評価)がされる
  • ブロックはインデントで表現されるので桁をそろえる必要がある(レイアウト)
  • 遅延評価が基本なのでcs < - getContentsは「csにgetContentsの返り値を代入」とはならない
  • 配列はない、すべてリスト
  • (a(b(c)))はa $ b $ cと$演算子で書き換えることができる

第3章 Haskellの基礎(2) 型と高階関数

PHPerなので静的な型チェックというものに感動。高階関数はすごく難しいものかと思っていたけどRubyのmapと同じ(多分)らしく、知らず知らずのうちに便利に使っていたという事実が判明。
PHPならarray_walk関数が高階関数に近いものになると思います。

最後に出てきた関数の再定義の考え方。これは驚いた。関数の再帰呼び出しというのはあるし、それも十分わかりにくいんですが関数の再帰定義って・・・自分自身の定義を自分自身の定義を使って行うなんてめちゃくちゃだ。リストだからなせる業だし、きちっとしたコンパイラがあるからできることなんだと思います。
「自分が艦長を務めている間は雪風は絶対に沈むことは無い、なぜなら自分が艦長をしているからだ」っていう艦長の言葉を思い出しました(たぶん違う)

  • 関数を作るときは宣言を行う
  • 関数を引数にとる関数を高階関数という
  • 引数のパターンによって関数の内容を選択させるパターンマッチという仕組みがある

次回について

次回はこの内容の続きを行います詳細は(http://www.jamboree.jp/cs/)にてご確認ください。