いなうらゆうま yUmaiNaURA

kanji is 稲浦悠馬 という 記号の記録 らしい

IFTTT と Zapier を使い、Twitterへのツイートをためて、1日ごとに Github issue を作成・更新し、エンジニアの振り返り日記のまとめを作るサンプル。

IFTTT と Zapier を使い、Twitterへのツイートをためて、1日ごとに Github issue を作成・更新し、エンジニアの振り返り日記のまとめを作るサンプル。

全体の流れ

Twitter -> IFTTT -> Slack -> Zapier -> Github Issue

Zapierは有料なので IFTTT を一回挟んで料金節約する。

IFTTT

ハッシュタグつきでツイートすると、Slackのチャンネルに投稿する

image

Zapier でチャンネルへの投稿をトリガーにする

image

Zapier の Date / Time フィルタで Slack の投稿日時を、日本時間の YYYY-MM-DD にフォーマット

image

image

Zapier の Github Find or Create issue アクション

Issue タイトルに日付を入れる。 Issue タイトルで見つからなかったら Issue を新規作成する。

image

Zapier の Github Update Issues アクションを使う

今現在のBody + Slack のメッセージ内容を Body のUpdate 内容にする。 てきとうにMarkdownとかつけてみる。

image

結果のイメージ

image

https://github.com/YumaInaura/YumaInaura/issues/567

その他

yumainaura qiita zapier - Google Search

yumainaura zapier はてな - Google Search

https://github.com/YumaInaura/YumaInaura/issues/567

エンジニアの行動も心理要因に依存する。心理療法的な日記メソッドで、自己分析をして問題解決したい。 #ポエム

エンジニアの行動も心理要因に依存する。心理療法的な日記メソッドで、自己分析をして問題解決したい。 #ポエム

なぜ「わからないことを、人に聞くこと」がこんなに怖いのか、言語化と、自己分析をしておきたい。

問題提議。

分からないことを、聞かない時の弊害

  • 要件定義がうまく出来ずに、あとから膨大な手戻りが発生する。
  • プロジェクトのことがいつまでも理解できずに、なおさら質問できない悪循環が生まれる。

問題の本質はなんだろう

  • たとえば、大きなデメリットを理解していても、それでも動けない自分に気づくならば、それは理解の問題ではなく、心理的要因の可能性が高いんじゃないだろうか。
  • 世の中の問題の多くは「頭では理解しているはずなのに、なぜか、出来ない」ことによって起こると思う。
  • 個人の性格がボトルネックになりがち。自分の性格分析は、してもし足りないぐらいだと思う。

「なぜ質問しづらいか」を自己分析する作業をしたい。

  • 一般的に、心理療法では日記をつけることが勧められているが、これを自己分析にも応用したい。
  • 僕の場合は、日記形式で思考をつらつらと連ねていく行為に、解決の糸口があるような実感を得ている。
  • こんな風にMarkdown形式で見出しをつけながら、見出しと箇条書きで、まとめを作っていく。それすら辛く感じられるなら、絶対にバックスペースを押さない、ジャーナリング的手法でも良いかもしれない。

さあ、自己分析するぜ

  • ここでいったんエネルギー切れ。本題までたどり着けなかった。またあとでやろう。

https://github.com/YumaInaura/YumaInaura/issues/566

とあるエンジニアの問題意識。 意外にコスト感の高い #Markdown の論理マークアップ。会社の理想は基礎的勉強に理解のあること。優秀なエンジニアの口癖も「あれ、今何しようとしてたっけ」。 #ポエム

とあるエンジニアの問題意識。 意外にコスト感の高い #Markdown の論理マークアップ。会社の理想は基礎的勉強に理解のあること。優秀なエンジニアの口癖も「あれ、今何しようとしてたっけ」。 #ポエム

  • Github ISsue や Qiitaなどに記事を書く時、Markdown でのマークアップに謎のコスト感を感じる。このコスト感はあまりに強大で、見出しをつけることさえ、本当にわずらわしく感じる。ほんのキー数個を叩くだけ、半角スペースを押すだけのことに、どうしても高いコスト感ある。なのでこうやって今は、箇条書きのリスト一個あたり、改行もせずに、つらつらと思うことを書き留めるスタイル。論理構成を最小化したい。それでトピックが大きくなっても、別の記事を作ろうとしたりしない。新規ポストこそ、他の世界にジャンプするかのような、莫大なコスト感がある。てきとうにScriptをかまして、Zapierとか経由して、見出し付、リスト化をしてくれるようにでもしようか。インプットのしやすさの問題と、アウトプットの見やすさの問題は、分離できるかもしれない。
  • 問題意識を感じて、それをメモ用のアプリケーションに記録しようと思っている最中に、全て忘れて、何を考えていたか分からなくなってしまう問題に対策したい。こう書くといかにも頭が悪そうに見えるが、こういった人間の脳の、メモリの揮発的な現象は、よく観察すると、いたるところで起きている。僕が見る限り、複数の優秀なエンジニアの口癖も「あれ、今何しようとしてたっけ」だったり。
  • エンジニアとして理想の労働環境について、いまいちど洗い直したい。たとえ夢物語だとしても、理想を。エネルギー管理への理解があること、昼寝ができること、自分が興味関心のある分野の、基礎的勉強をしても、決して怒られないこと。会社として本当にアウトプット推奨で、アウトプットが最大学習になるということに、理解があること。集中できる静かな環境があること。願わくは、DEEP WORK に紹介されているような、瞑想的集中エリアと、人と仕事ができるざわめきエリアが別れていて、交互に、自由に行き来ができること。

https://github.com/YumaInaura/YumaInaura/issues/564

とあるエンジニアの問題意識。

とあるエンジニアの問題意識。

  • Slackが集中力を阻害する。Slackを一瞬でも開くと、30秒は今やっていることを忘れる感覚がある。注意残余が起こる。だがこれなしには業務は進まぬ。あまりにも誘惑が大きい。集中力が分断されるのに慣れきってしまうと、そこから戻る方法がまるで分からなくなる。人間の脳はマルチタスキングはそもそも出来ないというが、比較的、それを上手にこなせている人はすごいと思う。
  • チームやプロジェクトの状況によっては、ひたすらに単純作業をせざるを得ない場合もある。慣れ親しんだプロジェクトだと、色々な実装が既に軌道に乗っていて、エンジニアリングやプログラミングというよりも、事務作業をやっているような感覚になることがある。単純作業から全力で逃げようとしている自分に気づくが、誰かがやらなければ仕方がない。単純作業をどのような呼吸法で、メンタリングで乗り切ろうかという作戦を立てたい。難易度が低すぎる仕事は実はものすごく疲れる。生産性も悪くなる。
  • プログラミングの善悪は、構成メンバーによって変わる。たとえばリファクタリングを是とするか、非とするかもそうだ。仮に4人のチームの3人が、リファクタリングを是としていたら、それが開発の是となる。ソフトウェア開発も人間がやっていることなので、絶対的な正解は存在しない。常に人間というコンテキストに依存している。プログラミングにおいて是非を考える時、必ず人を思いかべる。Aさんがああ言っていたな、とか、Bさんがこう考えているな、とかいうアンカーが羅針盤の役割を果たす。僕のように絶対主義を持たない日和見プログラマは、そのぐらいがちょうど良い。

https://github.com/YumaInaura/YumaInaura/issues/563

海外の優秀なエンジニアはマネージャーより給与が高いらしい。 #エンジニア

海外の優秀なエンジニアはマネージャーより給与が高いらしい。 #エンジニア

Twitter

反応

https://github.com/YumaInaura/YumaInaura/issues/559

はじめてプログラミングを覚える時のように python を触る。エンジニアのビギナーズマインドに、再開するには別言語。 #ポエム

はじめてプログラミングを覚える時のように python を触る。エンジニアのビギナーズマインドに、再開するには別言語。 #ポエム

変数の中に文字列を埋め込むのは、どうやるの?

Python3 文字列中に変数展開したい - かもメモ

そういう初歩的なことの全てが、面白い。新鮮な感動がある。

  • 他言語を習得した人にとっては、難易度が低い。
  • とりたてて、大きな目的がないのが、むしろ良い。
  • とるにたらない、小さな違いに、喜べることが良い。

ところで、一年に新しい言語を、一種類覚えなさいという教えがある。

達人プログラマという本に書かれていたような。別の本だったような。

新しい言語を覚えるのは、大変なことだと思っていた。だけど、むしろ癒やしになるかもしれない。

ひとつの言語ばかり触っていると、初歩的な文法は全て覚えてしまって、出来ゲーになってしまう。 知らない分野は相変わらず広大だけれど、だいだい、調べればなんでもできるだろうという感覚になってしまう。 ようするに飽きて退屈になってきてしまう。

飽きてきたら別言語

でも良いかもしれないな。プログラミングって要するに、暇つぶしだと思うし。

https://github.com/YumaInaura/YumaInaura/issues/558

#python スクリプトからMedium #API を叩いて新規ポストする例。公式APIリファレンスより。 @yumainaura

python スクリプトからMedium APIを叩いて新規ポストする例。

Guide

https://github.com/Medium/medium-api-docs#33-posts

Ref

Run

AUTHOR_ID=xxxxxxxxxxx TOKEN=xxxxxxxxxxxx python example.py

Script

  • 本運用ではcanonicalUrlは外す。canonical属性は重複排除のための HTMLの指定。
# -*- coding: utf-8 -*-

# https://github.com/Medium/medium-api-docs#33-posts

import requests
import os

url = 'https://api.medium.com/v1/users/{author_id}/posts'.format(author_id=os.environ['AUTHOR_ID'])
token = os.environ['TOKEN']

headers = {
 'Authorization': 'Bearer {}'.format(token),
 'Content-Type': 'application/json',
}

json = {
  "title": "Liverpool FC",
  "contentFormat": "html",
  "content": "<h1>Liverpool FC</h1><p>You’ll never walk alone.</p>",
  "canonicalUrl": "http://jamietalbot.com/posts/liverpool-fc",
  "tags": ["football", "sport", "Liverpool"],
  "publishStatus": "public"
}

res = requests.post(url, headers=headers, json=json)

print(res.json())

Result

{u'data': {u'canonicalUrl':
u'http://jamietalbot.com/posts/liverpool-fc', u'license': u'',
u'title': u'Liverpool FC', u'url':
u'https://medium.com/@YumaInaura/liverpool-fc-3c7cd8bad6ec', u'tags':
[u'sports', u'football', u'liverpool'], u'authorId':
u'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
u'publishedAt': 1549500000000, u'publishStatus': u'public',
u'licenseUrl': u'https://medium.com/policy/9db0094a1e0f', u'id':
u'3c7cd8bad6ec'}}

Script

トークンだけ指定すれば良いバージョン。

# -*- coding: utf-8 -*-

import requests
import os


# Get Author Token

url = 'https://api.medium.com/v1/me'
token = os.environ['TOKEN']

headers = {
 'Authorization': 'Bearer {}'.format(token),
}

res = requests.get(url, headers=headers)
author_id = res.json()['data']['id']

print(res.json())
print "author id is {author_id}".format(author_id=author_id)

# Post

# https://github.com/Medium/medium-api-docs#33-posts

url = 'https://api.medium.com/v1/users/{author_id}/posts'.format(author_id=author_id)
token = os.environ['TOKEN']

headers = {
 'Authorization': 'Bearer {}'.format(token),
 'Content-Type': 'application/json',
}

json = {
  "title": "Liverpool FC",
  "contentFormat": "html",
  "content": "<h1>Liverpool FC</h1><p>You’ll never walk alone.</p>",
  "canonicalUrl": "http://jamietalbot.com/posts/liverpool-fc",
  "tags": ["football", "sport", "Liverpool"],
  "publishStatus": "public"
}

res = requests.post(url, headers=headers, json=json)

print(res.json())

Image

image

https://github.com/YumaInaura/YumaInaura/issues/557