タグ

ブックマーク / ryoasai.hatenadiary.org (17)

  • アマゾンにおけるソフトウェア開発の仕事について感じたこと - 達人プログラマーを目指して

    ちょうど、先日アマゾンのオープンハウスというイベントでお話をさせていただく機会があったのですが、開発者向けの20日のセクションだけで90名近くの方々にご参加いただきました。平日にもかかわらず、多数の方々にご参加いただき、どうもありがとうございました。 私自身は、昨年秋にSIerからアマゾンに転職してまだ半年ですが、この機会にアマゾンにおけるソフトウェア開発の文化や考え方について、ブログでご紹介できる範囲でまとめてみたいと思います。 私は、ずっとブログに書いてきたようにSI業界からの転職だったのですが、一般的なSIerにおけるソフトウェア開発の考え方や手法といろいろな面で違っているということは予想していたというか、もともと覚悟の上での転職でした。それでもやはり最初のうちはあまりにも大きな変化に自分の仕事のスタイルを合わせるのにいろいろと苦労しました。基的には転職したての頃に抱いた感想(転職

    アマゾンにおけるソフトウェア開発の仕事について感じたこと - 達人プログラマーを目指して
    katzchang
    katzchang 2012/04/23
    「できる限りコーディングに時間をさけるようにすることが生産性の高いSDEとしては義務であり権利でもあると考えられています」
  • すでに定年を過ぎていますが、Amazonで引き続き達人プログラマーを目指すことになりました。 - 達人プログラマーを目指して

    このたび9月末日をもってオージス総研を退職し、10月よりアマゾンジャパン株式会社に入社しました。今後はSoftware Development Engineerとして、日をはじめ世界各国のAmazonのモバイルWebアプリケーションの開発を担当することになる予定です。 およそ7年間にわたり、前職のオージス総研ではソフトウェアアーキテクトとして、SOAやEAといった全社的なシステムのアーキテクチャから、上流のモデリング、Java EEを使ったアプリケーションの開発など、技術者として様々な経験を積ませていただきました。私自身はこのブログでも何度も取り上げてきたように、モデリングやオブジェクト指向といった技術を用いて、実際の基幹業務システムの設計などに活用することで、高品質で保守性の高いシステムの構築に貢献したいという思いがありました。そのようなシステムを構築、維持するためには高品質なアーキテ

    すでに定年を過ぎていますが、Amazonで引き続き達人プログラマーを目指すことになりました。 - 達人プログラマーを目指して
    katzchang
    katzchang 2011/10/04
  • いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して

    正しく意味を理解している方にとっては、まったく常識レベルの話であり、何をいまさらと思われる方々も多いかと思いますが、大規模案件のレガシーコードなど、私が仕事で見かけるJavaのコードを読むと、「このコードを書いたSEやPGの方々は、はたして継承の意味を正しく理解していないのではないか」と思われる設計のコードに出会うことが少なからずあります。現在では改良されましたが(Javaプログラミング能力認定試験の問題がかなり改善されていました - 達人プログラマーを目指して)、以前のJavaプログラム認定試験の問題は、そうした不適切な設計がされている典型的な例となっていたのですが、実際、SI業界ではあのような品質のコードのシステムが今でも現役で多数稼動しているというだけでなく、現在でも新たに生み出されているというのは残念ながら紛れもない事実のようなのです。 確かに新人研修で「哺乳類を継承して犬クラスと

    いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して
    katzchang
    katzchang 2011/06/24
  • ConQATを利用してソースコードの品質をチェックする - 達人プログラマーを目指して

    ある程度プログラマーとして経験を積めば、ソースコードを読んだときに、そのソースコードの良し悪しというものは、嗅覚を使って直感的に嗅ぎ分けることができるものです。実際、そのように体の感覚を使ってこのコードは不吉だと感じるところは実際大いにあり、コードの臭い(code smell)として知られています。 コードの臭い - リファクタリングの必要性を示す兆候 これはファウラーの名著 リファクタリング―プログラムの体質改善テクニック (Object Technology Series) 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史出版社/メーカー: ピアソンエデュケーション発売日: 2000/05メディア: 単行購入: 94人 クリック: 3,091回この商品を含むブログ (312件) を見るでも紹介されており、こういった不吉な部分を適切に嗅ぎ分け

    ConQATを利用してソースコードの品質をチェックする - 達人プログラマーを目指して
    katzchang
    katzchang 2011/06/13
    おもしろそう。
  • 次世代のモックフレームワークであるJMockitの基本的な使い方 - 達人プログラマーを目指して

    以前のモックフレームワークの技術的制約 今まで私が担当してきたプロジェクトにおいては、モックオブジェクトを使ったJUnitの単体試験はjMockとEasyMockのいずれかのフレームワークを利用して行ってきました。しかし、これらのフレームワークはJavaプラットフォームにおけるコード自動生成の考え方の変遷で説明したように動的プロキシーに基づいているため、以下のような制約がありました。 モック化する対象の型はインターフェースを実装しているか、継承可能なクラスであること モック化するメソッドはfinal、static、privateでないこと*1 モック化するロジックはコンストラクターの呼び出しではないこと モックオブジェクトをテスト対象クラスにDIかパラメーター経由で引き渡すことが可能であること モック化する場合はクラス全体をモック化する必要があること(getterやsetterなどは物の

    次世代のモックフレームワークであるJMockitの基本的な使い方 - 達人プログラマーを目指して
    katzchang
    katzchang 2011/05/22
  • O/Rマッピングで緩和されるインピーダンスミスマッチには静的と動的の側面がある - 達人プログラマーを目指して

    一般的な業務アプリケーションではデータを永続化するために、RDBMS(関係データベース管理システム)を利用します。RDBMSでは大量のデータを効率的に検索したり、集約してレポートを作ったりすることが得意ですし、一般的に業務システムで求められるトランザクションのACID特性*1を満たすことも容易です。また、適切にテーブル設計の正規化を行うことにより、運用面においてデータの管理コストを下げることもできます。最近ではスケーラビリティの問題などもあり、RDBMS以外のデータベースについても注目されるようになってきていますが、今後も業務アプリケーションの主流としてRDBMSは使われていくだろうと思われます。 従って、Javaなどのオブジェクト指向言語で開発を行い、DDDのようなオブジェクト指向の設計技法を利用する場合に必ず考えなくてはならない問題は、オブジェクト指向と関係モデルとのインピーダンスダン

    O/Rマッピングで緩和されるインピーダンスミスマッチには静的と動的の側面がある - 達人プログラマーを目指して
    katzchang
    katzchang 2011/05/01
    PofEEA読むべきだなーと思わされるなど。
  • Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して

    Java5以降では総称型(generics)がJava言語に導入されています。総称型自体は、最近の静的な型付けのプログラミング言語で珍しいことではなく、現在の最新版では.NETのC#やVisual Basicにも導入されています。一般的には総称型をサポートするクラスライブラリを自分で正しく定義することは非常にスキルがいるが、事前に定義されたクラスを使うだけであれば、それほど難しくないとされています。しかし、Java言語の総称型はエントリで説明するように特殊なところがあり、単に利用するだけでも他の言語に比べて遥かに難しいところがあるというのも事実です。特に総称型をパラメータ化する際に指定するワイルドカード型(List<? extends Serializable>など)の意味を正しく理解して使いこなすことは簡単なことではありません。その結果、昔のJDK1.4までのように型パラメーターのない

    Java総称型のワイルドカードを上手に使いこなすための勘所 - 達人プログラマーを目指して
    katzchang
    katzchang 2011/03/26
  • 業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して

    Java: The Good Partsののタイトルに触発されて、逆にJava言語の使いにくい部分をいくつかピックアップしてみました。Java EEなどの業務系のアプリケーションプログラマーの視点で書いていますので、別の立場ではここで指摘している事項が必ずしもBad Partではないという指摘もあるかもしれませんし、他にもいろいろなポイントがあると思いますが、とりあえず、私の独断で思いついたものを10個説明したいと思います。 1.標準APIのチェック例外が扱いにくい Java言語のチェック例外は当にGood Partなのか? - 達人プログラマーを目指してでも取り上げましたが、Bad Partの第一番目として標準APIのチェック例外が扱いにくいという点を指摘させていただきたいと思います。チェック例外については、理屈上コンパイラーによって例外の処理をプログラマーに強制させることができるす

    業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して
    katzchang
    katzchang 2011/02/26
  • Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指して

    デブサミ2011会場のオライリーのブースで目に入ったため、以下のを購入しました。 Java: The Good Parts 作者: Jim Waldo,矢野勉,笹井崇司出版社/メーカー: オライリージャパン発売日: 2011/02/24メディア: 大型購入: 3人 クリック: 148回この商品を含むブログ (37件) を見る180ページほどの薄いですし、各章は独立して気軽に読むことができます。早速、気になるいくつかの章から読んでみました。ただし、監訳者のid:t_yano氏も前書きで 書が、みなさんにとってJava以外の言語についても考えるようになり、みなさんのプログラミングの世界がさらに豊かになることを望みます。 と書かれているように、このから直接Javaのプログラミングのテクニックや知識を得るというよりも、ベテランの上級者がJavaについて考え直すきっかけ作りとして読むのが良

    Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指して
    katzchang
    katzchang 2011/02/21
  • きのこ本のアーキテクト版 - 達人プログラマーを目指して

    すべてのプログラマーに読んでもらいたいで紹介した「きのこ」があまりにも良かったので、同シリーズのアーキテクト向けの姉妹書として ソフトウェアアーキテクトが知るべき97のこと 作者: 鈴木雄介,Richard Monson-Haefel,長尾高弘出版社/メーカー: オライリージャパン発売日: 2009/10/05メディア: 単行(ソフトカバー)購入: 17人 クリック: 362回この商品を含むブログ (82件) を見るをamazonのマーケットプレイスで注文していたのですが、日やっと届きました。 中身はまだほとんど読んでないのですが、ちょっと斜め読みしたところでは翻訳の質もよく、プログラマが知るべき97のことと合わせてお勧めできるだと思いました。興味深いのは、プログラマー向けのと著者がかなりかぶっていることですね。外国だとやはり上級のプログラマーがアーキテクトになることが多いのだ

    きのこ本のアーキテクト版 - 達人プログラマーを目指して
    katzchang
    katzchang 2011/01/11
  • SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指して

    私自身は10年以上も前(JDK1.1の頃)にSJC-Pの認定を取って以来、Javaプログラミング関連の認定試験は受けていないのですが、昨日たまたまネットを検索して、SJC-Pとは別にJavaプログラミング能力認定試験という試験が存在していることを知りました。結構メジャーな認定試験のようですので、現役のJavaプログラマーJavaプログラマーを目指している学生さんで、今後受験に向けて勉強されている方々も多くいらっしゃるのではないかと思います。 試験は難易度に応じて3級から1級までランクが分かれており、2級まではJava言語の知識に関する筆記試験ですが1級の試験では実際のプログラムの修正を行う能力が実技試験として課せられます。試験範囲は以下で公開されています。 Javaプログラミング能力認定試験(試験範囲) 私は(自分で言うのも変ですが)、Javaプログラミングについてはこの道15年近くのキ

    SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指して
    katzchang
    katzchang 2011/01/11
    コメント欄「理想を考え始めると、吐きそうになるので。」
  • fluent interface呼び出し書式を正しくeclipse3.6でフォーマットする方法 - 達人プログラマーを目指して

    Java言語のコードの書式のひとつとして、fluent interface(流れるような*1インターフェース)という書き方が知られています。 http://capsctrl.que.jp/kdmsnr/wiki/bliki/?FluentInterface 構文的にはSmalltalkのようにメソッドの戻り値にメッセージ送信対象のオブジェクトを返却することで、一文で複数のメソッド呼び出しを行うという書き方です。以前、多くの日人がオブジェクト指向プログラミングを苦手とするのは英語アレルギーだからか? - 達人プログラマーを目指してで書いたように、英語脳になってないと必ずしもうれしくないこともありますが、英語の得意な外国人にとっては自然言語のように分かりやすく簡潔に記述できることもあり、最近のAPIでは結構流行しているようです。厳密にはFluentではないかもしれませんが、形式上チェーンで呼

    fluent interface呼び出し書式を正しくeclipse3.6でフォーマットする方法 - 達人プログラマーを目指して
    katzchang
    katzchang 2010/12/20
    これはほしかった。
  • プログラマーの成長を考えないSIerの仮説は間違っている - 達人プログラマーを目指して

    Java EEや.NETCOBOLやVB6よりも当に生産性が高いか? - 達人プログラマーを目指してのコメントで 熟練者も居ることは理解しているが、開発をする上で熟練者ばかりを集めることはできない。このため初心者側にレベルを合わせざるを得ない。 というコメントをいただきましたけれど、これは実に典型的なSIer(の上司)の考え方ですね。SIerの仮説と呼んでもよいくらいですね。とにかく、この仮説の前提となっているのは プログラマーのスキルレベルは一定で成長しない プログラマーは容易に交換可能なリソースである プログラマーは単純労働者である というモデルです。とにかく、この仮説がはびこっているから、いまだにSIerのフレームワークは「初心者側にレベルを合わせざるを得ない」という思い込みで作られていることが多いのでしょう。 COBOL(の初期の)時代ならまだしも、少なくとも現在の開発環境にお

    プログラマーの成長を考えないSIerの仮説は間違っている - 達人プログラマーを目指して
    katzchang
    katzchang 2010/12/07
    一定と考えた方が経理上簡単だからだろー。
  • Java EEや.NETはCOBOLやVB6よりも本当に生産性が高いか? - 達人プログラマーを目指して

    プログラミングと設計は来切り離せないものなのではがすごい反響だったのですが、結局この記事で私が言いたかったことは、 Java EEなどの現代的な開発環境はCOBOLなどの古い言語を使った開発とは根的に設計の手法が異なる 多くの現場では未だに古い設計手法を使っているため、オブジェクト指向などの最近の開発環境のメリットが活用できず、低い生産性にとどまっている。 ということに要約できると思います。ただし、どうして、Javaではオブジェクト指向で開発しないといけないのか、どうして昔ながらの伝統的なやり方を改め、新しい設計手法を採り入れないといけないのかと疑問を持たれた方もいらっしゃるかもしれません。ここでは、開発手法と生産性の問題について、もう少し掘り下げて検討してみたいと思います。 レガシー言語の生産性 最近のCOBOLでは、オブジェクトやスタック変数すら使えますが、ここではCOBOL85の

    Java EEや.NETはCOBOLやVB6よりも本当に生産性が高いか? - 達人プログラマーを目指して
    katzchang
    katzchang 2010/12/03
    中級プログラマの仕事は初級プログラマの監督になってしまい、成果も出せないし経験も伸ばせない、という状況にはどうしたらよいか?
  • 多くの日本人がオブジェクト指向プログラミングを苦手とするのは英語アレルギーだからか? - 達人プログラマーを目指して

    やはり、多くの人からいろいろなコメントをいただくと、意外な発見がありおもしろいです。 プログラミングと設計は来切り離せないものなのでは - 達人プログラマーを目指して のブクマのコメントに 何か、主語がないから理解が難しい読み物 というのがありました。私の文章の拙さをまずは反省しなくてはなりません。ただ、普段から日語を話したり、文章を書いたりする際にはあまり意識していなかったのですが、よくよく考えてみると日語の文章で「主語」と呼ばれるものがなんとなく省略されることも多いように思えてきました。中学校の国語の授業では「は」や「が」という助詞がついた言葉が主語であると習ったと記憶しているのですが、実際に、文中で明示的にそのような文節が表れない現れないことが多いように思います。 そこで「日語 主語」で検索してみたら、非常に興味深い記事がいくつか見つかりました。 http://www.geo

    多くの日本人がオブジェクト指向プログラミングを苦手とするのは英語アレルギーだからか? - 達人プログラマーを目指して
    katzchang
    katzchang 2010/12/02
    「そもそも主語がないという説によれば、主語は省略されているのではなくて、そもそも存在しないということになるのだそう」が面白かった。
  • プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して

    最近はアーキテクトという役割で客先に常駐し、フレームワークの選定をしたり、事前に共通部品を設計したりする役割を担う仕事を引き受けることが結構あります。そこで運よくお客様のマネージャーがオブジェクト指向開発の経験が十分にある方だと、IDEなどの開発環境やインターネット接続環境を当然のように用意してくれるので最初から仕事がスムーズにできるのですが、そうでないとMS Officeしか入っていないロースペックのノートPCを渡されて、要件定義フェーズの期間中、フレームワークの設計をお願いしますとか、私としてはちょっと首をかしげてしまうような困ったことを言われてしまう場合があります。開発フェーズが始まる半年後まではコーディングは基的に不要という考え方です。アプリケーションのアーキテクトという役割では少なくともコーディング規約を考えたり、ツールやフレームワークの選定をしたりする必要がありますし、プロジ

    プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して
    katzchang
    katzchang 2010/11/26
  • いつまでStruts1を使い続けるの? - 達人プログラマーを目指して

    営業支援で提案中の案件があるのですが、現状CGI+Perlで作られているコンシューマー向けサイトがあるが、 CGIなので性能が悪い コンテンツの修正が大変なのでMVCできちんと作りたい 実績のあるJavaとStrutsをメインに検討している とのことです。今時多くのコンシューマー系のサイトで、コンテンツの管理を容易にしたいならオープンソースも含めてPHPベースのCMSが星の数ほどあるという事実はおいておくとしても、とにかく、実績重視ということでStrutsということになってしまうのでしょうか?お客様もMVCなど相当技術を勉強されていることは感心なのですが、JavaのMVCフレームワークというとStrutsしか考えないというのは問題ではないのでしょうかね。多くのStrutsベースの既存システムを自社で抱えているなどの理由があるのであれば、それも一つの選択なのかもしれませんが、実績重視とか社内

    いつまでStruts1を使い続けるの? - 達人プログラマーを目指して
    katzchang
    katzchang 2010/11/18
    「大手SIerフレームワークに組み込まれている」これだな。
  • 1