サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
yoshikishibata.seesaa.net
2018年6月1日から働き始めた株式会社メルペイを9月30日付けで退職します。4年4か月勤務したことになります。1984年4月1日に社会人として富士ゼロックスで働き始めてから、7社目の会社でした。10月1日からは、新たな会社でソフトウェアエンジニアとして働き始めます。 週4日勤務「ソラミツ株式会社を退職します」でも書きましたが、リコーを退職してからは、基本的に週4日勤務をしてきました。メルペイでも、金曜日は欠勤するか有給休暇を使うなどして、週4日勤務をしてきました(週4日勤務で働くことに関して、入社前に合意してもらっていました)。10月からの会社では、週4日勤務の雇用契約で働きます。 初めてのウェブサービス開発富士ゼロックス、富士ゼロックス情報システム、リコーの3社で合計31年7か月を過ごし、富士ゼロックスでのワークショテーション開発を除くと、その多くは、デジタル複合機のソフトウェア開発に
2018年6月1日に株式会社メルペイに入社して、4年が過ぎました。入社当時は、定年が60歳と聞いていたので、1年半の勤務だと思っていましたが、実際の定年は65歳であり定年まであと2年半です。 ソフトウェアエンジニアにとって重要な能力と(私は考えるが)、身に付けるのが難しいのが現実だと、この4年間で再認識したのは次の三つです。 開発の最初にAPI仕様をきちんと書けるソフトウェアエンジニアは少ない テストファースト開発を行っているソフトウェアエンジニアは少ないか、いない Tech Blogなどの執筆で、読み手を意識して、分かりやすい文章を書く、ソフトウェアエンジニアは少ない API仕様については、このブログでも何度か書いています(「API仕様を書く」)。テストファースト開発についても、「テストファースト開発」を書いています。分かりやすい文章については何も書いていないですが、「伝わる技術文書の書
エンジニアが集まって、LTを行ったり、20分から30分程度の発表を平日の夜に行うというのは、いつ頃から広まっているのか定かではありませんが、この10年間で確実に広まってきています。さらに、コロナ禍により、オンライン開催も加わり、広く行われるようになりました。 一方、Advent Calendarといったtech blog(技術文書)を公開することも多く行われています。企業内の開発で得た知見を、オンラインで説明しながら話したり、tech blogとして公開することは、今日のIT業界では、当たり前のように行われています。これらは、すべて外部へ向けての発信です。 外部発信することで、その企業の技術力を発信することにもなり、エンジニアを惹き付けることにもなります。私自身もTech Talkで話をしたり、tech blogを書いてきました。このような情報発信は、今後も多くのIT企業やスタートアップで
2020年2月18日から在宅勤務(WFH:Work From Home)を始めて、ちょうど一年が経過しました。この一年間、一度も会社には出社していませんし、最も大きな出来事は、2020年6月20日(土)に急性心筋梗塞で緊急搬送され、カテーテル治療で一命を取り留めたことです。 急性心筋梗塞になる以前と以降では、同じ在宅勤務であっても大きく変わりました。心筋梗塞になる前は、朝食後に仕事を始めて、昼食、そして夕方には仕事を終えるという生活でした。 6月27日(土)に退院してからは、週に2回か3回の心臓リハビリテーションで午後1時から4時まで外出するようになりました。心臓リハビリテーションがない日は、朝食後1時間ほど経過してから自宅でエアロバイクを30分行い、その後、シャワーを浴びるという生活を送っています。11月からは心臓リハビリテーションも週に1回となったので、自宅でのエアロバイクが主となって
「API仕様を書く」として私自身の過去の経験を書いたものを読みやすく並べてみました。 API仕様を書く(1) API仕様を書く(2) API仕様を書く(3) API仕様を書く(4) API仕様を書く(5)ー gRPC protoファイル ー API仕様を書く(6)ー gRPC protoファイル(2) ー API仕様を書く(7) ちょうど同じような内容が『A Philosophy of Software Design』に書かれていました。 関連する章は、第12章「Why Write Comments? The Four Execuses」と第15章「Write The Comments First」です。第12章では、コメントを書かない理由として多くのソフトウェアエンジニアが挙げる理由について反証しています。第15章ではコメントを最初に書くことの有用性を説いています。ここでのコメントは、私
きちんとしたAPI仕様の作成能力「API仕様を書く」でも述べていますが、振り返ってみると、ソフトウェアエンジニアとしては、プログラミングできることに加えて、書いているソフトウェアのAPI仕様をきちんと書く能力を身に付けることも重要です。 きちんとAPI仕様を書く際には、次の視点が求められます。 そのソフトウェアを使う人達が提供される機能を理解し、間違いなく正しく使えるかという視点 将来保守する人達の理解を助けるという視点 1. は機能の説明だけでなく、防御的プログラミングの視点を盛り込んだ仕様が書かれている必要があります。2. は説明するまでもなく、将来保守する人達が仕様を理解できる必要があります。 仕様が書かれていない場合、作られたソフトウェアは技術的負債となります。そのようなソフトウェアの仕様を理解するには、実装のコードを読んで理解する必要があります。ライブラリやマイクロサービスのAP
継続的な学習習慣ソフトウェア技術は、発展し続けているため、非常に興味が尽きない領域です。そのために継続して学習を続ける必要があります。継続的な学習習慣の重要性については、何度も述べている(継続的学習)ので、ここでは別の視点で話をします。 本の買いすぎに注意新たなソフトウェア技術に興味を持って学習する、あるいは今使っている技術を深く知るために学習するときに、私自身は書籍を購入することがほとんどでした。技術書の電子版を購入できるようになったのはいつ頃だったか思い出せませんが、2009年ぐらいまでは紙の本を購入していました。 紙の本、電子版のどちらであっても、新たな技術を学び続ける上での問題点は、本を買いすぎることです。読むつもりで技術書を購入するのですが、結局ほとんど読まなかった技術書の数の方が、読んだ技術書の数よりも圧倒的に多かったと言えます。つまり、読まない本に多くのお金をつぎ込んだことに
新たなプログラミング言語への取り組みソフトウェア業界は停滞することなく、常に発展してきました。さまざな問題を解決するために、さまざまなプログラミング言語が登場してきましたし、これからも登場してくると思います。登場するすべてのプログラミング言語に取り組み、スラスラとその言語でコードを書けるようになるのは難しいと思います。したがって、私を含めて、多くのソフトウェアエンジニアは、書いたことがあるとしても、スラスラと書ける言語とそうではない言語に分かれると思います。 スラスラと書ける言語は、日々のソフトウェア開発で使ってきた結果として、指が自然と動くということです。そして、日々のソフトウェア開発で使うプログラミング言語は、バイブル本(「プログラミング言語のバイブル本と言語仕様」)を通してきちんと学ぶべきです(あるいは自己学習すべきです)。その理由としては、以下のことが挙げられます。 毎日使っている
ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック 作者: Pete Goodliffe出版社/メーカー: オライリージャパン発売日: 2017/12/15メディア: 単行本(ソフトカバー) 間もなく発売されますが、先日紹介した目次に加えて、アマゾンでは以下のように紹介されています。 プログラマとしてのキャリアをスタートすると、構文や設計を理解するだけでなく、その他の様々な事柄を理解し習得する必要があると気づきます。 本書は、優れたコードを作りだし、人々と効率的に働く生産性の高いプログラマになるための考え方とテクニックを38のテーマで紹介します。 はじめに、コード1行1行の書き方、デバッグやエラー処理、コードの改善方法など開発現場でのコーディングを取り上げます。 次にコードを単純に保つこと、コード変更やテスト、リリースなどソフトウェアを開発する際の考え方や心構えを扱い
今日(2017年8月31日)がリコーへの最終出社日です。2009年9月1日にリコーへ入社してから、主に行ってきたことを簡単にまとめます。 【業務関連】所属した開発組織の業務として行ったものです。 技術教育:2010年に延べ500名以上のソフトウェアエンジニアに対して、「ソフトウェアエンジニアの心得」「テスト駆動開発」「C++」「API設計の基礎」などの教育を実施しました。しかし、「教育と場」でも書いたように、今から振り返ってみると、単に「教育をした」と「教育を受けた」ということだけが残り、私が教えた内容を実際の開発の現場で指導する人がいないため、開発組織としてのレベルアップにはならなかったと思います。 Jenkins導入:2010年10月から行ったものです。当時デジタル複合機内で動作するJavaの開発環境やインテグレーション環境は、私の視点からはあまりにもお粗末でした。それで、FXIS時代
2009年9月から働き始めた株式会社リコーを8月31日付けで退職します。丸8年働いたことになります。現在57歳であり、定年退職までにはまだ2年と少しありますが、「セカンドキャリア制度」(早期退職制度のようなもの)の適用を受けて退職します。 8年間の会社での業務や退職理由については述べませんが、業務以外の私的活動の成果をまとめてみると次のようになります。 翻訳本(8冊):『アプレンティスシップ・パターン』『プログラミング原論』『Android SDK 開発クックブック』『プログラミング言語Goフレーズブック』『Objective‐C明解プログラミング』『APIデザインの極意』『Java SE 8 実践プログラミング』『プログラミング言語Go』 自著(2冊+α):『ソフトウェア開発の名著を読む 【第二版】』『プログラマー”まだまだ”現役続行』『API設計�の基礎』 Jolt Award読書会
2000年にclibと呼ばれるC++用のライブラリーを開発しました。それは、今でも富士ゼロックスのデジタル複合機で1000万行を超えるコントローラソフトウェア(*)と呼ばれる制御ソフトウェアで使われているライブラリです。メモリ管理機構とマルチスレッドプログラミング機構を統合したようなC++のライブラリです。 (*)http://www.atmarkit.co.jp/ait/articles/1507/06/news009.html clibは、私がそのAPI仕様をすべて設計し、実装は他の優秀なエンジニア2名に行ってもらいました。API仕様には、防御的プログラミングも含めて、メモリ管理機構での細かな動作仕様も書いていました。 このライブラリに関して、忘れないうちに一連のブログ記事として書きたいと思います。しかし、記憶は嘘をつきます。したがって、事実とは異なった私の記憶の嘘が含まれているかもし
コードカバレッジを品質基準としない「API設計の基礎」の3.8節「コードカバレッジと防御的プログラミング」では、次のように述べています。 テストコードによるコードカバレッジは、そのソフトウェアの品質を担保しません。コードカバレッジが100%だから、品質が高いとは限りません。バグがあるコードでも、テストでコードカバレッジを100%にすることはできます。 ある機能を持つモジュールを開発する場合、そのモジュールのAPI設計が重要になります。APIの仕様には機能や使い方はもちろんのこと、不正なパラメータの場合の振る舞いが記述されていなければなりません(参考:「API設計の基礎」)。 そして、テストコードとしては、その仕様を検査するテストを書くことになります。①適切なAPI仕様、②それに基づく適切なテスト、そして実装です。実装がテストに合格したら、コードカバレッジを計測するわけです。コードカバレッジ
ここに書く内容ではないかもしれませんがEffective Java の日本語訳などを以前出版していた(株)ピアソン・エデュケーションのドメインが第三者の手に渡ったようで、過去の書籍のホームページ(http://www.pej-hed.jp/washo/2619.html 等)が単なるアフェリエイトブログの様なサイトになってしまっています。 リンクの貼り直しをご検討されてはいかがでしょうか。
研修では、『プログラミング言語Go』を事前に読んで、質問をまとめてもらうと同時に練習問題を解いてもらいます。この予習は基本的に私的時間※に行ってもらいます。月に1日だけの業務中の研修では、質問への回答やディスカッション、および練習問題の解答の確認を行います。 ※ 予習がすべて私的時間なので、研修の受講は「希望者」だけです。 リコー勤務時の研修コースのタイトルは、「プログラミング言語Go基本技術習得コース」となっていました。これは初心者向けという意味ではなく、Go言語でプログラミングするのであれば最低限学んでおくべきことを学ぶという意味でした。
1999年に若手技術者に基本的なことを学んでもらうために、当時はこの英語版を利用して第1章「Style」と第2章「Algorithms and Data Structures」の早朝勉強会を海老名プライムタワー(海老名市)、KSP(川崎市)、岩槻(さいたま市)の3拠点で私が出向いて開催しました。その時に作成したのが「勉強会ノート」です。 勉強会ノート: http://www001.upp.so-net.ne.jp/yshibata/TPOP.pdf その後、日本語版が出版されました。 日本語版を使用して始めた社内教育が「プログラミング作法」教育です。当初は、以下の3部から構成される1日の教育コースでした。 「ソフトウェアエンジニアの心得」 コードレビューの重要性とコードレビュー・ガイドの説明 『プログラミング作法』の第1章「スタイル」の教育 4社※1でソフトウェア系技術者の新卒新人向け教育
Go言語に関する書籍を読んで、Go言語を学ぶ読書会を11月から計画しています。以下が概要です。 毎月第2土曜日の午後1:00〜午後5:00まで。 基本的に書籍を読んでいきます。事前に割り当てをして発表してもらうのではなく、当日、書籍を読んでいき、疑問点などがあれば参加者で議論をします。 場所は、横浜市内(みなとみらい)を予定しています。 最初の書籍は、『プログラミング言語Go』です。
「API設計の基礎」は37頁しかないですが、それを題材として勉強会をしたという人達から誤字・脱字を指摘していただき、修正したものをアップしました。 2009年に最初のドラフトを公開してからもう7年になります。さまざまなプロジェクトのコンサルテーション(レビュー)を通して分かるのは、「API設計の基礎」に書いてあることを部分的でもきちんと実践しているエンジニアやソフトウェア開発組織は非常に少ないということです。 「まえがき」に次のように書いています。 本書は、私自身がソフトウェア開発を行いながら学んだことをまとめたものであり、その内容には偏りがあるかもしれません。しかし、本書を通して、みなさんが私と同じような遠回りをすることなくソフトウェア開発をされることの助けとなれば幸いです。一人のエンジニアが遠回りするのはその人の問題で終わりますが、ソフトウェア開発組織が遠回りすることは、その組織に属し
日記 (0) プライバシーポリシー (1) プログラマー現役続行 (554) KOIT (12) 英語 (29) インターネット (2) シュガー社員 (6) Java (55) 本 (105) やりがい論 (2) 正誤表 (22) 読書会 (28) インターネット放送 (2) 技術書の翻訳 (5) JavaOne 2008 (3) Google Web Toolkit (24) GWTソリューション (2) プログラミング言語Java教育 (74) 音楽 (4) 英語イデオム (3) 映画 (3) その他 (58) カンファレンス (3) JavaOne 2009 (2) 名言 (2) 転職 (23) WiFi (22) マンション・ライフ (5) API設計の基礎 (10) JavaOne 2010 (3) 時の流れ (9) 技術的負債 (7) 献本 (7) 総閲覧数 (10) ソフト
プログラミング言語Go 作者: Alan A.A. Donovan出版社/メーカー: 丸善出版発売日: 2016/06/20メディア: 単行本(ソフトカバー) 池袋のジュンク堂で「Goの設計思想を読み解く~実際の開発に活かすために」と題して、刊行記念イベントが開催されます。鵜飼さんとのトークイベントです。 開催日時:2016年07月06日(水) ~ 場所:ジュンク堂 池袋本店 鵜飼 文敏(Googleソフトウェアエンジニア) 柴田 芳樹(『プログラミング言語Go』訳者) 19:00開場 19:30開演事前予約が必要ですので、参加方法などの詳しい情報はこちらを見てください。
プログラミング言語Go 作者: Alan A.A. Donovan出版社/メーカー: 丸善出版発売日: 2016/06/15メディア: 単行本(ソフトカバー) 2015年4月20日から原著の原稿のレビューを始めて、レビューが終わったのが2015年9月5日でした。その間に、二回読み返しています。翻訳は2015年9月13日に着手し始めて、私のすべての作業が昨日(2016年5月8日)終了しました。今日、入稿となり印刷所での印刷の準備が始まりますので、予定通り6月15日刊行となります。 今回は、原著のレビューに98時間、翻訳に473時間を費やしたことになります。ちなみに『APIデザインの極意』は、翻訳だけでしたが500時間を費やしています。これは、私が私的時間に費やした時間であり、出版社の担当者やレビューアによるレビューを加えると多くの時間が費やされたことになります。また、社内のGo言語研修では翻
プログラミング言語Go 作者: Alan A.A. Donovan出版社/メーカー: 丸善出版発売日: 2016/06/15メディア: 単行本(ソフトカバー) Alan DonovanとBrian Kernighanの共著である『The Go Programming Language』の日本語版である『プログラミング言語Go』の予約受付がAmazon.co.jpで開始されました。 2015年4月15日に米国Pearson社の編集担当のGreg Doench氏に依頼して、著者の二人に翻訳者として紹介してもらい、草稿のレビューをさせてもらうことになりました。それから、都度更新されている草稿を二回読み返しフィードバックを行い、2015年9月末には原著が完成して11月には英語版が出版されました。したがって、翻訳に着手したのは2015年10月からであり、すべての翻訳作業(索引作り、組版作業も含めて)
一冊の専門書を仕上げるというのは大変な作業であり、出版時に誤りが残っているのは普通です。たとえば、『The Go Programming Language』のErrata(正誤表)を見てみるとすでに20項目弱の訂正が掲載されています。 技術書の誤りに関しては、拙著『プログラマー”まだまだ”現役続行』に「専門書には間違いもある」として書いているものを引用しておきます。 専門書を読む際に注意しなければならないのは、たとえ専門家が書いていたとしても、誤植などの誤りがあるということです。そう思って読む必要があります。一冊の本を仕上げるという作業は、膨大な時間を要する作業であり、どうしても完全に仕上げることは不可能である場合が多いからです。つまり、説明が間違っている場合もあるということです。 さらに、たとえばサンプルコードなども、必ずしも適切でない場合もあると思って読むことです。よく、そのような間違
この本の「Chapter 13: A Tale of Two Systems」からの抜粋(p.122)です。 Technical debt is a term coined by Ward Cunningham that’s widely used in the software industry today. The metaphor leans on the financial world: making a decision to help ship software quickly is like taking on a loan. It can enable you to do something now that you would not otherwise be able to do. But you can’t ignore that loan—you always ha
すでに紙の本とKindle版が発売されているので、購入された人も多いと思います。紙の本の索引(Index)のRob Pikeのところに次のようにあります。 ところが、この最後のp.107にはRob Pikeの名前は登場しません。索引を作り間違えたのかと思いましたが、そうではないそうです。 p.107には次のようなコード例が掲載されいます。 array ["gold", "silver", "bronze"] object {"year": 1980, "event": "archery", "medals": ["gold", "silver", "bronze"]} 実は、これはRob Pikeに関連する例なので、索引が追加されています。関連しているのは1980、archery、silverの三つです。私は知らなかったのですが、これはRob Pikeに関するよく知られたジョークのようです
2010年にピアソン桐原から出版され、その後、絶版になった『プログラミング原論』が、東京電機大学出版局から再出版されました。再出版に際して原著の正誤表をすべて反映していますし、著者による「日本語版の読者へ」(下記)が新たに追加されています。また、本もB5版になり文字も大きくなっています。 日本語版の読書者へ 私達は,日本語版の読者向けにまえがきを書く機会を提供してくれた出版社および訳者の柴田芳樹氏に深く感謝しています。 この本の精神は,日本の美学にあります。この本は,必要最低限の数の言葉で,できる限り多くを説明しようとしています。古くからの俳句のように17語まで減らすことはできませんが,俳句が少ない語数で表現することに影響を受けました。この本は,あまり厚くはありません。実際,無駄な厚みが全くないことを願っています。私達は,すべての言葉が意味を持つように努めました。 故障しない自動車や修理を
2009年に書き始めて、しばらく書かない期間があったのですが、とりあえず最初の版としたいと思います。また内容もかなり縮小されて3章から構成され37頁しかありません。 第 1 章 C/C++での実装の隠蔽 第 2 章 Java での実装の隠蔽 第 3 章 防御的プログラミング 「まえがき」からの抜粋です。 1978 年に大学で初めてコンピュータに触れてから様々なソフトウェア開発に従事してきました。しかし、大学での 6 年間や社会人となってからも、非効率なソフトウェア開発をしてきたのが現実です。C 言語で実装を隠蔽することを覚えたのは、社会人となってから 7、8 年過ぎてからでしたし、防御的プログラミングを始めたのは何と社会人となってから 15 年も過ぎていました。 本書では、C 言語、C++言語、Java 言語を中心として、日々のソフトウェア開発の中で意識して注意を払うべきことをまとめたもの
最近、コードレビューをしていて感じていることを、15年前に記事として書いていました。その記事は、「リファクタリングの勧め」(「Java PRESS Vol.12」、2000年5月、技術評論社)です。以下は、15年前に書いた内容をそのまま再現しています。 みなさんは、「リファクタリング(Refactoring)」という言葉を聞かれたことがありますか?私自身は、リファクタリングを意識するようになったのは、 Martin Fowlerの『Refactoring』注1を1999年の夏に読んでからです。それまでは、言葉としては他の書籍にも現れていたのでしょうが、貝体的に何を言っているのか深く考えることなく読んでいたのだと思います。今回は、私自身のフログラミングの経験を振り返り、Martin Fowlerの本の内容を簡単に紹介したいと思います。 プログラミング経験私が初めてプログラミングを覚えたのは、
プログラミング原論 作者: アレクサンダー ステパノフ出版社/メーカー: 東京電機大学出版局発売日: 2015/11/10メディア: 単行本(ソフトカバー) 2010年にピアソン桐原から出版され、その後、絶版になった『プログラミング原論』が、東京電機大学出版局から再出版されます。再出版に際して、原著の正誤表をすべて反映しています。また、著者による「日本語版の読者へ」が新たに追加されています。 5年前に出版された『プログラミング原論』は、こちらです。
次のページ
このページを最初にブックマークしてみませんか?
『yoshikishibata.seesaa.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く