Lean Baseball

No Engineering, No Baseball.

スラスラ教える・教わるPython - 押し付けない・楽しむプログラミング学習のカタチ

先々週は札幌、そして先週(というより昨日まで)沖縄とPython祭り真っ盛りでした.

このエントリーは, PyCon Kyushu in Okinawa 2019でお話した, 「スラスラ教える・教わるPython」のふりかえりとなります.

(自分で話した内容のまとめとか補足です).

なお, イベントそのものの感想・ふりかえりはnoteに書いたのでそちらも合わせてご覧いただけると幸いです.

note.mu

TL;DR

  • 押し付け、いわゆる「マウンティング」をした時点で負け
  • プログラミングを学ぶ・使うなら楽しくやる(たとえ仕事でも)
  • ヤル気をモチベートする方法なんぞ無い
  • ペアプログラミングは良いコミュニケーションツールだ

打順

資料

話したスライドそのまま公開しました.

資料作成にあたり,

  • プログラミングを「教わった」対象者である, 弊社アナリストの森本氏
  • スライドの査読・フィードバック等でお手伝いしてくれた #rettypy メンバーの岩永さん, 竹野さん

彼らのフィードバック, 特に当事者である森本氏には事前アンケートなど快諾してもらって感謝しています.*1

ありがとうございました!

一番言いたかったこと「マウンティングするな!」

f:id:shinyorke:20190520192952j:plain
これが秘訣でした

ここが一番気を使ったことであり, 終始大切にしてた決まり・価値観でした.

森本氏と私は上司部下の関係ではないですが*2,

  • プログラミング経験(20年以上離れている)
  • 実年齢(干支を一周ちょっと離れている)

などなど、(私自身が意識しなくても)マウンティングを取れる要素はたくさんあったわけで.

これらが悪い方に作用(押し付け&マウンティング)したりすると,

  • プログラミング以前に, 講師に気を使う(教わる方が恐縮する)
  • 言われた事・教えたことしかやらなくなる
  • 結果, 楽しくないし学びも少なくなる

という悪循環が簡単に想像できた(&それに近い事は見てきたし自分もやらかしてる)ので,

押し付けるな・マウンティングするな!

を自然と気をつけていた気がします.

これが完璧に作用した, とも思っていないですが少なくとも,

  • 教わる側(森本氏)が「PyDataやりたい」「質問あります!」等, 自ら講師(私)に提案したり
  • 状況に合わせ,カリキュラムややり方を変えたことにより,いい意味で「言われたこと・教えたこと」以外の脱線が多数発生
  • 結果, 今こうして仕事でプログラミングを生かしている.

という現実が今ここにある(から発表ができた)ので,大枠間違ってなかったんじゃないかなと思います.

プログラミングに限らず, 何かを学ぶ・活かす時はやはり自己責任というのがあり, 講師がやれることってある意味限度があるのですが,

経験・キャリアが豊富で力があるモノはその実力を「場作り」で示す!

って大事だよなあーと改めて思いました.

かわぐちかいじ作品の漫画の主人公みたいな感じで(伝わるかなこれ笑)*3.

二番目に言いたかったこと「プログラミングを楽しもう、好きになろう」

f:id:shinyorke:20190520200937j:plain
やっぱ楽しくないと

「自分が書いた・作ったものが意図通りに動く」楽しさって素晴らしいよ!

色々な意見があるかと思いますが,

プログラミングを「言われてやる」「仕事だからやる」.

Pythonを「流行ってるからやる」「機械学習したいからやる」.

ではなくて,

「プログラミングって楽しいよ!一緒にやっていこうぜ!!」

感をなるべく前に出すようにしていました.

工夫したことは,

  • その場で書いて動かせるサイズの写経・ペアプロを取り入れる
  • プログラミング・エンジニアリング文化由来の「しょうもない話」を取り入れる
  • 時折, 野球の話を取り入れる(セイバーメトリクス, なんJほか)

特に最後の「野球の話」は, 森本氏がガチのアナリストであり, セイバーメトリクスの指標や考え方の話はお互いツーカーなので,

# ピタゴラス勝率を算出する
r = 658  # 得点
er = 665 # 失点
print(r**2 / (r**2 + er**2))
> 0.4947091428251498

みたいな例をその場で披露したりなど,親近感を湧かせる工夫をしました.

これはウチが「スポーツ」「野球」の事業の会社なのでやったことですが,他でも勿論応用できると思いますのでぜひ真似してみるといいかなと思います.

反響

発表後の感想などです.

当日の会場など

質疑応答で一個, その後のランチ・懇親会などで話題に上がったのが一個

【質問】教わる側がやる気ない・モチベーションが無いときの対処方法

【答】(少なくとも私の状況だったら)教えるのをやめて別の方法で解決してた

私が学校の先生・講師だったり、プログラミング教室を運営してる人間であれば話は別かもしれませんが,

教わる気がないorヤル気がなかったらやめる!というのは大分初期から決めてました.

アナリストがプログラミングできるのは確かに理想的なのですが,何かしらの理由により無理な場合は,

  • データの前処理や集計の自動化に振り切る(教育の時間をなくして)
  • 振り切って作った仕組みでできたものをアナリストにわたす

ぐらいで良かったと思っています.

幸いにも森本氏が前のめりにやってくれたおかげでこの未来はなくなりましたが,

職場でのプログラミング教育は戦略的にやるべき(全体最適化の一部である)

と思ってやっていたのでまあそういうことです.*4

【質問】具体的によく使っていたプラクティスは

【答】ペアプログラミング

アジャイル的な意味の厳格なペアプログラミングじゃなくて,

「一つの画面を共有して一緒に眺めながらやる」

ゆるいペアプログラミングを軸にしていました.

これは以前コンサルやってた頃に,一緒にやってたお客さんがペアプロ好きでしょっちゅうやってた

→やる内に自分も好きになった

→公私ともども,困ったらペアプロ的なアプローチを雑にやる

習慣がついてたので,そのままやりました.

この辺の細かい話はまた別の機会に言語化します(っていうのがこのエントリーのオチです).

Twitter上

発表中・発表直後

「押し付けない」「楽しむ」の価値観がやっぱ刺さってたのかな?と思いました.

「意図的に黒船を」も「楽しむ」きっかけの一つでやったことなのでここも引っかかって嬉しかったです.

これは森本氏と私の二人三脚がちゃんとできていた事かなと.(身内でありながら)毎回予習やってたのはホント凄いことだと思います.

スライド公開後

いくつかこのようなツイートがあって大変感謝しております!

参考になれば幸いです!

補足情報:本編で話さなかったこと

ちょっとした補講として本編で話さなかったことを.

#スラpy とJupyter本が教材になった理由

もちろん, 書籍の出来の良さもありますが,

著者がもくもく会・リアルで会える場所にいたから

というのが最大の理由かもしれません笑

こちらのスライド,

f:id:shinyorke:20190520204013j:plain

「意図的な黒船」の方々の一部は書籍の著者の方々で,ご協力してもらってホント感謝してます.

以前このブログでも紹介してますがこの2冊はホント素敵なので迷った方はぜひ読んでみてください.

スラスラわかるPython

スラスラわかるPython

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

結局この方法は真似できるのか?

あくまでも私と森本氏の場合うまくいった!なのですべてを真似して再現するのは無理かなと

何度でも言いますが, 大切なのは

  • 押し付け、いわゆる「マウンティング」をした時点で負け
  • プログラミングを学ぶ・使うなら楽しくやる(たとえ仕事でも)

この二つなので,これらをいい感じにやったらうまくいくと思います.

状況は人それぞれ,組織によって異なるのであとはよしなに.

【次回】決め球は「ペアプログラミング」 - って話がしたい

最後になりましたが, この発表を通して

「マウンティング」しない, 楽しい「ペアプログラミング」というノウハウを共有すべきでは!?

と思いたったので, PyCon JP 2019のトークとして応募しました.

トーク通るといいな...と祈ることにより,このふりかえりは終わりたいと思います.

最後になりましたがたくさんのご意見・フィードバックありがとうございました!

*1:ちなみに,この発表は仕事でもなんでもないです.

*2:一部ツイートやリアルの感想で「いい上司に恵まれたんですよ!」的なコメント頂きましたが, チームのメンバー(森本氏に限らず)は対等であり、お互いの職域・領域のエキスパートなので上司・部下という思想を持ったこと自体ありません

*3:「空母いぶき」の秋津艦長, ちょっと古い作品だと「沈黙の艦隊」の海江田四郎とか.「力あるやつは技量で結果を出して示せ!」的なの好きですしそれを目指していきたい.

*4:言い方を変えると,ヤル気無いやつをヤル気出させるのは「個別最適化」であり,そこにかかるコストと見合うかどうかを考えてやるべきです.

入門pandas - 明日からはじめるデータ分析のきほん

f:id:shinyorke:20190509201634p:plain
こういうことやぞ

サムネイルで描いた事がこのエントリーの全てです.

Pythonでは、「pandas」というライブラリを使ってデータ分析や解析をすることが非常に多いです.

でも、「利用方法(またはユースケース)」に合わせた入門ってあんまりない気がします.

ということで、「PyCon mini Sapporo 2019」でそんな話をしてきました.

sapporo.pycon.jp

訳あって資料およびJupyter notebookは非公開*1ですが、こちらにその基本とかをまとめます.

TL;DR - このエントリーは

  • 実務や趣味のデータ分析でpandasを使う例を紹介します.
  • 初歩的な使い方から中級者になるまでのヒントになると思います.
  • なお,統計テクニック・機械学習には触れません・やりません.

なお、対象読者は「そこそこPythonとJupyter notebookが使えてこれからデータ分析・解析をやる」方となります.*2

参考文献

今回まとめるにあたって参考にした書籍・ブログです.

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

  • 作者: Wes McKinney,瀬戸山雅人,小林儀匡,滝口開資
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/07/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

cocodrips.hateblo.jp

もくじ

pandasのきほん

そもそもpandasってなーに?

pandas #とは

  • 公式サイト(https://pandas.pydata.org/)曰く、「Python Data Analysis Library」
  • Pythonでデータ分析するために使うものが一通り揃っているライブラリ.
  • Pythonでデータ分析・解析を行う人がほぼ使う、デファクトスタンダードな道具.

使いみち

  • データの入出力(CSV, Excel, DB, HTML, etc...)
  • データの前処理(データの抽出,欠損値処理,ピボットテーブルしたりetc...)
  • 簡易的な可視化(グラフを書いてimageとして保存,など)

機械学習, 統計そして「実務」「趣味」にも活かせる神ライブラリである!

このエントリーでやること

例えば、こういったお仕事・分析があったとします.

  • システムやアプリのデータをかき集めてレポートにまとめて偉い人に説明する.
  • 「データをかき集めてExcelにして提出」するのがわたし
  • 「パワポとか書いて説明する」のが先輩とか上司.
  • データはCSVに生ログ、SQLとか色々、基本的には汚いデータが多いです.

f:id:shinyorke:20190508204059p:plain
絵にするとこういう感じ

この、「色んなデータ」を読み込んで「Excelにする」までをこのエントリーでやってみます.

f:id:shinyorke:20190508204200p:plain
つまりこういうことです

本来は色んなデータを読み込んでやるべきですが、説明が煩雑になるので、

CSVを読み込んで加工してExcelにする

をゴールとします(html他の入力方法は少しだけ説明します.)

こんにちはpandas - 導入編

事前条件

  • PCはMacでもWindowsでもLinuxでもかまいません.
  • Python 3.43.6*3以上、原則として最新版(現時点では3.7)がいいでしょう.
  • pipで導入します. Anacondaの方はいい感じに読み替えてやってください.*4

1. 仮想環境を準備

$ python3 -m venv ~/python_venv/pandas_nyumon
$ source ~/python_venv/pandas_nyumon/bin/activate

2. 必要なライブラリを入れる

基本のライブラリ

(pandas_nyumon)$ pip install pandas jupyter matplotlib

今回はExcelも使うのでこちらも

(pandas_nyumon)$ pip install openpyxl xlrd

3. 動くかどうかチェック

notebookが動けばOK

(pandas_nyumon)$ jupyter notebook

ここまで来たら実際に使ってみましょう.

pandasを使おう

一番基本的な利用シーンに合わせて紹介します.

pandasのデータの種類(大雑把)

二次元データ(Dataframe)と一次元データ(Series)の二種類ある.

Dataframe #とは

複数カラム存在する行列データ

import pandas as pd

# Dataframeはこれ

df_yakiu = pd.DataFrame({'Kamome': [10, 10, 10, 3], 'Tiger': [1, 0, 1, 2]})

f:id:shinyorke:20190508203346p:plain
Jupyter notebookでやるとこうなる

Dataframeは色々なふるまいができます.

例えば足し算あっ(察し*5

f:id:shinyorke:20190508203521p:plain

Series #とは

単一カラムのデータを指します.

s = pd.Series(['四球', '四球', '四球', '四球', '本塁打', '三振', '三振', '三振'])

これも色んなふるまいができます.*6

f:id:shinyorke:20190508203717p:plain

初級編 - データと友達になる

まずはデータと友達になろう.

今回のデータは

  • Kaggleで使われている、MLBの公開データ を使います.
  • People.csv(選手マスタ), Batting.csv(打撃成績)を使って,
  • 色んな指標(例:打率、OPS)を計算してみましょう.

???「メジャーリーグ興味ないンゴ」と言わずにどうぞお付き合いください :bow:

pandasでCSVを読み込む

pd.read_csvで読み込んでDataframeを作ります

# インポートしましょう(慣習で, alias(as)はpd)
import pandas as pd

# やってみよう(選手ごとの打撃結果)
df = pd.read_csv('./{任意のパス}/Batting.csv')

CSV以外のデータは?

大体のデータはread_なんとかで読めます, たくさんあるので色々試すといいかも*7

# Excel(Excelデータを読み込む)
df = pd.read_excel('./datasets/hoge.xlsx')

# sql(select文の結果からDataframeを作る, 事前にSQLAlchemyやコネクタの設定必要)
df = pd.read_sql('select id, name from users where name like "Arai%"')

# html(指定したURLのtableタグをParseしてDataframe作る,いわばスクレイピング)
df = pd.read_html('https://example.com/tsubakuro/index.html')

計算してみよう

Dataframeは「行列」なので、行列同士の演算ができます.

例えば、読み込んだデータが「Batting(打撃成績)」の場合、打率はこのようにして計算ができます.

# 打率を計算してみよう. 打率(BA)は 「安打数(H) ÷ 打数(AB)」
df['BA'] = df['H'] / df['AB']

この調子で、

  • 出塁率
  • 長打率
  • OPS

なども計算できます、興味ある方はぜひやってみてください.*8

別のデータを紐付ける

例えば今は打撃のデータのみ読み込んでいますが、こちらには「選手ID」があっても「選手名」がありません.

選手の名前を取るためには別のデータ(People.csv)を読み込んで、紐づけする必要があります.

SQL的な解法だと、「join」を使うことになると思いますが、欲しいのは選手名だけなのでシンプルに「成績データ」に「選手名」をタグ付けしてみましょう.

# まずは選手マスタを読みこんでみよう
df_people = pd.read_csv('./{任意のパス}/People.csv')

# 名前とindexを設定
df_people['name'] = df_people['nameFirst'] + ' ' + df_people['nameLast']

# playerIDがuniqueなのでこちらをkeyに
df_people.set_index('playerID', inplace=True)

# いよいよ名前を設定!ひとまずfor文で回してセット!(もっといい方法は中級編にて)
for i, row in df.iterrows():
    try:
        name = df_people.loc[row.playerID]['name']
    except KeyError:
        print('Warning', row.playerID)
        name = 'Nanashi-San'
    df.at[i, 'player_name'] = name

エレガントな方法は後ほど紹介しますが、最初は「データの素性」を見ながら愚直にforで回して良いと思います、Excelで開けるサイズなら.*9

必要なデータだけ取得する

Excelで言うところのフィルター、SQLで言うところのSELECTです.

さっきのDataframe(すでに選手名付き)から大谷翔平(Shohei Ohtani)さんだけ欲しい場合は、

df.query('player_name == "Shohei Ohtani"')

これで事足ります.

なお、この例はqueryですがwhereなど他の方法もあります.

結果をExcelに出力

to_excelで一発です.

# 結果をExcelに出力する
df.to_excel('mlb_batting_stats.xlsx')

これぐらい使えるようになると、普段仕事でまずは使おう!って気になると思います、ぜひお試しあれ!

中級編 - エレガントな書き方

いくつかテクニックありますが、「初級」で触れたfor文の話題を.

for文を使わないやりかた

例えば先程出てきたこちら.

# いよいよ名前を設定!ひとまずfor文で回してセット!(もっといい方法は中級編にて)
for i, row in df.iterrows():
    try:
        name = df_people.loc[row.playerID]['name']
    except KeyError:
        print('Warning', row.playerID)
        name = 'Nanashi-San'
    df.at[i, 'player_name'] = name

Dataframe(df)が数百〜数千行であればいいのですが、これが数十万数百万行あっても同じことするか!?

って言われたらしないですよねと.

pandasの内部処理的に行列処理する方法があって、その方法で書くとこのように書き換えができます.

# Seriesのmap関数を使います.

def get_player_name(playerID: str) -> str:
    try:
        name = df_people.loc[row.playerID]['name']
    except KeyError:
        name = 'Nanashi-San'
    return name

df['player_name'] = df['playerID'].map(get_player_name)

なぜこれが良いか?は以前こちらのエントリーに上げていますのでご興味ありましたらぜひ.

shinyorke.hatenablog.com

指定した列データのみ読み込む

read_csvやread_excelだと、デフォルトはすべての列を読み込みます.

カラム数が100を超えるようなデータだったりするときはホントに使うデータだけを指定するだけでもメモリ等のリソースに優しくてオススメです.

# これだと全部読んじゃう
df_people = pd.read_csv('./{任意のパス}/People.csv')

# 使うものだけ読みたいときはこれ
COLUMS = ('playerID', 'nameFirst', 'nameLast')
df_people = pd.read_csv('./{任意のパス}/People.csv', usecols=COLUMS)

これもやった方がいい理由・背景は上記と同じエントリーにありますので気になる方はぜひ.

さあやってみよう!

ということで、お仕事なり学業なり趣味で是非とも試してやってみてください!

書籍やサンプルデータという観点ではやはりJupyter notebook本がやりやすい*10と思いますので写経などからはじめてみては如何でしょうか?

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

データ分析の楽しさがこれで伝わると幸いです!

*1:理由はいろいろとありますが、今回はブログの方がわかりやすく伝わるかなと思い、ブログにしました.それが最大の理由.

*2:のでJupyterの導入・Pythonの基本文法はすっ飛ばします

*3:3.4はもうEOLだし他ももうすぐ...っていうコメントをいただいたので、3.6にしました

*4:このサンプルをvenv + pipでやったのでそれに従い説明します.Anacondaでも普通に動きます(一応試した)

*5:なんでやHANSHIN関係ないやろ

*6:この例、なんJ民なら伝わるやろ(震え

*7:ちなみにread_htmlは過去にこちらのエントリーでやってます&スクレイピングを伴うので自己責任で行ってください.

*8:発表では例を示しましたがここではあえてクイズにします、正解者に何かあるかもしれない(適当)

*9:最初から難しく書いたりエレガントにしようとするとかえってミスするのでオススメできません、全部データを読まなくても最初の数行をheadでとりながらやってもいいかと思います.

*10:Jupyter, pandas, matplotlibを一通り覚えるならこれがホントやりやすい.ただし、(不幸にも出版時期の関係で)Bokehの記法が古いやつなのでそこだけ注意必要かも.

平成の終わり - 2019前半ふりかえりと令和に向けて

f:id:shinyorke:20190430140508j:plain

写真は今月最初に花見したときの井の頭公園です.

ぼんやりと空を眺めまわしてみる桜は最高でしたが、本題とは関係ありません.*1

それはさておいて、今日(2019年4月30日)は平成最後の日、なんやかんやでちょっとした大晦日感ある(それも、次はあと数十年先だろうという)ので流れにのってふりかえりたいと思います.

おしながき

今年(2019)前半のふりかえり

備忘録程度にふわっと.

仕事

今の会社...というより、ずっと宣言していた野球界の仕事に就いてから1年と3ヶ月経過しました.

今は超優秀な二人目のフルスタックエンジニア(マレーシア出身)と、これもまた素晴らしい学生インターンと私の3人で少しずつ前に進んでいます.

個人としては久々に新しいfeatureを徹頭徹尾開発したり、相変わらず採用とか何とか諸々やっています.

去年と違うところはチームらしくなってきた(主に人数面で*2)故に、コミュニケーションとかマネジメント面でサポートすることが増えており、久々に「マネジメント」とかを意識するようなキャッチアップや相談が増えた気がします.

このブログやnoteに書いたこの辺はまさにそのモヤモヤの中間メモかなと.

shinyorke.hatenablog.com

shinyorke.hatenablog.com

note.mu

対外活動

外部発表などについては自社の事業に集中したかったのと,この先3〜5年を見据えた上で敢えて控えめにしていました.

とはいえBaseball Play Studyはやりたかったな...っていう悔しさはやろうと思ってたネタを供養ブログとして上げました.*3

shinyorke.hatenablog.com

唯一例外的にやったのが2月と4月の2回、広報LT大会(#PRLT)に「エンジニア・技術者に刺さるコンテンツ・採用施策ってなんなのさ?」をテーマにLTさせてもらいました.

note.mu

note.mu

ちなみに今さらですが、LTをわざわざやった理由は,

  • 過去5年くらいで培ってきた「エンジニア #とは 」という思想・話を「エンジニアリングじゃない」側面で言語化したかった.
  • PRLTは以前から「面白そう!」と注目していて*4、どこかの機会でぜひLTやりたいと思っていた.
  • 上記2つが見事にマッチしたのと、(個人的に)エンジニア界隈でのLTが慣れ過ぎちゃって刺激が足りなかった(個人的にマンネリ感が来ていた*5)のでちょっとしたスパイスがほしかった.*6

上記noteにも記載していますが、学んだことの再整理ができたこと、フィードバックを頂いたり新しいお友達が増えたりなど大変満足しております、参加してよかった.

また、主催している #rettypy については目立ったトラブルもなく粛々といい感じに運営しています.

ちなみに次回は6/1(土)です、よかったら来てね.

retty.connpass.com

プライベート

まず大事なお知らせですが、ついにRettyで900投稿を達成しました.

f:id:shinyorke:20190430143956j:plain
ちなみに現時点で916まで伸びてます

流石に平成の間で1,000投稿は難しいですが苦笑、40回目の誕生日を迎える9月までには余裕で達成できそうなので、30代最後の目標の一つとして頑張っていきたいと思います.

一方、身体の方は病気はしていない&健康診断もほぼ完璧だったのですが体重が増えたのとビミョーに関節の可動域が「アレ!?」ってなるときがあるので、

  • 筋力維持の為のトレーニングを毎夜寝る前にやる*7
  • 歩く量を増やす*8
  • 整体・鍼のケア回数を増やす(=助言を受ける・施策実施を増やす*9

と、ある意味40代に向けた準備も着実に行うようになりました苦笑.

平成(過去5年)のふりかえり

平成元年(1989)が小学四年生で今が40手前(39).

平成って長い期間でしたね今思えば...

30年ふりかえるのはキツいので、このブログを始めた2014年(平成26年)からちょっとだけふりかえりを.

野球とPython

さっきもちょこっと触れましたが、昨年2月から目標としていた野球の仕事にリーチして今に至っています.

shinyorke.hatenablog.com

このブログをはじめた5年前はどうだったかと言うと、ちょうどはじめてのPyCon JP登壇(2014年、ちなみに参加そのものも初)のタイミングでした.

shinyorke.hatenablog.com

この5年間に積み重ねたモノですが、

  • Qiitaを含め、約30〜40本(正確な数は数えていない&もしかすると50本は行ってるかも)の野球エンジニアリング記事
  • プライベートのリポジトリを含め、約1,000前後のコミット
  • PyCon JPを5回、Baseball Play Studyを8回、その他「壁打ち」「練習試合」的なLTを数10回以上

ちなみにこの数に仕事は含んでいません(仕事のアカウントとかは別にしてるのでホントにノーカウントです)

もっと言うと、ビジネス系やアジャイル・スクラム系の勉強会・登壇も含んでいません(純然たるエンジニアリング関係のみです).

どれも息を吸う用にやってたので回数はあまり意識してなかったのですが、やっぱやることやってたんだなと思いました(こなみ).

仕事とかプライベート

仕事については、10年努めたベイカレント・コンサルティングを退職してからリクルート(SUUMO)→ビザスク→Rettyそしてネクストベースとほぼ1年に一度ペースでスキップしてた感あります.

shinyorke.hatenablog.com

shinyorke.hatenablog.com

shinyorke.hatenablog.com

どのチームでも苦しいこと・辛いことはあれど、新しいチャレンジや未知の仕事に出会うことができ、都度自分が磨き上げられた感あります.

また、(この話をするのはあまり好きじゃない*10ですが)どのチームに居た時も、年収についても自分が望む額をしっかり頂くことができてよかったです、大変感謝しています.*11

35歳からスタートした平成後半の5年、いわゆる「プログラマー限界説」年齢からいい感じに歳を重ねましたがいい感じに渡り歩いていると思っています.

独身であること以外は(震え)

このブログについて

最初のエントリーで炎上してはや4年.

shinyorke.hatenablog.com

「スタートアップが常に変化(Lean Startup)してグロースするように、自分も野球(Baseball)も技術で常に変化(Lean)してグロースしていくぞ!」

っていう想いを込めて名付けたこのブログ、平成の世の間に

  • 1,000ブクマ超えのエントリー3本をはじめとした数々の技術・野球エントリー
  • たまに繰り出すキャリアとかエモい話
  • 野球と技術、キャリアに特化.ほかの話題(例えば食とか)は一切書かない.

を徹し続けた結果、読者数も500人を突破したり、エンジニアや野球好きのみならずその界隈の方々にも愛読いただけるようになりました.

最初のエントリーでは「本」のネタで燃えましたが、今となっては「(Python)本」のエントリーが人気なのでホントわからないものです笑

shinyorke.hatenablog.com

何はさておき、この場を借りて厚くお礼申し上げます :bow:

今後もこの調子でブログを書きつつ、ここでは扱わない系の話を中心にnoteと二人三脚で頑張っていくのでこっちもよろしくおねがいします!*12

note.mu

令和の時代にむけて(これからチャレンジ・やってくこと)

2019年の残り、というより年度的な意味の下半期(10月)までにやっていくことを.

仕事

新しいメンバーもふえ、やること・ミッションも増えたり変わったりしていますが引き続き野球エンジニアとしてやっていきしていきます!ここでは具体的な事は言えませんが.

確かなのは、

私たちは二人目の野球エンジニアを欲しています!!!

ので、学生さんインターンもフルタイムも募集しておりますのでどうぞよろしくお願いいたします!

PyCon JPと #rettypy (他,Python系の何か)

GW明けの5/11にPyCon mini SAPPORO 2019

sapporo.pycon.jp

さらにその翌週にPyCon Kyushu in Okinawa 2019

kyushu.pycon.jp

と何故か連投で登壇します、ちなみにネタはそれぞれ別です(スケジュールのとおり).

もくもく会の #rettypy は前述の通り次回は6/1(土)、次次回(7月)は2周年&3年目突入の予定なので何かお祝い(的な懇親会)をやりたいと思っています.

また、シレッと昨日?から募集がはじまったPyCon JP 2019は以前から用意していたネタ(野球じゃない)を引っさげてCfPを出したいと思っています.

DevLOVE X登壇

また、縁あってDevLOVEの10周年記念カンファレンス、「DevLOVE X」にスピーカーとして登壇することになりました.

devlove.wixsite.com

今の所、何を話すか全く決めてないのですがこの会のテーマ

テーマは「それぞれの10年、これからの10年」。10年前を振り返り、10年経った今を見定める。そしてこれから先の10年後に向けてむきなおる。それぞれの方にとって、立ち止まり、また次のジャーニーへと向かうそんな機会にしたいと考えています。 ※公式サイトより抜粋

がこんな感じらしいので、

「Pythonと自分の5年前をふりかえり、5年先を見据えながら10年先を適当に大きく語る」

ぐらいの話にしたいと思っています.

多分だけど、アジャイルとかリーンとかプロセスはそれらを語る大物の人たちが多杉内なので、自分は好きな技術とその背景の話に全フリしちゃいたいなと.

有料イベントでチケットも若干お高いかもですが、会える人はぜひ会いましょう!

プライベート

体調と健康を気遣いつつ、バリバリ働き遊び、Rettyの1,000投稿を達成しつつ、相方をちゃんと探したいと思います(真顔)

あと、英語やりたい英語.数学と簿記も(仕事とは他の理由込みで)やり直したいと思っています.

最後になりましたが、

平成の終わりはそこで待ってると

思い出したように自分はちょっと笑いだしてますが、

何よりも、令和の時代がくる時を待ち焦がれてるので、

明日からもしっかりやっていきたいと思います!!

...ところでタイトルからオチまで、ずっとネタなんだけど通じるだろうかこれ笑*13

*1:いい感じのサムネイルが見つからなかっただけ.ちなみに井の頭公園は毎週末のお散歩コースです.

*2:インターン氏は昨年5月からですが彼は週に1,2回の出社、二人目のエンジニアがJOINした11月までは基本ずっと私一人

*3:なお、エンゲージメントがイマイチだったのでLTしなくてよかったぐらいに思ってます今では(震え

*4:これを教えてくれたのは「むっちゃん」ですね確か、ありがとうむっちゃん

*5:自分のことを知らない人が多い中で緊張した発表やりたかったという意味です.なお前回のPRLTは「ブログ読んでる」とかそこそこ知ってる方も多くその目標は未達苦笑

*6:またはスパイチュか(やきう民並の感想)

*7:具体的にはメディシンボール使って腹筋とかしてます

*8:一日1万歩はやるようにしてる

*9:鍼の先生が色々と教えてくれたり言ってくれたりするのでメチャ助かってます、ちょっと高いけど

*10:年収とか給料の話は最低限必要な人だけに話す主義なので

*11:そう、なぜならば誠意は言葉じゃなくてお金だからだ(野球の金言より)

*12:noteの方は趣味とかもっと雑な話もあったりするのでこっちのブログとは別の意味でオススメです笑

*13:ヒントはこの記事のリンクにある.