SlideShare a Scribd company logo
1 of 73
Download to read offline
やわらかマッドサイエンティスツのプログラミング入門

3つのダイアログから見た
プログラミング
第2回 ジャクソン構造図の巻



            USP友の会会員 鳥海秀一
自己紹介

名前:鳥海秀一
出身地:北海道
年齢:47歳
初めて買ったコンピュータ:PC-1245
職業:SIerのBPとして、金融機関で働いてます
趣味:プログラミング言語の習得
USP友の会との関わり: 「アジャイルジャパン
2009」の當仲講演から
本日の予定

1.   USP友の会の紹介(10分)
2.   アイスブレイク(一言自己紹介)(30分)
3.   前回の振り返り(15分)
4.   講義1(状態遷移図とその限界)(40分)
5.   講義2(ジャクソン構造図の紹介) (30分)
6.   演習(1時間ぐらい)
7.   まとめ(15分)
自己紹介をお願いします

下記の内容を含めてください

① お名前とご出身と現在お住まいの場所
② ご職業と今やっていること
③ この勉強会に参加しようと思ったわけ

1分間でお願いします。
前回の振り返り

1. プログラム入門でダイアログを
   取り上げる理由について
2. 状態遷移図の振り返り
プログラム入門でダイアログを取り上げる理由

プログラムの作成には事前の設計が大切

• 設計は二つのプロセスから構成される
 – 発散
 – 収束

• 発散には概要把握と視点の切り替えが必要

• ダイアログは上記二つを提供する
3つのダイアログが提供する3つの視点

• 状態遷移図
   状態遷移(計算モデル)

• ジャクソン構造図
    データの構造

• データフローダイアグラム
   データの流れ
前回の勉強会の最後

- フォーマルな書き方
   ・次回へ


    想定以上の良い振り!!


   より一層力をいれねば!!
ジャクソン構造図の解説

前後2回やります。

• 前半
 状態遷移図の問題からジャクソン構造図へ

• 後半
 ジャクソン構造図の可能性と限界
状態遷移図の振り返り

前回の資料を参照
http://www.slideshare.net/ryuichiueda/us
p-9642558
状態遷移図の問題



素直にプログラムに変換すると
可読性の低いプログラムとなる
状態遷移図からプログラムを作成する方法


• P.J.プローガーの評価
 これで、どうしてボトムアップ手法の評判がよくない
 かが分かったと思う。この設計手法では、冗長なプ
 ログラム・カウンタ、未構造化プログラム、GOTO文
 の使用を勧めていることになるからである。これで
 は不評を買うのも無理はない。

            『プログラミングの壺Ⅰ』より
例題:整数判定の状態遷移図

                0~9


                             0~9

                       0~9         EOS
          +|-




開始
     S0         S1           S2          S3




                             その他
                      その他

                その他
                                         S4
例題を素直にプログラムにすると
#!/usr/bin/perl                      s1:                             s3:
                                     $c = shift @c;                  exit 0;
@c = split //, shift;                if ('0' le $c && $c le '9') {
                                        goto s2;                     s4:
s0:                                  } else {                        exit 1;
$c = shift @c;                          goto s4;
if ($c eq '+' || $c eq '-') {        }
   goto s1;
} elsif ('0' le $c && $c le '9') {   s2:
   goto s2;                          $c = shift @c;
} else {                             if ('0' le $c && $c le '9') {
   goto s4;                             goto s2;
}                                    } elsif ($c eq '') {
                                        goto s3;
                                     } else {
                                        goto s4;
                                     }
可読性が低い理由




  やっぱり…
gotoが問題?
gotoを取り除く方法

2種類あります。

1. 系統的な方法
2. 発見的な方法
gotoを取り除く系統的な方法

1. 状態変数(フラグ)を導入する。
2. 状態変数を初期化する。
3. 処理全体を無限ループで囲う
4. goto先で行われる処理を状態変数に
   対する判定文で囲う
5. goto文を状態変数への代入文に置き
   換える
実際にやってみると
#!/usr/bin/perl                          if ($s == 1) {                         if ($s == 3) {
                                               $c = shift @c;                         exit 0;
@c = split //, shift;                          if ('0' le $c && $c le '9') {       }
                                                  $s = 2;                          if ($s == 4) {
                                               } else {
$s = 0;                                                                               exit 1;
                                                  $s = 4;
while () {                                                                         }
                                               }
if ($s == 0) {                              }                                  }
     $c = shift @c;                         if ($s == 2) {
     if ($c eq '+' || $c eq '-') {             $c = shift @c;
        $s = 1;                                if ('0' le $c && $c le '9') {
     } elsif ('0' le $c && $c le '9'){            $s = 2;
        $s = 2;                                } elsif ($c eq '') {
     } else {                                     $s = 3;
        $s = 4;                                } else {
     }                                            $s = 4;
                                               }
   }
                                            }
系統的な方法の問題点




可読性が全く向上しない
実は系統的な方法は…

構造化定理が採用した方法です。
構造化定理とは…

任意のgotoを使用したプログラムは
それと同じ結果を計算するような
連接構文、条件構文、反復構文という
3種類の基本構文と、代入文および補助的な
変数に関するテストだけで構成した
プログラムに系統的に変形できることを
証明した定理。
1966年にG.JacopiniとC.Bohmが発表。
構造化定理に対する識者の評価

• E.W. ダイクストラ
 機械的にgoto文のないものに変換することは推奨
 できない。
     『Go To Statement Considered Harmful』より

• D.E.クヌース
 実用的な見地からは、この定理は意味を持たない。
           『文芸的プログラミング』より
全くの個人的見解ですが…

プログラマの視点から評価すると構造化定理とは


  構造化プログラミングの議論に
  混乱をもたらした無意味な定理

              といえると思います。
gotoを取り除く発見的な方法の方針

1.       全体的に上から下に処理が流れるように
         順番を整理する。
2.       上向きのgoto文について反復構文を使っ
         て同じ処理を実現できないか検討する。
3.       下向きのgoto文について以下を検討する。
     –    ジャンプ先の処理で置き換えられないか。
     –    条件構文を使って同じ処理を実現できないか。
4.       その他いろいろ考えてみる。
実際にやってみると
#!/usr/bin/perl                  while ('0' le $c && $c le '9') {
                                   $c = shift @c;
@c = split //, shift;            }

$c = shift @c;                   if ($c eq '') {
if ($c eq '+' || $c eq '-') {       exit 0;
   $c = shift @c;                } else {
}                                   exit 1;
                                 }
if ('0' le $c && $c le '9') {
   $c = shift @c;
} else {
   exit 1;
}                                    読みやすいと思いますがどうですか?
ここで問題

 なぜ今回のプログラムは
  前回のプログラムより
   読みやすいのか

  可読性とはなにか?

人間とはどういう生き物なのか?
人間はどういう生き物か?

情報の見地からは…

人間は五感を通じて情報を収集する
生き物
五感とは

•   視覚   眼で感じるもの
•   聴覚   耳で感じるもの
•   嗅覚   鼻で感じるもの
•   味覚   舌で感じるもの
•   触覚   皮膚で感じるもの

情報収集の際に一番よく使うのは?
視覚で感じるもの

• 光の明るさ
• 光の色
• 光の位置

最も頼りにしているのは?
人間はどういう生き物か?

光の位置から情報を収集するのを
得意とする生き物




          ※注意 鳥海仮説
位置を利用した情報の表現例(1)

1.   表
2.   グラフ
3.   楽譜
4.   アラビア数字
5.   ダイアグラム
位置を利用した情報の表現例(2)
位置を利用した表現例(3)

実は…

       構造化プログラムも
       それに該当します。
E.W.ダイクストラが書いていること

プログラムのテキストを通じてその計算を
(知的に)制御するのが私達の義務である
と認めるならば、私達は、謙虚になって、
“計算における進行”が“プログラムのテキ
ストにおける進行”に直接的に写像するこ
とを保証する最も系統的な制御の機構だ
けを用いるべきなのです。
         『構造化プログラム』より
gotoやフラグを使うと可読性が低くなる理由


何が書かれているかだけでなく、それがど
こに書かれているかからも人間は情報を
吸収する。
位置情報を処理内容を表現するのに活用
するとプログラムは可読性が高くなる。
gotoやフラグを使用すると位置情報が利
用できなくなるため可読性が低くなる。
可読性の高いプログラムを作成するには



 ジャクソン構造図を利用すると
  それがわりと楽にできます
ここで休憩です
ジャクソン構造図とは

データの構造に注目してプログラムを
作成する技法であるJSP法の中で
データの構造を記述するために使う
ダイアグラム
注目するのは入力データか出力データか?


答え
より複雑な方に注目する。
入出力データともに複雑な場合は?

答え
1. 両者が似ている場合
   入出力のデータ構造を足し合わせる。

2. 両者が似ていない場合
   単純な構造を持つ中間データを設け、
   プログラムを2つに分解する。
分割の方法


         複雑な              複雑な
        入力データ    処理      出力データ




 複雑な              単純な             複雑な
入力データ
         処理1     中間データ
                          処理2    出力データ
ジャクソン構造図は

次の3つの基本構造でデータを記述する
• 連接
• 選択
• 反復
ジャクソン構造図による連接の表現


       A


  B    C    D

  Aは、BとCとDからなる
ジャクソン構造図の連接の例




    名前           年月日



姓        名   年   月     日
ジャクソン構造図による選択の表現


       A


  B    C    D

  Aは、BかCかDである
ジャクソン構造図による選択の表現(補足1)



          A


    B     C    -

Aは、BかCか存在しないかである
ジャクソン構造図による選択の表現(補足2)

             (省略形)

     A         A


 B       -     B

 Aは、Bか存在しないかである
ジャクソン構造図の選択の例




    人            年金


            国民   厚生   共済
男       女   年金   年金   年金
ジャクソン構造図による反復の表現


       A

           *

       B

  Aは、複数のBからなる
ジャクソン構造図の反復の例




         テキスト
プロジェクト
         ファイル


     *          *
プロジェクト    行
 メンバー
ジャクソン構造図の注意点(その1)

1つの頂点から分岐する枝の先の構造は
連接、選択、反復のいずれか一つに限る


      資料                   資料

           *
                           資料
表表紙   本文       裏表紙   表表紙   本体
                                    裏表紙

                                *

 ※ 理由はわかりません               本文
ジャクソン構造図の注意点(その2)

反復の記法は0個以上任意の個数という
意味
(例)Aが1個以上のBからなる場合の記法
           A

       B       A本体
                    *


                B
余談:ER図を利用しても同じことができます

IDEF1Xでの例
     連接             選択       反復

     A              A        A
 1          1   1        1


 B        C     B        C   B
ジャクソン構造図による整数表現

                               整数



                符号                                     絶対値



        ○                  ○
    明示符号             暗示符号               1文字目                          2文字目
                                         数字                          以降数字群



    ○           ○                   ○          ○       ○                   *
+           -         なし       0         …         9                  数字



                                                                 ○         ○       ○
                                                             0         …       9
ジャクソン構造図による整数表現(省略形)

             整数



    符号              絶対値


         ○
             1文字目          2文字目
   + or -     数字          以降数字群



                              *
             0~9          0~9



                          ※注意 鳥海アレンジ
ジャクソン構造図をプログラムに変換する方法

1.   連接は連接文に置き換える。
2.   選択は選択文に置き換える。
3.   反復は反復文に置き換える。
4.   処理を適宜追加する。
実際にやってみると
#!/usr/bin/perl                  while ('0' le $c && $c le '9') {
                                   $c = shift @c;
@c = split //, shift;            }

$c = shift @c;                   if ($c eq '') {
if ($c eq '+' || $c eq '-') {       exit 0;
   $c = shift @c;                } else {
}                                   exit 1;
                                 }
if ('0' le $c && $c le '9') {
   $c = shift @c;
} else {
   exit 1;
}                                        先ほどと同じプログラムになります
結論



ジャクソン構造図を利用すると
 可読性の高いプログラムが
  わりと楽に作成できます
演習問題1

食事のジャクソン構造図を描け。ここで食事は次のような案
内により定義されている。

食事を楽しんでいただけることを期待します。前菜は好きなも
のを食べて下さい。次に3種類のスープからうまいものを選び、
ロールパンとバター、それに冷菜は幾皿でもおとり下さい。食
事の終わりには、紅茶かコーヒーがあります。なお、前菜に
キャビアをお選びになった方は、残念ながら高価なものです
ので、キャビアのスープは召し上がらないようにお願い致しま
す。
   『構造的プログラム設計の原理』P.43 演習問題2.6(b)より
ここで休憩です
演習問題1解答例

                                                                          食事




                               前菜+                                                                   メイン                  食後の
                               スープ                                                                  ディッシュ                 飲み物




            ○                                               ○                                                             ○      ○
         前菜                                              前菜                                複数の      複数の       複数の    紅茶       コーヒー
       キャビア                                            非キャビア                                冷菜       パン       バター
        コース                                             コース




                                                                                                *         *      *
前菜              スープ                      前菜                              スープ               冷菜        パン       バター




              ○        ○        ○        ○        ○        ○         ○        ○        ○
キャビア     キャビア     キャビア     キャビア     キャビア                        キャビアの    キャビア     キャビア
          以外の      以外の      以外の      以外の      …       キャビア
                                                       以外の       スープ      以外の      以外の
         スープ1     スープ2      前菜1      前菜2               前菜n               スープ1     スープ2
演習問題2

浮動小数点数のジャクソン構造図を描け。ここ
で浮動小数点数は次の状態遷移図により定義
されている。
演習問題2(資料1)


                0~9                    E|e                    0~9
                            0~9        0~9                                0~9

          +|-         0~9         ・          E|e        +|-         0~9

開始
     S0         S1          S2         S4          S5         S6          S7



                                                                          EOS
                 ・                           EOS
           ・                          0~9
                            S3               EOS              OK
演習問題2(ヒント)



       浮動
      小数点数



仮数部          指数部
ここで休憩です
演習問題2解答例

                                                                             浮動
                                                                            小数点数




                             仮数部                                                                                   指数部



                                                                                                                          ○
 符号                                                           絶対値                                                  省略可能
                                                                                                                    指数部


         ○                              ○                                         ○
+ or -                           整数部付                                        小数部のみ                        指数文字                   指数
                                  絶対値                                         絶対値




                    整数部                           小数部                         小数部                         E or e     符号                     整数部



                                                         ○                                                                   ○
             1文字目          2文字目                   省略可能                小数点                 小数                        + or -        1文字目             2文字目
              数字          以降数字群                    小数部                                                                             数字             以降数字群


                                 *                                                                                                                       *
             0~9           0~9              小数点              小数        ・           1文字目         2文字目                                  0~9          0~9
                                                                                    数字         以降数字群


                                                                  *                                   *
                                             ・           0~9                       0~9          0~9
まとめ(その1)

1. 状態遷移図を素直にプログラムに変
   換すると可読性の低いプログラムにな
   りやすい
2. 構造化プログラムとは位置に情報をも
   たせることで可読性を高めようとする
   プログラミングスタイル(でもある)
まとめ(その2)

3. ジャクソン構造図をもとにプログラムを
   作成すると可読性の高いプログラムに
   なりやすい
4. 状態遷移図から作成したプログラムを
   整理するとジャクソン構造図から作成
   したプログラムに近づいていく
補足 チョムスキーの言語階層

言語階層       機械         文法          備考


タイプ0   チューリングマシン    句構造文法


タイプ1   線形有界オートマトン   文脈依存文法


       プッシュダウンオート
タイプ2    状態遷移図と等価    文脈自由文法   プログラミング言語の階層
                      ジャクソン構造図と等価
       マトン


タイプ3   有限オートマトン     正規文法
まとめ(その3)

5. 状態遷移図とジャクソン構造図は基本
   的に同じものであり相性が良い
6. 両者を同時に使うとことでプログラム
   作成はさらに容易になる
家に帰ったらやってみよう

1. 身の回りのもので位置を利用して情
   報を表現しているものを探してみよう
2. 浮動小数点数のジャクソン構造図をプ
   ログラムに変換してみよう
3. 浮動小数点数の状態遷移図からgoto
   プログラムを書いたのち、発見的手法
   でgotoを取り除いてみよう
参考文献

• M.A.ジャクソン(1985/02) 『構造的プログラム設計の原理』 (日本コン
  ピュータ協会)
• 若林糧(2000/03) 『C言語プログラミング演習』 (日経BP社)
• 飯泉 純子、大槻 繁(2011/08) 『ずっと受けたかったソフトウェア設計の授
  業』 (翔泳社)
• E.W.ダイクストラ、C.A.R.ホーア、O.J.ダール(1975/05) 『構造化プログラミン
  グ』 (サイエンス社)
• ドナルド・E. クヌース(1994/03) 『文芸的プログラミング』 (アスキー出版局)
• 野口健一郎(1990/05) 『ソフトウェアの論理的設計法』 (共立出版)
• P.J. プローガ(1995/09) 『プログラミングの壺〈1〉ソフトウェア設計編』 (共立
  出版)
• 玉井哲雄(2004/03) 『ソフトウェア工学の基礎』 (岩波書店)
• 真野正(2003/03 ) 『実践的データモデリング入門』 (翔泳社)
• きだあきら(1995/05) 「特集 Cプログラム設計技法」 『C MAGAZIN 1993
  MAY Vol.5 No.5』 (ソフトバンク )
ご清聴ありがとうございました




次回へ続きます。

More Related Content

What's hot

ビジネスマナー研修 マナーファイト
ビジネスマナー研修 マナーファイトビジネスマナー研修 マナーファイト
ビジネスマナー研修 マナーファイトJun Chiba
 
協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)
協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)
協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)西岡 賢一郎
 
論文紹介:Grad-CAM: Visual explanations from deep networks via gradient-based loca...
論文紹介:Grad-CAM: Visual explanations from deep networks via gradient-based loca...論文紹介:Grad-CAM: Visual explanations from deep networks via gradient-based loca...
論文紹介:Grad-CAM: Visual explanations from deep networks via gradient-based loca...Kazuki Adachi
 
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発Takafumi ONAKA
 
モンテカルロサンプリング
モンテカルロサンプリングモンテカルロサンプリング
モンテカルロサンプリングKosei ABE
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language ModelsDeep Learning JP
 
Deep Recurrent Q-Learning(DRQN) for Partially Observable MDPs
Deep Recurrent Q-Learning(DRQN) for Partially Observable MDPsDeep Recurrent Q-Learning(DRQN) for Partially Observable MDPs
Deep Recurrent Q-Learning(DRQN) for Partially Observable MDPsHakky St
 
スクラムマスター3ヶ月生がチームの自己組織化に挑戦して
スクラムマスター3ヶ月生がチームの自己組織化に挑戦してスクラムマスター3ヶ月生がチームの自己組織化に挑戦して
スクラムマスター3ヶ月生がチームの自己組織化に挑戦してKouki Kawagoi
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験克海 納谷
 
全脳アーキテクチャ若手の会 強化学習
全脳アーキテクチャ若手の会 強化学習全脳アーキテクチャ若手の会 強化学習
全脳アーキテクチャ若手の会 強化学習kwp_george
 
ふつうの受託開発チームのつくりかた
ふつうの受託開発チームのつくりかたふつうの受託開発チームのつくりかた
ふつうの受託開発チームのつくりかたYoshitaka Kawashima
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)Satoshi Hara
 
アジャイル開発の中の設計
アジャイル開発の中の設計アジャイル開発の中の設計
アジャイル開発の中の設計Takuya Okamoto
 
[DL輪読会]Hindsight Experience Replay
[DL輪読会]Hindsight Experience Replay[DL輪読会]Hindsight Experience Replay
[DL輪読会]Hindsight Experience ReplayDeep Learning JP
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話Yoshitaka Kawashima
 
クラウドでも非機能要求グレードは必要だよね
クラウドでも非機能要求グレードは必要だよねクラウドでも非機能要求グレードは必要だよね
クラウドでも非機能要求グレードは必要だよねYoshioSawada
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとはTakuya Akiba
 
リサーチクエスチョンの設定
リサーチクエスチョンの設定リサーチクエスチョンの設定
リサーチクエスチョンの設定ssuser54e956
 

What's hot (20)

C++の黒魔術
C++の黒魔術C++の黒魔術
C++の黒魔術
 
ビジネスマナー研修 マナーファイト
ビジネスマナー研修 マナーファイトビジネスマナー研修 マナーファイト
ビジネスマナー研修 マナーファイト
 
協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)
協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)
協力ゲーム理論でXAI (説明可能なAI) を目指すSHAP (Shapley Additive exPlanation)
 
論文紹介:Grad-CAM: Visual explanations from deep networks via gradient-based loca...
論文紹介:Grad-CAM: Visual explanations from deep networks via gradient-based loca...論文紹介:Grad-CAM: Visual explanations from deep networks via gradient-based loca...
論文紹介:Grad-CAM: Visual explanations from deep networks via gradient-based loca...
 
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発
 
モンテカルロサンプリング
モンテカルロサンプリングモンテカルロサンプリング
モンテカルロサンプリング
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
Deep Recurrent Q-Learning(DRQN) for Partially Observable MDPs
Deep Recurrent Q-Learning(DRQN) for Partially Observable MDPsDeep Recurrent Q-Learning(DRQN) for Partially Observable MDPs
Deep Recurrent Q-Learning(DRQN) for Partially Observable MDPs
 
スクラムマスター3ヶ月生がチームの自己組織化に挑戦して
スクラムマスター3ヶ月生がチームの自己組織化に挑戦してスクラムマスター3ヶ月生がチームの自己組織化に挑戦して
スクラムマスター3ヶ月生がチームの自己組織化に挑戦して
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験
 
全脳アーキテクチャ若手の会 強化学習
全脳アーキテクチャ若手の会 強化学習全脳アーキテクチャ若手の会 強化学習
全脳アーキテクチャ若手の会 強化学習
 
ふつうの受託開発チームのつくりかた
ふつうの受託開発チームのつくりかたふつうの受託開発チームのつくりかた
ふつうの受託開発チームのつくりかた
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
 
アジャイル開発の中の設計
アジャイル開発の中の設計アジャイル開発の中の設計
アジャイル開発の中の設計
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
[DL輪読会]Hindsight Experience Replay
[DL輪読会]Hindsight Experience Replay[DL輪読会]Hindsight Experience Replay
[DL輪読会]Hindsight Experience Replay
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
クラウドでも非機能要求グレードは必要だよね
クラウドでも非機能要求グレードは必要だよねクラウドでも非機能要求グレードは必要だよね
クラウドでも非機能要求グレードは必要だよね
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
リサーチクエスチョンの設定
リサーチクエスチョンの設定リサーチクエスチョンの設定
リサーチクエスチョンの設定
 

Viewers also liked

シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」博文 斉藤
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプトbsdhack
 
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考えるHideto Ishibashi
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall博文 斉藤
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011TokyoRyuichi Ueda
 
Bashのヒストリ展開を活用する
Bashのヒストリ展開を活用するBashのヒストリ展開を活用する
Bashのヒストリ展開を活用するbsdhack
 
FreeBSDのブートプロセス
FreeBSDのブートプロセスFreeBSDのブートプロセス
FreeBSDのブートプロセスbsdhack
 
2015.08.29 JUS共催勉強会資料
2015.08.29 JUS共催勉強会資料2015.08.29 JUS共催勉強会資料
2015.08.29 JUS共催勉強会資料umidori
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極めるbsdhack
 
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Ryuichi Ueda
 
正規表現
正規表現正規表現
正規表現bsdhack
 
確率ロボティクス第九回
確率ロボティクス第九回確率ロボティクス第九回
確率ロボティクス第九回Ryuichi Ueda
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)The Linux Foundation
 
オープンソースとロボット
オープンソースとロボットオープンソースとロボット
オープンソースとロボットRyuichi Ueda
 
電子工作で光で動くロボットをつくろう!
電子工作で光で動くロボットをつくろう!電子工作で光で動くロボットをつくろう!
電子工作で光で動くロボットをつくろう!Ryuichi Ueda
 
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, HuaweiXPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, HuaweiThe Linux Foundation
 

Viewers also liked (20)

シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
 
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える第31回WebSig会議【セッション2】 タブレットが与える影響について考える
第31回WebSig会議【セッション2】 タブレットが与える影響について考える
 
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 1 - OSC2012 Tokyo/Fall
 
awk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyoawk v.s. bashどっちが強い?@OSC2011Tokyo
awk v.s. bashどっちが強い?@OSC2011Tokyo
 
Bashのヒストリ展開を活用する
Bashのヒストリ展開を活用するBashのヒストリ展開を活用する
Bashのヒストリ展開を活用する
 
FreeBSDのブートプロセス
FreeBSDのブートプロセスFreeBSDのブートプロセス
FreeBSDのブートプロセス
 
2015.08.29 JUS共催勉強会資料
2015.08.29 JUS共催勉強会資料2015.08.29 JUS共催勉強会資料
2015.08.29 JUS共催勉強会資料
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極める
 
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会
 
Awk勉強会用資料
Awk勉強会用資料Awk勉強会用資料
Awk勉強会用資料
 
Tips for bash script
Tips for bash scriptTips for bash script
Tips for bash script
 
正規表現
正規表現正規表現
正規表現
 
awk入門
awk入門awk入門
awk入門
 
確率ロボティクス第九回
確率ロボティクス第九回確率ロボティクス第九回
確率ロボティクス第九回
 
ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)ALSS14: Xen Project Automotive Hypervisor (Demo)
ALSS14: Xen Project Automotive Hypervisor (Demo)
 
オープンソースとロボット
オープンソースとロボットオープンソースとロボット
オープンソースとロボット
 
Xen Project: Windows PV Drivers
Xen Project: Windows PV DriversXen Project: Windows PV Drivers
Xen Project: Windows PV Drivers
 
電子工作で光で動くロボットをつくろう!
電子工作で光で動くロボットをつくろう!電子工作で光で動くロボットをつくろう!
電子工作で光で動くロボットをつくろう!
 
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, HuaweiXPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
XPDS16: Xen Scalability Analysis - Weidong Han, Zhichao Huang & Wei Yang, Huawei
 

Similar to Usp友の会勉強会、ジャクソン構造図の巻(前編)

Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」Hiro H.
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
X hago2 shortcoding 20110827
X hago2 shortcoding 20110827X hago2 shortcoding 20110827
X hago2 shortcoding 20110827uskey512
 
Material
MaterialMaterial
Material_TUNE_
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門Kimikazu Kato
 
C言語 学習教材
C言語 学習教材C言語 学習教材
C言語 学習教材Jun MITANI
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミングOuka Yuka
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]hixi365
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1Susisu
 
Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005gotohayato
 
RでGISハンズオンセッション
RでGISハンズオンセッションRでGISハンズオンセッション
RでGISハンズオンセッションarctic_tern265
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Ransui Iso
 

Similar to Usp友の会勉強会、ジャクソン構造図の巻(前編) (20)

Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
X hago2 shortcoding 20110827
X hago2 shortcoding 20110827X hago2 shortcoding 20110827
X hago2 shortcoding 20110827
 
Material
MaterialMaterial
Material
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 
勉強会課題①
勉強会課題①勉強会課題①
勉強会課題①
 
C言語 学習教材
C言語 学習教材C言語 学習教材
C言語 学習教材
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
Objc lambda
Objc lambdaObjc lambda
Objc lambda
 
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 
20120127 nhn
20120127 nhn20120127 nhn
20120127 nhn
 
Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005
 
Tokyo r33 beginner
Tokyo r33 beginnerTokyo r33 beginner
Tokyo r33 beginner
 
STC-OC2019_1st201906
STC-OC2019_1st201906STC-OC2019_1st201906
STC-OC2019_1st201906
 
RでGISハンズオンセッション
RでGISハンズオンセッションRでGISハンズオンセッション
RでGISハンズオンセッション
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
 

Usp友の会勉強会、ジャクソン構造図の巻(前編)