end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

無料ssl証明書のLet's Encryptのnginx on amazon linux へのお試し導入

ググルと、「Let's Encryptは、amazon linuxでは試験段階」と言う情報が チラホラ見られましたが、私の試した範囲では、迷うようなことはありませんでした。

STEP0 参考url

何より日本語urlがあったお陰ですね。 https://letsencrypt.jp/docs/using.html#installation

STEP1 クライアントのinstall

# cd /usr/local
git clone https://github.com/certbot/certbot

STEP2 証明書のinstall

# /usr/local/certbot/certbot-auto certonly --debug --webroot \
>   -d hoge.example.mydns.jp \
>   --webroot-path /usr/share/nginx/html
Version: 1.1-20080819
Version: 1.1-20080819

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/hoge.example.mydns.jp/fullchain.pem. Your
   cert will expire on 2016-10-05. To obtain a new or tweaked version
   of this certificate in the future, simply run certbot-auto again.
   To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le


# ls -l /etc/letsencrypt/live/hoge.example.mydns.jp
  cert.pem -> ../../archive/hoge.example.mydns.jp/cert1.pem
  chain.pem -> ../../archive/hoge.example.mydns.jp/chain1.pem
  fullchain.pem -> ../../archive/hoge.example.mydns.jp/fullchain1.pem
  privkey.pem -> ../../archive/hoge.example.mydns.jp/privkey1.pem

STEP3 nginxの設定

# vi /etc/nginx/nginx.conf
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    index   index.html index.htm;

    server {
        listen       80;
    return 302 https://$host$request_uri;
    }



  server {
    listen 443 ssl;
 
    ssl_certificate /etc/letsencrypt/live/hoge.example.mydns.jp/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hoge.example.mydns.jp/privkey.pem;
 
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
 
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
 
    root /usr/share/nginx/html;
 
    index index.html index.htm index.nginx-debian.html;
 
    server_name _;
 
    location / {
      # First attempt to serve request as file, then
      # as directory, then fall back to displaying a 404.
      try_files $uri $uri/ =404;
    }
  }
}

STEP4 nginxの再起動

# /etc/rc.d/init.d/nginx restart

その他

Let's Encrypt によるssl証明書の有効期間は90日間らしく 「certbot renew」コマンドで証明書を更新するようです。

気が向いたら、証明書を更新します。

ITILにおけるインシデント管理と、問題管理

そもそも、両者は目的が異なります

項目 内容
インシデント管理 迅速に、通常のサービス運用(SLA範囲)を回復
問題管理 インシデントの根本原因の検知と解決、予防

インシデント・ライフサイクルと、1次,2次...サポート

以下の通り (ITIL本からの抜粋です) f:id:end0tknr:20160629085345p:plain

jQuery UI Datepickerに対し、日本語化、複数月表示、祝日,土日色付け

普段、bootstrapを使用する機会が多い為、 カレンダー入力はそのplug-inである bootstrap-datepicker.js を使用していましたが...

end0tknr.hateblo.jp

bootstrapはバージョンアップが早い為でしょうか、 手元にあるbootstrapを最新版に更新した所、bootstrap-datepicker.js が動作しなくなりました。

いい機会かも知れませんので、 jQuery UI Datepickerに、日本語化、複数月表示、祝日,土日色付け を対応させる方法を調べてみました。

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<script src="jquery.js"></script>
<!-- http://jqueryui.com/ よりダウンロード -->
<link rel="stylesheet" href="jquery-ui/jquery-ui.css">
<script src="jquery-ui/jquery-ui.js"></script>
<!-- https://github.com/jquery/jquery-ui/tree/master/ui/i18n で日本語化 -->
<script src="jquery-ui/jquery-datepicker-ja.js"></script>

<!-- http://www.h3.dion.ne.jp/~sakatsu/ -->
<!-- http://www.ka-net.org/blog/?p=2158 で、祝日,土,日を色付け-->
<script src="HolidayChk.js"></script>
<script>
$(function() {
   $("#datepicker").datepicker({
     dateFormat:'yy-mm-dd',//日付の書式を変更
     numberOfMonths: 3,    //複数月を表示
     //複数月表示の場合、画面に入らないこともある為、draggableに
     beforeShow: function(){ $("#ui-datepicker-div").draggable(); },
     // HolidayChk.js 祝日,土日を色付け
     beforeShowDay: function(date) { //
       var dateStr =
    [date.getFullYear(),date.getMonth()+1,date.getDate()].join('-');
       var holidayName = ktHolidayName(dateStr);
       if(holidayName)        return [true, "date-holiday"];
       if(date.getDay() == 0) return [true, "date-holiday"];
       if(date.getDay() == 6) return [true, "date-saturday"];
       return  [true];
     },
     showAnim: '' //NONE
   });

});
</script>

<style>
.date-holiday  .ui-state-default { background-color:#FF9999; }
.date-saturday .ui-state-default { background-color:#66CCFF; }
</style>  
</head>
<body>
 
日付 <input type="text" id="datepicker">
 
</body>
</html>

↑こう書くと、↓こう表示されます f:id:end0tknr:20160626102753p:plain ※カレンダー部分は、ドラッグもできます

参考にさせて頂いたurl

「参考」と言うより、そのままなんですけどね。

jQuery UI

jqueryui.com

カレンダーの日本語化

https://github.com/jquery/jquery-ui/tree/master/ui/i18ngithub.com

カレンダーに祝日,土,日を色付け

http://www.h3.dion.ne.jp/~sakatsu/ www.ka-net.org

nginx + amon2 for perl でのbasic認証

nginx設定

「proxy_set_header X-Forwarded-User $remote_user;」を設定します

#user  nobody;
worker_processes  1;

error_log  logs/error.log;
#error_log  logs/error.log  notice;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    server {
        listen       8080;
        server_name  localhost;

        location / {
            proxy_pass      http://127.0.0.1:5000;

            auth_basic "MEMBER ONLY";
            auth_basic_user_file /home/endo/dev/htpasswd;

            proxy_set_header Host             $host;
            proxy_set_header X-Real-IP        $remote_addr;
            proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-User $remote_user; ## HERE !!
        }
    }
}


amon2 というか、perl アプリケーション

contextオブジェクトから、「HTTP_X_FORWARDED_USER」を取り出します

sub get_login_user {
    my ($self,$c) = @_;
    my $user_id = $c->req->{env}->{HTTP_X_FORWARDED_USER};
    return Splats::Model::User->new($c,$user_id);
}

perl で db tableのカラム定義をcasual & dynamic に確認

したい場合、 DBI で、 desc ~ や、 show create table ~ くらいしかないの?

#!/usr/local/bin/perl
use strict;
use utf8;
use DBI;
use Data::Dumper;

my $DB_CONF =
    {host=>'localhost',
     port=> 3306,
     db_name=> 'ないしょ',
     db_user=> 'ないしょ',
     db_pass=> '',
     db_opt=>
     {AutoCommit=> 0,
      PrintError=> 0,
      RaiseError=> 1,
      ShowErrorStatement=>  1,
      AutoInactiveDestroy=> 1,
      mysql_enable_utf8=> 1,
      mysql_auto_reconnect=> 0},
     client_encoding=> 'utf8'
    };



main(@ARGV);

sub main {

    my $dbh = connect_db($DB_CONF);

    my $tbl_name = 'h_juchuu';

    print_desc_tbl($dbh, $tbl_name);

    print_show_create_tbl($dbh, $tbl_name);

    $dbh->disconnect();
}


sub print_show_create_tbl {
    my ($dbh, $tbl_name) = @_;

    my $sql = "show create table $tbl_name";
    my $sth = $dbh->prepare($sql);
    unless( $sth->execute() ){
        die $sth->errstr;
    }

    while( my $row = $sth->fetchrow_hashref){
        print $row->{'Create Table'},"\n";
    }
}


sub print_desc_tbl {
    my ($dbh, $tbl_name) = @_;

    my $sql = "desc $tbl_name";
    my $sth = $dbh->prepare($sql);
    unless( $sth->execute() ){
        die $sth->errstr;
    }

    while( my $row = $sth->fetchrow_hashref){
        print join("\t",$row->{Field},$row->{Key},$row->{Type},),"\n";
    }
}


sub connect_db {
    my ($db_conf) = @_;

    my $dbh
        = DBI->connect(
        "DBI:mysql:database=$db_conf->{db_name};host=$db_conf->{host}",
        $db_conf->{db_user}, $db_conf->{db_pass}, $db_conf->{db_opt} );
    $dbh->do("SET NAMES $db_conf->{client_encoding}")
        or die "cannot set encoding";
    return $dbh;
}

1;
__END__

OpenJDKのyum install と alternatives による java切替え

参考url : http://openjdk.java.net/install/

$ su -
# yum install java-1.8.0-openjdk
    :
# which java
/usr/bin/java
[endo@cent6 java]$ java -version
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)

# alternatives --config java

There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
*+ 3           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number:

どうやら「alternatives --install」は、yum ?が行っているみたい。

# alternatives --install /usr/bin/java java /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java 2

またJAVA_HOMEは次のようにしておけば、よい気がします

export JAVA_HOME='/usr/lib/jvm/java'

ImageMagick と PerlMagick をまとめてinstall - 再び

end0tknr.hateblo.jp

以前も同様のエントリを書いていますが、ImageMagick と PerlMagick をまとめてinstall であれば、 configure の 「--with-perl=/usr/local/bin/perl」オプションを使用しましょう

$ wget http://www.imagemagick.org/download/ImageMagick.tar.gz
$ tar -zxvf ImageMagick.tar.gz
$ cd ImageMagick-7.0.1-10
$ ./configure --help
$ ./configure --with-perl=/usr/local/bin/perl
$ make
$ make check
$ su
# make install

特定のアプリ専用にinstallする場合は以下

$ sudo su -
# su - eanapache
$ cd /myapp/local

$ export CPPFLAGS="-I/myapp/local/zlib-1.2.8/include -I/myapp/local/libpng-1.6.13/include -I/myapp/local/jpeg-9a/include"
$ export LDFLAGS="-L/myapp/local/zlib-1.2.8/lib -L/myapp/local/libpng-1.6.13/lib -L/myapp/local/jpeg-9a/lib -L/myapp/local/ImageMagick-7.0.2-0/lib -Wl,-rpath,/myapp/local/ImageMagick-7.0.2-0/lib"
$ export LD_LIBRARY_PATH="/myapp/local/ImageMagick-7.0.2-0/lib"


$ wget http://www.imagemagick.org/download/ImageMagick.tar.gz
$ tar -zxvf ImageMagick.tar.gz
$ cd ImageMagick-7.0.2-0
$ ./configure --help

$ ./configure \
  --prefix=/myapp/local/ImageMagick-7.0.2-0 \
  --with-perl=/myapp/local/perl5/bin/perl

$ make
$ make check


## PerlMagick(Image::Magick)の更新日時をチェック

$ find /myapp/local/perl5 -name Magick.pm -exec ls -lh {} \;
-r--r--r-- 1 eanapache eanapache 1.9K Jun 13 11:16 /myapp/local/perl5/lib/site_perl/5.18.4/x86_64-linux/Image/Magick.pm

shc で、shell scriptをバイナリ化

すっかり、shcの名前を忘れていたのでメモ

install

といっても、makeだけ

$ wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9b.tgz
$ tar -zxvf shc-3.8.9b.tgz
$ cd shc-3.8.9b
$ make
$ ls -l shc
-rwxrwxr-x 1 endo endo 36097 Jun  2 22:02 shc

usage

といっても、shcに -f でshellを渡すだけ

$ shc-3.8.9b/shc -f test.sh
$ ls -l test.sh*
-rw-r--r-- 1 endo endo    33 Jun  2 22:03 test.sh
-rwx-wx--x 1 endo endo 11648 Jun  2 22:03 test.sh.x
-rw-rw-r-- 1 endo endo  9464 Jun  2 22:03 test.sh.x.c
$ ./test.sh.x

Unicodeプロパティによる文字種の判別

developer.hatenastaff.com ↑こちらを読んで、↓こちらを思い出した。 end0tknr.hateblo.jp

unicode.org のお陰で、文字種の判別は随分、楽になりましたが

  • 「①」「㈱」等のいわゆる機種依存文字の判別が自分の認識と異なる。
  • 「A」「A」等の全角英数字の判別が自分の認識と異なる。
  • 「斎藤」「斉藤」「齋藤」を簡単に同一視したい。

で、モヤモヤが解消しきれていない。地道に行くしかないんですかねぇ

参考url

なんとなく、確認用のscriptを書いてみたけど...

特に意味はありません。ただの写経です

#!/usr/local/bin/perl
use strict;
use utf8;
use Encode;

# http://perldoc.jp/docs/perl/5.10.0/perlunicode.pod#Unicode32Character32Properties
# http://developer.hatenastaff.com/entry/2016/05/31/123457
# http://js-next.hatenablog.com/entry/2016/04/21/013010
# http://unicode.org/Public/UNIDATA/ScriptExtensions.txt
main();

sub main {

#    chk_General_Category();
#    chk_Script();
    chk_Script_Extensions();
#    chk_East_Asian_Width();

}

sub chk_General_Category { # 一般カテゴリ

    my $uc_prop_type = 'General_Category';  #

    for my $char ( qw/A A a a あ ア ア/ ){
        my @uc_prop_vals =
            ('Letter',          #表音文字・表語文字
             'UppercaseLetter', #大文字
             'OtherLetter');    #他の文字
        for my $uc_prop_val ( @uc_prop_vals ){
            chk_unicode_prop($uc_prop_type, $uc_prop_val,$char);
        }
    }

    for my $char ( qw/1 1 ① 一 , . ,/ ){
        my @uc_prop_vals =
            ('Number',
             'DecimalNumber',
             'LetterNumber',
             'OtherNumber');
        for my $uc_prop_val ( @uc_prop_vals ){
            chk_unicode_prop($uc_prop_type, $uc_prop_val,$char);
        }
    }
}

# http://www.unicode.org/Public/UNIDATA/Scripts.txt
sub chk_Script { #

    my $uc_prop_type = 'Script';

    for my $char ( qw/亜 あ ア ア 一 ー α/ ){
        my @uc_prop_vals =
            ('Katakana',
             'Han',
             'Common');
        for my $uc_prop_val ( @uc_prop_vals ){
            chk_unicode_prop($uc_prop_type, $uc_prop_val,$char);
        }
    }
}

sub chk_Script_Extensions { #

    my $uc_prop_type = 'Script_Extensions';

    for my $char ( qw/亜 あ ア ア 一 ー α ㈱/ ){
        my @uc_prop_vals =
            ('Hiragana',
             'Katakana',
             'Han',
             'Common');
        for my $uc_prop_val ( @uc_prop_vals ){
            chk_unicode_prop($uc_prop_type, $uc_prop_val,$char);
        }
    }
}

sub chk_East_Asian_Width { #

    my $uc_prop_type = 'East_Asian_Width';

    for my $char ( qw/あ ア ア ㈱ ① 1 1/ ){
        my @uc_prop_vals =
            ('Wide',
             'Narrow',
             'Ambiguous',
            );
        for my $uc_prop_val ( @uc_prop_vals ){
            chk_unicode_prop($uc_prop_type, $uc_prop_val,$char);
        }
    }
}



sub chk_unicode_prop {
    my ($uc_prop_type,$uc_prop_val, $char) = @_;

    my $uc_prop_type_val = join('=',$uc_prop_type, $uc_prop_val);
    if( $char =~ m/\p{$uc_prop_type_val}/){
        print encode('utf8',
                     "'$char' = $uc_prop_type_val .\n");
        return;
    }
    print encode('utf8',
                 "'$char' ≠ $uc_prop_type_val .\n");
}

1;

「openssl s_client」で暗号方法の対応状況を調べる

$ openssl s_client -connect www.google.co.jp:443 -cipher AES256-SHA
$ openssl s_client -connect www.google.co.jp:443 -cipher DHE-RSA-AES128-SHA

上記の実行で、たくさんの文字列が表示されれば、対応済。そうでなければ、未対応。

Module::Load for perl で installされた module の有無をまとめて確認

#!/usr/local/bin/perl
use strict;
use Module::Load;

main();

sub main {

    my @load_classes = qw/Apache::DBI  Apache2::Reload Archive::Tar
        Archive::Zip Crypt::Eksblowfish::Bcrypt      Crypt::SSLeay
        Date::Format DBI     DBD::mysql              DBD::ODBC
        DBD::Oracle  DBD::Pg Encode::HanExtra        IO::Socket::SSL
        JSON::XS     List::Util::XS  LWP::UserAgent  Mail::IMAPClient
        IO::Socket::SSL      ModPerl::Util           Net::DNS
        Net::LDAP    Template        Template::Stash::XS
        Text::CSV_XS Time::HiRes     Time::Piece     XML::LibXML
        XML::LibXSLT XML::Parser     YAML::XS/;

    for my $load_class (@load_classes) {
        eval { Module::Load::load $load_class };
        if ($@) {
            print STDERR "NOT INSTALLED $load_class \n";
        }
    }

}

1;

↑こう書くと、↓こう表示されます

$ ./chk_cpan_modules.pl
NOT INSTALLED DBD::Oracle 
NOT INSTALLED DBD::Pg 

Module::Pluggable でも同様のことができるかもしれないので、以前のurlを貼っておきます end0tknr.hateblo.jp

amon2 + Starlet + Supervisor による PSGI/Plack 環境下での Devel::Cover

http://search.cpan.org/perldoc?Devel%3A%3ACover unit test 時に Devel::Cover を利用すると、

$ perl Makefile.PL
$ make
$ HARNESS_PERL_SWITCHES=-MDevel::Cover make test
$ cover

または

$ env PERL5OPT='-MDevel::Cover' make test

を実行することで、statement , branch , cond 等のcoverage を計測できます。

ただ、自動testに対応しておらず、手作業(操作)でtestを実施するケースもあり、 更に手作業test時のcoverageも計測したい。

amon2 + Starlet + Supervisor による PSGI/Plack 環境下では、例えば、以下の手順で実施できそうです。

STEP1 /etc/bashrc に perl起動時のoption(PERL5OPT)を設定

# vi /etc/bashrc
export PERL5OPT='-MDevel::Cover=-db,/home/endo/tmp/cover_db,-ignore,^\/usr\/local'

STEP2 amon2 + Starlet + Supervisor を起動し、手動test

# cat /etc/supervisord.conf
    :
[program:sample-starlet]
directory=/home/endo/dev/Sample/script
command=/usr/local/bin/start_server --port=5000 --interval=10 -- \
    /usr/local/bin/plackup -E development --no-default-middleware \
    -s Starlet --max-workers=5 --timeout=1800 --keepalive-timeout=0 \
    --max-reqs-per-child=700 --min-reqs-per-child=1000 \
    /home/endo/dev/Sample/script/sample-server
numprocs=1
autostart=true
autorestart=true
user=endo
redirect_stderr=true
stdout_logfile=/home/endo/local/apache22/logs/starlet_error_log
    :

# /etc/rc.d/init.d/supervisord start
...ここで手動test...

STEP3 Supervisor を停止すると、coverage dataがメモリから書出されます

# /etc/rc.d/init.d/supervisord stop

$ ls -l /home/endo/tmp/cover_db
total 76
-rw-rw-r-- 1 endo endo 57511 May 21 20:26 cover.14
-rw-r--r-- 1 endo endo  7914 May 21 20:22 digests
drwxr-xr-x 2 endo endo  4096 May 21 20:26 runs
drwxr-xr-x 2 endo endo  4096 May 21 20:26 structure

STEP4 cover コマンドで coverage dataをhtml化

# vi /etc/bashrc
# export PERL5OPT='-MDevel::Cover=-db,/home/endo/tmp/cover_db,-ignore,^\/usr\/local'

上記のようにcomment outしないと、cover実行時に 「/usr/local/bin/cover shouldn't be run with coverage turned on.」 とエラーになります。

$ cd /home/endo/tmp
$ cover
$ less /home/endo/tmp/cover_db/coverage.html

おまけ 複数のcoverage database を後からmerge

$ cover -outputdir cover_merged cover_db_1 cover_db_2
$ less cover_merged/coverage.html

/etc/bashrc へ PERL5OPT の設定って、どうなの?...とも思いますが、とりあえず、動いているっぽい。

BABOK (Business Analysis Body Of Knowledge) のオレオレ要約

end0tknr.hateblo.jp

先日のエントリに続き、BABOKへの理解もまだまだですので、オレオレ要約。

※主に秀和システム社の「やわしくわかるBABOK」からの引用です。 www.shuwasystem.co.jp

※BABOK同様、IPAの共通フレームもありますが、BABOKの方が具体的な印象を受けました SEC BOOKS 共通フレーム2013:IPA 独立行政法人 情報処理推進機構

BABOKが定義する要求

要求 内容
ビジネス要求要求 プロジェクトのWHYを明確にするもの.
『エンタープライズアナリス』を通じ定義
ステークホルダ要求 ビジネス要求とソリューション要求の橋渡しをするもの.
使う立場でのWHATを明確にし
『要求アナリス』を通じ定義
ソリューション要求 作る立場でのWHAT(機能要求,非機能要求)を明確にし
『要求アナリス』を通じ定義
移行要求 AS-ISからTO-BEに円滑に移行する為の一時的な要求

要求と要件の違い - IPAによる「共通フレーム2013」より

  • 英訳は、要求と要件はいずれも「Requirements」
  • 「要件」とは、要件定義プロセスにおいて、妥当性が確認され、ステークホルダ間で合意された「要求」
  • 要求より前段階のものをneeds

計画駆動アプローチと、変化駆動アプローチ

ウォーターフォールアジャイルの様なアプローチがBABOKで定義されています

7つの知識エリア

知識エリア 内容
基礎コンピテンシ 全ての知識エリア共通で必要とする知識,スキル,行動特性
ビジネスアナリシスの計画と
モニタリング
アナリストやステークホルダの活動計画作成.
PMBOKのプロジェクト計画書やマネジメントと同様
引出し ステークホルダから真の要求を引き出す
要求アナリシス "引き出し"でえた要求を整理し、
妥当性確認後、ステークホルダ要求やソリューション要求にまとめる
要求マネジメントとコミュニケーション ステークホルダ間で合意形成させ、
その後もソリューションスコープや要求、トレーサビリティをマネジメント
エンタープライズアナリシス "ビジネスの目的と目標"から"ビジネス要求"を作成
ソリューションのアセスメントと
妥当性確認
ソリューションがビジネスニーズを満たすことを確認する

f:id:end0tknr:20160509223834p:plain

各知識エリアのタスク

エンタープライズ アナリシス

項目 内容 備考
インプット エンタープライズ アーキテクチャ 体制,プロセス,技術
ビジネスのゴールと目標
組織のプロセス資産
(表明された)要求
ステークホルダの懸案事項
前提条件と制約
ソリューションのパフォーマンス評価
↓↓↓ ↓↓↓ ↓↓↓
タスク ビジネスニーズを定義 ビジネス機会,ビジネス問題
能力ギャップをアセスメント
ソリューション アプローチ決定 SW,HWの追加.組織,プロセスの変更
ソリューション スコープ定義
ビジネスケース
↓↓↓ ↓↓↓ ↓↓↓
アウトプット ビジネスニーズ
必要とされる能力
ソリューション アプローチ
ソリューション スコープ
ビジネスケース

引出し

項目 内容 備考
インプット 組織のプロセス資産
ステークホルダのリスト,役割,責任
要求マネジメント計画
ビジネスニーズ
ソリューション スコープ
ビジネスケース
↓↓↓ ↓↓↓ ↓↓↓
タスク 引出しを準備
引出しのアクティビティを主導
引出しの結果を文書化
引出しの結果を確認
↓↓↓ ↓↓↓ ↓↓↓
アウトプット 補足材料
予約されたリソース
引出しの結果
要求
ステークホルダの懸案事項

テクニック例

項目 内容 備考
ブレーンストーミング
文書分析
フォーカスグループ 選別された集団に質問することで、信頼性の高い回答を得る
インタフェース分析
インタビュ
観察 実際の業務を観察
プロトタイピング
要求ワークショップ 特定テーマに集中した会議体で議論
調査とアンケート 不特定多数の人員に対し短期に質問を行うことで、広い範囲の情報を収集

要求アナリシス

項目 内容 備考
インプット 組織のプロセス資産
ステークホルダのリスト,役割,責任
要求マネジメント計画
要求
ステークホルダの懸案事項
ビジネスニーズ
ソリューション スコープ
ビジネスケース
↓↓↓ ↓↓↓ ↓↓↓
タスク 要求に優先順位付け
要求を体系化
要求の仕様化とモデリング
前提条件と制約を定義
要求の検証
要求の妥当性確認
↓↓↓ ↓↓↓ ↓↓↓
アウトプット 要求(順線順位付き)
要求の構造
ステークホルダ要求 or ソリューション要求
前提条件と制約条件
要求(検証済)
要求(妥当性確認済)

要求のマネジメントとコミュニケーション

項目 内容 備考
インプット 組織のプロセス資産
要求
要求の構造
ステークホルダのリスト,役割,責任
BAコミュニケーション計画 Business Analysis
要求マネジメント計画
ソリューション スコープ
↓↓↓ ↓↓↓ ↓↓↓
タスク ソリューションスコープと要求のマネジメント
要求のトレーサビリティ
再利用に備え要求を保守
要求パッケージの準備
要求の伝達
↓↓↓ ↓↓↓ ↓↓↓
アウトプット 要求(承認された)
要求(トレースされた)
要求(保守された&再利用可能)
要求パッケージ
要求(伝達された)

ソリューションのアセスメント(診断)と妥当性確認

項目 内容 備考
インプット エンタープライズアーキテクチャ
ソリューション(構築/導入/設計済)
ソリューションの選択肢
ソリューションのパフォーマンスメトリクス
要求
前提条件と制約条件
ソリューション スコープ
ステークホルダの懸案事項
↓↓↓ ↓↓↓ ↓↓↓
タスク 提案ソリューションのアセスメント
要求を割当て ソリューションに割当て
組織の準備状況のアセスメント
移行要求を定義
ソリューションの妥当性確認
ソリューションのパフォーマンス評価
↓↓↓ ↓↓↓ ↓↓↓
アウトプット 提案ソリューションのアセスメント
要求(割当て済)
組織の準備状況のアセスメント
移行要求
ソリューションの妥当性確認結果
識別した欠陥
低減アクション
ソリューションのパフォーマンス アセスメント

ビジネスアナリスの計画とモニタリング

項目 内容 備考
インプット 組織のプロセス資産
エンタープライズ アーキテクチャ
専門家の判断
ビジネスアナリスのパフォーマンスメトリクス
ビジネスニーズ
↓↓↓ ↓↓↓ ↓↓↓
タスク BAへのアプローチ計画 Business Analysis
ステークホルダの分析を主導
BAのアクティビティ計画
BAのコミュニケーション計画
要求マネジメントプロセス計画
BAのパフォーマンス管理
↓↓↓ ↓↓↓ ↓↓↓
アウトプット BAへのアプローチ計画
ステークホルダのリスト,役割,責任
ビジネスアナリス計画
BAのコミュニケーション計画
要求マネジメント計画
BAのパフォーマンスアセスメント
BAのプロセス資産

基礎コンピテンシ

項目 備考
分析思考と問題解決
行動特性
ビジネス知識
コミュニケーションスキル
人間関係のスキル
ソフトウエア アプリケーション

その他

3種類のニーズ (狩野モデル)

項目 別名
基本的ニーズ 当たり前の品質 ないと、顧客は大変不満.
当たり前の品質の為、顧客は「これがないと困る」とは言わない
期待のニーズ 一元的品質 顧客自ら「これがないと、困るor必要」と話してくれる.
ただし、期待のニーズだけでは、競合との差別化は不可
喜びのニーズ 魅力的品質 顧客が気づかない品質で、あると大変喜び、差別化にもなる

検証(Verifycation)と、妥当性確認(Validation)の違い

項目 内容
検証
Verifycation
ベンダが仕様書通りであることをテストで確認.
妥当性確認
Validation
ユーザの受入検査により妥当性確認.
ビジネス要求を満たすことを確認

ライフ テクノロジ サイクルと、キャズム

f:id:end0tknr:20160514131851p:plain

PM理論 - Performance Function / Maintenance Function

Performance Function (課題達成機能)

  • 目標の明確化や共有化への働きかけ
  • 情報や意見を関連付け、まとめる
  • 同意をとりつけ、意思決定への働きかけ

組織文化の分類

f:id:end0tknr:20160515071356p:plain

Maintenance Function (集団維持機能)

  • 他メンバの参加を促す
  • 緊張緩和や調和で、葛藤の調整役をする
  • 整理役、進行役をつとめ、コミュニケーションを促進
  • グループの規範に対して働きかけ

f:id:end0tknr:20160515071351p:plain

意思決定のスタイル

f:id:end0tknr:20160515072833p:plain

教えるスキル

実践的な学習 (仕事に直結して役立つ)

例:事例を示してビジネスアナリシスを実践すると、要求の漏れがなくなる

主体的な学習 (自ら学習しようと思う)

例:学習者自身に、グループワークのファシリテータをしてもらう。 ファシリテーションが上手くいくと、その満足感が学習意欲を更に高める

快適が学習 (学習環境が快適)

例:快適な教室、仕事のプレッシャーからの開放

経験を活かした学習 (学習内容を学習者の経験に結びつける)

例:ビジネスアナリシスの研修において学習者の経験した要求敵の問題点をリスト化し、 学習内容と結びつける

学習目標の明示 (何を学習するか事前に理解)

例:事前に投資効果の高いビジネスケースを定義できるようになると明示

異なる学習法を活用

項目
視覚型 ビデオ、グラフ、読書
聴覚型 講義、英語のヒアリング
運動型 ロールプレイ

AWSのELBでロードバランスされたサブドメインmydns.jpに登録

end0tknr.hateblo.jp 以前もmydns.jpのエントリがありますが、mydns.jpは、たまにしか利用しない為、設定方法を忘れてしまうので、メモ。

f:id:end0tknr:20160513181920p:plain

↑こういう構成であれば、↓このようにCNAMEでAWSDNSを登録します f:id:end0tknr:20160513181929p:plain