Data::ObjectDriver::BaseObject::begin_work、rollback、commitを使う。

MTのコードにはこのあたりを考慮していないものが多すぎる。権限(Association)を割り当ててからユーザーのパーミッション(Permission)を更新する処理など、あちこちに投げっぱなしのコードがある。数万件のレコードを管理画面操作で更新する等。

複数のレコードを纏めてINSERT、UPDATEするなどの処理をループで回さなければならなかったり、速度面の問題であったり、あの忌まわしいMT::Meta::Proxy::save 問題であったり、そういうところにもっと目を向けて真摯に取り組まないと未来はないよ。


    my @entries = MT->model( 'entry' )->load( undef, { sort => 'id', direction => 'descend' } );
    my $driver = MT::Object->driver;
    $driver->begin_work;
    eval {
        for my $obj ( @entries ) {
            print $obj->id . "\n";
            # if ( $obj->id < 800 ) {
            #     die; # ここでdieした時、すべてのレコードは更新されない
            # }
            $obj->excerpt( 'Hello World.' ); # 概要欄に値をセット
            $obj->save or die $obj->errstr;
        }
    };
    if( $@ ) {
        $driver->rollback;
        die $@;
    }
    $driver->commit;

前日の記念祝賀会も含め、参加してきました。

私のブログを読む方には紹介するまでもないですが、一応。

Sir Tim Berners-Lee

記念講演会ですが、同時通訳を聞きながらメモをとりましたので共有します。追いついていない所、私の知識が追いついていないなどで誤っているところがあるとは思います。ですので、これは私が単に感じたこと、私自身が単に願っていることなのかもしれません。内容は抜粋です。

WWW誕生の話は書籍「Webの創成 ― World Wide Webはいかにして生まれどこに向かうのか」でも読むことができます。

※このテキストは非公式のものであり、誤りが含まれることがあります。

(抜粋テキストここから)

Tim Berners-Lee 記念講演 (抜粋)

私はこういう場で講演をするたびにまた一年が経過したな、と感じます。 25週年、28周年のときもそうでした。

我々は継続してきました。これからも停滞させない。 Webのない世界は考えられないところまできたと思います。 しかし、インターネットと言えども必ずしも永続すると考える訳にはいきません。

今日は皆さんに、レイヤーという話をしたいと思います。 例えばWifi、物理レイヤー=接続、有線無線に関わらず繋ぐことができます。

1969年、皆さんは何をしていましたか? 最初のパケットがネットワークを通過した時 コンピューターとコンピューターが繋がった(TCP/IP)。

今はクラウドの時代。データを投げ込めばやってくれる。 プラットフォームとは、基盤。

パケットを送れば向こうに任せてしまう、というところが素晴らしいアイデアであった。インターネットは差別がない(期待も込めて)。どんなアプリケーションでも。

期待も込めて、というのは競合排他のために回線を絞るとかするとかがなければ。

そして「ニュートラリティ」。 政治利用の問題も。アメリカなどで最近起こっていること。

インターネットはワンプラットフォームです。

WWWの誕生

1989年、CERNでプログラマをしていました。CRENは面白い場所です。色々な国の人達が集まっていて。物理学者も多いです。私もそうでした。

私はCERNでプログラミングをしていました。

みんなそれぞれ慣れたやり方があり、様々なOSも存在していた。私はWWWを任されていたわけではなありませんでした。

16ヶ月勤務して後に、これは必要だ。異なるコンピュータ、異なるOS、ドキュメントをどうすれば共有できるのか、それが実現できるのか。ハイパーテキストシステムが欲しかった。繋がってはいるのです。でも、いちいち聞かなきゃならないのです。OSも違うし使い方も違う。

もちろんネットワークはあったのだけど、どうやってログインするのか? 私はこれをWWWを開発する「言い訳」にしていました。すると、上司がやってみたらどうか、と。

NEXTがあったんです。スティーブジョブズが作った格好いいマシンがあったんですよ。NEXTを覚えている方いらっしゃいますか?

NEXTが格好良かった。いろんな格好良いものが詰まっていた。

すぐに電子メールが使える、開発機能が最初からあった。インターフェイスビルダー。プロダクト名を聞いてくるので「WWW」と入力した。少しハッキングしたんですが、うまく動きました。

NEXT自体は結局うまく行かなかったのですが、開発機、今ならOS Xを走らせて、開発する。当時からNEXTにはそれがあったのです。

このプロジェクトは「曖昧だけど面白い」という評価を受けました。

私は、誰かが何か面白いプロジェクトをやっていて、それが面白いと思ったら、やらせてあげてはどうかと思います。

WWWを閲覧するだけでなく、エディタも作りました。リンクを作る。

CERNのネットワークにはポートナンバーがありました。私は274(私の両親の電話番号)をポートナンバーにしてプロジェクトを始めました。色んな人が色んなポートナンバーでプロジェクトをやっていました。

それは1989年のことでした。 1994年に私はMITに移り、W3Cを作り、やがて慶應が参加しました。

WWWの今とこれから

今や、Webを使っている人は50%。28年の間にはいろんなことがありました。

さて、道行く人に訪ねたら、例えばFacebook、それがWeb。

SNSも一つのレイヤーです。本来のwebはオープンなのですが、FacebookもTwitterも集中型、Googleもそう。巨大なセンター、データベース、集中、集約化されている。分散化が良いところでエキサイティングだったのに。

Facebookの友達とか、Linked Inの同僚も、そうですよね? Facebookの友達とTwitterのフォローは同じじゃないですよね。SNSは分散型ではない。

オープンなwebを維持しつつ、SNSではない、オルタナティブなプロジェクト、MITでもやっていますが。

昔はフロッピーディスクさえあればそこにデータがあることがわかった、自由だった。でも今は違う。どこに個人情報があるかわからない。

ネガティブに聞こえるかもしれませんが、間違った方向に疑問を呈することは間違ってはいないと思います。

インターネットレイヤーとwebの間に国が介入してくる。例えば英国。半年間、誰が何をクリックしたか。私が「癌」を調べたら、誰かがそれを知っている。例えば保険に入れないかもしれない。スパイ活動、ブロッキングなど。

個人情報の悪用、マネタイジングに利用しているかもしれない。

Twitterはもはやニュートラルなメディアではないですよね。リツイートという機能がありますよね。拡散する。アイデアをネットワーク上で拡散する。でも、ネガティブなツイートのほうが10倍だという。

人間とテクノロジーがつながっている。ノードは、人ですよね。新しいSNSを作るのであれば、人と人をつなぐもの。Twitterも、もっとデータを見ていって欲しいですよね。差別的な発言、悪意のほうが拡散しやすいのではないか。選挙戦のときもフェイクニュースとか。Webが収入につながるかもしれない、だからクリックを稼ぐために過激な発言をするとか。広告システムは人をトレーニングしている。まったく商用の目的で動いている。アメリカの総選挙で起こったこと。クリックしてほしいからTweetする。お金に動かされている。GoogleのAd、Facebook広告。ターゲット広告は確かに有効です。 ケンブリッジによると、人々を32のターゲットに分けてグループ化したのだそうです。ターゲット毎に有効な広告を配信した。これは倫理的なのでしょうか? 人によって伝えることが違う。ターゲット広告はまったく違うことを違う人に言うことができる。これは正しいことなんでしょうか?

私は、webの全体像に可視性がないことが懸念でした。全体のシステムの安定性。

多角的な物の見方をしましょう。単に急行列車に乗るだけではだめなんです。速く速く進もうというだけではだめ。スピードだけではだめ。どんな情報が使えるのか。今やWikipediaには情報が溢れています。

Webサイエンスが面白いのはマイクロスコープ、ある人が何かをクリックして何かを買う。 オンラインが暴力的になること、意地悪な人、どういったパラメーターでこれを変えていけるのか。AをBに変える。

Twitterは警告を出して、誤っていないか、悪意がないかを見ることはできないのか。そういう方向もありではないのでしょうか。インテリジェンスを使ってシステムを見ていくべきではないかと思います。 SNSによって起こっているディスカッションが人類のために役立っているのか。

これは、すべての人のためのもの

しかし、私は前向きに楽観的に考えていきたい。
Web上に国境はありません。

皆さんには次のレイヤーのことを考えていただきたいのです。

ネットの中立性、スパイ行為と戦う、webをオープンにし続けるために取り組まなければなりません。

ロンドンオリンピックに出た時、何を話そうかと思ったのですが、私は(ここだけ日本語で)「これは、すべての人のためのものです」と言いました。

私の話は以上です。

(抜粋テキストここまで)

This is for Everyone

その、ロンドンオリンピックの動画はこちらに。写っているのはNEXTのようです。

ひとことだけ感想

リーダーというのは、楽観的かつ悲観的に振る舞うものなんだな、と。いずれにしても、WWWがあるおかげで今の自分や会社が存在するということに感謝。

あけましておめでとうございます。

問題 : 俺と同等のスキルをもった人材が応募してきたら、どこに配属しますか? (全社会議の発表時のスライドより)

画像は12月の全社会議で、社員たちに問うた問題です。この件はまた後で。

2012年からこうして新年のご挨拶をブログに書いているわけですが、去年(2016年)は「基本に立ち戻り“仕事力”を見直す一年に」と言ってますね。本を書きたいと言ってたんですけど果たせず終い。それでも「仕事を教える」ことがゴールだったので、そこはこれまで以上にできたかなと思います。定期的な社内勉強会の開催もそうですし、新入社員への個別のレクチャー、マネージャーへのマネジメントに対する指導など。成果がでるまでにはまだ時間がかかりそうではありますが、継続していきたいと思います。

2016年を振り返るとPowerCMSクラウドのリリース(リリースは2015年12月ですが実質は2016年スタート)執行役員制および事業部制の導入、会社のウェブサイトを新しくしたことなどのトピックはありましたが、目に見えるアウトプットが少ない1年になってしまいました。ここは真摯に反省をして、2017年は改めていきたいと思います。

「顧客接点を増やす」から一歩進むために

この2年間、社員に言い続けてきたことがあります。我々のビジネスの本質は顧客接点にあり、その接点を増やす努力を続けていけば必ず成果は出る。よって重点課題は「顧客接点を増やす」であると。でも、そこに計画性とかアイデアが足りなかったように思います。正確に言うと「計画」を阻害するトラブルや突発的な仕事に引っ張られてしまい、計画が絵に描いた餅に終わってしまうということの繰り返しだったように思います。もちろんその原因の多くは「力不足」にあるわけで、昨年の「仕事力を見直す」というのがそれを解消するために必要なことであることは間違いありません。

それでも、スタッフ個々の力が向上するのを待っていては時間がかかりすぎる。10年以上1人管理職でやってきたわけだから、どうしても任せたリーダーが頼りなく見えるときもある。でも、任せたら思い切って任せ切ることをしないと先に進めない。そして、顧客接点を増やすための仕組みを自分が率先して作る。重要なのは顧客接点を増やすのはあくまでも現場のスタッフで、自分はその仕組みを作るという点です。これ、ビジネスの原点なのです。

「創って、作って、売る」商売の基本サイクルを素早く回す

自分たちの強みを見直せば、製品を生み出し、リリースすることが得意なのに、去年はそこが停滞してしまった。この「創って(開発)、作って(生産)、売る(販売)」というのは、過去にも何度か紹介した書籍「V字回復の経営―2年で会社を変えられますか」に書かれている言葉ですが、こういうベーシックなところで手を抜くと企業は成長できないどころか衰退してしまう。

そのためには、最後のひと押しが勝負

こういうことを考えていると、昔、中学生の頃の担任に指摘されたことが今更ながらに思い出しました。俺って、形にするところまでは早いのに、仕上げんのが遅いんだと。今、80%がた形になっているプロダクトがいくつかあります。こいつらについて、最後のひと押しをちゃんと手を抜かずにやりきって、世に問うこと。そのために自分のリソースを注力させる。これを果たすためには、すでに書いた通り「任せたら思い切って任せ切ること」を徹底することです。

問題 : 俺と同等のスキルをもった人材が応募してきたら、どこに配属しますか?

冒頭の画像は12月の全社会議で、社員たちに問うた問題です。その後の飲み会なんかで正解は言いましたけどね。

この会議では、社員が先日書いていた全社会議のレポートにも引用されていますが、下町ロケットの中の一節を引用して話をしました。

アルファサード全社会議 2016冬 in Osaka | PowerCMS ブログ

俺はな、仕事っていうのは、二階建ての家みたいなもんだと思う。一階部分は、飯を食うためだ。必要な金を稼ぎ、生活していくために働く。だけど、それだけじゃあ窮屈だ。だから仕事には夢がなきゃならないと思う。それが二階部分だ。夢だけ追っかけても飯は食っていけないし、飯だけ食えても夢がなきゃつまらない。

2017年、私は二階におります。一階ですか? ウチには優秀なリーダーがおりますから。

本年もどうぞよろしくお願い致します。

この記事は Movable Type Advent Calendar 2016 の最終日の記事です。

再構築ウィンドウ

Movable Type Advent Calendar は2012年から参加していて毎年最終日を担当させていただいています。過去の記事はこちら。

2016年のネタ。2017年、MTはもっと高速になる!

今年は何を取り上げようかと思っていましたが、丁寧に記事を書くモチベーションと時間が足りず、とはいえ負けるのも(誰に?)悔しいので、以前から気になっているMTの箇所にパッチを当てて再構築のスピードを速める実験をしてみました。

静的ファイルジェネレーターとしての Movable Type

少しだけもったいつけて前振りを。静的サイトジェネレーター Advent Calendarで Movable Typeの中の人である長内さんが記事を書かれていますね。そう、MTは静的ファイルを吐き出すことのできるCMSです(ダイナミックパブリッシングも可能、部分的ファイナミックパブリッシングも可能、もちろんダイナミック処理ではキャッシュの仕組みを備えています)。

今年は第2回CMSプロレス 多言語サイトタイトルマッチ - CMS SUNDAYにお呼ばれして、チームMT(一人だけど)として参加、見事に勝利してきました。Movable Type以外の参加CMSはDrupal、concrete5、TYPO3、WordPress。Movable Typeだけが異質だと思いませんか?

  • MT以外のCMSはすべてダイナミック前提
  • MT以外のCMSはすべてPHP(MTは基本Perl、ダイナミックはPHP)

PHP、Perlの違いはまぁ置いておいて、ダイナミックとスタティック(静的サイト)だと、文化が違うというか話がかみ合わないんです。同じく中の人の澤さんに「勘所がわからん!」とか言ってますね。

Facebookにて、ピンチを迎える私!

そう、動的、ダイナミックなCMSが「高速ですよ」っていったらみんなキャッシュの話静的ファイルジェネレーターでキャッシュって、あるとしたらCDNやwebサーバーチューニングとかの話です。もちろんダイナミックも持ってるからキャッシュの話ついていけるけど、URLリライト系の話も盛り上がるみたいなんですよねあっちの文化では。てことで勘所あんまりわかりませんでした前半は。

静的ファイルジェネレーターで「高速」ってのは一般にはいわゆるパブリッシュ(再構築)の話ですよね。Movable Typeの再構築はしばしば待ち時間が嫌だとかそういう話になります。ただ、エンタープライズCMSの世界では、そこあんまり話題にならないんですよね。CMS操作の重さより、公開サイトの遅さや負荷とかそっちを気にされます。ま、そういうのも含め(使われているサイトの規模や用途も含め)て文化の違いとしか表現しようがありません。ま、なんとか勝ててよかったです。

MTの再構築はまだ速くなる余地がある

今年、ある案件で公開側のサイトのダイナミック処理の速度が思ったように出ずに調査していた時に、テンプレートのコンパイルキャッシュが非効率な処理になっているケースを発見しました。以下の記事にその顛末をまとめています。

その時に「あれ? 静的ファイルの再構築処理の際の MTタグ(MTML)のコンパイルってどうなってんだっけ? って見たんです。どうもキャッシュされている気配がない。

で、少し手を入れてみたんですがうまく行かず、途中のファイルをFogBugzに投げてそこで止まってました。

MT::Builder の compile に手を入れる

MT::Builder の compile てのは、乱暴にひと言で言えば、テンプレートのMTタグをパースしてコンパイルして{tokens}を組み立てているところです。そのあと、テンプレートはコンテキストに沿ってビルドされます。MTはSQLの実行結果やビルドしたブロックやモジュールなどはマメにキャッシュしていますが、このコンパイル結果をキャッシュしていません。以下、見てもらえますか!? そう、MTタグを正規表現でパースしているんですよ、ここ。

    while ( $text
        =~ m!(<\$?(MT:?)((?:<[^>]+?>|"(?:<[^>]+?>|.)*?"|'(?:<[^>]+?>|.)*?'|.)+?)([-]?)[\$/]?>)!gis
        )
    {

ご存知の通り(知らない人も多いでしょうけど)、Movable Typeでは、再構築処理を行う際に1つのCGIへのリクエストあたり40記事ファイルずつ再構築を行い、リダイレクトを繰り返してすべてのファイルを再構築します。この40という数字は環境変数で変えることができます。

つまり、1リクエストでの再構築処理で同じテンプレートが少なくとも40回パースされるわけです。こいつを一回で済ませてしまえば。

mt/lib/MT/Builder.pm

12a13
> use Data::Dumper;
32a34
>     my $is_tmpl;
34a37,39
>         if ( $ctx->id ) {
>             $is_tmpl = $ctx->id;
>         }
73a79,88
>     
>     my $cache_key;
>     my $chached_state;
>     if ( $is_tmpl && $text ) {
>         $cache_key = 'compiled-cache-' . MT::Util::perl_sha1_digest_hex( $text );
>         if ( $opt ) {
>             $cache_key .= '.' . MT::Util::perl_sha1_digest_hex( Dumper $opt );
>         }
>         $chached_state = MT->request( $cache_key );
>     }
82a98,101
>     
>     if (! $chached_state )
>     {
>     
291a311,316
> 
>     } else {
>         $state = $chached_state->{ state };
>         $depth = $chached_state->{ depth };
>         $errors = $chached_state->{ errors };
>     }
306c331,338
< 
---
>     if ( $cache_key ) {
>         if (! $chached_state ) {
>             $chached_state = { depth => $depth,
>                                state => $state,
>                                errors => $errors };
>             MT->request( $cache_key, $chached_state );
>         }
>     }

ソースファイル(Builder.pm)

マシンスペックの高い環境では、EntriesPerRebuildの値を大きくするほどその効果が顕著になり処理も速くなります。

計測結果

このブログをエクスポートして、最新版のMT6.32にテーマ Rainier 1.22 を入れた環境を用意して計測しました。「デフォルト、すべてのファイルの再構築計測結果(ケース1)」と、「記事アーカイブのみ、EntriesPerRebuildに1000を指定した場合(ケース2)」各5回の計測結果はこちら。

計測ケースケース1ケース2
Builder.pmオリジナルBuilder.pm改良Builder.pmオリジナルBuilder.pm改良Builder.pm
1回目331243216155
2回目302254270170
3回目285234211180
4回目301255189155
5回目281245170155
合計(秒)150012311056815
結果約18%高速約22%高速

2017年、もっとMTが速くなるための宿題

あまり時間もなかったので、今日のところはこれまでです。引き続き以下のような部分を検討して実装できれば2017年、MTの再構築はもっと速くなることでしょう!

  • まずは、このコードの影響度など、問題ないかの確認・検証
  • 現状template_id 指定がある場合のみキャッシュしているが、これ以外にキャッシュできるケースがないかの検討
  • リクエストをまたがって memcachedやMTのキャッシュ(MT::Session)などへのキャッシュ

それでは、メリークリスマス、そして、良いお年をお迎えください!

米大統領選挙の速報。色分けで両陣営の優勢状況を表現している。

米大統領選挙、僅差で最後まで読めませんでしたね。普段政治のこと書いたりしないですけど(政治と野球の話はオンラインでしない主義)、今日は Web Accessibility Advent Calendar 2016 の23日目の記事です。

Accessibility Advent Calendar といえば、sukoyakarizumuさんによるこんな記事がありました。

私は ColorTester の作成者なので、本題の前に少しだけ ColoerTester について触れさせていただきます。特にこのページで結果のバラツキについてネガティブな書き方をされているわけではないのですが、ColorTesterの色の比較メソッドは W3Cのページにある計算式のそのまま、ほぼコピペです。

Xojoという開発ツールで作成しています

Function GetL (C As Color) As Double
  Dim R,G,B As Double
  R = C.Red / 255
  G = C.Green / 255
  B = C.Blue / 255
  If R <= 0.03928 Then
    R = R / 12.92
  Else
    R = ( ( R + 0.055 ) / 1.055 ) ^ 2.4
  End If
  If G <= 0.03928 Then
    G = G / 12.92
  Else
    G = ( ( G + 0.055 ) / 1.055 ) ^ 2.4
  End If
  If B <= 0.03928 Then
    B = B / 12.92
  Else
    B = ( ( B + 0.055 ) / 1.055 ) ^ 2.4
  End If
  Dim L As Double
  L = 0.2126 * R + 0.7152 * G + 0.0722 * B
  Return L
End Function

なので、テキストフィールドに値を入れて計算している以上は正しい結果を返していると思っているのですが、ピッカーから色を拾う場合に正確な値が拾えす、誤差がでることがあります(これはmacとWindowsでも少々異なるかもしれません)。(久しぶりにコードを見て確認したのですが)、ColorTesterのピッカーは、マウスポインタ周辺の小さなキャプチャを生成して、そこから色を拾っています。実はあまり知られていない(ように思う)のですが、ColorTesterでは「OS標準のカラーピッカーを使う」という設定が選択できます。スポイトアイコンをクリックする「ひと手間」が余分にかかるのですが、より正確に色を拾いたい場合、こちらの設定も試してみてください。

ColorTesteの設定で「OS標準のカラーピッカーを使う」を選択した場合

また、画像をドラッグ&ドロップで放り込む簡易チェック機能もあります。このロジックについてご興味のある方は下記の記事で紹介しています。

米大統領選挙の速報サイトに見る「色で表現したらわかりやすくね? 」問題。

さて、ようやく本題に戻ります。米大統領選挙、まだ記憶に新しく、次期大統領の発言もニュースを賑わしていますね。

この記事では、米大統領選挙の速報サイトのデザインにおける色問題について取り上げます。 米大統領選挙の速報サイトについては、以下のページに様々なデザインが紹介されていますが、冒頭で紹介した画像もその一つです。

上記のページでも触れられている通り、色分け、色の濃淡もしくは大きさなどでどちらが優勢かが視覚的直感的に理解しやすいと紹介されています。

色分けされた地図は視覚的でわかりやすいので、ついやってしまいがちなパターンですが、次に示すようにグレースケール状態にすると民主、共和党優勢、同数あたりの区別が困難になってしまいます。

考えておかなければならないのは、色弱(色覚異常とも表現されます)の人や弱視の人のことだけではありません。いまどきモノクロ?、みたいな意見は kindle が一蹴してくれましたし、例えばこの速報を見ながら会議を行っている時、モノクロ印刷した紙資料で配布されても何がなんだかわからないですよね?

同じ米大統領選挙の速報をグレースケール表示にしてみた。

このような画像は、JIS X8341-3の7.1.4.1(WCAG 2.0 の1.4.1) に適合していないことになります(適合レベルは「A」)。上部の更新時間や「当選 優勢」などの画像内の文字のコントラスト比が不足しているという別の問題もあります。

これを適合させるためには、以下のような方法があります。文字を併用する、パターンを変えるなど。

このような配慮がなされない理由として、全体的に「デザインが"うるさく"」なってしまう点が挙げられます。以下の例は、色に加えてアルファベット1文字を追加し、若干全体のコントラストを上げています(文字の大きさも当選か優勢で分けています)。

色に加えて文字を追加した大統領選挙速報地図

モノクロになっても理解できますね?

色に加えて文字を追加した大統領選挙速報地図(モノクロ版)

この「デザインが"うるさく"」なってしまう問題を回避するには、例えば文字併記版と文字のない版を切り替えられるようにする、表組みでマークアップしたテーブルを地図の下に表記する、などの方法があると思います。いずれにしても画像の alt属性に各州の結果をずらずらベタ書きで格納するのは現実的ではありませんから、マークアップしたテーブルを併記するのが良いと思います。国内で次の選挙の際にでも、このあたりに配慮された表現が見られると嬉しいですね。

この手の問題につながりがちなものを覚えておこう

このような表現になりがちなもののパターンを覚えてしまいましょう。何事も「ツボ」が大事です。非アクセシブルなものになりがちなものには以下のようなものがあります。

  • 施設・図書館などの開館カレンダー
  • グラフ
  • 地図・路線図

こいつらが出てきたら、「来やがったな!」 と思って確認する習慣を持ちましょう。

関連するかもしれない記事

MacBookProで屋外で仕事をする人

※この記事は嘘八百、根拠のない、フィクションです。実在のいかなる会社、団体、個人とも関係はありません。

via APIやサイトから情報を収集してブログアップするプログラム - みんなのお仕事相談所 [ID:497]

検索エンジンのエンジニアをしている知人(Aという)の話です。キュレーションサイト、まとめ系サイトで質の低い(web上の情報の寄せ集め、正しくない情報や著作権に配慮されていないサイトの)ページが上位表示されているという噂がネット上に散見されるようになり、社内でもさすがにこれは問題ではないかという話しがずいぶん前から上がっていたとのこと。

どうやらクラウドソーシングで安価なコストでコピペまがいの記事を大量に生産するような方法でSEOを行っているらしいというところまでは認識しており、そのエンジニアは偽名を使ってクラウドソーシングから応募してみたのだそう。マニュアルに沿って原稿を書き、チャットツールでやりとりをし、採用されるといくばくかのお金を得られるのだという。

試しにやってみようかと思ったのだが、かかる労力とお金の見合わなさに萎えたのだそうだが、マニュアルを読んでいて、これ、自動化できんじゃね と思い、試しに書いてみたのだそうな。こういうの書くのはPHPに限るんだと。

  • 検索結果からある条件でフィルタして、一次情報を集める
  • そのページへリンクしているページから補足情報を補完する
  • 「です」「ます」などのトーン&マナーをマニュアルのレギュレーションにあわせる
  • 適当に文章を倒置する、シャッフルする
  • 文章校正APIでおかしな部分を修正する

これで、記事が大量生産できるようになった。一人の生産量があまりに多いのは怪しいので、アカウントをたくさん作ることにした。今度はアカウントの管理、受発注の管理が面倒になってきた。

※この記事は嘘八百、根拠のない、フィクションです。実在のいかなる会社、団体、個人とも関係はありません。(2回目)

で、これもbotを作ればええんやとすぐに気づいた。今時のクラウドソーシングはご丁寧にAPIが用意されている。チャットツールにしても然り。

こうして、たくさんのアカウントで仕事を分散して受注し、記事を自動生成してお金を稼ぐ仕組みができあがったらしい。ただ、それをやっているうちに何だか馬鹿馬鹿しくなったのだそう。だって、自分でキュレーションメディアを立ち上げたらもっと儲かるんだから。でも、Aは自分で責任を負うのは苦手だと普段から言っているタイプで、自分ではそういうのは気乗りしないのだと言っていた。

一方その頃、キュレーションメディアを運営するベンチャーに勤める別のエンジニア(Bという)に聞いた話し。Bの会社は大量の記事を作成するためにクラウドソーシングを利用しているのだそうだが、これがまた面倒臭いことをやってるなと。なので、クラウドソーシングのAPIを利用して募集から採用、やりとりまでを自動化するプログラムを作ることを提案したのだそう。なんて事はない、あの(どのだよw)大量の発注はbotがおこなっていたのである。

※この記事は嘘八百、根拠のない、フィクションです。実在のいかなる会社、団体、個人とも関係はありません。(3回目)

あるとき、AとBが偶然IT系の勉強会の後の懇親会という名の飲み会で意気投合したのだそう。技術力はあるが責任を負いたくないAと、キュレーションサイトの裏側を知るB。二人が出した結論はこうである。

  • botにキュレーションサイトを運営させる。
  • ただし、責任は外部ライターにあるという体裁をとるために、クラウドソーシングは引き続き利用する。
  • ある程度SEO効果を得たら、会社ごと、メディアごと大手に売却する。

やれやれ、こうやって世の中は回っていたのか。AもBも現在では相当の資産家であるらしい。

※この記事は嘘八百、根拠のない、フィクションです。実在のいかなる会社、団体、個人とも関係はありません。(4回目) ←もうええわ!!

ま、仮にこんなことがあっても別に驚かんよな、とか思った次第です。さ、仕事しようぜ。

記念に貼っておく。ただそれだけ。中盤から後半は結構無理やりだけどね。この歳になって初めて bashスクリプトを書いた(sedとか書いたのも初めてだ!)。

#!/bin/bash
lftp -u usrname,password -p 21 example.ftp.azurewebsites.windows.net << EOF
cd /site/archives
mirror
bye
EOF
find . -f>../files.txt
sed -i -e 's/^[^\/]*$//g' ../files.txt
sed -i -e '/^$/d' ../files.txt 
sed -i -e 's/^/rm /g' ../files.txt
commands=`cat ../files.txt`
lftp -u usrname,password -p 21 example.ftp.azurewebsites.windows.net << EOF
cd /site/archives
${commands}
bye
EOF
rm ../files.txt

参考

もう少しライトな感じで読めそうなものを追加しようかと。

本読もうね(写真)

会社を辞めないという選択 会社員として戦略的に生きていく

いきなり経営者目線からサラリーマン目線とか言わんとって欲しいですが :-p 、事業部長もチームリーダーも会社の中で働いてることに変わりはないわけなので「会社の中でどう生きるか」について考えることが無駄になる事はないでしょう。

人はどんな場所にいても
社会を動かす仕事ができるはずだ。
考えよう
「会社にいるからできないこと」じゃなく
「会社にいるからこそできること」を。
使われる人生じゃない。
  • 会社で日々繰り広げられているのはチーム戦
  • 自分の給料の金額がどういう理由で決められているかと考えてみる
  • 社会人10年目から自分のストーリーが面白くなる
  • 年齢とともに、可能性や選択肢は広がっていくか、狭まっていくか、どちらだと思いますか?

この本を読んだのは経営者になってから10年以上経過してからですから、違う立場で読んだ事は間違いないですが、サラリーマン時代を振り返って(精一杯やりきってから会社を始めたとずっと思っていましたが)、別に会社にいてもできなかったことじゃないというか、今の自分ならもう少しなんとか道はあったんじゃないかなぁとか思ったりします。いるかいないかわからないですが、うちの会社辞めて独立したいと思っている人がいるとしたら、考えきって、やりっきて、会社で可能性を追求してからやってみなよって言いたい。ま、一度読んで考えてみなよ、と言いたい。

マンガ 餃子屋と高級フレンチでは、どちらが儲かるか?

ま、そんなに読書嫌がんなよ、ってことで漫画をひとつ。 経理部門にでもいない限り会社員やってると会計とか数字について考える事ってあんまりないんですよね。会計をかじると何で経営者がそんなに数字にうるさいのかが理解できるかと思います。また、ビジネスモデルってもんをいろいろ考えることで、頭をやわらかくできる効果も見込めるかも。あと、自社の決算書を見て、良い、悪いを自分なりに判断できることも大切です。

ま、なにぶん漫画ですから、一度読んでみたまへ。※

※とはいえ、それなりに難しいテーマを無理やり漫画にしてるので、斜め読みだと理解できない代物です。

コミック版 100円のコーラを1000円で売る方法3

もひとつ漫画。価格や差別化戦略について考える題材に。私が読んだのは漫画じゃない方ですけどね(100円のコーラを1000円で売る方法3 )。Amazonのレビューはあんまり高くないな。ま、あくまでも初心者向けですが、マーケティングとか考えた事ないって人がはじめて考えるきっかけにはいいのではないかと思います。

でね、これ敢えてシリースの「3」にしたの、テーマが会計ソフト、webサービスが題材になっているからです。身近なテーマの方が頭に入りやすいものね。

下町ロケット (小学館文庫)

ビジネス書でも何でもないじゃん! なんだけど。ドラマ化されたし、見たって人はそれでもいいんだけどね。中小企業で働くってことを考える教材としてはええんちゃうかな。

俺はな、仕事っていうのは、二階建ての家みたいなもんだと思う。一階部分は、飯を食うためだ。必要な金を稼ぎ、生活していくために働く。だけど、それだけじゃあ窮屈だ。だから仕事には夢がなきゃならないと思う。それが二階部分だ。夢だけ追っかけても飯は食っていけないし、飯だけ食えても夢がなきゃつまらない。

青臭い小説やドラマのセリフである事に違いはないんだけど、日々の仕事に追われて新しい製品やサービスの開発が後回しになっちゃいけないよってことだ。これは我々の様な会社にぴったりの表現ではないか。

プレゼンの極意はマンガに学べ

セミナーで松尾さんに教えてもらった本です。

全社会議なんかの発表を見てて、プレゼンの場とかあんまりない人に何か勉強させる機会ないかなぁとか思ってるわけなんですが。

ただ、この本にはプレゼンの具体的なテクニックはまったく書いてありません。「わかりやすさとはどういうことか」「読者を引き込むための工夫」「企画におけるポジショニングの定め方」など、ビジネスに必要な要素を漫画を題材に解説している本、と思った方が良いです。

プレゼンの具体的な話は他に読んだ本があったけど、今手元にないや。あとで追記するかも。

追記。思い出した。

TEDトーク 世界最高のプレゼン術

TEDの動画はわりとどれも面白くて、よく見る機会があるんだけど、ストーリーとして洗練されていてよく練習されているような印象を受けます。CSS Niteなんかでも鷹野さん結構厳しくて(僕は我が道行っちゃうんですけど)、プレゼンは聴衆の時間を奪っているということを意識するのが大切だと思わされます。

  • アイデアは短いキャッチフレーズで
  • パーソナル・ストーリー
  • ショッキング・ステートメント
  • インパクトのある質問

(web)業界柄、PC1台でどこでも仕事ができる業態、自然と周りにデザイナーやプログラマなどフリーランスの人が多いのですが、仕事が軌道に乗って屋号をつけてビジネスをしていく中で少しづつ仕事が増えたことから、法人化を考えて人を入れるようなケースを時々見かけます。

私も13年前に1人で会社を始めた口ですが、最初から会社を作ろうと思うのと、自然発展的に法人化をする違いについて少し書いておきたくなりました。

きっかけは、100万円ちょっとの請求書が3週間遅れで届いたこと。お小言言うつもりもあんまりないんですけどねw

尚、私のこと知ってる人には言うまでもないですが、クライアントワーク、いわゆる受託のシステム開発やクリエイティブ系の仕事の話です。

ノートPCでリモートワーク

法人化の目的は何かを今一度考えること

節税のための法人化ってのもあるのでしょうけど「取引条件に必要だから」「信用が得られるから」ということでの法人化であれば考えておかないことがあります。「信用と責任はセット」ですから、どういう責任を法人化によって自分は負うのだということを考えておくべきでしょう。以下はその一例です。

月商の2-3倍程度のキャッシュを用意しておくこと

今回のことで言いたいことをひとことで、というとこの一文になります。 月商が200万円とすると(2〜4人くらい?)600万円、少なくとも2ヶ月分とすると400万円。

このくらいの商いをしていると「納期2ヶ月、300万円」みたいな仕事がボチボチ相談くるようになるんじゃないかと思います。月商の1.5倍ですからこれはそれなりに大商いですよね。以前にどこかのセミナーでも話しましたけど、納品後一括検収、一括振り込みでの仕事の場合、余力は月に50万円分しかありません。この仕事を受けると自然に小さな仕事を断るか外注するかくらいの選択肢しかなくなるわけです。

売上に関係なく固定費は常に出て行く、利益が出れば税金も必要

固定費だけならともかく、小さな仕事の外注費も月単位で出て行きます。そうなれば「納期2ヶ月、300万円」を受けるためにはその間の固定費を支払えるだけのキャッシュが必要になります。もちろん、「納期2ヶ月、300万円」を受けずに手元資金とのバランスをとって小商いに徹するのも「あり」です。その場合はキャッシュの「出」「入り」を注意深く見ていかなければなりません。それがいわゆる「資金繰り」で、そこの苦労を背負わずにもっと積極的な受注、成長をしていきたいのであれば、やはり月商の2-3倍程度のキャッシュを用意しておくということになります。利益が出れば法人税も必要ですし(はじめて大きめの利益が出た時に愕然とするんですよねだいたい)。

人を採用する際には、ビジョンが必要

フリーランスから法人化し、受注規模に対して1人増え、2人増えというケースに「採用計画」があるでしょうか? どちらかといえば「仕事が増えて人が足りない」ということに追われて規模を拡大しようとしていませんか? 私が感じていることで危惧していることは、「終わり方を考えて中小企業を始める人はあまりいない」ことです。会社を将来どうしていきたいのか、働く人になにを求め、彼ら彼女らがどのようなキャリアをこれから積んでいってもらうのか、彼ら彼女らの将来ビジョンは何で、それにどのように答えていくのか。そのプランがないままに人を増やしていくと、気づいた時に数年経ってしまって、「さて、俺たちはどこへ行こうとしているんだ?」ということになりかねないです。

職人なのか、会社なのか

クリエイティブ職で著名なデザイナーの個人事務所なんかの場合、その人の看板が会社のすべてですからわりとはっきりしています。その人から技を学んで将来は独立ってやつですね。これも一つのキャリアプランですから、「お前、いつまでもここにいないでそろそろ独立考えろよ」っての。これも一つの将来ビジョンの示し方です。働く人もそれ分かっているんなら、ハッピーな雇用関係の形ですよね。有名なコンサルタントの個人事務所や著名なカメラマンの個人事務所なんかもこれに近い。アシスタントのような形で経験を積んだら、独立を考えなければ上がつっかえてますからね。カメラマンやデザイナーなんて、年齢積んだって仕事続けられますし。

そういう意味では、成長プランのない中小企業は高度成長期以降の、ポジションが足りない問題のもっと極端な奴がやってきます。上が引退せず、会社が大きくならなければ、下の人にポジションは生まれないしキャリアも積めないですからね。

ということで、ビジョンを持った中小企業では、人材を募集しています。

年末に全社員を大阪の本社に集めて全社会議を行うのですが、今年は全社員にお題を出しました。

6f154d9a74891eef9565aadd157b28e9_s

自分のポジションの1つ上の組織単位で(*)の業務改善のためにやるべきこと・共有したいこと。

*1つ上の組織単位 てのはメンバーはチーム、リーダーは事業部、事業部長は会社視点で、ということ

メンバーは1冊、リーダーは2冊、事業部長は3冊、マネジメント、経営やリーダーシップ、コミュニケーション、プロジェクト管理、ソフトウェア開発でも良いですが書籍等を読んで、会議で共有したいこと、感じたことなどを入れてください。購入は自分磨き手当でいいと思うけど、他の人にも共有したいものや高額な書籍やセミナー受講なんかは事業部費申請してくれても構いません。

自分の持ち時間の範囲で上記以外の内容を加えることはまったく問題ありません。

当社の組織ですが、チームは4、5名くらいの単位で「ディレクション」「制作」「ソフトウェア」「クラウド」の4チーム。2チームが一つの事業部となり、「webインテグレーション」「ソフトウェアソリューション」の2事業部制。

と、いうことで何を選択してくるか楽しみではあるんですけど、一応何冊か課題図書みたいなんを上げてみるものいいかな、と思って記事を書きます。

事業部長、チームリーダーはじめ、すべての社員に

「成功の型」を知る 起業の技術

以前参加した、このセミナー会場で購入。小さな会社を経営するということについて、12の分野に分解して説明しています。「商売が成り立つこと」という本当にベーシックな部分について学ぶことで、特に「ビジネスのバランスの取り方」について学べます。事業部長といわず、営業マンにもお勧めできる書籍です。

経営パワーの危機―会社再建の企業変革ドラマ (日経ビジネス人文庫)

原価管理のところをよく読んでほしいと思う。当社のビジネスモデルととてもよく似ているので考えるきっかけによいと思う。メーカーと、オーダーメイドのカスタマイズのバランスの取り方、見積もりの精度を上げること、パッケージビジネスと受託のバランスの取り方など、参考にできる部分がとても多い。

「マネジメント」によって組織はこんなに変わるのか、やり方次第で利益があがることについての気づきを得てほしい。

小さな会社・お店のための 値上げの技術

決して値上げを前提にするためではなく、価格の決め方や見積もりの仕方についてのヒントになります。「良いものをできるだけ安く」提供するのは商売の原点のようなものですが、必ずしも自分たちが何らかの犠牲を払ってまで値下げを行う必要はありません。

「粗利」「利益」というとても根本的なことを今一度理解すること、価格、値段のメカニズムを知ることで新サービスや製品、もしくは受託の見積もりの立て方を考える良いきっかけになると思う。

チームリーダー、マネージャー向け

組織変革のビジョン (光文社新書)

こちらについても以前、こんな記事を書いた。

帯の台詞が中々いいところをついているのでご紹介したい。
忙しいから絵(ビジョン)が描けないのではなく、描けないから忙しいだけだ
ね、このひと言が全てを語っているような気がする。ビジョンがないから目先の仕事に言い訳し、大切なことを後回しにしてしまうのです。そして、ビジョンを描いたら忙しくなくなるか、といえばそんなことはないわけですが、大切なことは、忙しくても本来やるべき仕事を後回しにしなくなるということです。そして、忙しくても平気になるのです。 我々のように特にクライアントワーク、受託の広告(Web)制作事業やソフトウェア事業をやっていると、お客様第一の錦の御旗の元に、目先のお客様の依頼事項を言い訳にして自分の大きな目標、それは仕事であっても個人のスキルアップでも何でもいいのですが、そういうのが後回しになってくる。口をついて出るのは「忙しい」「時間があったらやりたい」です。

ね、耳が痛いでしょ? どうして変革が必要なのか、なぜ走りながら考えることができないのか、考えるきっかけになれば。

プレイングマネジャーの教科書―結果を出すためのビジネス・コミュニケーション58の具体策

元マイクロソフトの方が書かれた本です。当社のような小さな組織では、マネジメント専任ってのは中々に難しくて、社長である私自身ですらいまだにプレイングマネージャーです。プレイングマネージャーの苦労はすごくわかる。自分の仕事の成果を出しながらチームや部下の成果も出させないといけない。この本ではこれからの中間管理職に必要なのは「ハブ型リーダーシップ」であると説いています。話を聞き、状況を観察すること。

日常業務で手一杯→ コミュニケーションは後回し→ 職場の空気が停滞する→ 仕事が思わぬところでストップしたり、部下とのトラブルが生じたりする→ ますます業務が増える

あーこれもありがちですね。あんたの悩みは決してあんたに特有の事情じゃない。いますぐ悪循環から脱して、好循環を作るべきです。

日々のコミュニケーションをパターン化する、習慣化する、仕組み化する、マルチタスク化する→ 部下やメンバーが自立して動く→ 上司や他部門にも情報が行き渡り、協力を得られる→ 中間管理職である、あなた自身の負担が減る→ チームで成果を上げられる→ 余裕のできたあなたが、より大きな仕事に着手できる

V字回復の経営―2年で会社を変えられますか (日経ビジネス人文庫)

経営パワーの危機―会社再建の企業変革ドラマ (日経ビジネス人文庫)と同じ著者による別の本。この本については以前、こんな記事を書いた。

この本には自分が読んでも痛いと感じる言葉が並んでいます。

しかし社員が社長と一緒になって考えてくれるなどというのは幻想にすぎない 。社長こそが新しい考え方を模索し 、それを提示し 、そして社長が自ら行動しなければ 、何も起きないのだ 。
組織カルチャ ーの変化は必ず 、組織内で起きる 「事件 」 (大きな出来事 )を触媒にして進展する 。事件を避け 、なるべく静かに 、無難にことを進めようとする経営者や管理職では 、その組織文化を変えることはできない 。

リーダーシップということについて、今一度考えるきっかけになれば。

Facebook

Twitter

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

最近のコメント

Powered by Movable Type 6.2.6