massa142's blog

くり返す このポリリズム

「あなたのチームは、機能してますか?」を読んだ

あなたのチームは、機能してますか?

あなたのチームは、機能してますか?

動機

  • アジャイル界隈で評判が高い本で、推薦書籍によくあがっていた
  • チーム開発についてもっと勉強したい

感想

業績不振におちいったITベンチャーを舞台としたストーリー。

この本では、

  • 政治的な組織
  • 自分の部署を最優先してしまう

などなど、誰にでも少しは思い当たるような点を容赦なく突いてきている。とても現実感があるエピソードなので前半は読んでてちょっとつらいけど、最終的には以下の5つの機能不全についての理解がすっと腑に落ちるものとなっている。

チームの5つの機能不全

信頼の欠如

チームのメンバーが、互いに自分のまちがいや弱みを隠そうとすると、信頼の基盤をつくることはできない。

衝突への恐怖

信頼の欠如したチームは、腹を割って激しく意見をたたかわせることができない。あいまいな議論や慎重な発言が多くなる。

責任感の不足

チームのメンバーは、オープンな激しい議論のなかで意見を出さなければ、会議中に表面的には同意しても、本当にその決定を支持し責任感をもつことはできない。

説明責任の回避

明確な行動計画に責任をもって取り組んでいなければ、いくら集中力と意欲をもった人でも、チームのためにならない行動や態度をとった仲間をとがめるのに躊躇することがある。

結果への無関心

互いの説明責任を追求しないと、メンバーがチーム全体の目標より個人のニーズ(自尊心、キャリア開発、 評価など)や自分の部門のニーズを優先させてしまう。

Plone Conference TOKYO 2018 で発表してきた #ploneconf2018

はじめに

2018/11/9 に開催された Plone Conference TOKYO 2018 Day3 にスピーカーとして参加してきました。

Plone Conference TOKYO 2018って?

https://2018.ploneconf.org/

Welcome to the registration page for participating Plone Conference 2018 Tokyo. Plone Conference 2018 is the global annual event for the Plone community and takes place on 7 days from November 5 to 11, 2018 with tutorial, talks and sprints. Plone Conference is a great opportunity to update your skill and meet cool people face-to-face. We are waiting for your participation and let’s have fun together with Plone people!

またPloneとは、Zope上に構築された高機能なCMSです。

今回のPlone Conferenceは以下のように、additional trackという併設イベントが3日間それぞれ用意されていました。

  • 11/7: Plone Conference + Python Web Day track
  • 11/8: Plone Conference + DB Day track
  • 11/9: Plone Conference + Frontend Day track

自分はこの3日目のFrontend Dayの枠で、AngularとPlone REST APIについて話してきました。

スピーカーとしての感想

slideship.com

Angularの特徴・メリットを説明してから、Plone REST APIを通じて取得したデータを表示するAngularアプリケーション構築の簡単なデモをやりました。

今回の発表は、SQUEEZEでの社内LTを除いて、初めて英語で話す機会となりました。反省点も多いですが、英語での発表という新しいチャレンジができてとても楽しかったです。

自分の事前準備が遅くて迷惑をおかけしたと思いますが、このFrontend Dayを取りまとめて頂いた 原さん 本当にありがとうございました!

  • 簡単な英語でも発表はなんとかなる(なんとかなったはず?)
  • ライブコーディング中だと、話す英語が出てこない
  • 日本語での発表よりも話の脱線がないので、スライドは多めに用意するくらいが時間的にちょうどよかった

f:id:massa142:20181110191310p:plain

全体を通しての感想

  • Plone Conferenceには初めて参加したけど、本当に国際色豊かだった
  • AngularやGatsby(React.js)の話はあったけど、Vue.jsの話は1つもなかった
    • Ploneで盛り上がるのに時間差があるみたいだから、来年はPlone x Vue.jsの話が多そう
  • やはり時代はHeadless CMS
    • 教えてもらった Guillotina というフレームワークはAsyncIOを使っていて面白そう
    • "ギロチン" というネーミングセンスは、Headlessというのが直感的にわかってかっこいい
    • 「けど文化によっては、この名前は物騒ということで嫌がられている」とも話してた

あとPlone Community and Japanese Frontend Community Meetupというパネルディスカッションの場で、Ploneコミュニティから「どんどん新しい技術に移っていくのはいいことなのか?またそれを楽しんでいるのか?」というニュアンスの質問があったのが面白かった。

フロントエンドの現場では技術が変化していくのは当たり前になっていたけど、バックエンド(特にPloneという歴史があるプロダクト・コミュニティ)から見たら確かに不思議に思うのかもしれないなーと感じた。どちらが正しいというわけではないし、異なるバックグランドを持つエンジニアの意見が出てきたあの場はとても有意義なものになったと思う。

最後に、スタッフの皆さんありがとうございました & お疲れ様でした!!!!!

2018年9月10月の振り返り

前置き

先月またも振り返りを書く余裕なかったので、今回は2ヶ月分まとめて。
毎月書けるようペース配分なんとかしよう。今回からKPT形式での振り返りを導入しました。

仕事

アウトプット

ブログ

発表


04-107_Pythonで解く大学入試数学(新井 正貴)

イベント

音楽

映画・ドラマ・アニメ・漫画

  • N/A

買ったもの

ラクロス

  • vs VALENTIA 12-7 win
  • vs STEALERS 6-9 lose
  • vs STEALERS 9-10 lose
  • vs WOLVES 12-6 win

KPT

Keep

  • builderscon, PyCon JPとカンファレンスを満喫できた
  • なぜエンジニアはパフォーマンス計測しないのか - builderscon tokyo 2018 を聞いて健康に目覚めた
  • buiderscon以降、6・7月のデスマーチで増えたときの体重から-10kg達成
  • ずっと苦しんでた肩こりも軽くなってきた気がしている
  • 会社にバランスボール欲しいと言ったら、すぐに大量のバランスボールがデプロイされててよい
  • PyCon JP 2018ではスタッフ・スピーカー・スポンサーと忙しかったけど、無事終わってよかった
  • PyCamp講師練習会を開催して、たくさんフィードバックもらえた
  • 新規でAngularアプリケーションの開発に着手しているけど、新しいこと導入できて楽しい
  • 本を読むペースはいい感じにキープできている
  • 体も絞れて、視力もあがったことでラクロスの調子が良くなっている
  • チームメンバーも増えて、SQUEEZEの開発組織がよりよくなっているのを実感できる
  • 会社でモバイルワークを積極的に取り組んでいて、個人的にはとても働きやすい
  • Kibelaでの社内情報発信・共有は、相変わらずとても気持ちいい

Problem

  • 執筆のペースをもっとあげないとやばい
  • お金の無駄遣いが多い
  • 余裕が無いときに、イライラしたり感情をコントールできていない
  • 西武がCS敗退してしまった
  • SQUEEZEのMediumの更新が滞っている
  • 振り返りブログを書けていなかった

Try

  • 執筆に当てる時間をより確保する
  • Money Forwardで家計簿をきちんと管理する
  • SQUEEZE Mediumの更新頻度をあげる
  • マインドフルネスを取り入れてメンタルを安定させたい
  • Plone Conference 2018で英語での発表にチャレンジする
  • 1年に1つの新しい言語を勉強する
  • 毎月1日に振り返りブログを公開できるようにする

PyCon JP 2018 にスタッフ・スピーカー・スポンサーとして参加してきた #pyconjp

はじめに

2018/9/15~18 に開催された PyCon JP 2018 にスタッフ兼スピーカー兼スポンサーとして参加してきました。

だいぶ遅くなって今更感もあるけど、その参加レポートになります。

PyCon JP 2018って?

pycon.jp

PyConは、Pythonユーザが集まり、PythonPythonを使ったソフトウェアについて情報交換、交流をするためのカンファレンスです。 PyCon JPの開催を通じて、Pythonの使い手が一堂に集まり、Pythonにまつわる様々な分野の知識や情報を交換し、新たな友達やコミュニティとのつながり、仕事やビジネスチャンスを増やせる場所とすることが目標です。

今年のテーマは『ひろがるPython』。

人数が去年よりも増えて1000人規模となっての開催でした。

スタッフとしての感想

  • 稼働があまりできなかった 🙇
    • LTとかポスターの連絡おそくなってごめんなさい
  • LTの司会はじめてやったけど、場のつなぎかたがめちゃくちゃ難しかった
    • 来年ぜひリベンジしたい
  • 自分が担当していた部屋で参加者の方が喜んでもらえていてよかった
  • 動画配信すごくよかった
  • ネットワークを安定して供給できてよかった
  • 当日スタッフの仕組みすごくありがたかった

スピーカーとしての感想

slideship.com


04-107_Pythonで解く大学入試数学(新井 正貴)

SymPyの基本的な機能を取り上げた後、今年のセンター試験を実際にPythonで解いてみるという流れで発表しました。

裏番組に強力なスピーカー陣が多かったんですが、自分の予想を上回る方々に来ていただいて嬉しかったです。また、Twitterやブログにも反応を書いてくださったみなさんありがとうございました!

発表ではJupyter Notebookのタブを2つ並べるスタイルでやったのですが、わかりやすいという声をもらえてよかったです。

反省としては、数式を読み上げるのに思ったよりも時間をとられてしまったことですね。これが原因で、用意した問題の一部 & 質疑応答の時間を削ってしまったのが心残りです。来月の #stapy で同じく発表する機会を頂いたので、この反省点をいかしてブラッシュアップしたものをお届けできるよう頑張ります。

startpython.connpass.com

次回stapyのテーマもそうですが、発表を通じて「Python x 数学」というトピックに対する興味・盛り上がりを感じることができました。スライドでも書いてますが自分は数学ガチ勢ではないので、これからも引き続き数学の勉強を続けていこうと思います。

スポンサーとしての感想

  • 2016年から3年連続3回目のスポンサー
  • ブースにきてくれた人ありがとうございます!
  • ブースの位置がとてもよく、人の流れがある会場設計だったと思う
  • 自分はほとんどいれなかったけど、ブース対応してくれた @checkpoint++ @laughk++
  • スポンサーを続けているからこそ、SQUEEZEの認知度があがっていることを実感した
  • SQUEEZEは積極採用中です!
  • ブース用に企画やる体力なかった
    • 沖縄の宿泊施設を運営してるので、リゾートワーク券とか用意するとよさそう
  • SQUEEZEのノベルティもそろそろ団扇から変更しようかな

全体を通しての感想

  • 資料作り間に合ってなくて、前の日にあったスプリントとかパーティーに参加できなかったのが悔やまれる
  • Djangoの注目度が高くて嬉しかった
  • まだ聞けてないトークあるから楽しみ
  • みんなお疲れさま!ありがとう!!!

「最高の体調」を読んだ

動機

感想

書籍のなかで紹介されていることは科学的根拠を提示しながらの説明になっているので、読んでいて納得感がある。

個人的には、 「第3章 腸」と「第4章 環境」が特に参考になった。これをもとに腸内環境を整えようと、乳製品・食物繊維・プロバイオティクス(ビオスリーHi錠)の摂取を心がけるようにしている。食べるものに気をつけるようになった結果、それだけで体重もだいぶ落ちて健康になったことを感じている。

あとまわりに自然を増やそうと、オフィスに観葉植物を導入しようとしている。これは準備途中なので、導入後どういったメンタルの変化が起こるか観察していきたい。

Buildersconのセッションで合わせておすすめされていた『GO WILD』もこれから読もうと思う。

あわせて読みたい

読書メモ

第1章 文明病

  • 「文明病」とは、近代社会の変化によって引き起こされる、現代に特有の病気や症状を意味します
  • 自分が抱える問題について、どこに遺伝のミスマッチがあるのかを特定する
  • ミスマッチを起こしている環境を、遺伝に沿うように修正する

第2章 炎症と不安

  • 体内で延々とくすぶる長期的な炎症がメイン
    • 多すぎる
    • 少なすぎる
    • 新しすぎる
  • 「不安」は短期用のプログラム
    • 濃厚によって長期的なタイムフレームが導入されるが、人類の遺伝子は「遠い未来」に対応できていない

第3章 腸

  • リッキーガード
    • 腸の細胞に細かな穴が空いてしまう現象
    • 腸の穴から有害物質が血管に侵入
  • 腸内細菌の不調
    • 抗生物質が腸内の善玉菌を殺し、衛生設備が有用な菌との接触を妨げてしまう
      • 薬用ソープではなく石鹸を使う
      • 水まわりのトラブルをすぐ直す
      • 空気をきれいに保つ
    • エサとなる食物繊維が足りない
  • 普段から発酵食品をよく食べる者ほど心疾患や糖尿病にかかりにくい
  • プロバイオティクスサプリメントを摂取して腸内環境を整える
  • 食生活を再野生化して腸を守る

第4章 環境

  • 人は環境に影響を受ける
  • 自然とのふれ合いにより、確実に人体の副交感神経は活性化する
  • 「興奮」「満足」「脅威」3つの感情がバランス良く機能しているべき
    • 現代の都市には、「興奮」か「脅威」のどちらかに触れやすい
    • 偽物の自然にもリラックス効果がある
    • 観葉植物には幸福度や集中力を上げる効果が認められている
    • 公園に行って自然と触れ合うのがよい
    • 自分のライフスタイルを崩さない範囲で、自然との接触レベルを最大化していく
  • 良好な人間関係が、体を健康にし、心を幸福にしてくれる
    • もともと私たちの脳が、見知らぬ他人とうまく人間関係を作れるように設計されていない
    • 「セルフディスクロージャー」で相手への信頼を表す

第5章 ストレス

  • 短期的に終わる急性のストレスをさばくのは得意
  • 現代の慢性的なストレスに立ち向かうようにはできていない
  • リアプレイザル
    • ストレス反応を感じたら「楽しくなってきたぞ!」と言い聞かせる
    • 人間は自分の感情をコントロールし、意図的に影響を与えることができる
    • 感情の筋トレになる < 使えば使うほどストレスに強くなる
  • 睡眠負債
    • 睡眠には日中のストレスを回復させる働き
    • 日中に太陽の光を浴びる時間を増やして、メラトニンを増やす
    • 昼寝で負債を返済
      • 昼寝の前にコーヒーを飲むとよい
      • カフェインが脳に達するまでに20分かかる
  • ウォーキングだけでストレスは激減する
  • デジタル断食
    • 情報ポルノ
    • コミュニケーションポルノ

第6章 価値

  • 価値観の多様化は、私たちの未来像を、ぼんやりとしたものに変えてしまう
    • 自己連続性が低い
  • 価値評定スケール
    • 目標と価値は違う
    • 価値はつねに現在のプロセスなので、終わりはなく、成功も失敗もない
    • PPA(パーソナルプロジェクト分析)

第7章 死

  • 「死を想え」 はポジティブにもネガティブにも働く両刃の剣
  • 畏敬の念
    • 時間間隔に変化
    • 宗教・自然・アート・偉人
  • タイガータスク
  • マインドフルネス
    • 一掃除二信心
  • マインドフルイーティング

第8章 遊び

  • 遊び心がある人ほど、幸福な人生を送っている傾向
  • 未来を刻む
    • ex) ポモドーロ・テクニック / GTD / 7つの習慣
    • 複雑化しすぎた未来をシンプルにまとめ、現在との心理的な距離を縮める
    • 「3つのルール」
      • 人間の脳は、一度に「4+-1」種類の情報しか処理できない
    • 「if-then プランニング」
      • 「もしXが起きたら、Yをやる」
  • 無意味な数字ですらモチベーションが左右される
    • 人間はフィードバックに飢えている
    • Todoリストのチェックも効果あり

「JavaScriptで学ぶ関数型プログラミング」を読んだ

JavaScriptで学ぶ関数型プログラミング

JavaScriptで学ぶ関数型プログラミング

動機

感想

関数型プログラミングのエッセンスを改めて本で学べてよかった。あとはUnderscore.jsを使って解説が進んでいくので、Underscore.jsについてかなり詳しくなれる笑。

ES5しかりUnderscore.jsしかり、2018年のJavaScriptでは必須ではない要素が多いのも事実だけど、関数型の考えとテクニックをわかりやすいコードで体験できるとても良い本だった。

この次は、「付録 A 世の中の関数型JavaScript」でも紹介されているElmを触ってみたくなった。Introduction · Elm Tutorial を今度やってみようと思う。

読書メモ

1章 関数型JavaScriptへのいざない

関数型プログラミングとは、値を抽象の単位に変換する関数を使用して行うプログラミングであり、それらを使ってソフトウェアシステムを構築することである。

  • 関数型のアプローチ: 人間に関するデータの取り扱いに理想的
  • オブジェクト指向のアプローチ: 人間をシミュレートする場合に最適

2章 第一級関数と作用的プログラミング

JavaScriptが第一級関数をサポートしているという事実が、関数型プログラミングの実践を後押しします。

3章 JavaScriptにおける変数のスコープとクロージャ

  • 関数スコープをシミュレートすることで、thisについての理解が深まる
function strangerIdentity(n) {
  // intentionally stranger still
  for(this['i'] = 0; this['i']<n; this['i']++);
  return this['i'];
}

strangerIdentity(108);
//=> 108

i;
//=> 108
// グローバル変数を汚染している

strangerIdentity.call({}, 10000);
//=> 10000

i;
//=> 108
// グローバル変数への汚染は防げたが、このままだとグローバル変数にアクセスできない

function f() {
  this['a'] = 200;
  return this['a'] + this['b'];
}

var globals = {'b': 2};

f.call(_.clone(globals));
//=> 202

globals;
//=> {'b': 2}

クロージャを一言で表すと、自身が定義されたスコープに存在する外部のバインディングを、そのスコープの実行完了後にも使用するために確保している関数のことです。

  • 次はクロージャをシミュレートしてみよう
    • 外側の関数で定義された変数を個別に確保しておき、その変数を、返す関数のthisにバインドする
function createWeirdScaleFunction(FACTOR) {
  return function(v) {
    this['FACTOR'] = FACTOR;
    var captures = this;

    return _.map(v, _.bind(function(n) {
      return (n * this['FACTOR']);
    }, captures));
  };
}

var scale10 = createWeirdScaleFunction(10);

scale10.call({}, [5, 6, 7])
//=> [50, 60, 70];

4章 高階関数

  • 高階関数の定義
    • 第一級データ型である
    • 引数として関数をとる
    • 関数を戻り値として返す
  • 値ではあく、関数を使え
    • どのような引数が渡されても常に定数を返す関数を使用する
  • 関数型スタイルでは実行ターゲットとなるオブジェクトを引数に取る関数を好む
  • 高階関数に渡す引数は返される関数の「設定項目」であると考えてみるとよい

5章 関数を組み立てる関数

  • カリー化
  • カリー化された関数は、論理定な引数が1つ渡されるたびに新しい関数を返す関数
  • 右から左へカリー化することでオプションの引数の個数を固定できるのでオススメ
  • カリー化された関数を使用することによって、「流暢な」インターフェイスを持った関数を生成できる
  • Haskellでは、関数はデフォルトでカリー化されている
  • 部分適用
    • カリー化とは異なり、引数の数は必ずしも一つではなく、複数の引数を扱うこともできる
  • JavaScriptにおいて、関数が可変長の引数を取ることにより複雑化されてしまうカリー化とは異なり、任意の数の引数の部分適用は関数合成の戦略として合理的と言える

6章 再帰

7章 純粋性、不変性、変更ポリシー

  • 関数型プログラミングは、ソフトウェアの創造プロセスにまとわりつく複雑さを最小限に抑えるための構築方法を考える手段
  • 純粋関数
    • 関数自身がコントロールできる範囲外にあるどの変数も変更せず、返さず、そして依存しない
  • Ref: Immutable.js

8章 フローベースプログラミング

  • チェーン
    • 共通の参照をもつメソッドを連続して呼ぶ
      • _.chain()
      • Promise
  • パイプライン
    • 期待されるデータ値が入力されると、非破壊的変換を行い、そして新しいデータを返す
  • アクション
    • 異なる型の戻り値をもったさまざまな関数を合成するテクニック
    • 内部のデータ構造の管理詳細を隠蔽
    • Reduxのactionにも通じる?

9章 クラスを使わないプログラミング

  • Mixin
    • mixinで定義したすべてのメソッドをプロトタイプにコピー
_.extend(Hole.prototype
    , HoleMixin
    , ValidateMixin
    , ObseerverMixin);
  • mixinベースのプログラミングを行うよりも、まずはプリミティブや配列オブジェクトなどのシンプルなデータ型を試みることをお勧め

builderscon tokyo 2018 に行ってきた #builderscon

はじめに

2018/9/6~201/9/8 に開催された builderscon tokyo 2018 の参加メモです。

builderscon.io

参加経緯

今回はスポンサーとして参加しました。 Pythonエンジニア・コミュニティではないところでも、SQUEEZEのことを知ってもらいたい & 多くの人と交流したいと思って今回スポンサーしました。

スポンサー特典で、インタビュー記事も書いてもらいました。取材してくださった @chocopie116さん @uzullaさん、ありがとうございました!

lantern.builderscon.io

この辺りについては、会社のMediumでまた改めて書く予定です。

参加日程

9/7・8の2日間とも、朝用事があってお昼からの参加。

前夜祭・カンファレンスディナーなどは、こちらも都合があわず残念ながら不参加。

全体を通しての感想

  • スタッフが楽しんでやっているのが伝わってきて、とても気持ちよかった
  • 前夜祭やディナーに来年はぜひとも参加したい
  • 多目的教室1~3は狭くてすぐ満員になっちゃうという不満も聞こえたけど、せっかくなんだからゲストスピーカーや英語トーク聞いたほうがいいのにねという話をスタッフの@yutailang0119とした
    • そういう自分もそこまで英語トークは聞いてはいないのだけど
  • 「知らなかった、を聞こう」というテーマが個人的にとてもよかった
    • どれ聞くか迷った時には、後からスライド読んだらわかりそうなものより自分が詳しくないほうを聞きに行こうという気持ちになれた

聞いたトーク

Algorithms in React

Webサービスにて200週連続で新機能をリリースする舞台裏

  • Mackerelの開発フローについて
  • 週次担当制やあるエンジニアの1週間の様子など、現場の雰囲気が知れてためになった
  • 来週のリリースネタないからリリースしないでおこうという「作り置き」には笑えた

ボクが考える i18n の未来

  • i18nの現状と問題点、それから@kazu_ponさんが考える未来のi18nフレームワークについて
  • 単純な翻訳だけでなく、法律や文化などを考慮するとi18nの現実は厳しい
  • i18nについての記事を色々紹介してもらえて、勉強になった
  • i18nの現実はつらいよなっていうのをみんなで再認識したトークだったと思う

airflowを用いて、複雑大規模なジョブフロー管理に立ち向かう

  • cronの依存関係や、ワークフローの多段化という問題を解決しようというお話
  • airflowについては去年あたりからよく聞くし、Python界隈では広く採用されているように思う

安全なランダムネスの理論と実践

ブロックチェーン(DApp)で作る世界を変える分散型ゲームの世界

ランチセッション (株式会社VOYAGE GROUP)

  • https://ajito.fm/ 堪能した
  • 最近なにかと話題のエンジニアの教育について
  • 「頑張らないReact」については、それVue.jsでよくない?と感じた

なぜエンジニアはパフォーマンス計測しないのか

  • 今回のmy best talk
  • 釣りタイトルからして最高だった
  • 体重増・猫背・頭痛・肩こりに最近悩んでいたので、健康への意識がかなり高まった
  • ガジェットをどんどん購入させようとする悪魔的トーク
  • 以下を勢いで購入してしまった
  • ErgoDox EZもめちゃくちゃ欲しくなった
  • https://www.myfitnesspal.com/jaでカロリーログもはじめた
  • 計測はじめてどう変化があったかを今度まとめたい

Using Chrome Developer Tools to hack your way into concerts

  • developer toolを使ってハッキングやっちゃったよーというお話
  • もっとゴリゴリにdevtool使いこなすのかと思ってたいたけど、紹介していたのは基本的な機能だけだった
  • スピーカーの@amyngynがお茶目で、聞いていて楽しい発表だった

Extending Kubernetes with Custom Resources and Operator Frameworks

  • そーだいさんのを聞きにくか迷ったけど、「知らなかった、を聞こう」と思いこちらを聞きに行った
  • ただ結局「なるほどよくわからん」という感じ
  • k8sのことを深くは理解してなかったので、同通レシーバーで聞くべきだったと反省
  • 危機感を感じられたのでよし!としたい

Lightning Talks

  • みんなお祭り感があって、とても楽しかった
  • https://nedi.app/ は実装が進んでて、「おーーーかっこいい!」と思った

おわりに

buidlersconは初めての参加でしたが、めちゃくちゃ楽しめました!

スタッフ・スピーカー・スポンサーの皆様、絡んでくれた参加者の皆様、本当にありがとうございました!!

f:id:massa142:20180910142854j:plain