タグ

ブックマーク / yshibata.blog.ss-blog.jp (27)

  • API仕様ファースト開発: 柴田 芳樹 (Yoshiki Shibata)

    API仕様ファースト開発」という用語は、私自身が雑誌「WEB+DB PRESS Vol.134」の特集1「実践API設計」を執筆する際に考えた造語です。 全く新規にサービスを開発する場合の開発順序は次のようになります(記事の題3章の図1)。 図1 API仕様ファースト開発での開発順序 これは、私自身が初めてメルペイで担当して、一からマイクロサービスを開発したときの開発順序です。そして、その後、チーム移動により別のマイクロサービスの開発へ移動したり、カウシェへ転職したりした際に、最初に導入したのはE2Eテストフレームワーク(記事の第4章「E2Eテストフレームワークの構築」)でした。 そして、API仕様の技術的負債(エンドポイントの仕様が書かれていなくて、それをテストするE2Eテストもない状態)を返済するために、次の開発順序(記事の第5章の図1)を自分自身も行い、他の開発者達にも行ってもらう

    API仕様ファースト開発: 柴田 芳樹 (Yoshiki Shibata)
  • 株式会社令和トラベルで働きます: 柴田 芳樹 (Yoshiki Shibata)

    一か月前に「株式会社カウシェを退職します」を書きました。その時点で12月からの勤務先は決まっていませんでしたが、12月1日より株式会社令和トラベルで、嘱託社員契約でバックエンドエンジニアとして働きます。 勤務形態週4日(月曜日〜木曜日)勤務です。週4日勤務は、2017年9月から続けている勤務形態です。 オフィスは渋谷(カウシェの新たなオフィスの近く)ですが、基的に自宅からフルリモートで働きます。実は、1年2か月在籍したカウシェには、入社前にオフィスへ行ったことはあるのですが、在籍期間中は一度も出社しませんでした。 9社目11月で64歳になり、令和トラベルで社会人になって9社目となります。 富士ゼロックス(1984年4月入社) 日オラクル ジャストシステム 富士ゼロックス情報システム リコー ソラミツ メルペイ カウシェ 私の世代は定年まで1つの会社で働き続けるのが普通でした。実際、富士

    株式会社令和トラベルで働きます: 柴田 芳樹 (Yoshiki Shibata)
  • 株式会社カウシェを退職します: 柴田 芳樹 (Yoshiki Shibata)

    2022年10月1日から働き始めた株式会社カウシェを11月30日付けで退職します。1984年4月1日に社会人として富士ゼロックス(現在は、富士フイルムビジネスイノベーション)で働き始めてから8社目の会社でした。12月からの予定は、未定です。 雑誌記事・翻訳・講演・技術教育この一年間の成果は次の通りです。 WEB+DB PRESS Vol.134 出版社/メーカー: 技術評論社発売日: 2023/04/22メディア: Kindle版 メルペイとカウシェの2社で私自身が推進してきた開発手法を特集1「実践API設計」で解説しています。一年前にカウシェに入社した時点では、gRPCに基づくバックエンドサービスのAPI仕様は全く記述されていませんでした。現在は、この一年間で新規に追加されたエンドポイントでAPI仕様が記述されているだけでなく、過去の技術的負債もかなり返済され、E2Eテストも整備されてい

    株式会社カウシェを退職します: 柴田 芳樹 (Yoshiki Shibata)
    t2y-1979
    t2y-1979 2023/11/09
    お疲れさまでしたー
  • E2Eテスト vs E2Eテスト: 柴田 芳樹 (Yoshiki Shibata)

    私が「WEB+DB PRESS, Vol.134」の特集1「実践API設計」の中で使っている用語「E2Eテスト」は、一般的な書籍で述べられているE2Eテストとは若干異なります。 どのように違うのかをウェブサービスのバックエンドのサービスで説明します。新たに図を起こすのが面倒なので、すでにある記事「マイクロサービスの開発とテストファースト/テスト駆動開発」からそのまま引用します。 この図では、「加盟店管理用APIマイクロサービス」が複数のマイクロサービスに依存しています。 一般的なE2Eテストとは一般的な書籍では、テストピラミッドにおける頂点にあるE2E(End-To-End)テストは、「加盟店管理用APIマイクロサービス」およびそれが依存するすべてのマイクロサービスを何らかの環境(たとえば、Docker、あるいは開発用のクラウド環境)にデプロイして「加盟店管理用APIマイクロサービス」をテ

    E2Eテスト vs E2Eテスト: 柴田 芳樹 (Yoshiki Shibata)
  • 『A Philosophy of Software Design』: 柴田 芳樹 (Yoshiki Shibata)

    A Philosophy of Software Design (English Edition) 出版社/メーカー: Yaknyam Press, Palo Alto, CA発売日: 2019/01/22メディア: Kindle版 このは、ソフトウェアの複雑さ(complexity)を減らすために、ソフトウェアエンジニアが日々の開発で注意を払うべきことが述べられています。その多くのは、さまざまな書籍で述べられている基的な事柄です。しかし、それらの基的な事柄は、習得するのが容易ではないものが多いです。 たとえば、『リーダブルコード』を読むだけで読みやすいコードが書けるようになるのではなかったり、『Effective Java』を読むだけできちんとしたAPI設計ができるようにならなかったりするのと同じです。読んで学んだことを意識して実践し、当たり前となるまで繰り返していく必要があります

    『A Philosophy of Software Design』: 柴田 芳樹 (Yoshiki Shibata)
  • 株式会社メルペイを退職します: 柴田 芳樹 (Yoshiki Shibata)

    2018年6月1日から働き始めた株式会社メルペイを9月30日付けで退職します。4年4か月勤務したことになります。1984年4月1日に社会人として富士ゼロックスで働き始めてから、7社目の会社でした。10月1日からは、新たな会社でソフトウェアエンジニアとして働き始めます。 週4日勤務「ソラミツ株式会社を退職します」でも書きましたが、リコーを退職してからは、基的に週4日勤務をしてきました。メルペイでも、金曜日は欠勤するか有給休暇を使うなどして、週4日勤務をしてきました(週4日勤務で働くことに関して、入社前に合意してもらっていました)。10月からの会社では、週4日勤務の雇用契約で働きます。 初めてのウェブサービス開発富士ゼロックス、富士ゼロックス情報システム、リコーの3社で合計31年7か月を過ごし、富士ゼロックスでのワークショテーション開発を除くと、その多くは、デジタル複合機のソフトウェア開発に

    株式会社メルペイを退職します: 柴田 芳樹 (Yoshiki Shibata)
    t2y-1979
    t2y-1979 2022/09/10
    お疲れさまでしたー
  • 許される無知の範囲は開発経験年数に反比例する:柴田 芳樹 (Yoshiki Shibata):So-netブログ

    UUUM社の採用に関するブログ「優秀なエンジニアを採用するために面接で気をつけていること」でエンジニアの学習に関して次のように書かれています。 採用を決める時の一番重要なポイントは実力ですが、20代の若い方は将来性を期待して、ポテンシャル採用をすることもあります。 ポテンシャル採用で重要なのは、なんといっても向上心。 「いろんな技術を勉強したいんです」というのは誰でも言いますよね。 当にそう思っているのであれば普段から勉強しているはずなので、中身をちゃんと理解できているのかを確認させてもらいます。 20代に関しては、現時点での実力が多少低くても採用します。 その代わり、しっかり勉強してもらって、ちゃんとした技術力を身につけてもらいます。 30代になってくると、やはり実力が求められます。 10年近くもエンジニアをやっていながら、技術的な知識の薄い人が多いのには驚かされます。 それだけ長い時

    許される無知の範囲は開発経験年数に反比例する:柴田 芳樹 (Yoshiki Shibata):So-netブログ
  • 伸ばすのが難しい能力: 柴田 芳樹 (Yoshiki Shibata)

    2018年6月1日に株式会社メルペイに入社して、4年が過ぎました。入社当時は、定年が60歳と聞いていたので、1年半の勤務だと思っていましたが、実際の定年は65歳であり定年まであと2年半です。 ソフトウェアエンジニアにとって重要な能力と(私は考えるが)、身に付けるのが難しいのが現実だと、この4年間で再認識したのは次の三つです。 開発の最初にAPI仕様をきちんと書けるソフトウェアエンジニアは少ない テストファースト開発を行っているソフトウェアエンジニアは少ないか、いない Tech Blogなどの執筆で、読み手を意識して、分かりやすい文章を書く、ソフトウェアエンジニアは少ない API仕様については、このブログでも何度か書いています(「API仕様を書く」)。テストファースト開発についても、「テストファースト開発」を書いています。分かりやすい文章については何も書いていないですが、「伝わる技術文書の書

    伸ばすのが難しい能力: 柴田 芳樹 (Yoshiki Shibata)
    t2y-1979
    t2y-1979 2022/05/31
    ちゃんとした開発組織で働けることは運でしかない
  • 『Effective Java 第3版』オンライン読書会を終了します: 柴田 芳樹 (Yoshiki Shibata)

  • 株式会社リコーを退職します(2): 柴田 芳樹 (Yoshiki Shibata)

    今日(2017年8月31日)がリコーへの最終出社日です。2009年9月1日にリコーへ入社してから、主に行ってきたことを簡単にまとめます。 【業務関連】所属した開発組織の業務として行ったものです。 技術教育:2010年に延べ500名以上のソフトウェアエンジニアに対して、「ソフトウェアエンジニアの心得」「テスト駆動開発」「C++」「API設計の基礎」などの教育を実施しました。しかし、「教育と場」でも書いたように、今から振り返ってみると、単に「教育をした」と「教育を受けた」ということだけが残り、私が教えた内容を実際の開発の現場で指導する人がいないため、開発組織としてのレベルアップにはならなかったと思います。 Jenkins導入:2010年10月から行ったものです。当時デジタル複合機内で動作するJavaの開発環境やインテグレーション環境は、私の視点からはあまりにもお粗末でした。それで、FXIS時代

    株式会社リコーを退職します(2): 柴田 芳樹 (Yoshiki Shibata)
  • 一年間の在宅勤務: 柴田 芳樹 (Yoshiki Shibata)

    2020年2月18日から在宅勤務(WFH:Work From Home)を始めて、ちょうど一年が経過しました。この一年間、一度も会社には出社していませんし、最も大きな出来事は、2020年6月20日(土)に急性心筋梗塞で緊急搬送され、カテーテル治療で一命を取り留めたことです。 急性心筋梗塞になる以前と以降では、同じ在宅勤務であっても大きく変わりました。心筋梗塞になる前は、朝後に仕事を始めて、昼、そして夕方には仕事を終えるという生活でした。 6月27日(土)に退院してからは、週に2回か3回の心臓リハビリテーションで午後1時から4時まで外出するようになりました。心臓リハビリテーションがない日は、朝後1時間ほど経過してから自宅でエアロバイクを30分行い、その後、シャワーを浴びるという生活を送っています。11月からは心臓リハビリテーションも週に1回となったので、自宅でのエアロバイクが主となって

    一年間の在宅勤務: 柴田 芳樹 (Yoshiki Shibata)
  • 複業を20年: 柴田 芳樹 (Yoshiki Shibata)

    振り返ってみると私自身がまだ40歳であった2000年の初めからほぼ20年間複業をしてきました。1984年に社会人になって、1999年までは会社での開発業務という単一の仕事をしていたのですが、2000年からは主に次の三つです。 会社での開発業務(マネジメントや社内コンサルティングも含む) 技術教育や講演 技術書の執筆(雑誌の記事を含む)や技術書の翻訳 1. 会社での開発業務1984年4月に富士ゼロックスに就職してから、6回の転職を経て現在はメルペイで働いています。社会人となってからは、自分で実際にソフトウェア開発をしている時期もあれば、開発のマネージャをやっていることもありますが、現在は、毎日Go言語でbackendのサービス開発をしています。 社会人となってから、実際に自分でコードをほとんど書いていないかったのは、日オラクル、ジャストシステム、富士ゼロックス情報システム(FXIS)での最

    複業を20年: 柴田 芳樹 (Yoshiki Shibata)
    t2y-1979
    t2y-1979 2019/10/18
    こういうキャリアを目指したい
  • FORTRANから始まって41年: 柴田 芳樹 (Yoshiki Shibata)

    1978年4月、大学一年生で初めてのプログラミングをFORTRANで学びました。それから、今月末で丸41年が過ぎたことになります。今と違って当時は、プログラミングは大学の計算機センターに行かなとできませんでした。当時の九州工業大学の計算機センターは、幸いパンチカードではなく、TSS(Time Sharing System)の端末を使ってプログラミングできました。でも、自分の学科(情報工学科)のさまざまなコースの演習は違っていました。 コンパイラの授業では、パンチカードを使ってPL/Iでプログラミングしました。パンチ室が3階で、計算機室が4階だったので、自分が書いたコンパイラのコードである7百枚ぐらいのパンチカード(つまり、700行のソースコード)を持って3階と4階を行ったり来たりして、デバッグして完成させました。 CPUの内部を学習する授業では、APLで動作が記述されている英語の教科書でし

    FORTRANから始まって41年: 柴田 芳樹 (Yoshiki Shibata)
  • 技術者のレベルとソフトウェア開発の難易度(2): 柴田 芳樹 (Yoshiki Shibata)

    ソフトウェア開発を続けていけば、自然とレベルが上がるということはありません。中級職人と上級職人の間には、大きな溝があります。上級職人になれるかどうかは、「新たな技術も含めて自分で常に学習を行い、自然と実践できている」ということです。これは、急にできるものではなく、初心者の頃から行っていくものです。それを行わずに、知っている知識だけで開発業務をこなすと、中級職人で終わってしまいます。中級職人に関しては、次のように拙著の中で解説しています。 このレベルは、多くのソフトウェアエンジニアが到達して、ここで停止してしまうレベルです。 つまり、五年以上のソフトウェア開発を経験して、30代になり、すでに過去の開発業務で使用している技術であれば、問題なく使用してソフトウェア開発を遂行できるレベルです。 このレベルで停滞すると、キャリアパスとしては危ない状態になってしまいます。とりあえず業務は遂行できるため

    技術者のレベルとソフトウェア開発の難易度(2): 柴田 芳樹 (Yoshiki Shibata)
  • メルペイで5か月が過ぎました:柴田 芳樹 (Yoshiki Shibata):So-netブログ

    2018年6月1日にメルペイ社に入社(メルカリから出向の形態)して働き始めて5か月が過ぎました。 【仕事】メルペイが提供するサービスを構成するバックエンドのマイクロサービスの1つの開発を担当しています。開発言語はGo言語です。マイクロサービスが提供するAPIgRPCベースですので、提供する機能の仕様をprotoファイルに書く作業をしばらく行っていました(「API仕様を書く」)。 最初から最終版のAPI仕様を書くことは不可能ですが、最初の仕様ができあがったので、テスト方法の検討と実装です。私が担当しているマイクロサービスは複数のマイクロサービスに依存しているので、どのようにe2eテストコードを書くかを検討しました。要件としては、以下の項目を最初に考えました。 担当するマイクロサービスを起動して、gRPC当に呼び出してテストできること 依存するマイクロサービスのgRPC当に呼び出すこ

    メルペイで5か月が過ぎました:柴田 芳樹 (Yoshiki Shibata):So-netブログ
  • メルペイで9か月が過ぎました: 柴田 芳樹 (Yoshiki Shibata)

  • 防御的プログラミング: 柴田 芳樹 (Yoshiki Shibata)

    ソフトウェア開発でのデバッグ効率を左右する要因は多くあります。長年、様々なソフトウェア開発を行い、デバッグに苦労していると、デバッグ効率を向上させるためどのようなことを行うと良いかを考えたり、書籍を通してヒントを得たりして、色々と工夫をするようになります。 デバッグ効率を向上させる方法の1つとして、防御的プログラミングがあります。防御的プログラミングでは、たとえば、メソッドのパラメータが正しい値であるかをきちんと検査して、不正であれば、例外をスローするということがあります。あるいは、switch文のdefaultラベルでは必ずAssertionErrorをスローするとかも一種の誤った設計に対する防御的プログラミングです。もちろん、呼ばれた側の設計上のバグであれば、それを検出してもAssertionErrorをスローしたりすると思います。これは、自分の想定している設計以外の状況が発生したらそ

    防御的プログラミング: 柴田 芳樹 (Yoshiki Shibata)
  • ロック(ミューテックス)の再入可能性:柴田 芳樹 (Yoshiki Shibata):So-netブログ

    Go言語で提供されているsync.Mutexは、再入可能(re-entrant)ではありません。それについては、『プログラミング言語Go』(p,306)には次のように書かれています。 Go のミューテックスが再入可能ではないことには正当な理由があります。ミューテックスの目的は、共有された変数のある種の不変式がプログラム実行中の重要な時点で維持されているのを保証することです。不変式の一つは、「共有された変数へアクセスするゴルーチンが存在しない」*2ですが、ミューテックスが保護しているデータ構造に特有の追加の不変式が存在するかもしれません。一つのゴルーチンがミューテックスロックを獲得したときには、そのゴルーチンは不変式が維持されていると想定するでしょう。ロックを保持している間に共有された変数が更新され、一時的に不変式が破られるかもしれません。しかし、ロックを解放するときには、秩序が回復されて不

    ロック(ミューテックス)の再入可能性:柴田 芳樹 (Yoshiki Shibata):So-netブログ
  • 講演: 柴田 芳樹 (Yoshiki Shibata)

    拙著の内容に沿った(無料)講演を2007年から企業に限定することなく行っています。地域の何らかのグループでも構いませんし、主催されて参加者を募集されても構いません。 企業向けでなければ、交通費・宿泊費が必要な地域でも構いません(基的、交通費・宿泊費は私が負担します)。講演そのものは無料で行います。 2017年10月以降は、企業向けであれば有償で実施します。 以下の点を準備してくださればよいです。 【準備してもらうこと】 講演場所: 地域の公的機関の会議室などでも構いません。 プロジェクター: プレゼンテーション用のプロジェクター。 個人的な活動ですので、基的に土曜日の午後を予定しています。ただし、2017年10月以降は、私のスケジュールが空いていれば、金曜日も可能です。 希望される方(グループ・企業)は、私のホームページの右下にある「メールを送る」ボタンを利用して、メールでお知らせくだ

    講演: 柴田 芳樹 (Yoshiki Shibata)
  • 初心者レベルの言い訳をしない: 柴田 芳樹 (Yoshiki Shibata)

    出来上がったコードの可読性も含めた品質の悪さを、時間がなかったとかプロトタイプだからと言い訳する人がいます。スキルが高い人の場合は、同じ時間制約でも高い品質のコードを書きます。それは、ある程度無意識になるまで、訓練を重ねているからです。無意識になるまで意識して普段から活動するのです。 ソフトウェア開発ではないですが、熟練者と初心者の差を比較するために短時間でどれだけの成果が出るかを競うテレビ番組を時々見かけることがあります。必ず熟練者の方が量も質も圧倒的に初心者を凌駕しています。つまり、時間がなかったとかプロトタイプを言い訳にした時点で、経験年数に関係なく、初心者レベルだということです。 1988年に米国への赴任前の送別会で今は亡きS.Uさんに言われたのは、「与えられた仕事をこなして初めて次の難し仕事が与えられる」と言われたことがあります。逆に言えば、できないと判断されたら、仕事を与えない

    初心者レベルの言い訳をしない: 柴田 芳樹 (Yoshiki Shibata)
    t2y-1979
    t2y-1979 2017/12/14
    ほんとその通り