タグ

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

  • DDDの実装にはあまり興味がなくなっている - Mitsuyuki.Shiiba

    以前は、DDDでどう実装したらいいかなぁって考えてたんだけど、最近は、そういうことへの興味があまりなくなっている。エンティティや値オブジェクト、集約やリポジトリなど、そのあたりにあまり興味がない。ヘキサゴナルアーキテクチャなども、そんなに考えなくなった。 TypeScriptを使うことが多いので、型でしっかり守るとかカプセル化するとか、そのあたりがどっちでもいっかという気持ちになっていることが影響してるとは思う。TypeScriptでクラスを使おうとはあまり思わないし。BrandedTypeみたいなのを使ってまで型で守ろうとは思わない。 じゃあ何に興味があるんだっけ?って考えてみると、トランザクション境界とユビキタス言語かな。 トランザクション境界 トランザクションの境界を作って、DBRDBMS)を小さく保ちたいと思っている。DBが大きくなると、すぐに複雑になっていく感じがする。 だから

    DDDの実装にはあまり興味がなくなっている - Mitsuyuki.Shiiba
  • アジャイルな開発とチームづくり - Mitsuyuki.Shiiba

    社内でLTしたネタ。去年からサポートしているチーム作りのお話。 1週間スプリント 最初は短いサイクルで試行錯誤したいから1週間スプリントでやることにした。 スプリントの終了と開始 金曜日にスプリントレビューとレトロスペクティブとプランニング。 プランニングは2部制にして 第1部では次のスプリントでやりたいことの認識合わせを全員で 第2部では細かいタスクの話をエンジニア中心で やってる。 ストーリーポイントと理想時間を併用してみてる これはだいぶあとの方の話。 最初の頃はチケットのサイズを見積もるのにストーリーポイントだけを使ってたんだけど、半年くらいした頃にストーリーポイントに加えて理想時間の見積もりも併用することにした。 最初の頃に理想時間を導入しちゃうと、頭では分かってても「時間」に引っ張られてしまうので、ポイントだけで始めることにした。で、半年くらいしたころには新しいやり方にも慣れて

    アジャイルな開発とチームづくり - Mitsuyuki.Shiiba
  • 毎朝15分以上のデイリースクラムをしてる - Mitsuyuki.Shiiba

    15分以上のデイリースクラム 今一緒に仕事をしているチームでは、毎朝みんなで集まって話をしてる。みんな家から仕事してるからZoomで。 デイリースクラムみたいなものではあるのだけど、15分以内におさめる、ということはあまり考えていない。 だいたい15分は超えていて、長いときは30分ぐらいかかる。でも、それでいいと思っている。それだけ話すことがあるというだけ。 どうして? 理由は、開発チームだけじゃなくて、プロデューサーも含めて全員で「現状を確認する」「同じ方を向く」「不安を共有する」ということをやっているから。実際のところ、開発チームだけの話だと5分もかからない。 プロデューサーはチームの外側で起こった色んなことをフィルタリングして開発チームに必要な情報を届けてくれる。とても助かる。お互いに情報を共有して、現状の認識合わせをする。そのうえで、今日何をやるべきかを再確認している。 そんな感じ

    毎朝15分以上のデイリースクラムをしてる - Mitsuyuki.Shiiba
  • たまに「スクラムが難しい」って相談があって見に行ったりする。 - Mitsuyuki.Shiiba

    「プロダクトオーナーとしてやることはしっかりやってるんです」 「もちろんバックログがあります。そして、ストーリーが優先順にならべられています」 「MVP(Minimum Viable Product)も考えていて、ここまでが必須だと考えています」 「そしてこのMVPをこの日までにリリースしたいと考えているんです」 いいですね。 でも、ストーリーポイントを見たところ難しそうですね。 「そうなんです。もうプロダクトオーナーとして自分ができることは全てやりましたから、あとは開発チームに、この日までにリリースできるようになんとか頑張ってもらうしかないと思っています。スクラムではこういうときどうしますか?」 そうですね・・・。まずは、実現できないということを受け止めましょう。 「え?」 そして、ここで頑張るのは開発チームではなくてプロダクトオーナーですね。 「もう自分のできることは全てやっていますよ

    たまに「スクラムが難しい」って相談があって見に行ったりする。 - Mitsuyuki.Shiiba
  • チームリーダーをやるときに気をつけてた「4つの混ぜない」 - Mitsuyuki.Shiiba

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

    チームリーダーをやるときに気をつけてた「4つの混ぜない」 - Mitsuyuki.Shiiba
  • TDDはあんまり使わなくなったけど心の中にある - Mitsuyuki.Shiiba

    今日は娘たちとコログ探しして楽しかった。 この数年間、頭の中にTDDを入れた状態で開発をしてきたんだけど。タイトルに書いた風に思う。 良い所がいっぱいある 見失わずに済む 僕にとってTDDの良さは、まず、自分が何をしようとしているかを見失わずに済むところ。一歩先にゴールを立てて、そこに向かって一歩進む、たどり着いたら、次の一歩を進める。その繰り返し。だから、遠く離れたゴールに対して、急いで走って、途中で道に迷ってどこに向かってるか分かんなくなったりしないで済む。 余計なものを作らなくて済む 「必要なものはこれだよね?」という確認から入って、それを実現するための実装に集中するから余計なものを作らなくて済む。実装を先に作ると「こういう機能もあるといいかもだから入れとこうかな」ってついつい入れてしまう。 リファクタリングできる まず最初に動くものを作ってから、その状態をキープしたまま、実装の改善

    TDDはあんまり使わなくなったけど心の中にある - Mitsuyuki.Shiiba
  • Headless ChromeをDockerに入れてGebで遊んでみた - Mitsuyuki.Shiiba

    昨日書いたんだけど、Kafkaを触ろうと思ってるんだよ?でも、触ろう触ろうと思ってると、違うものが目に入ってくるのであった。ということで Headless Chromeで遊んでみた Kafka一切関係なく、この記事を見かけたから。 Getting Started with Headless Chrome  |  Web  |  Google Developers この辺のこともあるので、ちょっと見とこうかなって。 Phantom.jsのメンテナー、プロジェクトの将来に疑問を呈し、その座を降りる ただ、今手元にある環境でごにょごにょするのもなんか嫌だなぁ・・・って思ったので、無駄にDockerに詰め込んでGebで遊んでみた。そして、そのせいで疲れた(ヽ´ω`) できあがったものは これ。 https://github.com/bufferings/sandbox-gebheadlesschr

    Headless ChromeをDockerに入れてGebで遊んでみた - Mitsuyuki.Shiiba
  • だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - 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
  • モブプロをやってみた。良さ。使いどころ。 #devkan - Mitsuyuki.Shiiba

    devlove-kansai.doorkeeper.jp モブプログラミングやってきました!面白かったー。疲れたー。面白かったー。 モブプログラミングって? チーム全員(プロダクトオーナー含む)が集まって、1人だけがコードを書いて、それがスクリーンに映しだされてて、その他の人みんなでやいやい言いながらものを作っていく。というスタイル。ルールは「ドライバー(コードを書いてる人)は、ナビゲーター(周りでやいやい言ってる人)に言われた通りにコードを書く。ドライバーが自分で考えてコードを書くのはダメ。」という感じ。 やってみた 7人ぐらいのチームで、プロダクトオーナーからのお題に対してTDDで実装をやってみた。2部制でやったのだけど、第1部はKotlin + IntelliJ IDEAでローマ数字の計算を。Kotlin全く知らないし、IntelliJも全然慣れてない。第2部はJavaで自動販売機を

    モブプロをやってみた。良さ。使いどころ。 #devkan - Mitsuyuki.Shiiba
  • #Java本格入門 は実践的だなー! - Mitsuyuki.Shiiba

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

    #Java本格入門 は実践的だなー! - Mitsuyuki.Shiiba
  • Spring Bootでおさえておくべき4つのこと - Mitsuyuki.Shiiba

    同僚から「Spring Bootのこと教えてー」って声かけてもらったので、社内勉強会でこぢんまりと喋ってきた。 Spring Bootのコンセプト Springがコードレベルの、Spring Bootがアプリレベルの、Spring Cloudがサービスレベルの、みんながやることやっとくよ。な感じ。 ってつぶやいたらまきさんから @bufferings そういう話を非技術系の人によくしています。この図使ってますhttps://t.co/4RyLJzo1JS— Toshiaki Maki (@making) 2017年3月1日 って教えてもらったのでスライドを紹介しときました!あざます! Spring Bootでおさえておくべき3つのこと 最初はどこまでがSpringでどこからがSpring Bootなのか分かってなくて「めっちゃ色々あって魔法みたいでよく分かんない・・・(ヽ´ω`)」ってなっ

    Spring Bootでおさえておくべき4つのこと - Mitsuyuki.Shiiba
  • #jjug_ccc DDDとMicroservicesについて喋ってきましたー(∩´∀`)∩ - Mitsuyuki.Shiiba

    楽しかった! DDD & Microservices with Spring Cloud 前半がこれまで僕が経験してきたDDD 後半がこれからのために素振りしておきたいこと これまで僕が経験してきたDDD 最近、組織について考えるようになってきたのもあって「境界づけられたコンテキスト」が一番大切だなって実感してる。全てを一度に相手にするのではなく、切り取られた世界を作って、その中で適用していく。その切り取られた世界の間の関係性もデザインしていく。そうすることで複雑さを手に負える大きさでコントロールできる。 DDDを知った当初は、エンジニアとしてEntityやValueObjectのところが面白いなーって思ってゴニョゴニョコード書いてたりしてたんだけど、しばらくして「もっと良いコード書くためにはその土台となるチームづくりをしなきゃ!」と思ってスクラムを導入してたんだけど、しばらくして「チーム

    #jjug_ccc DDDとMicroservicesについて喋ってきましたー(∩´∀`)∩ - Mitsuyuki.Shiiba
  • Jenkinsでビルドのパイプラインを作るぞー!(2016年2月版) - Mitsuyuki.Shiiba

    と思って色々見て回った。 Jenkinsでビルド・パイプラインを作る | Ryuzee.com Jenkinsのビルドパイプライン系plugin3種比較 - knjnameのブログ kakakikikekeのブログ: Jenkins の Workflow Plugin を使ってみた Jenkins Workflow Pluginを使ってみました - Qiita 川口耕介氏,Jenkinsプロジェクトの現状やWorkflow Pluginの特徴を説明 ~Jenkinsユーザカンファレンス2015東京 基調講演:レポート|gihyo.jp … 技術評論社 とか、色々。 Pipeline Plugin (旧Workflow Plugin) が良さそう Pipeline Plugin - Jenkins - Jenkins Wiki Build Pipeline Pluginとか、Delivery

    Jenkinsでビルドのパイプラインを作るぞー!(2016年2月版) - 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
  • 僕のチームの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
  • Java: ステータスをあらわす Enum に isXxx() メソッドを持つのが好き - Mitsuyuki.Shiiba

    こんなEnum public enum InsideHead { JOY, SADNESS, FEAR } こんなクラスで使うとして。 @Accessors(fluent = true) @Getter @ToString @EqualsAndHashCode public class Bufferings { private InsideHead insideHead = InsideHead.JOY; public void eatChocolate() { this.setInsideHead(InsideHead.JOY); } public void workOvertime() { this.setInsideHead(InsideHead.SADNESS); } public void seeSourceCodeWithNoTest() { this.setInsideHea

    Java: ステータスをあらわす Enum に isXxx() メソッドを持つのが好き - Mitsuyuki.Shiiba
  • Domain Driven Design ってこんな感じかなー? - Mitsuyuki.Shiiba

    (追記 20150830) 読んでるときにノートにメモしたやつをマインドマップに起こしておきました。後の自分のために。 DDD20150830.pdf - Google ドライブ ////// Domain Driven Design を読み終わりました。疲れた。books.rakuten.co.jp 数年かけて 数年前に買って、ちょっとは読んでたんだけど。そのときは、EntityやValueObject、Repositoryなどが印象に残ってて。それは今考えるとDDDの中のMODEL-DRIVEN DESIGNの構成要素であって、質ではなかったんだなぁ。と気づきました。 それにしても、ユビキタス言語さん。 これまでずっと、喋るときは日語で、コード書くときは英語なので、知らず知らずのうちに、そういうもんだと思ってたんだけど。試しに英語で色々やってみたら、喋ってる言葉がそのままクラス名や

    Domain Driven Design ってこんな感じかなー? - Mitsuyuki.Shiiba
  • 開発をうまく回したいなと思って僕が意識している40くらいのこと - Mitsuyuki.Shiiba

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

    開発をうまく回したいなと思って僕が意識している40くらいのこと - Mitsuyuki.Shiiba
  • 1