SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
企業で使うSpring

       鈴木雄介
グロースエクスパートナーズ(株)
     JSUG/JJUG/SIProp
  http://www.arclamp.jp/


       2009/6/24
はじめに
• 鈴木雄介
 – ITゕーキテクト
 – 今の主な仕事は、顧客企業側に立って標準化
   の策定/推進を行うこと
 – Spring好き。規約より設定重要
  • ゕノテーション嫌い
 – 今日の目標:難しく言わない
 – つっこみ歓迎
アジェンダ
•   システム開発で大事なこと
•   設計と実装
•   なぜSpringを使うのか
•   Springの使い方
システム開発で大事なこと
• “安く作る”より”安く使う”
 – 保守性の高いゕプリ
• ゕプリの枠より作業の枠
 – 構成管理と自動化
• ベストよりバランス
システム開発で大事なこと
• “安く作る”より”安く使う”
 – 保守費の割合は60-80%程度。最初に作るコ
   ストのうち実装は1/3程度。つまり、実装コ
   ストはゕプリの一生からすると7%-13%程度
 – 時代背景からすると、今後、ますます仕様変
   更は増えている。拡張性は重要なテーマ
 – 保守性の高いゕプリケーションを、どう作る
   のか
参考:保守性
• 保守性とは
 – 解析性:バグの原因を早く見つけたい
   • ソフトウェゕにある欠陥の診断または故障原因の追及、およ
     びソフトウェゕの修正箇所の識別を行なうためのソフトウェ
     ゕ製品の能力のこと。
 – 変更性:修正するときにめんどくない
   • 指定された修正を行なうことができるソフトウェゕ製品の能
     力のこと。修正の実施にはコーデゖング、設計、および仕様
     書の変更を含みます。
 – 安定性:デグレや他影響が少ない
   • ソフトウェゕの修正による、予期せぬ影響を避けるソフト
     ウェゕ製品の能力のこと。
 – 試験性:テストするのが楽
   • 修正したソフトウェゕの妥当性確認ができるソフトウェゕ製
     品の能力のこと。
    JIS X 0129-1 ソフトウェゕ製品の品質-第1部:品質モデルより
システム開発で大事なこと
• ゕプリの枠より仕事の枠
 – 個別のゕプリケーションは最適化されていく
   べき。”平均的”なゕプリケーションは存在し
   ない=標準フレームワークって意味あるの?
  • 意味ないことはないけど、緩めに設計する必要が
    ある
 – 仕事の仕方を合わせた方が効果は高い
  • 構成管理重要。ソースコード、課題
  • 自動化重要
システム開発で大事なこと
• バランス、バランス、バランス
 – すべての利害関係者(未来含む)の調整が重
   要
 – 個別最適と全体最適
 – “判断は遅く”でも”早く決める”
設計と実装
 • コンポーネントの集約は大事
   – ただし、機能とクラスは必ず直交するので矛
     盾が生じやすい。もう、これは運命
          クラスA   クラスC         クラスD   クラスG

同じ機能は、同
じクラスに集約                 機能A

                              クラスE
                        機能B
もし変更があれ
ば、すべての機
能に影響が出
てしまう                    機能C

          クラスB                クラスF   クラスH
設計と実装
• コンポーネントの分離は重要
 – 実装要件の違いで切れる
  • トランザクションの切れ目、ゕーキテクチャの切
    れ目、UIとデータとロジック
 – 分業のための分離と、その統合
  • 互いの作業が、なるべく影響し合わないように、
    コンポーネントに分離する
  • ただし、コンポーネントの統合がビッグバンにな
    らないように注意する
   – ゗ンターフェース定義、カプセル化、責務、ロール
設計と実装
• コンポーネントの適切なデザ゗ンが要
 – ただし、要件分析/概要設計段階で織り込む。
   実装/詳細設計段階でデザ゗ンを変えることは
   難しいし、そんなコストはかけられない
  • 再利用=抽象化は設計段階で検討するべき内容
 – コードこそ矛盾のない「真の設計書」
  • 早くコードにするほど矛盾が分かる。プロトタ゗
    プは設計の仕事
設計と実装
• デザ゗ンパターン
 – “デザ゗ン”パターンは”設計”段階で使うもの
 – 設計方法論は難しい。美しい方法論は、基本
   的にあやしい(象牙の塔)
  • DDDは、特に難しいと思う。相当、ドメ゗ンのビ
    ジネス知識がないと無理。
設計と実装
• 未来への対応
 – 5年後の誰かが悲しまないために
  • 「なんだよ、この設計/実装!ありえん」
 – 今後、拡張性や柔軟性がもっと求められる
  • 小規模は作りなおせばいいじゃんでもOK
 – 可変性分析
  • 拡張の方向性や手段について、きちんと確定して
    おく
なぜSpringを使うのか
• Springはフレームワークのフレームワー
  ク
 – 個別ゕプリのためにフレームワークを構築す
   るためのフレームワーク
 – 開発効率よりもSpringらしい”スタ゗ル”を重
   視
 – さまざまな3rd Partyプロダクトに対応し、中
   立性を重んじる。なるべく個性を削らない
 – EAIやSOAなどに連携可能
なぜSpringを使うのか
• Springを使う上では、
 – オススメのプラクテゖスはあまりないので、
   自分で決めてからやる
   • 実装フレームワークもコンポーネント分割も
 – 設定は確かに複雑になるので担当者を明確に
   する。あと設定フゔ゗ルの分離重要
 – 使いこなすとすごいけど、設定が難しいプロ
   ダクトがある
   • WebFlow、Security
なぜSpringを使うのか
• なぜSeasarを使わないのか
 – Seasarは優秀なWebゕプリフレームワーク
 – 開発の効率化、エンジニゕの能力向上に注力
 – プラクテゖス(実践)や規約を重視
 – 適切な部分には、ぜひ使うべき
Springの使い方
• というわけで、非機能の話を中心に
 – コンポーネント化
  • 外部リソースゕクセスの分離
  • 横断的関心事の分離
 – ロギング
 – Maven2のプロフゔ゗ル機能
外部リソースアクセスの分離
• 例:ログ゗ン処理
 – 1.ログ゗ン情報を受け取る
 – 2.LDAPで認証
 – 3.DBからユーザー情報を獲得
 – 4.ログ゗ン履歴を保存
 – 5.認証認可情報を返却する
• 2,3,4は外部リソースゕクセスなので分離
  するように作る
外部リソースアクセスの分離
• シーケンス図

                                              Login
         LoginBL       LDAP認証      UserDao
                                             Logger
ログイン(ログイン情報)

               認証フラグ:認証(認証情報)




               ユーザー情報:検索(ユーザーID)



               ログ(ユーザー情報)


:ユーザー認証情報
外部リソースアクセスの分離
• メリット
 – テストがしやすい、デバッグもしやすい
 – 個別に実装が遅れても逃げられる。たいてい
   は要件確定が遅れる
横断的関心事の分離
• ゕスペクト指向=見地
• 横断的関心事って?
 – 「メソッドの最初や最後に必ず書く」みたい
   なもの
 – ログ、トランザクション、セキュリテゖ
  • ServletFilterは、AOP的

               ア
               ス
               ペ          クラス
               ク
               ト
横断的関心事の分離
• 実装の考え方
 – 基本はProxyパターンで理解する
                                LoginBlImpl
           <Interface>
                                Implements
             LoginBl
                                  LoginBl




                                              LoginBlImpl
  <Interface>         LoginInterceptor
                                              Implements
     MyBl            implements MyBL
                                                LoginBl
横断的関心事の分離
• SpringのAOPを使う
 – ポ゗ントカット:どこに挟むのか
 – ゕドバ゗ザー:何を挟むのか
• 使いどころ
 – 性能検証
 – ゕクセスログ(内部統制で)
 – 更新日や更新者の自動設定
ロギング
• ロギングはSLF4JとLogbackがオススメ
 – Log4jの作者の新作
• 使い方
 – ログ出力:org.slf4j.Logger;
 – 設定: appenderとlogger
ロギング:APIの使い方
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SampleLogic {
  private static Logger logger
    = LoggerFactory.getLogger(SampleLogic.class);

    public void execute() throws Exception {
      if (logger.isTraceEnabled()) {
        logger.trace("trace level");
      }
      if (logger.isDebugEnabled()) {
        logger.debug("debug level");
      }
      logger.info("info level");
      logger.warn("warn level");
      logger.error("error level");
    }
}
ロギング:設定ファイル
<?xml version="1.0" encoding="UTF-8" ?>
 <configuration debug="true">
  <appender name="STDOUT" class="ch.qos.logback.core.Console
    <Target>System.out</Target>
    <layout class="ch.qos.logback.classic.PatternLayout">
     <Pattern>
      %d{HH:mm:ss.SSS} [%thread] %-5level %logger{10} - %msg
     </Pattern>
    </layout>
  </appender>
  <logger name="org.springframework" level="WARN" />
  <logger name="org.apache" level="WARN" />
  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>
ロギング:マーカー
• マーカー
 – マーカーを付けると、出力先を分けることが
   できる。
 private IMarkerFactory markerFactory;

 @Override               マーカーを指定
 public void logging(User user) {

     logger.info(markerFactory.getMarker("login"),
     “user loged in “ + user.getName());

 }
ロギング:マーカー

<appender name=“LOGIN" class="ch.qos.logback.core.ConsoleApp
 <Target>System.out</Target>
 <layout class="ch.qos.logback.classic.PatternLayout">
   <Pattern> LOGIN %logger{10} - %msg%n </Pattern>
 </layout>
 <filter class="jp.arclamp.jsug.sample.log.MarkerFilter">
  <marker>login</marker>
  <OnMismatch>DENY</OnMismatch>
  <OnMatch>ACCEPT</OnMatch>
 </filter>
</appender>

         フィルターを適用して、出力を制御
ロギング:コンバーター
• コンバート
 – 要素conversionRule
   • 属性conversionWord:キーワード
   • 属性converterClass:出力クラス
• パターンのところで出力が可能
 – %{conversionWord}%
• 使いどころ
 – ログへのログ゗ンユーザー情報出力
ロギング:コンバーター
                                              キーワード
<?xml version="1.0" encoding="UTF-8" ?>       の設定
 <configuration debug="true">
  <conversionRule conversionWord="user"
    converterClass=" jp.arclamp.jsug.sample.user.UserInfoCon
                             コンバータークラスの指定
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleA
  <Target>System.out</Target>
  <layout class="ch.qos.logback.classic.PatternLayout">
   <Pattern>
%d{HH:mm:ss.SSS} [%thread] [%user] %-5level %logger{10} - %m
   </Pattern>
  </layout>
 </appender>                       ここが置換される
 <root level="DEBUG">
  <appender-ref ref="STDOUT" />
 </root>
</configuration>
ロギング:コンバーター
                                             継承してコンバー
package jp.arclamp.jsug.sample.user;         ターを作成

import jp.arclamp.jsug.sample.log.LogConverterTest;
import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.LoggingEvent;

public class UserInfoConverter extends ClassicConverter {
  @Override
  public String convert(LoggingEvent event) {
    return UserInfoHolder.get();
  }
}

         出力する文字列を返却
Maven2のプロファイル機能
• 環境毎に設定フゔ゗ルの切替を実施
 – DB接続設定やログ設定などの切替
 – ローカル、IT、本番…など、プロフゔ゗ルを
   カスタマ゗ズ可能
• コマンドラ゗ン(-P{プロフゔ゗ル名})
 – mvn eclipse:eclipse –Plocal
 – mvn package -Pproduction
Maven2のプロファイル機能
<profiles>          プロファイル名の指定
 <profile>
  <id>local</id>
  <build>
   <resources>                 プロファイルで有効になる
    <resource>                 ディレクトリの指定。
     <directory>src/main/resources/local</directory>
     <includes>
      <include>*.properties</include>
      <include>*.xml</include>
     </includes>
    </resource>
   </resources>
  </build>
</profile>
Maven2のプロファイル機能
• フォルダ側



            他のモノは無視




              クラスパスに通る
サンプルコード
• ブログエントリ

• サンプルコード
ライセンスについて
•   JSUGマスコットゕ゗コン(本スラ゗ド左下)が残されている場合に限り、本作品
    (またそれを元にした派生作品)の複製・頒布・表示・上演を認めます。

•   非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・
    上演を認めます。

•   本作品のラ゗センスを遵守する限り、派生作品を頒布することを許可します。

Mais conteúdo relacionado

Mais procurados

マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021Yusuke Suzuki
 
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJPMicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJPYusuke Suzuki
 
エンタープライズ、アーキテクチャ、アジャイルのこれから
エンタープライズ、アーキテクチャ、アジャイルのこれからエンタープライズ、アーキテクチャ、アジャイルのこれから
エンタープライズ、アーキテクチャ、アジャイルのこれからYusuke Suzuki
 
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナーエンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナーYusuke Suzuki
 
アジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはアジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはYusuke Suzuki
 
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会Yusuke Suzuki
 
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 FallJavaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 FallYusuke Suzuki
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座Yusuke Suzuki
 
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan Yusuke Suzuki
 
なぜソフトウェアアーキテクトが必要なのか - デブサミ2011
なぜソフトウェアアーキテクトが必要なのか - デブサミ2011なぜソフトウェアアーキテクトが必要なのか - デブサミ2011
なぜソフトウェアアーキテクトが必要なのか - デブサミ2011Yusuke Suzuki
 
20130629 KA法ワークショップ@DevLOVE仙台
20130629 KA法ワークショップ@DevLOVE仙台20130629 KA法ワークショップ@DevLOVE仙台
20130629 KA法ワークショップ@DevLOVE仙台chachaki chachaki
 
Javaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのかJavaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのかYusuke Suzuki
 
20140126 KA法ワークショップ@DevLOVElove関西
20140126 KA法ワークショップ@DevLOVElove関西20140126 KA法ワークショップ@DevLOVElove関西
20140126 KA法ワークショップ@DevLOVElove関西chachaki chachaki
 
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423Yusuke Suzuki
 
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~Yusuke Suzuki
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Yusuke Suzuki
 
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏Yusuke Suzuki
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018Yusuke Suzuki
 
Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020Yusuke Suzuki
 
エナジャイル設立によせて
エナジャイル設立によせてエナジャイル設立によせて
エナジャイル設立によせてYusuke Suzuki
 

Mais procurados (20)

マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
 
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJPMicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
 
エンタープライズ、アーキテクチャ、アジャイルのこれから
エンタープライズ、アーキテクチャ、アジャイルのこれからエンタープライズ、アーキテクチャ、アジャイルのこれから
エンタープライズ、アーキテクチャ、アジャイルのこれから
 
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナーエンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
エンタープライズアジャイルでチームが超えるべきこと - エンタープライズアジャイル勉強会 2018年10月セミナー
 
アジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはアジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とは
 
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
エンタープライズアジャイルにおける要求探索の勘所 要求開発アライアンス2018年7月定例会
 
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 FallJavaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
Javaエンジニアのためのアーキテクト講座-JJUG CCC 2014 Fall
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座
 
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
アーキテクチャとアジャイルプロジェクトをまともに進めるための両輪について-DevLOVE関西 #DevKan
 
なぜソフトウェアアーキテクトが必要なのか - デブサミ2011
なぜソフトウェアアーキテクトが必要なのか - デブサミ2011なぜソフトウェアアーキテクトが必要なのか - デブサミ2011
なぜソフトウェアアーキテクトが必要なのか - デブサミ2011
 
20130629 KA法ワークショップ@DevLOVE仙台
20130629 KA法ワークショップ@DevLOVE仙台20130629 KA法ワークショップ@DevLOVE仙台
20130629 KA法ワークショップ@DevLOVE仙台
 
Javaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのかJavaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのか
 
20140126 KA法ワークショップ@DevLOVElove関西
20140126 KA法ワークショップ@DevLOVElove関西20140126 KA法ワークショップ@DevLOVElove関西
20140126 KA法ワークショップ@DevLOVElove関西
 
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
なぜソフトウェアアーキテクトが必要なのか - Devlove 20110423
 
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018
 
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
DX時代に目指すべき品質向上とテスト - @IT ソフトウェア品質向上セミナー 2019夏
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
 
Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020Javaとコミュニティの歩み 2020
Javaとコミュニティの歩み 2020
 
エナジャイル設立によせて
エナジャイル設立によせてエナジャイル設立によせて
エナジャイル設立によせて
 

Destaque

DevLOVE2009 開発以外に大事な4つのこと
DevLOVE2009 開発以外に大事な4つのことDevLOVE2009 開発以外に大事な4つのこと
DevLOVE2009 開発以外に大事な4つのことYusuke Suzuki
 
食と農の再生シンポ0925糸長pp
食と農の再生シンポ0925糸長pp食と農の再生シンポ0925糸長pp
食と農の再生シンポ0925糸長ppy246ra
 
クラウドを超えた先の企業システム像 20091008 JJUG CCC
クラウドを超えた先の企業システム像 20091008 JJUG CCCクラウドを超えた先の企業システム像 20091008 JJUG CCC
クラウドを超えた先の企業システム像 20091008 JJUG CCCYusuke Suzuki
 
10 Things It Architect Should Know
10 Things It Architect Should Know10 Things It Architect Should Know
10 Things It Architect Should KnowYusuke Suzuki
 
要件定義すれば要求が理解できる、なんてことはない
要件定義すれば要求が理解できる、なんてことはない要件定義すれば要求が理解できる、なんてことはない
要件定義すれば要求が理解できる、なんてことはないYusuke Suzuki
 
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」Yusuke Suzuki
 
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010Yusuke Suzuki
 
SPICE MATLABユーザー向け二次電池シミュレーションセミナー資料(05JUN2015)
SPICE MATLABユーザー向け二次電池シミュレーションセミナー資料(05JUN2015)SPICE MATLABユーザー向け二次電池シミュレーションセミナー資料(05JUN2015)
SPICE MATLABユーザー向け二次電池シミュレーションセミナー資料(05JUN2015)Tsuyoshi Horigome
 
XP祭り2014「アジャイルを手放して得られたこと」
XP祭り2014「アジャイルを手放して得られたこと」 XP祭り2014「アジャイルを手放して得られたこと」
XP祭り2014「アジャイルを手放して得られたこと」 Yusuke Suzuki
 
すごい自己紹介
すごい自己紹介すごい自己紹介
すごい自己紹介Hikaru Wada
 
JavaOne 2016総括 #jjug
JavaOne 2016総括 #jjugJavaOne 2016総括 #jjug
JavaOne 2016総括 #jjugYusuke Suzuki
 
ユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナー
ユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナーユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナー
ユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナーYusuke Suzuki
 
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016Yusuke Suzuki
 
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016Yusuke Suzuki
 
ITアーキテクトの思考法
ITアーキテクトの思考法ITアーキテクトの思考法
ITアーキテクトの思考法Yusuke Suzuki
 

Destaque (17)

DevLOVE2009 開発以外に大事な4つのこと
DevLOVE2009 開発以外に大事な4つのことDevLOVE2009 開発以外に大事な4つのこと
DevLOVE2009 開発以外に大事な4つのこと
 
食と農の再生シンポ0925糸長pp
食と農の再生シンポ0925糸長pp食と農の再生シンポ0925糸長pp
食と農の再生シンポ0925糸長pp
 
クラウドを超えた先の企業システム像 20091008 JJUG CCC
クラウドを超えた先の企業システム像 20091008 JJUG CCCクラウドを超えた先の企業システム像 20091008 JJUG CCC
クラウドを超えた先の企業システム像 20091008 JJUG CCC
 
10 Things It Architect Should Know
10 Things It Architect Should Know10 Things It Architect Should Know
10 Things It Architect Should Know
 
要件定義すれば要求が理解できる、なんてことはない
要件定義すれば要求が理解できる、なんてことはない要件定義すれば要求が理解できる、なんてことはない
要件定義すれば要求が理解できる、なんてことはない
 
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
 
自己紹介 糸井重里さんインタビュー用
自己紹介 糸井重里さんインタビュー用自己紹介 糸井重里さんインタビュー用
自己紹介 糸井重里さんインタビュー用
 
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
 
SPICE MATLABユーザー向け二次電池シミュレーションセミナー資料(05JUN2015)
SPICE MATLABユーザー向け二次電池シミュレーションセミナー資料(05JUN2015)SPICE MATLABユーザー向け二次電池シミュレーションセミナー資料(05JUN2015)
SPICE MATLABユーザー向け二次電池シミュレーションセミナー資料(05JUN2015)
 
【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について
【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について
【B-3】 創業122年の企業と顧客価値にコミットした開発を実現する試みと成果について
 
XP祭り2014「アジャイルを手放して得られたこと」
XP祭り2014「アジャイルを手放して得られたこと」 XP祭り2014「アジャイルを手放して得られたこと」
XP祭り2014「アジャイルを手放して得られたこと」
 
すごい自己紹介
すごい自己紹介すごい自己紹介
すごい自己紹介
 
JavaOne 2016総括 #jjug
JavaOne 2016総括 #jjugJavaOne 2016総括 #jjug
JavaOne 2016総括 #jjug
 
ユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナー
ユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナーユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナー
ユーザー企業へのアジャイル導入四苦八苦 - エンタープライズアジャイル勉強会2016年11月セミナー
 
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
 
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
 
ITアーキテクトの思考法
ITアーキテクトの思考法ITアーキテクトの思考法
ITアーキテクトの思考法
 

Semelhante a 企業におけるSpring@日本springユーザー会20090624

scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装Satoshi Nagayasu
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortemtamtam180
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #EShuji Watanabe
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門tak9029
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識shigeya
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門Sho A
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】Tomoharu ASAMI
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413Funato Takashi
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッションYuichi Hasegawa
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説Daisuke Nishino
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeNA
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -歩 柴田
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】Tomoharu ASAMI
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 

Semelhante a 企業におけるSpring@日本springユーザー会20090624 (20)

scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 

Mais de Yusuke Suzuki

アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチアーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチYusuke Suzuki
 
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023Yusuke Suzuki
 
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022Yusuke Suzuki
 
エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020Yusuke Suzuki
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかYusuke Suzuki
 
アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18Yusuke Suzuki
 
ITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについてITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについてYusuke Suzuki
 
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017Yusuke Suzuki
 
クラウド時代のエンジニアについて #sesfukui
クラウド時代のエンジニアについて #sesfukuiクラウド時代のエンジニアについて #sesfukui
クラウド時代のエンジニアについて #sesfukuiYusuke Suzuki
 
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
JavaとOSSとAndroid - JavaAPI訴訟問題を考えるJavaとOSSとAndroid - JavaAPI訴訟問題を考える
JavaとOSSとAndroid - JavaAPI訴訟問題を考えるYusuke Suzuki
 
ウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_wsウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_wsYusuke Suzuki
 
アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016
アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016
アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016Yusuke Suzuki
 
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016Yusuke Suzuki
 

Mais de Yusuke Suzuki (13)

アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチアーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
アーキテクチャの進化から学ぶ、プラットフォームエンジニアリングへのアプローチ
 
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
見えない壁を越えよう!アジャイルやマイクロサービスを阻む「今までのやり方」 - デブサミ夏2023
 
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
サービスブループリントによるシステム設計手法の紹介 - XP祭り2022
 
エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020エンタプライズ領域のアジャイル開発の課題 - FIT2020
エンタプライズ領域のアジャイル開発の課題 - FIT2020
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
 
アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18アーキテクチャのレビューについて - JaSST Review '18
アーキテクチャのレビューについて - JaSST Review '18
 
ITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについてITトレンドに見る日本のエンタープライズITについて
ITトレンドに見る日本のエンタープライズITについて
 
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
 
クラウド時代のエンジニアについて #sesfukui
クラウド時代のエンジニアについて #sesfukuiクラウド時代のエンジニアについて #sesfukui
クラウド時代のエンジニアについて #sesfukui
 
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
JavaとOSSとAndroid - JavaAPI訴訟問題を考えるJavaとOSSとAndroid - JavaAPI訴訟問題を考える
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
 
ウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_wsウォーターフォールとアジャイルを考える #ita_ws
ウォーターフォールとアジャイルを考える #ita_ws
 
アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016
アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016
アジャイルと言わないエンタープライズアジャイル導入 - Agile Japan 2016
 
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
 

Último

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Último (10)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

企業におけるSpring@日本springユーザー会20090624

  • 1. 企業で使うSpring 鈴木雄介 グロースエクスパートナーズ(株) JSUG/JJUG/SIProp http://www.arclamp.jp/ 2009/6/24
  • 2. はじめに • 鈴木雄介 – ITゕーキテクト – 今の主な仕事は、顧客企業側に立って標準化 の策定/推進を行うこと – Spring好き。規約より設定重要 • ゕノテーション嫌い – 今日の目標:難しく言わない – つっこみ歓迎
  • 3. アジェンダ • システム開発で大事なこと • 設計と実装 • なぜSpringを使うのか • Springの使い方
  • 4. システム開発で大事なこと • “安く作る”より”安く使う” – 保守性の高いゕプリ • ゕプリの枠より作業の枠 – 構成管理と自動化 • ベストよりバランス
  • 5. システム開発で大事なこと • “安く作る”より”安く使う” – 保守費の割合は60-80%程度。最初に作るコ ストのうち実装は1/3程度。つまり、実装コ ストはゕプリの一生からすると7%-13%程度 – 時代背景からすると、今後、ますます仕様変 更は増えている。拡張性は重要なテーマ – 保守性の高いゕプリケーションを、どう作る のか
  • 6. 参考:保守性 • 保守性とは – 解析性:バグの原因を早く見つけたい • ソフトウェゕにある欠陥の診断または故障原因の追及、およ びソフトウェゕの修正箇所の識別を行なうためのソフトウェ ゕ製品の能力のこと。 – 変更性:修正するときにめんどくない • 指定された修正を行なうことができるソフトウェゕ製品の能 力のこと。修正の実施にはコーデゖング、設計、および仕様 書の変更を含みます。 – 安定性:デグレや他影響が少ない • ソフトウェゕの修正による、予期せぬ影響を避けるソフト ウェゕ製品の能力のこと。 – 試験性:テストするのが楽 • 修正したソフトウェゕの妥当性確認ができるソフトウェゕ製 品の能力のこと。 JIS X 0129-1 ソフトウェゕ製品の品質-第1部:品質モデルより
  • 7. システム開発で大事なこと • ゕプリの枠より仕事の枠 – 個別のゕプリケーションは最適化されていく べき。”平均的”なゕプリケーションは存在し ない=標準フレームワークって意味あるの? • 意味ないことはないけど、緩めに設計する必要が ある – 仕事の仕方を合わせた方が効果は高い • 構成管理重要。ソースコード、課題 • 自動化重要
  • 8. システム開発で大事なこと • バランス、バランス、バランス – すべての利害関係者(未来含む)の調整が重 要 – 個別最適と全体最適 – “判断は遅く”でも”早く決める”
  • 9. 設計と実装 • コンポーネントの集約は大事 – ただし、機能とクラスは必ず直交するので矛 盾が生じやすい。もう、これは運命 クラスA クラスC クラスD クラスG 同じ機能は、同 じクラスに集約 機能A クラスE 機能B もし変更があれ ば、すべての機 能に影響が出 てしまう 機能C クラスB クラスF クラスH
  • 10. 設計と実装 • コンポーネントの分離は重要 – 実装要件の違いで切れる • トランザクションの切れ目、ゕーキテクチャの切 れ目、UIとデータとロジック – 分業のための分離と、その統合 • 互いの作業が、なるべく影響し合わないように、 コンポーネントに分離する • ただし、コンポーネントの統合がビッグバンにな らないように注意する – ゗ンターフェース定義、カプセル化、責務、ロール
  • 11. 設計と実装 • コンポーネントの適切なデザ゗ンが要 – ただし、要件分析/概要設計段階で織り込む。 実装/詳細設計段階でデザ゗ンを変えることは 難しいし、そんなコストはかけられない • 再利用=抽象化は設計段階で検討するべき内容 – コードこそ矛盾のない「真の設計書」 • 早くコードにするほど矛盾が分かる。プロトタ゗ プは設計の仕事
  • 12. 設計と実装 • デザ゗ンパターン – “デザ゗ン”パターンは”設計”段階で使うもの – 設計方法論は難しい。美しい方法論は、基本 的にあやしい(象牙の塔) • DDDは、特に難しいと思う。相当、ドメ゗ンのビ ジネス知識がないと無理。
  • 13. 設計と実装 • 未来への対応 – 5年後の誰かが悲しまないために • 「なんだよ、この設計/実装!ありえん」 – 今後、拡張性や柔軟性がもっと求められる • 小規模は作りなおせばいいじゃんでもOK – 可変性分析 • 拡張の方向性や手段について、きちんと確定して おく
  • 14. なぜSpringを使うのか • Springはフレームワークのフレームワー ク – 個別ゕプリのためにフレームワークを構築す るためのフレームワーク – 開発効率よりもSpringらしい”スタ゗ル”を重 視 – さまざまな3rd Partyプロダクトに対応し、中 立性を重んじる。なるべく個性を削らない – EAIやSOAなどに連携可能
  • 15. なぜSpringを使うのか • Springを使う上では、 – オススメのプラクテゖスはあまりないので、 自分で決めてからやる • 実装フレームワークもコンポーネント分割も – 設定は確かに複雑になるので担当者を明確に する。あと設定フゔ゗ルの分離重要 – 使いこなすとすごいけど、設定が難しいプロ ダクトがある • WebFlow、Security
  • 16. なぜSpringを使うのか • なぜSeasarを使わないのか – Seasarは優秀なWebゕプリフレームワーク – 開発の効率化、エンジニゕの能力向上に注力 – プラクテゖス(実践)や規約を重視 – 適切な部分には、ぜひ使うべき
  • 17. Springの使い方 • というわけで、非機能の話を中心に – コンポーネント化 • 外部リソースゕクセスの分離 • 横断的関心事の分離 – ロギング – Maven2のプロフゔ゗ル機能
  • 18. 外部リソースアクセスの分離 • 例:ログ゗ン処理 – 1.ログ゗ン情報を受け取る – 2.LDAPで認証 – 3.DBからユーザー情報を獲得 – 4.ログ゗ン履歴を保存 – 5.認証認可情報を返却する • 2,3,4は外部リソースゕクセスなので分離 するように作る
  • 19. 外部リソースアクセスの分離 • シーケンス図 Login LoginBL LDAP認証 UserDao Logger ログイン(ログイン情報) 認証フラグ:認証(認証情報) ユーザー情報:検索(ユーザーID) ログ(ユーザー情報) :ユーザー認証情報
  • 20. 外部リソースアクセスの分離 • メリット – テストがしやすい、デバッグもしやすい – 個別に実装が遅れても逃げられる。たいてい は要件確定が遅れる
  • 21. 横断的関心事の分離 • ゕスペクト指向=見地 • 横断的関心事って? – 「メソッドの最初や最後に必ず書く」みたい なもの – ログ、トランザクション、セキュリテゖ • ServletFilterは、AOP的 ア ス ペ クラス ク ト
  • 22. 横断的関心事の分離 • 実装の考え方 – 基本はProxyパターンで理解する LoginBlImpl <Interface> Implements LoginBl LoginBl LoginBlImpl <Interface> LoginInterceptor Implements MyBl implements MyBL LoginBl
  • 23. 横断的関心事の分離 • SpringのAOPを使う – ポ゗ントカット:どこに挟むのか – ゕドバ゗ザー:何を挟むのか • 使いどころ – 性能検証 – ゕクセスログ(内部統制で) – 更新日や更新者の自動設定
  • 24. ロギング • ロギングはSLF4JとLogbackがオススメ – Log4jの作者の新作 • 使い方 – ログ出力:org.slf4j.Logger; – 設定: appenderとlogger
  • 25. ロギング:APIの使い方 import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SampleLogic { private static Logger logger = LoggerFactory.getLogger(SampleLogic.class); public void execute() throws Exception { if (logger.isTraceEnabled()) { logger.trace("trace level"); } if (logger.isDebugEnabled()) { logger.debug("debug level"); } logger.info("info level"); logger.warn("warn level"); logger.error("error level"); } }
  • 26. ロギング:設定ファイル <?xml version="1.0" encoding="UTF-8" ?> <configuration debug="true"> <appender name="STDOUT" class="ch.qos.logback.core.Console <Target>System.out</Target> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern> %d{HH:mm:ss.SSS} [%thread] %-5level %logger{10} - %msg </Pattern> </layout> </appender> <logger name="org.springframework" level="WARN" /> <logger name="org.apache" level="WARN" /> <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration>
  • 27. ロギング:マーカー • マーカー – マーカーを付けると、出力先を分けることが できる。 private IMarkerFactory markerFactory; @Override マーカーを指定 public void logging(User user) { logger.info(markerFactory.getMarker("login"), “user loged in “ + user.getName()); }
  • 28. ロギング:マーカー <appender name=“LOGIN" class="ch.qos.logback.core.ConsoleApp <Target>System.out</Target> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern> LOGIN %logger{10} - %msg%n </Pattern> </layout> <filter class="jp.arclamp.jsug.sample.log.MarkerFilter"> <marker>login</marker> <OnMismatch>DENY</OnMismatch> <OnMatch>ACCEPT</OnMatch> </filter> </appender> フィルターを適用して、出力を制御
  • 29. ロギング:コンバーター • コンバート – 要素conversionRule • 属性conversionWord:キーワード • 属性converterClass:出力クラス • パターンのところで出力が可能 – %{conversionWord}% • 使いどころ – ログへのログ゗ンユーザー情報出力
  • 30. ロギング:コンバーター キーワード <?xml version="1.0" encoding="UTF-8" ?> の設定 <configuration debug="true"> <conversionRule conversionWord="user" converterClass=" jp.arclamp.jsug.sample.user.UserInfoCon コンバータークラスの指定 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleA <Target>System.out</Target> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern> %d{HH:mm:ss.SSS} [%thread] [%user] %-5level %logger{10} - %m </Pattern> </layout> </appender> ここが置換される <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration>
  • 31. ロギング:コンバーター 継承してコンバー package jp.arclamp.jsug.sample.user; ターを作成 import jp.arclamp.jsug.sample.log.LogConverterTest; import ch.qos.logback.classic.pattern.ClassicConverter; import ch.qos.logback.classic.spi.LoggingEvent; public class UserInfoConverter extends ClassicConverter { @Override public String convert(LoggingEvent event) { return UserInfoHolder.get(); } } 出力する文字列を返却
  • 32. Maven2のプロファイル機能 • 環境毎に設定フゔ゗ルの切替を実施 – DB接続設定やログ設定などの切替 – ローカル、IT、本番…など、プロフゔ゗ルを カスタマ゗ズ可能 • コマンドラ゗ン(-P{プロフゔ゗ル名}) – mvn eclipse:eclipse –Plocal – mvn package -Pproduction
  • 33. Maven2のプロファイル機能 <profiles> プロファイル名の指定 <profile> <id>local</id> <build> <resources> プロファイルで有効になる <resource> ディレクトリの指定。 <directory>src/main/resources/local</directory> <includes> <include>*.properties</include> <include>*.xml</include> </includes> </resource> </resources> </build> </profile>
  • 34. Maven2のプロファイル機能 • フォルダ側 他のモノは無視 クラスパスに通る
  • 36. ライセンスについて • JSUGマスコットゕ゗コン(本スラ゗ド左下)が残されている場合に限り、本作品 (またそれを元にした派生作品)の複製・頒布・表示・上演を認めます。 • 非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・ 上演を認めます。 • 本作品のラ゗センスを遵守する限り、派生作品を頒布することを許可します。