ブックマーク / bufferings.hatenablog.com (73)

  • だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - Mitsuyuki.Shiiba

    先日、モブプロをやってきた。その中で、モブプロとは別で、いくつか感じたことがあって、今日はその中のひとつを思い浮かんだままにメモ。 bufferings.hatenablog.com 要件を満たすプロダクトをより早く出す モブプロでTDDしながら、要件を満たすプロダクトをより早く出すことに集中してみた。例えば、第2ラウンドのお題はTDDBCなどでお馴染みの「自販機」。 「100円を入れてボタンを押すとコーラが1買えること」 最初に「100円を入れてボタンを押すとコーラが1買えること」と言われ。 assertThat(get(100), is("コーラ")); みたいなテストを書いて。 String get(int money) { return "コーラ"; } みたいな実装を書いた。爆速! 「200円を入れてボタンを押すとオレンジジュースが1買えること」 次に「200円を入れてボタ

    だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - Mitsuyuki.Shiiba
  • #Java本格入門 は実践的だなー! - Mitsuyuki.Shiiba

    Java格入門を読み終わりました。著者の谷さんからいただきました。ありがとうございます。もし面白くなかったらどうしようwとドキドキしながら読み始めましたけど、全然そんなことはなくて色々と勉強になりました。当に読んで良かったです。周りの人にもおすすめしたい一冊です。 楽天ブックス: Java格入門 - モダンスタイルによる基礎からオブジェクト指向・実用 - 谷心 - 9784774189093 : 機能ごとにひとめぐりしてくれてるところが良い 僕は1.4の頃にJavaに入門して、その後は新しい機能が追加されたらそれをチェックしていく、という感じでつけたしつけたしやってきたので、頭の中がごちゃごちゃしていたのですが。Java格入門では、基的な文法からJava8の機能までを時系列ではなく機能ごとにひとめぐりしてくれてるので、頭の中が整理されました。 また、自分が知識を更新してい

    #Java本格入門 は実践的だなー! - Mitsuyuki.Shiiba
  • 「スクラムでは割り込みはできません!」って言わなくていいような仕組み - Mitsuyuki.Shiiba

    昨日は、娘達とクッキーを作ってて、余った白身でラングドシャクッキーを作って美味しかった。ども。椎葉です。 F-team, L-team 牛尾さんの記事にF-team、L-teamってあるんだけど、これ、今僕のいるチームでやってることだー。って思った。Microsoftさんの最先端のチームと同じ思想に辿り着いてたってことで、なんか嬉しいなー。 simplearchitect.hatenablog.com Fチームというのは、新しい機能を作るチームだ。Lチームは、顧客からの要望だったり、緊急対応、リリース後出たバグの対応をするチームだ。それぞれのチームに対してKanbanが存在している。 だいたいは同じなんだけど、ちょっと違う部分があるのでそれをメモしておく。以前からの流れでOps TeamとDev Teamって呼んでるんだけど、今流行りのDevOpsとは関係ないので注意ね。 Ops Team

    「スクラムでは割り込みはできません!」って言わなくていいような仕組み - Mitsuyuki.Shiiba
  • 全力で効率の良くないチームをつくる - Mitsuyuki.Shiiba

    というのが、最近の僕の好み。 効率の良いチーム 効率の良いチームは、みんなすごく効率良く仕事を頑張ってて。システムも効率良く既存のリソースを使ったりしてて、開発もすごいスピードで進んでいる。 なんだけど、最短の道を選び続けていて、どんどん選択肢がなくなっていって、動きが鈍くなってく。 そうすると、どうするか?「このままじゃダメだ!もっと効率良くやらなきゃ!」ってなって、最後には、頑張り続けて疲れた人が離れていく。そんな感じがする。 効率の良くないチーム きょろきょろしたり、うろうろしてみたりして、選択肢を広げておく。ペアワークとか。暗黙知の共有とか。形式知化とか。新しい技術へのトライとか。そういう、一見、遠回りに見える道の方が、実は近い。という感じがする。リファクタリングとかもそうかな。 遠回りに見える道を選ぶのには、勇気が要るのだけどね。だって、最短に見える道を選んだのにうまくいかなかっ

    全力で効率の良くないチームをつくる - Mitsuyuki.Shiiba
  • 自走するチームづくりをサポートするときのパターンぽいもの - Mitsuyuki.Shiiba

    プロジェクトデザインパターンを読んだ。内容は企画に携わる人向けなんだけど、ちょっと言葉を変えると、エンジニアとしても「わかる!」って感じで読んでてワクワクした。良かった。 ということで「そういえば、チームづくりのサポートをするときに、ある程度パターン化してるものが僕の中にもあるなー」と思ったので、それっぽく書いてみる。 立ち止まる時間 やることが多すぎてチームが疲れている。 その状況において 少しでもタスクを早く終わらせてチームに余裕を作りたい!と、手が空いたメンバーに対して五月雨式にタスクをアサインしていると、メンバーは終わりが見えなくて疲弊してしまう。そして、効率良く作業をするほうが損をしているように感じてしまう。 そこで 5または10営業日の短い期間で区切り、その期間で終わらせるタスクを前もって共有しておく。その期間の終わりにはチームで時間を取って、何を終わらせることができたかを振り

    自走するチームづくりをサポートするときのパターンぽいもの - Mitsuyuki.Shiiba
  • マイクロサービスで必要になるかなぁって思って僕がOAuth2とOpenID Connectをなんとなく分かるようになるまでの物語 - Mitsuyuki.Shiiba

    プライベートの勉強は気が向くままにふらふらと。梅田の地下街を歩いてる感じで!(←つまり迷ってる) 元々は、Pivotal Japanさんの、この「今日から君もヒーローだ!」的なタイトルに惹かれてJava(Spring Cloud)でマイクロサービス作るぞーって進めてみたのであった。が、早速その2の「認可サーバーを立ち上げよう!」で「あー、これ知らない。分かんない。もう寝たい。」となってしまったのだった。 そんな僕が「なんとなく分かった!」になるまでの物語。・・・になるはず(ここを書いてる今はまだ分かってない)。 たぶん1ヶ月したら何を読んだか忘れてると思うので記録しとくことにした。 github.com ゴール OAuth 2.0って聞いたことあるけど、よく知らない。この辺、マイクロサービスの認証・認可部分で必要そうだなーって思うので、OpenID 2.0とOpenID Connectも含

    マイクロサービスで必要になるかなぁって思って僕がOAuth2とOpenID Connectをなんとなく分かるようになるまでの物語 - Mitsuyuki.Shiiba
  • 僕がよく使うGitコマンド14個 - Mitsuyuki.Shiiba

    僕がよく使うGitのコマンドの整理をしておこうと思った。 1. git clone リポジトリから取ってくる まずはcloneするよね。手元にあってちょうど良い感じなのがmakingさんのjsug-shopだったので、これで進めてみる。 $ git clone git@github.com:bufferings/jsug-shop.git Cloning into 'jsug-shop'... remote: Counting objects: 299, done. remote: Total 299 (delta 0), reused 0 (delta 0), pack-reused 299 Receiving objects: 100% (299/299), 427.05 KiB | 193.00 KiB/s, done. Resolving deltas: 100% (96/96),

    僕がよく使うGitコマンド14個 - Mitsuyuki.Shiiba
  • とりあえずDockerの何が良いの?1分で教えてよ! - Mitsuyuki.Shiiba

    遂にちゃんとDockerの勉強を始めた。"Using Docker"というを読んでる。 www.safaribooksonline.com Safari Books OnlineでいくつかDocker関係のをあさってみて、このが一番良さそうだと思ったので読み始めたとこ。 玉川さんが翻訳されるそうなので、細かいニュアンスはそちらが出たら確認しようと思ってる。(おい 今しかできない 今日は、まだDockerについて全然詳しくない今だから感じてるDockerのいいなぁって思うところを書き残しておこうと思う。使い慣れてしまう頃にはもう今の感覚はなくなってると思うので。 ゴールは、誰かあんまり調べる気はない人に「Dockerの何が良いの?」って聞かれたときに「色々あるけど、これかな」って手っ取り早く伝えられたらいいかなってとこ。 とりあえずDockerの何が良いの?1分で教えてよ! アプリのコ

    とりあえずDockerの何が良いの?1分で教えてよ! - Mitsuyuki.Shiiba
  • 僕のチームのGitの開発フロー - Mitsuyuki.Shiiba

    を考えてみる。 Git Flow nvie.com やってみたことある。良いんだけど、僕の環境だと、もうちょっとシンプルにやれそうかなって思った。 Github Flow scottchacon.com これはシンプルだな。なんだけど、シンプルすぎてちょっと違うかな。 ということで、ちょうどいいくらいのを考えてみたい 今の僕の開発にとって、ちょうどいいくらいのを考えてみたいなーって。じゃあ、今の僕のやってる開発ってどんなん?ってところから。 チーム エンジニア5,6人くらい。 Feature, Story, Task Featureと呼ばれるものがあって、これは2,3ヶ月分の規模で。この単位でリリースする。 Featureは複数のStoryで構成されていて、Storyは4,5日くらいで完了する。から、1 Featureは10から15Storyくらいってことか。 Storyは複数のTaskを

    僕のチームのGitの開発フロー - Mitsuyuki.Shiiba
  • JUnitのテストメソッド名をどういう風につけたらいいかなー? - Mitsuyuki.Shiiba

    って話になって、チーム内で盛り上がった。例えばこんな感じのテストを書きたい時。 「ジュースを買う」メソッドに、お金とジュースの番号を入力したらそのジュースが返されて、在庫が一個減る。 メソッドはこんな感じかな? Juice buyJuice(int inputAmount, int juiceId) これでどう? buyJuice_shouldReturnJuice_whenInputAmountIs130Yen え?でもこれだと、なんかこう・・・在庫が減ってることとかは表せてなくない? えー、じゃあこういう感じ? buyJuice_shouldReturnSelectedJuiceAndOneLessInventory_whenInputAmountIs130YenAndSelectedIdIsValid いや、長いね・・・。 ふむ。。。全部をメソッド名に書かない方が幸せなんじゃない?

    JUnitのテストメソッド名をどういう風につけたらいいかなー? - Mitsuyuki.Shiiba
  • OJTで僕のチームが伝えたかったこと - Mitsuyuki.Shiiba

    OJT今年入社の新卒の方が大阪支社に配属になって「いきなりどっかのチームにどっぷり入るより、色んなチーム見て回る方が面白い?」ってことで、いくつかのチームを渡り歩くことになりました。 んで、僕のチームが2番目で、7月から1ヶ月間くらい一緒に仕事してました。 「このチームで学んだのはMind」各チームを渡り歩く中で、毎回「成果発表会」って感じで、その1ヶ月で何を学んだかをみんなの前でプレゼンするんですけど、そこで 「今回、このチームで学んだのはMindでした。技術も学んだのですが、それよりも、Mindの重要さと難しさを学びました」 と言ってくれたので良かった٩(ˊᗜˋ*)و 何をやったかプロジェクトに参加失敗しても大丈夫な小さ目のタスクを渡してそれで学んでもらう、というのは1番目のチームでやってたので。 今回はチームが実際にやってるプロジェクトにメンバーとして参加してもらうことにしました。失

    OJTで僕のチームが伝えたかったこと - Mitsuyuki.Shiiba
  • 実践DDDのサンプルプロジェクトが学びしかない - Mitsuyuki.Shiiba

    IDDDを読んで、それなりに書いてあることは分かり始めたかな。と思ってたけど。 いざサンプルプロジェクトを読んでみたら、全然そんなことなかった。(ノД`)シクシク github.com いつものように、自分メモ。 プロジェクトの構成 全部で3プロジェクトと1ライブラリがある。 iddd_agilepm データストアとしてKVS(LevelDB)を使用。 DIコンテナは使ってない。 iddd_collaboration Event Sourcing と CQRS。ORM使わずにやってみた。 例をシンプルにするために、Event Sourcedな書き込みモデルと、CQRSの読み込みモデルを1スレッドで実行してる。イベントジャーナルとしてLevelDBを、リードモデル用にMySQLを使ってるのでほんのちょっとだけ一貫性がない状態が発生する可能性がある。別々のデータストアを使って、でも、できるだけ

    実践DDDのサンプルプロジェクトが学びしかない - Mitsuyuki.Shiiba
  • 続々:僕の好きなコードの書き方 - Mitsuyuki.Shiiba

    これの続きです! レビューしてもろた! おぉ。メソッドわけない前提で、price<sumのほうが正常系なんだから先に異常系を抜けるべきってのと、正常系だけresultの値設定順が違うのと、最初のthrowがただのgotoになっててバグぽい。「続:僕の好きなコードの書き方」 http://t.co/6drsy6VG8I— きしだલ (@kis) May 8, 2015 そっこーでコメントくれてた!確かに確かに! @bufferings 僕ならstaticイニシャライザで、def(1, 0); def(5, 0); def(10, 10); みたいなのたくさん定義してMapで持っとく。— CEROMETAL (@cero_t) May 12, 2015 なるほどですなー。 あと、@haradakiro にも「お邪魔したいのでテストコードも晒さないかな、ちらっちらっ」ってコメント頂きました。 レ

    続々:僕の好きなコードの書き方 - Mitsuyuki.Shiiba
  • 開発をうまく回したいなと思って僕が意識している40くらいのこと - Mitsuyuki.Shiiba

    自分がこの1年間開発チームを引っ張ってきた中でこういうところに気をつけてたよってこと。 ザーッと勢いで書いてみる。分類はある程度なもんです。組織パターンやFearlessChangeは好きです。 心構え 1 現状を受け入れる 環境に文句を言ってても、何も変わんないし。自分は当はもっとできるはずなんだ、って言ってても、実際アウトプットはでてないんやろ。なるほど、今はこうなんだってことを受け止めて、じゃあそこからどう改善していけるだろう?と考えたい。 2 遷移状態を受け入れる 現状から、理想的な状態にぴょんって飛び移れるわけじゃないんだから、その途中って泥臭かったりごちゃごちゃしてたりするんだけど、それを受け入れる。練習せずにいきなりスポーツがうまくなるわけないのと同じで。 3 正しいことが選ばれるわけじゃない 政治や感情や時期や思惑や抵抗や。そういうのがあるので「正しいこと」が常に選ばれる

    開発をうまく回したいなと思って僕が意識している40くらいのこと - Mitsuyuki.Shiiba
  • チームリーダーをやるときに気をつけてた「4つの混ぜない」 - Mitsuyuki.Shiiba

    開発チームのチームリーダーやってたときってどんなこと考えながらやってた?って相談があって、僕がチームリーダーやってたときはこういうことに気をつけてたよ。って話をした。今は僕はリーダーは後輩にまかせて、自分はシニアエンジニア的な立場でコードを書いたりウロウロしたりして楽しく過ごしてるんだけども。 4つの混ぜない やってるときは特に考えてなかったけど、今になって考えるとこういうこと気にしてたなーってのね。数は、単に4つ思い出した。ってだけ。 帽子を混ぜない エンジニア出身のチームリーダーって、こんな帽子をかぶってることが多いかな: 組織マネージャの帽子で 後輩の育成や組織としての成長を考えたり 開発リードの帽子で クオリティの最後の砦みたいな役割や、チームの外との調整をやったり プロジェクトマネージャの帽子で プロジェクトをどうやってうまく回していくかを考えたり なので「今の自分の気持ちはどの

    チームリーダーをやるときに気をつけてた「4つの混ぜない」 - Mitsuyuki.Shiiba
  • 頭の中のコードを形にするまで - Mitsuyuki.Shiiba

    を書いてみる気分 今日の時点での自分のやり方なので、またしばらくすると変わってるかもしれない 僕には、最初に考えたとおりに実装できるようなスキルがないので コードを書きながら形にしていく感じ サイズ だいたい、チケット一枚が、5,6時間で実装できるくらいのサイズになってる 2,3日くらいでレビューまで終わって番にデプロイすることが多いかな (基的にはそれくらいってだけで、1,2週間くらいかかるような長いやつもある) 技術的なフィージビリティチェックとかはこの前に終わってる 実装を頭に思い浮かべる こんなふうにすれば良さそうかなぁ このあたりは何パターンか考えられるけどどっちがいいかなぁ とか頭の中に思い浮かべる とりあえず動くものを実装 まずは思い浮かべたものが全部つながって動くかをサクッと確認したいので雑に実装する そして、気づくことがいくつかある あれ?この場合どうなるんだろう?っ

    頭の中のコードを形にするまで - Mitsuyuki.Shiiba
  • Java の CLI アプリケーション用フレームワーク picocli はミスタイプ時にサジェスチョンを出してくれる - Mitsuyuki.Shiiba

    長くなっちゃったから最初にまとめ まとめ picocli は便利。 デフォルトでサジェスチョンの機能がついている。なので、オプションやサブコマンドの定義だけしておけば、ミスタイプしたときにサジェスチョンを出してくれる。 オプションの場合は、先頭2文字が一致するオプション一覧 サブコマンドの場合は、先頭2文字じゃなくて、似たものを出してくれる こんなつぶやきを見かけて がくぞさんのこんなつぶやきを見かけて そういえばCLIのオプションパーザのライブラリは多種あるけど、定義されてないオプションが指定されたときにオプション名から類推して正しくはコレじゃない?ってサジェストしてくれるような機構まで盛り込んだライブラリってあるのかな?— がくぞ (@gakuzzzz) August 11, 2021 あぁ、たしかにそういうのフレームワークに含まれてたら便利だなー、picocli だったらありそうだけ

    Java の CLI アプリケーション用フレームワーク picocli はミスタイプ時にサジェスチョンを出してくれる - Mitsuyuki.Shiiba
  • CircleCI の設定ファイルを分割して CUE で合成してみたら割と簡単で便利そう - Mitsuyuki.Shiiba

    ぼーっと CUE のドキュメントを読みながら CUE という設定用の言語・・・と呼んで良いのかな?のドキュメントを読みながら https://cuelang.org/ 「これ、いろんな機能があるけど、それは置いといて、YAML の合成が簡単にできるのでは?・・・とすると、CircleCI の設定を簡単に分割できて面白いかもなぁ」 と思ったので試してみた。わりとアリかもしれない 今回のサンプルコードはここ: github.com どういう感じ? こんな感じに適当に分割した設定を ❯ tree .circleci/configs .circleci/configs ├── header.yml ├── job1.yml ├── sample │ ├── job2.yml │ └── mixed\ sample.yml ├── workflow1.yml └── workflow2.yml 1

    CircleCI の設定ファイルを分割して CUE で合成してみたら割と簡単で便利そう - Mitsuyuki.Shiiba
  • トラブル対応中にエンジニアリーダーとして考えていること - Mitsuyuki.Shiiba

    を言葉にしてみようと思った。僕のいる場所での話。ステークホルダーに対する窓口としてプロデューサーがいて、僕が開発チームのリーダーをしてるようなとき。 ## 状況を把握する システムトラブルが発生すると場が混乱してることが多い。色んな情報が混ざるし、色んな人から問い合わせが来たりするし、窓口になってくれているプロデューサーからの説明も省略されていることが多い。このときに一番避けたいのは、ミスコミュニケーションによって当の問題を見失って無駄な作業をしてしまうこと。 なので、まずは落ち着いて状況を正確に把握する。ちょっとでもはやく解決したいから、その断片的な情報を元に調査に入りたい気持ちになるけど、ぐっとこらえて全体像を把握する。 コミュニケーションで特に気をつけるのは、相手や自分の中にある思い込み。思い込みがあると喋るときには(当然分かってることだよね)と言葉を省略してしまうし、聞くときには

    トラブル対応中にエンジニアリーダーとして考えていること - Mitsuyuki.Shiiba
  • 「Jestではじめるテスト入門」を書きましたー #Jest本 - Mitsuyuki.Shiiba

    Jestではじめるテスト入門 日「Jestではじめるテスト入門」がついに発売されました 🎉🎉🎉 peaks.cc CircleCI時代の同僚の伊藤さん @ganezasan が「Jestの自動テストの執筆を手伝ってくれませんか?」と声をかけてくれて「これからテストを書きたいって人に向けたJestの入門書を書きたいんですよ!!」って熱く語ってくれて「いいなぁ」と思ったので参加しました。を書くなんて初めてのことなので、自分なんかに書けるかなぁとドキドキしてたのですが、周りの方々の助けのおかげで、なんとか書き上げることができました。 そして、監修はなんと和田さん @t_wada です。自分が自動テストについて書いた文章を、和田さんに監修していただけるなんて、それだけでとても幸せだなぁと思っていたのですが、「むちゃくちゃ面白かったです!」って言ってもらえたので、もう出版しなくても満足し

    「Jestではじめるテスト入門」を書きましたー #Jest本 - Mitsuyuki.Shiiba