better done than better said

困ったときに調べた結果

「小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則 」を改めて読んだ

数年前に会社の書籍として借りてこの本を読んでいたが、数年経って現実的に現在いる会社が小さなチームになった。 そして今、在宅勤務となり5時で業務を終了できる環境など当時この本を読んで憧れた勤務環境が整ってみて、改めてこの本を読んでみる。

  • 会社は小さく
  • 失敗から学ぶな
  • 5時には帰宅
  • けんかを売れ

などなど帯にはなかなか攻撃的な文言があり当時はワクワクしながらこん本を手に取って読んだなあ、2014年の話なのですでに5年前のもの。
内容としては 簡単にまとめるとこんな感じ

  • 小さなチーム、 シンプルな考え方でバイアウトされるためではなく自分たちが欲しい、価値があると思うものを作る。
  • 仕事をすることの本質を見極めれれば会社の不要なルールもオフィスも必要なくなる。
  • 半端なプロダクトではなく無駄なく良いものを細かなフェーズで作り上げていけば価値があるものが出来ていく。
  • そういった価値のあるものには副産物が出来、想定外の価値が生まれる。
  • 自分たちが必要とするプロダクトの信念と顧客の声、カスタマサポートで気付けるもの重要性について

5年たって改めて読んで感じたこと

  • リモートワークであろうが5時で勤務を終了出来る環境があろうが関わってるプロジェクト(仕事)の関心度が高ければ通常の会社勤務と仕事に対してのモチベーションは変わることはない
  • もちろん時間を管理しやすくなるので在宅勤務の利点は大きい。本書にも書かれているが仕事には集中できる時間帯が必要なので週に1,2回在宅などで一人になり進めれる時間があることは望ましい。
  • 会議も認識や方向性を確認するために議題をしっかり定めて行うことは必要(雑談は別枠を設けて行う)
  • 会社の大きさに関しては確かに小さい会社の方がしがらみが少ない分やりやすいことが多いだろうが、大きい会社であっても所属するチームの状況によっては大きい会社のチームの方がスムーズに仕事が出来る環境があることも多い、 会社の大小ではなくチームでどれだけ同じ目的をコミット出来るかが重要。
  • 小さいチームで大きい仕事をするにはチーム全体が同じ方向を見れるように核みたいなものがないと優秀な人が集まっていても上手くいかないことは多い
  • セルフマネジメントを出来るメンバーが揃っていても情報、目的意識を共有出来ていないとうまくチームは動かない
  • 逆に能力の高い、低いがあっても今行う業務をなぜ行なっているかしっかりと考えて日々改善出来るメンバーが多く入れば成果は出やすい

この本を今読んで改めて思ったこと

  • 依頼される業務にはなぜそれが必要なのか理解できるまでは確認を行う
  • 自分のやっている業務、なぜそれを行う必要があるかは端的に定期MTGでチームメンンバーに伝えていく
  • 行き詰まった時はまず考えをリセットしてやらなくていいことを省いていく

この本も啓発本に近い内容だと思いますが、結局のところ初心に帰り目的を共有し、業務をルーティン化せずに日々改善の目を持って行うことを忘れてはいけないんだなあと思い直す感じでした。

phpの正規表現マッチ(preg_match)でtableをスクレイピングする。

プラグインを入れるのが面倒だったりする場合、サクッとpreg_matchでtableデータをスクレイピングしてみるメモ。 時間なくてほんとメモ程度のものです。

HTMLはこちら

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>HTML5サンプル</title>
</head>
<body>
  <table class="table table-bordered datatable">
    <thead>
      <tr>
        <th>DATE</th>
        <th>IMP</th>
        <th>CLICK</th>
        <th>CTR</th>
        <th>PROFIT</th>
        <th>CPM</th>
        <th>CPC</th>
      </tr>
    </thead>
    <tbody>
      <tr class="color_fri">
        <td>2019-02-01</td>
        <td>13,305</td>
        <td>205</td>
        <td>1.54</td>
        <td>1,459.0</td>
        <td>118.4</td>
        <td>7.7      </td>
      </tr>
      <tr class="color_sat">
        <td>2019-02-02</td>
        <td>12,707</td>
        <td>241</td>
        <td>1.90</td>
        <td>1,518.0</td>
        <td>129.0</td>
        <td>6.8      </td>
      </tr>
      <tr class="color_sun">
        <td>2019-02-03</td>
        <td>6,915</td>
        <td>136</td>
        <td>1.97</td>
        <td>866.0</td>
        <td>135.3</td>
        <td>6.9      </td>
      </tr>
      <tr class="color_mon">
        <td>2019-02-04</td>
        <td>8,043</td>
        <td>162</td>
        <td>2.01</td>
        <td>1,005.0</td>
        <td>135.0</td>
        <td>6.7      </td>
      </tr>
      <tr class="color_tue">
        <td>2019-02-05</td>
        <td>8,179</td>
        <td>161</td>
        <td>1.97</td>
        <td>1,002.0</td>
        <td>132.3</td>
        <td>6.7      </td>
      </tr>
    </tbody>
  </table>
  </body>
</html>

# 上記HTMLを何かしらで取得する
$data = file_get_contents('./x.html');


preg_match('#<table[^>]*>(?<data>.*?)</table[^>]*>#s', $data, $m);
preg_match_all('#<tr[^>]*>(?<data>.*?)</tr[^>]*>#s', $m['data'], $m);


foreach ($m['data'] as $k => $tr) {
    preg_match_all('#<td[^>]*>(?<data>.*?)</td>#is', $tr, $m);
}
var_dump($m);