ã¯ããã« ããã«ã¡ã¯ãyk_itgã§ãã ãããŸã§ããã€ã PostgreSQL ã®èšäºãäœæããŸããããä»åã¯ç¥ã£ãŠãããšäŸ¿å©ã ãšæã ããŒãã«ã»DBã®é²èЧã»ã³ã㌠ã«é¢ããtipsããŸãšããŠã¿ãŸããã ç§ã¯ãã¹ãã宿œããæã«çµæã確èªããããããŒã¿ãçšæããéã«ãã䜿ããŸãã PostgreSQL ãŠãŒã¶ãªãå¿
é ã®ãã¯ããã¯ã玹ä»ããŠãããŸãã®ã§ãã©ããã圹ç«ãŠãã ããïŒ ã¯ããã« ããŒãã«ãé²èЧãã ããŒãã«ã®æ
å ±ã確èªãããïŒ\d ããŒãã«ã®äžèЧã確èªãããïŒ\dt å®è¡çµæãèŠããããããïŒ\x å®è¡çµæããã¡ã€ã«ã«åºåããŠç¢ºèªãããïŒ\o DBãé²èЧãã DBã®äžèЧã確èªãããïŒ\l ããŒãã«ãã³ããŒãã ããŒãã«ã®æ§é ãã³ããŒãããïŒCREATE TABLE (LIKE) ããŒãã«ã®ã¬ã³ãŒããã³ããŒãããïŒINSERT INTO SELECT DBãã³ããŒãã DBãã³ããŒãããïŒcreatedb -T DBãã³ããŒãããïŒpg_dump æåŸã« é¢é£èšäº ããŒãã«ãé²èЧãã ããŒãã«ã®æ
å ±ã確èªãããïŒ \d \d {ããŒãã«å} ã psql äžã§å®è¡ãããšããŒãã«ã®æ
å ±ã衚瀺ããããšãã§ããŸãã ã€ã³ããã¯ã¹ãã·ãŒã±ã³ã¹ãªã©ããŒãã«ä»¥å€ã®ãªã¬ãŒã·ã§ã³ã衚瀺ããããšãå¯èœã§ãã postgres=# \d test ããŒãã« "public.test" å | å | ç
§åé åº | Null å€ã蚱容 | ããã©ã«ã ------+---------+----------+---------------+------------ id | integer | | not null | hoge | text | | | 'a'::text ã€ã³ããã¯ã¹: "test_pkey" PRIMARY KEY, btree (id) "test_hoge_idx" btree (hoge) postgres=# \d test_pkey ã€ã³ããã¯ã¹ "public.test_pkey" å | å | ããŒ? | å®çŸ© ----+---------+-------+------ id | integer | ã¯ã | id ãã©ã€ããªããŒ, btree, ããŒãã« "public.test" çš ããŒãã«ã®äžèЧã確èªãããïŒ \dt \dt ã psql äžã§å®è¡ãããšããŒãã«ã®äžèЧã衚瀺ããããšãã§ããŸãã ããŒãã«ä»¥å€ã«ã \di ã \ds ã \dv ã䜿ãã°ãããããã€ã³ããã¯ã¹ãã·ãŒã±ã³ã¹ããã¥ãŒã®äžèЧã衚瀺ããããšãã§ããŸãã postgres=# \dt ãªã¬ãŒã·ã§ã³äžèЧ ã¹ããŒã | åå | å | ææè
----------+------+----------+---------- public | test | ããŒãã« | postgres (1 è¡) å®è¡çµæãèŠããããããïŒ \x \x ã psql äžã§å®è¡ãããš SQL ãã¡ã¿ã³ãã³ãçã®å®è¡çµæãæ¡åŒµè¡šç€ºïŒçžŠã«è¡šç€ºïŒããããšãã§ããŸãã äŸãã°ãã«ã©ã ãå€ãããŠã¿ãŒããã«ã§æãè¿ããŠè¡šç€ºãããŠããŸãå Žåã«äŸ¿å©ã§ãã éã«èŠã¥ããå Žåã«ã¯ãããäžåºŠ \x ãå®è¡ãããšå
ã®è¡šç€ºã«æ»ããŸãã postgres=# SELECT * FROM test; id | hoge1 | hoge2 | hoge3 | hoge4 | hoge5 | hoge6 | hoge7 | hoge8 | hoge9 | hoge10 | hoge11 | hoge12 | hoge13 | hoge14 | hoge15 | hoge16 | hoge17 | hoge18 | hoge19 | hoge20 ----+------------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------- 1 | ABCDEFGHIJ | | | | | | | | | | | | | | | | | | | (1 è¡) postgres=# \x æ¡åŒµè¡šç€ºã¯ on ã§ãã postgres=# SELECT * FROM test; -[ RECORD 1 ]------ id | 6 hoge1 | ABCDEFGHIJ hoge2 | hoge3 | hoge4 | hoge5 | hoge6 | hoge7 | hoge8 | hoge9 | hoge10 | hoge11 | hoge12 | hoge13 | hoge14 | hoge15 | hoge16 | hoge17 | hoge18 | hoge19 | hoge20 | å®è¡çµæããã¡ã€ã«ã«åºåããŠç¢ºèªãããïŒ \o \o {ãã¡ã€ã«ãã¹} ã psql äžã§å®è¡ãããšå®è¡çµæãæå®ãããã¡ã€ã«ã«åºåããããšãã§ããŸãã ã¿ãŒããã«ä»¥å€ã§å®è¡çµæã確èªãããå Žåãä¿åãããå Žåã«äŸ¿å©ã§ãã SQL å®è¡åŸã« \o ãå®è¡ãããšåºåå
ãæšæºåºåã«æ»ãããšãã§ããŸãã postgres=# \o result.txt postgres=# SELECT * FROM test; postgres=# \o postgres=# SELECT * FROM test; id | hoge ----+------------ 8 | ABCDEFGHIJ (1 è¡) result.txt id | hoge ----+------------ 8 | ABCDEFGHIJ (1 è¡) DBãé²èЧãã DBã®äžèЧã確èªãããïŒ \l \l ã psql *1 äžã§å®è¡ãããšDBã®äžèЧã衚瀺ããããšãã§ããŸãã ãŸã㯠psql -l ã§ã¿ãŒããã«ãèµ·åããã«è¡šç€ºããããšãã§ããŸãã postgres=# \l ããŒã¿ããŒã¹äžèЧ åå | ææè
| ãšã³ã³ãŒãã£ã³ã° | ç
§åé åº | Ctype(倿æŒç®å) | ã¢ã¯ã»ã¹æš©é -----------------------------------+----------+------------------+----------+-------------------+----------------------- postgres | postgres | UTF8 | C | C | template0 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres (3 è¡) ããŒãã«ãã³ããŒãã ç¶ããŠã¯ã³ããŒäœæ¥ã®ãã¯ããã¯ããŸãã¯ããŒãã«ç·šã®ç޹ä»ã§ãã ãªããããããã玹ä»ããå
容ã¯ãæ¬çªç°å¢ã§ã®å©çšã¯æ³å®ããŠããŸããã 誀ã£ãŠéèŠãªããŒã¿ã®æžãæ¿ããçºçããŠããŸãå¯èœæ§ããããŸãã®ã§ããå©çšã«ã¯ããããããæ³šæãã ããã ããŒãã«ã®æ§é ãã³ããŒãããïŒ CREATE TABLE (LIKE) CREATE TABLE {ã³ããŒå
} (LIKE {ã³ããŒå
} ) *2 ã® SQL ãå®è¡ãããšã³ããŒå
ãšåãæ§é ã®ããŒãã«ãäœæããããšãã§ããŸãã LIKEã®äžã§ INCLUDING ALL ãæå®ãããšæ§é ã ãã§ãªããå¶çŽãããã©ã«ãå€ãä»äžãããŠããã€ã³ããã¯ã¹çãã³ããŒããããšãã§ããŸãã postgres=# CREATE TABLE test2 (LIKE test); CREATE TABLE postgres=# \d test2 ããŒãã« "public.test2" å | å | ç
§åé åº | Null å€ã蚱容 | ããã©ã«ã ------+---------+----------+---------------+------------ id | integer | | not null | hoge | text | | | postgres=# CREATE TABLE test3 (LIKE test INCLUDING ALL); CREATE TABLE postgres=# \d test3 ããŒãã« "public.test3" å | å | ç
§åé åº | Null å€ã蚱容 | ããã©ã«ã ------+---------+----------+---------------+------------ id | integer | | not null | hoge | text | | | 'a'::text ã€ã³ããã¯ã¹: "test3_pkey" PRIMARY KEY, btree (id) "test3_hoge_idx" btree (hoge) ããŒãã«ã®ã¬ã³ãŒããã³ããŒãããïŒ INSERT INTO SELECT INSERT INTO {ããŒãã«å} SELECT * FROM {ããŒãã«å} ã® SQL ãå®è¡ãããšSELECTã®çµæããã®ãŸãŸã³ããŒããããšãã§ããŸãã ãã®ãŸãŸã³ããŒãããšäž»ããŒå¶çŽã«åŒã£ãããå Žåã«ã¯ã CREATE TABLE {ã³ããŒå
} (LIKE {ã³ããŒå
} ) ã䜿ã£ãŠtempããŒãã«ãäœæãã倿Žãããã«ã©ã ã®ã¿ãUPDATEããŠããINSERTãããšäž»ããŒã®ã«ã©ã 以å€ãèããã«ã³ããŒããããšãã§ããŸãã postgres=# SELECT * FROM test2; id | hoge ----+------------ 10 | ABCDEFGHIJ (1 è¡) postgres=# INSERT INTO test2 SELECT * FROM test2; INSERT 0 1 postgres=# SELECT * FROM test2; id | hoge ----+------------ 10 | ABCDEFGHIJ 10 | ABCDEFGHIJ (2 è¡) postgres=# SELECT * FROM test; id | hoge ----+------------ 1 | ABCDEFGHIJ (1 è¡) postgres=# CREATE TEMPORARY TABLE temp_test (LIKE test); CREATE TABLE postgres=# INSERT INTO temp_test SELECT * FROM test WHERE id = 1; INSERT 0 1 postgres=# UPDATE temp_test SET id = 2; UPDATE 1 postgres=# INSERT INTO test SELECT * FROM temp_test; INSERT 0 1 postgres=# SELECT * FROM test; id | hoge ----+------------ 1 | ABCDEFGHIJ 2 | ABCDEFGHIJ (2 è¡) DBãã³ããŒãã ããŒãã«ã®æ¬¡ã¯DBç·šã®ã玹ä»ã§ãã ãã¡ããããŒãã«ç·šãšåæ§ãæ¬çªç°å¢ã§ã®å©çšã¯æ³å®ãããã®ã§ã¯ãããŸããã ç°å¢ãžé倧ãªåœ±é¿ãåãŒãå
容ãšãªããŸãããããæ³šæã®äžã§ã®å©çšããé¡ãããŸãã DBãã³ããŒãããïŒ createdb -T createdb -T {ã³ããŒå
} {ã³ããŒå
} *3 ã®ã³ãã³ããå®è¡ãããšã³ããŒå
DBã®å
容ã§ã³ããŒå
DBãäœæããããšãã§ããŸãã åŸè¿°ã® pg_dump ãšæ¯èŒãããšå®è¡é床ãéãå°è±¡ã§ãã >psql -U postgres -d postgres postgres=# \dt ãªã¬ãŒã·ã§ã³äžèЧ ã¹ããŒã | åå | å | ææè
----------+-------+----------+---------- public | test | ããŒãã« | postgres public | test2 | ããŒãã« | postgres public | test3 | ããŒãã« | postgres (3 è¡) >createdb -T postgres -U postgres postgres2 >psql -U postgres -d postgres2 postgres2=# \dt ãªã¬ãŒã·ã§ã³äžèЧ ã¹ããŒã | åå | å | ææè
----------+-------+----------+---------- public | test | ããŒãã« | postgres public | test2 | ããŒãã« | postgres public | test3 | ããŒãã« | postgres (3 è¡) DBãã³ããŒãããïŒ pg_dump pg_dump {ã³ããŒå
DB} > {dumpãã¡ã€ã«} *4 ã®ã³ãã³ããå©çšãããšããŒã¿ããŒã¹ãããã¯ã¢ããããdumpãã¡ã€ã«ãäœæããããšãã§ããŸãã äœæããdumpãã¡ã€ã«ã psql {ã³ããŒå
DB} < {dumpãã¡ã€ã«} ã§ãªã¹ãã¢ããããšã«ãã£ãŠã³ããŒå
ã®DBã«ã³ããŒå
ã®DBãããŒã¿ãåçŸããããšãã§ããŸãã åè¿°ã® createdb -T ãšæ¯èŒãããšãdumpãã¡ã€ã«ãããã°åããµãŒãã«ã³ããŒå
ã®DBããªããŠãã³ããŒã§ããç¹ã§æ±çšçã§ãã ãŸãã -n ã -t ã®ãªãã·ã§ã³ãæå®ãããšäžèŽãã ã¹ããŒã ãããŒãã«åäœã§ã³ããŒããããšãã§ããŸãã > pg_dump -U postgres postgres > postgres_dump > ls -1 | grep postgres_dump postgres_dump > createdb -U postgres -T template0 postgres3 > psql -U postgres -d postgres3 < postgres_dump > psql -U postgres -d postgres3 postgres3=# \dt ãªã¬ãŒã·ã§ã³äžèЧ ã¹ããŒã | åå | å | ææè
----------+-------+----------+---------- public | test | ããŒãã« | postgres public | test2 | ããŒãã« | postgres public | test3 | ããŒãã« | postgres (3 è¡) æåŸã« PostgreSQL ã§ã®ããŒãã«ã»DBã®é²èЧã»ã³ããŒã«é¢ããŠã玹ä»ããŠã¿ãŸãããããããã§ããã§ããããã å¹ççãªäœæ¥ã®ã圹ã«ç«ãŠã°å¹žãã§ãã é¢é£èšäº tech-blog.rakus.co.jp tech-blog.rakus.co.jp tech-blog.rakus.co.jp ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com *1 : https://www.postgresql.jp/document/9.3/html/app-psql.html *2 : https://www.postgresql.jp/document/9.3/html/sql-createtable.html *3 : https://www.postgresql.jp/document/9.2/html/app-createdb.html *4 : https://www.postgresql.jp/document/9.2/html/app-pgdump.html
ã¯ããã« ããã«ã¡ã¯ãEngawaã§ãã æè¿ã®æ¥åã§OAuthã«ã€ããŠè§Šããæ©äŒããããŸããã ãããŸã§ã®æ¥åã§ã¯æ
åœçµéšã¯ãªãå
šãä»çµã¿ãçè§£ã§ããŠããªãã£ãããããããæ©ã«ä»çµã¿ã«ã€ããŠã¡ãã£ãšåŠç¿ããŠã¿ãŸããïŒ åèã«ããæžç±ã¯ä»¥äžã«ãªããŸãã https://www.amazon.co.jp/dp/484437818X www.amazon.co.jp OAuthãšã¯ OAuthãšã¯ã ãµãŒãããŒã㣠ã¢ããªã±ãŒã·ã§ã³ã«ããHTTPãµãŒãã¹ãžã®éå®çãªã¢ã¯ã»ã¹ãå¯èœã«ããèªå¯ ãã¬ãŒã ã¯ãŒã¯ ãã§ãã äžèšã ãã ãšæå³ãåãããªãã®ã§ãç»åç·šéã¢ããªãäŸã«ããŸãã ç»åç·šéã¢ããªã§ Google Photoäžã®ç»åãç·šéããéããã°ã€ã³ã¢ã«ãŠã³ãã«ã¯ Google ã¢ã«ãŠã³ãã䜿ãããå ŽåãèããŠã¿ãŸãããã ã ãµãŒãããŒã㣠ã¢ããªâç»åç·šéã¢ã㪠HTTPãµãŒãã¹â Google Photo éå®çãªã¢ã¯ã»ã¹ïŒãŠãŒã¶ãŒãèš±ãããŠããæäœã¯ç»åã®ããŠã³ããŒãã®ã¿ã§ããã以å€ã®æäœãããããšããå Žåã¯ãHTTPãµãŒãã¹ã¯ã¢ã¯ã»ã¹ãæåŠããªããŠã¯ãªããªã èªå¯ ãã¬ãŒã ã¯ãŒã¯ ïŒã¢ã¯ã»ã¹ ããŒã¯ ã³çºå¹æ¹æ³ã®ã«ãŒã«ïŒå
šãŠã®ã¢ã¯ã»ã¹ã«å¯ŸããŠãèš±å¯ããŠããã¢ã¯ã»ã¹ãã©ãããã¢ã¯ã»ã¹ ããŒã¯ ã³ãçšããŠå€æãããïŒ äžèšã®äŸãèžãŸããŠOAuthã®ã ãµãŒãããŒã㣠ã¢ããªã±ãŒã·ã§ã³ã«ããHTTPãµãŒãã¹ãžã®éå®çãªã¢ã¯ã»ã¹ãå¯èœã«ããèªå¯ ãã¬ãŒã ã¯ãŒã¯ ããèšãæãããš ãç»åç·šéã¢ããªã«ãã Google Photoãžã®éå®çãªã¢ã¯ã»ã¹ãå¯èœã«ããããã®ãã¢ã¯ã»ã¹ ããŒã¯ ã³çºå¹æ¹æ³ã®ã«ãŒã«ãããšãªããŸãã å圹å²ã®é¢ä¿æ§ ååœ¹å² OAuthã®åºæ¬çãªåœ¹ã¯å€§äœä»¥äžã®4ã€ã«ãªããŸãã ãªãœãŒã¹ãªãŒã㌠ãªãœãŒã¹ã®ææè
ã ãµãŒãããŒã㣠ã¢ããªã«ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹æš©éãå§è²ããŠãããæ±ºããããæš©éã®ç¯å²å
ã§ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãå¯èœã«ãªããŸãã ã¯ã©ã€ã¢ã³ã ä¿è·ããããªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããšããã¢ããªã±ãŒã·ã§ã³ã ãªãœãŒã¹ãµãŒã㌠ããŒã¿ãæ©èœãæäŸãããµãŒãã¹ãäžè¬çã«ã¯WebAPIã®åœ¢ã§æäŸãããŠããã ãªãœãŒã¹ãµãŒããŒã¯ãªãœãŒã¹ãªãŒããŒãèš±å¯ããã¢ã¯ã»ã¹ãåãå
¥ããå¿
èŠãããããã®ææ®µãã¢ã¯ã»ã¹ ããŒã¯ ã³ãšãªããŸãã ã¢ã¯ã»ã¹ã®ãã³ã«ã¢ã¯ã»ã¹ ããŒã¯ ã³ã®ç¢ºèªãè¡ããèš±å¯ããŠããã¢ã¯ã»ã¹ãã©ããã倿ããã èªå¯ãµãŒã㌠èªå¯ãµãŒããŒã®æ©èœã¯ä»¥äžã®ïŒã€ã«ãªããŸã ãªãœãŒã¹ãªãŒããŒãèªèšŒãã(ãã°ã€ã³ã®èªèšŒã§ã¯ãªãããªãœãŒã¹ã®ãªãŒããŒã§ããããšã確ãããããã®èªèšŒ) ã¯ã©ã€ã¢ã³ãã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã«ã€ããŠãªãœãŒã¹ãªãŒããŒã®åæãåŸã ã¢ã¯ã»ã¹ ããŒã¯ ã³ãçºè¡ãã äžèšäŸã ãšããªãœãŒã¹ãªãŒããŒã Google ã¢ã«ãŠã³ãã«ãã°ã€ã³ãããç»åç·šéã¢ããªã Google Photoã«ã¢ã¯ã»ã¹ããããšãã«ã€ããŠåæãããšãã¯ã©ã¢ã³ãã«å¯ŸããŠã¢ã¯ã»ã¹ ããŒã¯ ã³ãçºè¡ããŸãã ããããã®é¢ä¿ ç¶ããŠããããã®é¢ä¿ã«ã€ããŠãã£ãããŸãšããŸãã â èªå¯ãµãŒãã«å¯ŸããŠããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹æš©ããèŠæ±ãã â¡ èªå¯ãµãŒããŒã¯ãã¯ã©ã€ã¢ã³ããžã®ã¢ã¯ã»ã¹æš©ã®å§è²ãã«ã€ããŠãªãœãŒã¹ãªãŒããŒã«ç¢ºèªãè¡ã ⢠ãªãœãŒã¹ãªãŒããŒã¯ã¢ã¯ã»ã¹æš©ã®å§è²ã«å¯ŸããŠåæããã ⣠èªå¯ãµãŒããŒã¯ã¢ã¯ã»ã¹æš©ãå§è²ããã蚌ã§ããã¢ã¯ã»ã¹ ããŒã¯ ã³ãã¯ã©ã€ã¢ã³ãã«çºè¡ãã †ã¯ã©ã€ã¢ã³ãã¯ã¢ã¯ã»ã¹ ããŒã¯ ã³ããã£ãŠãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã宿œãã çµããã« ä»åã¯OAuthã«ã€ããŠãåŠç¿ãè¡ã£ãå
容ãç°¡åã«æžãããŠããã ããŸããã ãŸã ãŸã çè§£ã§ããªãããšãããããããã®ã§åŒãç¶ãåŠç¿ãè¡ãªã£ãŠãããOAuthã«é¢ããèšäºã®äœæãè¡ãªã£ãŠãããã°ãªããšæããŸãã
ã¯ããã« ã¯ãããŸããŠã ã©ã¯ ã¹ã® iketomo ïŒãããšãïŒ ãšç³ããŸãã åŒç€Ÿã®ãªãã·ã§ã¢éçºæ ç¹ïŒ ã©ã¯ ã¹ ãããã ïŒã¯2014å¹Žã«æ°èŠã§ç«ã¡äžããã仿ã§7幎ç®ã«çªå
¥ããŠãŸãã ç§ã¯4幎ç®ïœ6幎ç®ãŸã§ã®3幎éãæ ç¹é·ãšã㊠ãããã çŸå°ã§åããããŠããã ããä»å¹Ž6æã«åž°ä»»ãããŠããã ããŸããã ç§èªèº« ãããã ã§ã¯è²ã
ãšæ¥œããããšããèŠåŽããããšããããŸããã ããã§ã®å®äœéšã»çµéšãèžãŸããã話ããããŠããã ããŸãã ãããèšäºãæŒãã°ãªãã·ã§ã¢éçºã«é¢ããèšäºã¯æ£èŠããããšæããŸãã ãããã£ã ããããèšäº ãšã ãããã çŸå°ã§ã®3幎éã® ãªã¬ãªã¬çµéš ãšãç
§ããåãããŠç޹ä»ãããŠããã ããŸãã ãããããªãã·ã§ã¢éçºã®çŸå®ã»çå®ãæãåã£ãŠããããã°ãšæããŸãã äžèšã®5ã€ã®èгç¹ããã玹ä»ãããŠããã ãæåŸã«ãŸãšããšããŠææ³ãå°ãè¿°ã¹ãããŠããã ããŸãã ã¯ããã« (1). ã³ã¹ã (2). æè¡ã»å質 (3). ã³ãã¥ãã±âã·ã§ã³ (4). IT人æ (5). é¢è·ã»å®çç ãããã çŸå°ã§ã®3幎éã®ãªã¬ãªã¬ãŸãšã ãã®èšäºã§ã¯ ãããã ïŒ ããŒããã³ ïŒã§ã®åŒç€Ÿã§ã®çµéšã䞻軞ãšãªã£ãŠãããä»ã®åœã®äºãšã¯äºæ
ãç°ãªãç¹ããäž»èŠ³ãæ··ãã£ãŠããç¹ããããŸãã®ã§ãäºæ¿ãã ããã ãããªã話ãè±ç·ããŸãã ãããã 人 ã«ããããšãããšèªå·±ç޹ä»ããŠããããããšãã£ãŠåŒã¶äººãå€ãã£ãã§ãã ãªãããšãããš ãããã ã§ã¯ å³ã®çŽ ïŒ ãã ã®ããšïŒ ãæããæ ¹ä»ããŠããŠãããããšãã®æ¹ãåŒã³ãããã®ã§ããããã«æ°ã¥ãã®ã«3幎ããããŸããã ã§ã¯äž»è»žã®è©±ãžãšç§»ããããŠããã ããŸãã (1). ã³ã¹ã â ããããèšäº äžè¬çã«ãªãã·ã§ã¢éçºã§ã¯ ã³ã¹ããå®äŸ¡ ã ãšãããŠããŸãã çŸåšã® ãããã ã«ãããŠãIT人æã¯å任絊ã§èšãã°æ¥æ¬ã® 1/4 ïœ 1/3 ãšãã£ããšããã§ããããã ãã ãææãéã¿ããšããã®ãŸãŸäººä»¶è²»ããã®ãŸãŸçŽçµããŠã³ã¹ãã 1/4 ïœ 1/3ãšãªããŸããã ITã«ãããŠãæ¥æ¬ãšåãææãã§ãããã§ã¯ãªãã®ã§ãäžèšã®çµŠäžå·®ããã®ãŸãŸåæ ãããããšã¯ãªãã§ãã âãªã¬ãªã¬çµéš åŒç€Ÿã§ã3幎åã¯æ¥æ¬ã® 1/4 ïœ 1/5 äœã®çµŠäžã§ããã ããåŸè¿°ããŸããã ãããã ã«ãããŠIT人æã¯å£²ãæåžå Žã§ããã幎ã
絊äžã¢ããããŠããŸãã çŸåšã§ã¯æ¥æ¬ã® 1/4 ïœ 1/3 äœãŸã§äžãããŸããã ã§ã¯ã³ã¹ãã¯ã©ãã§ãããã åŒç€Ÿã§ã¯ææããèšç®ããéçºã³ã¹ããæ¥æ¬ãšæ¯ã¹ããšãæ¥æ¬ã® 1/1.5 ïœ 1/2 ãšãªã£ãŠãããŸãã çŸç¶ã«ãã㊠ãããã ã®ãªãã·ã§ã¢éçºãããã°ã³ã¹ãã¡ãªããã¯åºããšç¢ºå®ã«èšããŸãã ãã ãã絊äžãäžãã£ãŠããã®ã§ãæ°å¹ŽåŸã«ã³ã¹ãã¡ãªãããã§ããã©ããã¯ããªãã·ã§ã¢éçºæ ç¹ã®ææãšå質ã«ãããšããã倧ããªãŠãšã€ããå ãããšèšããŸãã 絊äžã®å¢å ãšå
±ã«ãææã倧ããããªããšãã³ã¹ãã¡ãªããã¯ã©ãã©ãäžãã£ãŠãããŸãã ãªã®ã§ 絊äžã¢ããã«è² ããªãæé·ãç¬èªæ§ ãå¿
é ã ãšèšããã§ãããã åŒç€Ÿã«ãããŠã¯ ã©ã¯ ã¹ã® ã¯ã©ãŠã ãµãŒãã¹ã®éçºã«ãããŠãæé·ãšç¬èªæ§ã远æ±ããäºãšããŸããã åæãéæã§ ãããã ã®ææãç®æãã¹ãæ¹åïŒ ãããã ã«ãããŠã® Saas éçºNo1ïŒããããŠæ¬ç€Ÿã®æ¥çžŸã宿çã«å ±åã»å
±æãã¡ã³ããŒãšäŒç€Ÿã®æé·ãæããŠãããããã«ããŸããã æè¿ã§ã¯ã³ã¹ãã¡ãªãããšãããšãããè±ãã ã©ã¯ ã¹ã® ã¯ã©ãŠã ãµãŒãã¹æ¡å€§ããŠããäžã§çŽç²ã«çµ¶å¯Ÿå¿
èŠãªéçºããŒã ãšããäœçœ®ã¥ãã«å€ããã€ã€ãããŸãã â»æ®æ®µã¯éœæ°ã§ããä»äºäžã¯çå£ (2). æè¡ã»å質 â ããããèšäº äžè¬çã«ã¯ãæ¥æ¬ãããªãã·ã§ã¢éçºæ ç¹ã®æè¡ã»å質ã¯äœããšèšãããŠããŸãã ãã ã ãããã ã® ITæè¡ è
ã¯ä»ã®æ±å ã¢ãžã¢è«žåœ ããæè¡åãé«ã ãšãããŠããŸãã ãããã ã§ã¯ãã¹ããèŠæãšãããšã³ãžãã¢ããããæ¡ä»¶ã«ãã£ãŠã¯å質ãé«ãã£ãããäœããªãæããããŸãã QC(ãã¹ã¿ãŒ)ãå®è£
ãè¡ãã¡ã³ããŒãšã¯å¥ã« ã¢ãµã€ ã³ããããšããããŸãã âãªã¬ãªã¬çµéš åŒç€Ÿã®ãªãã·ã§ã¢éçºç«ã¡äžãã®åæã§ã¯ãæè¡ã»å質ãäœããšæããããšãå€ããããŸããã ãã幎æ°ãéã ãããã ã® éçºã¡ã³ããŒãæé·ããããšã§ãæ¥æ¬ã®æè¡ã»å質ã«è¿ã¥ããŠããããšãã§ããŸããã æè¿ã§ã¯æè¡ã»åè³ªãæ¥æ¬ãäžåã£ãŠããã±ãŒã¹ãæ£èŠããã äžéšã®ã¡ã³ããŒã¯æ¥æ¬ã¡ã³ããŒãããã³ãŒãã»ä»æ§ã«è©³ãããªã£ãŠããŠããŸãã ãããã 人 ã® ITæè¡ è
ã®ã¬ãã«ãäœããïŒãšèãããã°ãå人çã«ããã§ã¯ãªããšèããŠããŸãã ã§ã¯äœã®å·®ãããããšèšããš ãæ¥æ¬ãšæã£ãŠããã¹ãã«ã»ãããéãã ãæ¥æ¬ã®ããã©ã³ã¡ã³ããŒãè¿ãã«å±
ãŠããã«èãã¢ã ãã€ã¹ ãè²°ããšããããšãã§ããªãã ãšãã2ç¹ã®å·®ããããŸãã ãæ¥æ¬ãšæã£ãŠããã¹ãã«ã»ãããéãã æ¥æ¬äººã¯å質ã®éšåã§ã¯åªäœæ§ãæã£ãŠããŸãã äžæ¹ã§ ãããã 人 ã¯æ°ããæè¡ãããã«åžåãããšãã£ãç¹æ§ããããŸãã ããããã«è¯ããšããããããã©ã¡ããåªããŠãããšããåªå£ã¯ãªããšæããŠããŸãã æ¥æ¬ã§ã¯æ°åã¯ç ä¿®ãæ°ãæããåŸã«ãããããéçºã«å
¥ã£ããããããšããããŸãã ãããã ã§ã¯æ°åãå
¥ç€ŸåŸã«çŽãã«éçºã«å
¥ã£ãп޻èºããããšãã§ããŸãã ã¹ãã«ã»ããã¯ç°å¢ãæŽãã°æ¥æ¬ãšåæ§ã®ã¹ãã«ã»ãããåžåããŸããè¥ããã°è¥ãã»ã©åžåã®é床ãéãã®ã¯èªæã®çã§ãããã ãæ¥æ¬ã®ããã©ã³ã¡ã³ããŒãè¿ãã«å±
ãŠããã«èãã¢ã ãã€ã¹ ãè²°ããšããããšãã§ããªãã ããã¯æ¥æ¬ã§ãéçºã¡ã³ããŒãé¢ããŠããããã³ãã¥ãã±ãŒã·ã§ã³ãäžæããããªããšåæ§ã®ããšãçºçãããšæããŸãã èãã人ãè¿ãã«ããŠèªèéœéœ¬ããªãããŠéçºã§ããããããè¯ãéçºç°å¢ã«ããã倧ãããŠãšã€ããå ããéšåãšèããŠããŸãã èšèã»æåãéããè·é¢ãé¢ããŠããç°åœéã§ã¯ãããã£ãè¯ãç°å¢ãä¿ã¡ã¥ãããã¡ãªããããããŸãã ãããã£ãæ¥æ¬ãšã®å·®ã¯ãæ¥æ¬åŽã®éçºã¡ã³ããŒãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã®é¢šéããè¯ããããããªãã·ã§ã¢éçºæ ç¹ã«ããã©ã³ã¡ã³ããŒïŒè©²åœäŒç€Ÿã§ã®åšç±ã3幎以äžïŒãå¢ããŠããã°åŸã
ã«ç°å¢ã®å·®ãçž®ããããšãã§ããŸãã ãŸãæ¥æ¬åããããšãã§ããŸãããªããªã ãããã 人 ã¯åäžå¿ã匷ããæ¥æ¬ããªã¹ãã¯ãããŠããæ¥æ¬ããåŠãŒããšããå§¿å¢ã匷ãããã§ãã æ¥æ¬â ãããã ãŸã㯠ãããã âæ¥æ¬ãžåºåŒµããããšã§æ¥æ¬é¢šã®ããæ¹ã»æåãåŠãã§ãããããšã广ããããŸãã åŒç€Ÿã§ã¯æ¹åã» PDCA ã»æ¯ãè¿ããç¹°ãè¿ãè¡ãããšã§æ¬¡ç¬¬ã«ã¡ã³ããŒã¯èªçºçã«èããªããèªå·±æé·ããŠããçµç¹ãžãšå€è²ããŠãããŸããã â»ã³ãŒãã¬ãã¥ãŒææã®æ¯ãè¿ã (3). ã³ãã¥ãã±âã·ã§ã³ â ããããèšäº ãªãã·ã§ã¢éçºã§ã¯ã©ããã£ãã³ãã¥ãã±ãŒã·ã§ã³ãããã®ã§ãããã ã³ãã¥ãã±ãŒã·ã§ã³ãããã«ã¯ä»¥äžã®æ¹æ³ããããŸãã ãã³ãã¥ãã±ãŒã¿ãŒïŒéèš³å
Œç¿»èš³ïŒãä»ãã ã BSE (ããªããžSE)ãä»ãã ãè±èªã§ãããšãããã ãªãœãŒã¹ãšã¹ãã«ã«ããããããã®æ¹æ³ãéžæããããšã«ãªããŸãã ã³ãã¥ãã±ãŒã¿ãŒã§ãã§ããã 瀟å
ã®è±èªã¹ãã«ãé«ããã°è±èªã§ããã®ãè¯ãã åªç§ãª BSE ãæ¡çšã§ããã®ã§ããã° BSE ã§ãè¯ãã ãããã ã¯ èŠªæ¥ ãªäººãå€ãæ¥æ¬èªãã§ããã³ãã¥ãã±ãŒã¿ãŒã BSE ãæ°å€ããããšãã£ãç¹åŸŽããããŸãã æã«èšèã»æåã®éããããæã«èªèéœéœ¬ãçºçããããšããããæã£ãããã«æç€ºãéããªãã£ãããæã£ãææãã§ãªãããšããããŸãã âãªã¬ãªã¬çµéš åŒç€Ÿã§ã¯ ãã³ãã¥ãã±ãŒã¿ãŒãä»ãã ãéžæããŸããã èšèšæžãªã©ã®ããã¥ã¡ã³ãã¯æ¥æ¬èªââ ãããã èª ã«ç¿»èš³ããŸãã åçŽãªè³ªåã¯è±èªã§è¡ã£ãŠããŸãã é£ãã質åã¯ããã£ããäžã§ç¿»èš³ããŠããããã MTG ãéããŠã³ãã¥ãã±ãŒã¿ãŒã«éèš³ããŠããããŸãã ã§ãçµæãã©ãã ã£ãããšèšããããšãçŸåšã§ã¯å¹žããªããšã«ã³ãã¥ãã±ãŒã·ã§ã³ã«ããèªèéœéœ¬ã¯æ®ã©çºçããŠããŸããã ãããã«è³ããŸã§ã¯ãè²ã
ãªéå£ããã察å¿ããŠããŸããã âã³ãŒãã£ã³ã°ãªã©ã®å°éçãªé£ããå
容ã«ãªããšéèš³ã®å質ãèœã¡ãã ããã«å¯ŸããŠã¯é±ïŒã§ITå匷äŒãããŠãéèš³ã BSE ã«è¿ãç¶æ
ã«ãªã£ãŠããããŸããã WebãµãŒããšã¯ãªãããïŒãšãããšããããããã°ã©ãã³ã°æŒç¿ãŸã§è¡ããç¥èãèªåŠã§ãããšããŸã§æé·ããŠããããŸããã ã³ãã¥ãã±ãŒã¿ãŒã¯æ²¢å±±ããŠããITã³ãã¥ãã±ãŒã¿ãŒã¯å€ãã¯ããªããšããèãã§èªãè²ãŠããšããæ¹éã§ãããŸããã âããããªãæã§ã質åãããã«é²ããåŸã«èªèéœéœ¬ãçºçããã ããã«ã¯2ã€ã®èŠå ããããŸãã ããªãã¹ãæ©ãããããšãè¯ããšãã ãããã æåã éçºã«ãããŠã¯èªèéœéœ¬ãäžçªé§ç®ã ïŒ å ±é£çž ã倧äºã ïŒãšããããšãç¹°ãè¿ãäŒãã質åæåãéžæããŸããã ãã1ã€ã¯ãæ¥æ¬ãšã®äžäžé¢ä¿ããå§çž®ããŠè³ªåã§ããªããªã£ãŠããŸããããšã§ãã æ¥æ¬ã¡ã³ããŒã ãããã 人 ãè€ãããã質åã«ã¯å³çããŠãããããšã§ã質åããããç¶æ³ãäœããåŸã
ã«è§£æ±ºããŠãããŸããã â倧äºãªå
容ãäŒãã£ãŠããªãã éèŠãªäºãšèªèãããã€ã³ãã«æåéã®å·®ããããæ¥æ¬ãéèŠèŠããããšãèŠèœãšãããŠããŠãéã«éèŠèŠããªããšããã«éãã眮ãããšããããŸãã ç§ã¯é£ãã話ãããæã¯ãå
ã«ã³ãã¥ãã±ãŒã¿ãŒã«ãã£ãããšèª¬æããŠçè§£ããŠããããå®éã®éèš³ã®æã«èœã¡çããŠéèš³ããŠãããããã«ããŸãããç°¡æã§ãããã®ã§å£é ã ãã§ã¯ãªãã¢ãŠããããããããšããã«éèš³ã®é£æåºŠãäžããç解床ãäžãããŸãã éèš³ã¯ãªã¢ã«ã¿ã€ã ã§é£ããäœæ¥ã§ãããããªãå°éçãªé£ãã話ãããŠãå£é ã§è©±ããŠãã¯ããããéèš³ããŠãã ãããšèšã£ãŠãããªããªãã§ãããã®ã§ã¯ãããŸããã ãŸãã¯å
容ãçè§£ãããšããæéã§ãã£ããçè§£ããŠãããããããããŒã¹ã«éèš³ããŠãããã°ãç§ãã¡ã®æå³ãå¹çããäŒããŠãããããšãã§ããŸãã â»ããŒã ã¯ãŒã¯ãšã³ãã¥ãã±ãŒã·ã§ã³ã倧å (4). IT人æ âããããèšäº ãªãã·ã§ã¢éçºãšèšã£ãŠããããããªåœããããŸãã ãããã ã¯ä»ã®æ±åã¢ãžã¢ããåªç§ãªIT人æãè±å¯ã«æã£ãŠãããšèšãããŠããŸãã è¥ãåªç§ãªäººæãå®ãã³ã¹ãã§ç²åŸããããšãã§ãããšããã®ãé説ã§ãã ããæ¥ç³»ãæ¬§ç±³äŒæ¥ã®åç»ãå€ãè¿å¹Žã§ã¯ ãéèŠ ïŒ äŸçµŠã ã§å£²ãæåžå Žãšãªã£ãŠãã 幎ã
絊äžããŒã¹ãäžãã£ãŠããŠããŸãã âãªã¬ãªã¬çµéš åªç§ãªIT人æãä»ã®æ±åã¢ãžã¢ã®åœããå€ããšããã®ã¯äºå®ã§ãã ãŸãæ¥æ¬ããIT人æãç²åŸãããããåãããã°ãã®éãã§ãã ã§ã¯èªç€Ÿãæ±ããIT人æãç°¡æã«ç²åŸã§ããããšèšãããã°ããããªããšã¯ãªãã§ãã äžèšããŸããããéèŠ ïŒ äŸçµŠã ãšãªã£ãŠããäžã§ã¯å瀟ã§åµæå·¥å€«ãå¿
èŠã§ãã ãã ãã èŠªæ¥ ã®åœã§ãããæ¥æ¬äŒæ¥ã«å
¥ãããïŒæ¥æ¬äŒæ¥ã§åŠã³ããïŒãšæãIT人æãæ°å€ãããŸãã ãããã£ã人æã®äžããèªç€Ÿã«åã£ã人æãç²åŸããããšã«ãªããŸãã ã¹ãã«ãæ§æ Œã«ãã ããããªããã°ãç°¡æã«ç²åŸããããšãã§ããŸãã åŒç€Ÿã§ã¯æ±ããéšåãå€ããè²ã
ãªåªåããã€ã€ããªããšãç²åŸã§ããŠãããšãã£ããšããã§ãã ãè¯ã人æãžã®ãªãã¡ãŒã¯åœæ¥äžã«åºããã Facebook ã§é
åã¢ããŒã«ããéå»ã®é¢æ¥è
ã«ãå床é£çµ¡ãã ãªãã¡ã©ã«æ¡çš ã®ãã£ã³ããŒã³ãçãã§ããããšã¯ãªãã§ããã©ã€ããŸããã â»è¡šåœ°ããããšã§ã¢ãããŒã·ã§ã³ã¢ãã (5). é¢è·ã»å®çç âããããèšäº ãããã ã«ãããŠã¯ æ¥æ¬ãšæ¯ã¹ãŠIT人æã® é¢è·ç ã¯é«ããå®ççã¯äœã ãšãããŠããŸãã ãžã§ã ãããã³ã° ãåœããåã§ãæ°åã¯2幎äœã§è»¢è·ããããšãæ®éãšãããŠããŸãã ãã£ããè²ãŠãã¡ã³ããŒãããããšåæ¥æ¬äŒæ¥ã®é ãæ©ãŸããŠããŸãã é¢è·ãå€ããšãæãç«ã€çµç¹ããŸãã¯é¢è·ããªãçµç¹ãç®æãããšã«ãªããŸãã âãªã¬ãªã¬çµéš åŒç€Ÿã§ãäŸã«ãããã2幎ã3幎å㯠é¢è·ç ãé«ãã£ãã§ãããæè¿ã§ã¯ããªãäœããªã£ãŠããŸããã é¢è·ç ãé«ããªããšãäŒç€ŸãšããŠã®ããŠããŠã®èç©ãã§ãããçµç¹ãšããŠã®æé·ã¯æããŸããŸããã é¢è·ç ãé«ããå®ççãäœãããšã¯ãã©ã®äŒç€Ÿã§ã倧ããªèª²é¡ ã§ãã åŒç€Ÿã§ã¯æåã®3幎éã¯ã¹ã¿ãŒãã¢ãããšããããšããããããçš é¢è·ç ã¯é«ããããŸããã§ããã ãã®åŸãåŒç€Ÿã§ã®çµéšãããŒã¹ã«ä»ç€Ÿã«è»¢è·ããããšãããã é¢è·ç ãé«ããªããŸããã ãããŠçŸåš é¢è·ç ã¯äœããªã£ãŠããŸãã ã§ã¯ãäœãå€ãã£ãã®ãïŒå€ããã®ãïŒ åŒç€Ÿã§ã¯ ãäŒç€Ÿã®ç¬èªæ§ãšå±
å¿å°ã®è¯ãããšãããšããã匷ãä»ç€Ÿãšã®å·®å¥åãå³ããŸããã ãèªçºçãªçµç¹ã èšãããããšãããã ãã§ã¯ãªãèªçºçã«åãã ãããããŠã³ ã§ã¯ãªã ããã ã¢ãã ã®è¡åãããè©äŸ¡ããã ãæ¹åã» PDCA ã ã®åŸ¹åºãæã¯æåŠæã匷ãã£ãã§ãããç¹°ãè¿ã宿œããããšã§ããŒã ãšããŠã®æé·ãæããŠãããä»ã§ã¯ãããæ®éã«ãªãäœãèšãããšãæ¯ãè¿ãïŒïŒŽïŒ§ãè¡ã£ãŠãããŸãã ããšã«ããæ¥œããã ãç®æããäœã楜ããããèªåãã¡ã§è°è«ãããå®è¡ã»äž»å¬ããŠãããããã«ããŸããã ã絊äžã¢ãããããããšã§ããçšåºŠè»¢è·ãé²ãããšã¯ã§ããŸãããããã¯é倩äºã§éçããããŸãã 絊äžãæ±ããã¡ã³ããŒã¯çµŠäžã¢ãããããšããŠããããã«é«ã絊äžãç®æããŠè»¢è·ããŠããŸããŸãã ãããã£ãã¡ã³ããŒã¯ãã€ãå»ãäºã«ãªãã®ã§åŒãçããªãæ¹ãè¯ãã§ãããã â»ã³ã¢ããªã¥ãŒã®æµžéã§ç€Ÿå
æåã®éžæ ãããã çŸå°ã§ã®3幎éã®ãªã¬ãªã¬ãŸãšã 仿åã»ä»èšèªãšããããšããããããããèŠåŽããåŽé¢ããããŸããã ãããã€ã§ã ãããã 人 ã®åªãããšæãã ãç§ãæ¯ããŠãããŸããã çµæãšããŠã¯ç§ãæ³åããŠãã以äžã«ã ãããã 人 ã®åäžå¿ã¯åŒ·ãã倧ããæé·ããŠãã ãä»ã§ã¯æã£ã以äžã®ææãåºããèªãããçµç¹ãšå€è²ããããšãã§ããŸããã å人çã«ã¯ 宿ã«ã³ã¹ãã¡ãªããã ããèŠãŠãªãã·ã§ã¢éçºããã£ãŠã¿ãããšã¯ãã¹ã¹ã¡ã§ããŸããã ã³ã¹ãã¡ãªããã¯äœãããªããã°é¢šåããŠããããã§ãã 圌ããšäžå¿åäœãšãªã£ãŠæé·ããããšã決å¿ããŠãã ããã ãã®æ°æã¡ãäŒãããé©åãªä»çµã¿ãã¢ã ãã€ã¹ ãããã°å¿
ãæé·ããŠã³ã¹ãã¡ãªãããè¶
ãã æåŸ
以äžã®æé·ãšææãåºããŠãããŸãã äŒç€Ÿç¬èªã®æŠç¥ã§ç€Ÿå¡ã®å®ççãé«ããŠãã ããã é¢è·ç ãæããããšãã§ãããªããããšã¯æé·ãåŸ
ã€ã®ã¿ã§ãã äžèšã®ã玹ä»ããå
容ãçæ§ã®ãªãã·ã§ã¢éçºãå§ãããã£ãããã課é¡ãæžå¿µã®è§£æ±ºã®ç³žå£ã«ãªãã°å¹žãã§ãã é·æã«ãªããŸãããæåŸãŸã§èªãã§ãã ãã£ãæ¹ããããšãããããŸãïŒ â»èªçæ¥ã¯ã¡ãã£ãšãã瀟å
ã㌠ãã£ãŒ ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
ã¯ããã« ããã«ã¡ã¯ãitoken1013ã§ããæãæ¯æ¥ãç¶ããŸããïŒ ä»å玹ä»ããã®ã¯ãå®åã§ãå人éçºã§ããªã¹ã¹ã¡ã®HerokuïŒããã¯ïŒã®åºç€çãªäœ¿ãæ¹ã«ãªããŸãã Herokuã䜿ãããšã§ãéçºããWEBã¢ããªã±ãŒã·ã§ã³ãæè»œã«å
¬éããããšãã§ããŸãã ãã®èšäºã§ã¯Herokuã®æŠèŠã説æããåŸãç°¡åãªå
¬éïŒãããã€ïŒã®æé ã玹ä»ããããšã§ãåå¿è
ã§ãHerokuã䜿ã£ãéçºè
ã«å
¥éã§ããå
容ãšãªã£ãŠããŸãã ä»åã®èšäºãåèã«ãã¹ãã€ããŒã äžã® ã¹ãã«ã¢ãã ãé²ããŠããã ããã°å¹žãã§ãïŒ ã¯ããã« Herokuã®æŠèŠ ãŸããPaaSãšã¯ ããã§ã¯ãHerokuãšã¯ 倿§ãªèšèªã»FWããµããŒãããŠãã ãã©ã³ã«ãã£ãŠã¯ç¡æã§äœ¿ãã Gitã³ãã³ãã§æäœã§ãã æ¡åŒµæ©èœãéåžžã«å€ã Herokuã䜿ã£ãŠã¿ã Herokuã®ã¢ã«ãŠã³ããç»é²ãã Heroku CLIãã€ã³ã¹ããŒã«ãã Windows ã®å Žå Mac ã®å Žå Herokuã«ãã°ã€ã³ãã ãããã€ãè¡ã ã¢ããªã±ãŒã·ã§ã³ã®ååŸ ãããã€å®æœ åäœç¢ºèª ãããã« Herokuã®æŠèŠ ãŸããPaaSãšã¯ ã¯ã©ãŠã ãµãŒãã¹ã¯å€§ãã SaaS ãPaaSãIaaSã®3çš®é¡ã«å€§å¥ãããŸãããHerokuã¯ãã®ãã¡ãPaaSïŒPlatform as a ServiceïŒã«åé¡ãããŸãã PaaSãšã¯ãéçºããWEBã¢ããªã±ãŒã·ã§ã³ãéçºã»å®è¡ããããã®åºç€ïŒãã©ãããã©ãŒã ïŒãæäŸãããµãŒãã¹ãæããŸãã PaaSãå©çšããããšã§ããããŸã§å¿
èŠã ã£ããµãŒããŒã®è³Œå
¥ãOSãDBãWEBãµãŒããªã©ã® ããã«ãŠã§ã¢ é¡ã®ã»ããã¢ãããäžèŠãšãªããéçºè
ã¯ã€ã³ã¿ãŒãããè¶ãã§PaaSãæäœããã ãã§ãæè»œã«WEBã¢ããªã±ãŒã·ã§ã³ã® ãã¹ãã£ã³ã° ãã§ããããã«ãªããŸããã ãŸãç»é¢ã ã³ãã³ãã©ã€ã³ äžã§ã¹ã±ãŒã«ã¢ããïŒã¢ãŠããæè»œã«è¡ãããšãã§ãããã®ç¹ãWEBã¢ããªã±ãŒã·ã§ã³ã®å
¬éã®ããŒãã«ãäžããäžå ã§ãã ãã®ããã«PaaSãæ®åããããšã§ãéçºè
ã¯æ¬è³ªçãªéçºäœæ¥ã«éäžããããšãå¯èœã«ãªããŸããã ããã§ã¯ãHerokuãšã¯ äžèšã§èª¬æããŸããPaaSã§ããHerokuã䜿ãããšã§ãäœæããã¢ããªã±ãŒã·ã§ã³ãæè»œã«å
¬éããããšãå¯èœãšãªããŸãã ä»ã®PaaSãšæ¯èŒããéã®Herokuã®ç¹åŸŽã«ã¯ã以äžã®ç¹ãæããããŸãã 倿§ãªèšèªã»FWããµããŒãããŠãã å
ã
㯠Ruby åãã®PaaSã ã£ãHerokuã§ãããçŸåšã§ã¯åœå
ã§æ±ãããŠããäž»èŠèšèªãšFWïŒä»¥äžïŒãã»ãŒã«ããŒããŠããŸãã ãã®å¯Ÿå¿èšèªã®åºãããPaaSã®äžã§ãHerokuãå€ã掻çšãããäžå ã§ãããã Ruby ïŒ Rails å«ãïŒ PHP Java Node.js Python Go Scala ïŒPlayå«ãïŒ Clojure ãŸãå
¬åŒãµããŒããããŠããäžèšä»¥å€ã«ããbuildpackãšåŒã°ããæ©èœãå©çšããããšã§ãåžæã®èšèªã»FWãHerokuäžã§å©çšããããšãã§ããŸãã jp.heroku.com ãã©ã³ã«ãã£ãŠã¯ ç¡æ ã§äœ¿ãã Herokuãæ®åããæå€§ã®èŠå ãšãã£ãŠãéèšã§ã¯ãªãã®ããå©çšãã©ã³ã§ãã Herokuã«ã¯æ°çš®é¡ã®å©çšãã©ã³ããããŸããã Freeãã©ã³ãå©çšã®å Žåãç¡æã§Herokuãå©çšããããšãã§ããŸãã ãã¡ããç¡æã§ãããæ
ã«å¶çŽã¯ååšããŸãããå人ç㪠ã¹ãã«ã¢ãã ãç®çãšããå©çšã«ããã£ãŠã¯Freeãã©ã³ã§å·®ãæ¯ããªãã¯ãã§ãã ïŒå°ãªããšãç§ããã©ã€ããŒãã§å人å©çšããŠããäžã§ã¯ãäžåºŠããã©ã³å€æŽã¯çºçããŠããŸããïŒ åå
¥ãç®çã«ã¢ããªã±ãŒã·ã§ã³ãå
¬éããå Žåã§ã¯Freeãã©ã³ã§ã¯èããããªãããšæããŸããããããŸã§ ã¹ãã«ã¢ãã ã®ããã®å©çšã§ããã°ãHerokuãç¡ææŽ»çšããããšãå¯èœã§ãã ãã ããä»åŸãã©ã³ã®èŠçŽããçºçããå¯èœæ§ã¯ãããŸãã®ã§ããå©çšã®éã¯äºåã«ä»¥äžã®å
¬åŒããŒãžãåç
§ããã ããã°ãšæããŸãã jp.heroku.com Gitã³ãã³ãã§æäœã§ãã Herokuã§ã¯ã¢ããªã±ãŒã·ã§ã³ããããã€ããæäœãšããŠããšã³ãžãã¢ãªãã銎æã¿ã®Gitã³ãã³ããå©çšããŸãã ãã®ãããHerokuãžã®ãããã€äœæ¥ã®ããã«èŠããããšã¯æå°éã§æžã¿ãŸãã Herokuããªã¢ãŒ ããªããž ããªãšã㊠git push ããã€ã¡ãŒãžã§ãã®ã§ãæ®æ®µãããšã³ãžãã¢ã®ææ
£ããæäœã§æè»œã«ã¢ããªã±ãŒã·ã§ã³ãå
¬éããããšãã§ããŸãã ãªããåŸç¶ã®æé ã§ã¯Gitã䜿ã£ãæäœãå¿
èŠãšãªããŸãã Gitãæªã€ã³ã¹ããŒã«ã®æ¹ãGitã³ãã³ãã®å©çšçµéšãæµ
ãæ¹ã¯ããŸãã¯ãã¡ããåç
§ããã ããã°ãšæããŸãã tech-blog.rakus.co.jp æ¡åŒµæ©èœ ãéåžžã«å€ã ä»åã¯ç޹ä»ããŸããããHerokuã«ã¯æ°å€ãã® æ¡åŒµæ©èœ ïŒã¢ããªã³ïŒãååšãããèªåã§å®è£
ããã«äŸ¿å©ãªæ©èœãå©çšããããšãã§ããŸãã äžã«ã¯ç¡æã®ãã©ã³ãæäŸããŠããæ©èœãããã代衚ç㪠æ¡åŒµæ©èœ ã以äžã«ç޹ä»ããŠãããŸãã èå³ã®ããæ¹ã¯ããã²ãèªèº«ã®éçºã§æŽ»çšããŠã¿ãŠãã ããã SendGridïŒã¡ãŒã«é
ä¿¡ PaperTrailïŒãã°ç®¡ç New Relic APM ïŒç£èŠ Herokuã䜿ã£ãŠã¿ã Herokuã®ã¢ã«ãŠã³ããç»é²ãã ããã§ã¯ãããããHerokuãå©çšããããã®æäœãç°¡åã«ç޹ä»ããŠãããŸãã ãŸãã¯Herokuã®ã¢ã«ãŠã³ããååŸããŸãããã 以äžã®ç»é¢ããå¿
èŠäºé
ãå
¥åã®äžããç¡æã¢ã«ãŠã³ãäœæããã¯ãªãã¯ããŠãã ããã signup.heroku.com äžèšã§å
¥åããã¡ãŒã«ã¢ãã¬ã¹ã«èªèšŒã¡ãŒã«ãå±ããŸãã®ã§ãã¡ãŒã«å
ã®ãªã³ã¯ãã¯ãªãã¯ããŠã¢ã«ãŠã³ããæå¹åããŸãã æåŸã«ãã¹ã¯ãŒãèšå®ãæ±ããããŸãã®ã§ãä»»æã®ãã¹ã¯ãŒããèšå®ããŠãã ããã ãããŸã§å®äºãã以äžã®ç»é¢ã衚瀺ãããã°ã¢ã«ãŠã³ãç»é²ã®äœæ¥ã¯å®äºã§ãã Heroku CLI ãã€ã³ã¹ããŒã«ãã æ¬¡ã«Herokuã ã³ãã³ãã©ã€ã³ äžããæäœããããã®ããŒã«ãã€ã³ã¹ããŒã«ããŸãã åŸç¶ã®ãããã€äœæ¥ã«ã¯ããã¡ãã®ããŒã«ãå¿
èŠãšãªããŸãã 以äžã®ããŒãžã«ã¢ã¯ã»ã¹ãããå©çšã®OSã«å¿ããæé ã§ã€ã³ã¹ããŒã«ãè¡ã£ãŠãããŸãã devcenter.heroku.com Windows ã®å Žå Windows çšã® ã€ã³ã¹ããŒã© ãæäŸãããŠããŸãã®ã§ãããŠã³ããŒãã®äžã ã€ã³ã¹ããŒã© ãèµ·åããŠãã ããã ä»åã¯å
šãŠããã©ã«ãã®ç¶æ
ã§é²ãã§ããã ãããInstallããã¿ã³ãã¯ãªãã¯ããã ããã°åé¡ãããŸããã Mac ã®å Žå Mac ã§ã¯ ã€ã³ã¹ããŒã© ãçšãããäžèšããŒãžã«ããã³ãã³ããã¿ãŒããã«äžã§å
¥åããŠãã ããã â»ããã±ãŒãžãããŒãžã£ã§ãã Homebrew ãã€ã³ã¹ããŒã«æžã§ããå¿
èŠããããŸãã brew tap heroku/brew && brew install heroku ãããŸã§å®äºããŸãããã CLI ãèµ·åããŠã¿ãŸãããã Windows ã§ããã° ã³ãã³ãããã³ãã ãGit Bash ã Mac ã§ããã°ã¿ãŒããã«ãèµ·åãã以äžã®ã³ãã³ããå
¥åããŠãã ããã ç¡äºã«ããŒãžã§ã³æ
å ±ã衚瀺ãããã°ã CLI ã®ã€ã³ã¹ããŒã«ã¯å®äºã§ãã $ heroku --version heroku/7.42.6 win32-x64 node-v12.16.2 Herokuã«ãã°ã€ã³ãã å
ã»ã©äœæããã¢ã«ãŠã³ãã䜿ãã CLI äžã§Herokuã«ãã°ã€ã³ããŸãã heroku login -i ãå
¥åãããš ã³ãã³ãã©ã€ã³ äžã§ãã°ã€ã³ãæ±ããããŸãã®ã§ãã¢ã«ãŠã³ãäœææã®ã¡ãŒã«ã¢ãã¬ã¹ãšãã¹ã¯ãŒããå
¥åããŠãã ããã â» iãªãã·ã§ã³ ãä»ããªãå Žåããã©ãŠã¶äžã«Herokuã®ãã°ã€ã³ç»é¢ãç«ã¡äžãããŸãããåæ§ã«ãã°ã€ã³èªèšŒãé²ããã°åé¡ãããŸããã $ heroku login -i heroku: Enter your login credentials Email: ã¡ãŒã«ã¢ãã¬ã¹ Password: ãã¹ã¯ãŒã Logged in as ã¡ãŒã«ã¢ãã¬ã¹ ãããã€ãè¡ã ããããã¯ãå®éã«Herokuäžã«ã¢ããªã±ãŒã·ã§ã³ããããã€ããŠã¿ãŸãããã GitHub äžã®ãµã³ãã«ããã°ã©ã ã䜿ãããããã€ã®æé ã玹ä»ããŠãããŸãã ç°¡åãªãããã€ã®ã€ã¡ãŒãžã瀺ããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ååŸ ãŸãã¯ä»»æã®å Žæã« ãã£ã¬ã¯ã ãªãçšæããŸãããã ä»åã¯ãrakusããšãã ãã£ã¬ã¯ã ãªé
äžã§äœæ¥ãé²ããŠãããŸãã $ mkdir rakus rakus ãã£ã¬ã¯ã ãªãžç§»ååŸã次ã«ãããã€çšã®ã¢ããªã±ãŒã·ã§ã³ã GitHub ããååŸããŸãã git clone ã䜿ããä»»æã® ãªããžã㪠ïŒä»åã¯Herokuã®ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã䜿ããŸãïŒããã¯ããŒã³ãè¡ããŸãã â»å®éã®éçºã§ã¯ãããéçºå¯Ÿè±¡ã® ãªããžã㪠ãšãªããããŒã«ã« ãªããžããª ãææ°åããŠããå¿
èŠããããŸãã $ git clone 'https://github.com/heroku/java-getting-started.git' Cloning into 'java-getting-started'... ã» ã» ã» Resolving deltas: 100% (179/179), done. ãããã€å®æœ Herokuäžã«ãããã€ãè¡ãããã®ã¢ããªã±ãŒã·ã§ã³äœæã宿œããŸãã ãŸãã¯ã¯ããŒã³ããã¢ããªã±ãŒã·ã§ã³é
äžãžç§»åããŸãã $ cd java-getting-started/ 次㫠heroku create ã³ãã³ããå
¥åãããšããããã€çšã®ã¢ããªã±ãŒã·ã§ã³ãäœæãããŸãã ãã®éã ã³ãã³ãã©ã€ã³ äžã«è¡šç€ºãããURLãæ§ããŠãããŠãã ããã ãŸãã以äžã«ç€ºã XXXX-ZZZZ-123456 ïŒäŸïŒãäœæããã¢ããªã±ãŒã·ã§ã³åã衚ããŠããŸãã â»ã¢ããªã±ãŒã·ã§ã³å㯠heroku create ã³ãã³ãã®åŒæ°ã§æå®å¯èœã§ãã æå®ããªãå ŽåããXXXX-ZZZZ-123456ãã®ãããªã©ã³ãã ãªåç§°ãå²ãæ¯ãããŸãã $ heroku create Creating app... done, XXXX-ZZZZ-123456 https://XXXX-ZZZZ-123456.herokuapp.com/ | https://git.heroku.com/XXXX-ZZZZ-123456.git æåŸã« git push heroku master ãå
¥åãããšãHerokuäžãžã®ãããã€ãè¡ãããŸãã $ git push heroku master Enumerating objects: 400, done. Counting objects: 100% (400/400), done. Delta compression using up to 4 threads. Compressing objects: 100% (190/190), done. Writing objects: 100% (400/400), 178.59 KiB | 25.51 MiB/s, done. Total 400 (delta 152), reused 400 (delta 152) remote: Compressing source files... done. ã» ã» ã» remote: https://XXXX-ZZZZ-123456.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. To https://git.heroku.com/XXXX-ZZZZ-123456.git * [new branch] master -> master ããã§ãããã€äœæ¥ã¯å®äºã§ãã åäœç¢ºèª ãããŸã§ã§ãããã€äœæ¥ã¯å®äºã§ãããæåŸã«ãããã€ããã¢ããªã±ãŒã·ã§ã³ã確èªããŠã¿ãŸãããã äžèšã® ãããã€å®æœ ã§è¡šç€ºãããURLïŒäžèšã§ããã° https://XXXX-ZZZZ-123456.herokuapp.com/ ïŒããã©ãŠã¶ã«å
¥åããŠãã ããã 以äžã®ãããªç»é¢ã衚瀺ãããã°ãæ£åžžã«ãããã€ãå®äºããŠããŸãã ç¡äºã«ç»é¢ã衚瀺ãããŸãããïŒ ä»åã®äœæ¥ã¯ä»¥äžã§å®äºãšãªããŸãã ãç²ãæ§ã§ããïŒ ãããã« ä»åã¯Herokuã䜿ã£ãã¢ããªã±ãŒã·ã§ã³ã®å
¬éæé ã玹ä»ããŠããŸãããããããã§ããã§ããããïŒ æã£ãŠãããããç°¡åãªæé ã ãšæããæ¹ãå€ãã®ã§ã¯ãªãã§ããããïŒ å®éã®éçºã§Herokuãå¿çšçã«æŽ»çšããŠããããã«ã¯ãHerokuåºæã®æŠå¿µïŒDynoãHeroku Flowãªã©ïŒãžã®çè§£ããŸã ãŸã å¿
èŠã§ãã ã§ãããæäœéã®ãã©ãããã©ãŒã ãšããŠã®æ©èœãšå©äŸ¿æ§ã¯ããã®èšäºã䜿ã£ãŠçè§£ããã ããã¯ãã§ãã ä»åã®å
容ãè¶³ãããã«ããŠããã ããä»åŸã®éçºã«ã圹ç«ãŠããã ãããšå¹žãã§ãã ã§ã¯ã§ã¯ããŸãã®æ©äŒã«ã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com
ã¯ããã« æè¡åºå ±ã®itoken1013ã§ããããã«ã¡ã¯ã ãã€ã ã©ã¯ ã¹ã®ã€ãã³ãã«ãåå ããã ããŠããæ¹ã
ãæ¬åœã«ããããšãããããŸãïŒ ä»åã¯8æ1åç®ã®Meetup ãã¬ã¬ã·ãŒãå¹ãé£ã°ãPHPerå®è·µãã¯ããã¯ã ã«ã€ããŠãã³ã³ãã³ãã玹ä»ãããŠããã ããŸãïŒ ã€ãã³ãããŒãæŠèŠ ä»å㯠ãã¬ã¬ã·ãŒãå¹ãé£ã°ãã ãšãã匷åãªã€ãã³ãã¿ã€ãã«ãæ²ããããŠããã ãã ãªãªãŒã¹ãã10å¹Žä»¥äž ã®ä»¥äžãµãŒãã¹ã«æºãããšã³ãžãã¢3åãç»å£ãããŠããã ããŸããã ãããã®ãµãŒãã¹ã¯å€ãã®ã客æ§ã«é·ããå©çšããã ããçŸåšã§ãæ°ããªæ©èœè¿œå ãé²ããŠããŸãã ãã®äžæ¹ã§é·ãéçºã§èç©ããŠããã¬ã¬ã·ãŒãªé¢ãšãåãåãå¿
èŠæ§ãé«ãŸã£ãŠãããéçºé床ãšå質ãèœãšããªãããã®åãçµã¿ãæ±ããããŠããŸãã ä»åã¯ãããªåãçµã¿ã®äžã§ããããå®è·µçãªãã¯ããã¯ã玹ä»ãããŠããã ããŸããã æ¥œæ¥œè²©å£² ã¡ãŒã«ãã£ãŒã©ãŒ é
é
ã¡ãŒã« ã¡ãªã¿ã«ãåå ã®æ¹ãžå©çšèšèªããèããããšãããïŒåœç¶ã§ã¯ããããŸããâŠïŒå€§åã PHP 䜿ãã®æ¹ã§ããã ãŸããç»å£è
ãšåãããã« ã¬ã¬ã·ãŒã·ã¹ãã ã®éçºã«æºãã£ãŠããæ¹ãããã£ããããä»åã®ã€ãã³ãã§åŸããã¯ããã¯ãæ©é掻çšããããšèšã£ãŠããã ããå Žé¢ããããŸããã ã©ã¯ ã¹ã§ã¯ PHP äžå¿ã®ã€ãã³ããé »ç¹ã«éå¬ããŠãããŸãã®ã§ãä»åŸãã€ãã³ãã«ãåå ããã ããŸããšå¬ããã§ãïŒ çºè¡šã®çŽ¹ä» ããã§ã¯3åã®ãšã³ãžãã¢ã«ããçºè¡šãç°¡åã«ç޹ä»ãããŠããã ããŸãïŒ ãææã® èŠããå ãSonarQubeã䜿ã£ãŠãæ°èŠäžè¯ã³ãŒããããã¥ãŒãããªãä»çµã¿ã¥ãã æ¥œæ¥œè²©å£²ã®éçºã«æºããåªãããéçã³ãŒãè§£æããŒã« ãSonarQubeã ã䜿ã£ãã³ãŒãã¬ãã¥ãŒã®æ¹åã«ã€ããŠã®çºè¡šãšãªããŸãã äž»ã«ã¬ãã¥ãŒãäžå¿ã«æ
åœããåªã§ãããæ¥ã«æ¥ã«å¢å€§ããã¬ãã¥ãŒè² è·ãšãã課é¡ãèžãŸããéçã³ãŒãè§£æããŒã«ã®å°å
¥ã決å®ããŸããã æ°ããããŒã«ããSonarQubeãéžæããèæ¯ãå®éã«éçšãéå§ããŠããã®å¹æã«ã€ããŠè©³çްã«èªãããŠããŸãã ãµãŒãã¹ã®æ¥æ¡å€§ã«äŒŽã£ãŠã¬ãã¥ãŒã远ãä»ããªãïŒããšããæ©ã¿ããæ±ãã®æ¹ã«ã¯æ¯éãåèã«ããŠããã ãããå
容ã§ãã speakerdeck.com PHP æšæºé¢æ°ãšã®éã PHP ã®ããŒãžã§ã³ã¢ããïŒ7.1 ãã 7.3ïŒã«äŒŽã count()颿° ã®ä»æ§å€æŽã«ãŸã€ããã ã©ã¯ ã¹æå€åã®ãµãŒãã¹ã§ããã¡ãŒã«ãã£ãŒã©ãŒïŒ2001幎4æãªãªãŒã¹ïŒã§ã®ãšããœãŒããå çŽãã玹ä»ãããŠããã ããŸããã ãªãªãŒã¹ããããã20幎ãã¡ãŒã«ãã£ãŒã©ãŒã§ã¯ãããšããããå Žæã§count()颿°ãåŒã³åºããŠããïŒåŒã³åºãæ°ã¯ããã²è³æãã芧ãã ããâŠïŒãããã¹ãè«ã ãã§ã¯èªããªãæŠããç¹°ãåºããããããšãšãªããŸããã ããã«ã¯éçºäœå¶ã«èµ·å ããæ°ããªåé¡ãçãŸããŠããŸãâŠãšããèŠåŽãæ±ãããšããœãŒãã«ãªã£ãŠãããŸãã èšèªã ãã¬ãŒã ã¯ãŒã¯ ã®ä»æ§å€æŽã¯ããœãããã§ã¢éçºã§ã¯é¿ããŠã¯éããªãæŠãã§ãã ä»åã¯æŽå²ãæ±ãããµãŒãã¹ãæ¯ããããã®æŠãã§ã¯ãããŸãããã玹ä»ã®ããŠããŠã¯ã©ã®éçºã§ã掻çšã§ããã¯ãã§ãã ãã²å€ãã®ãšã³ãžãã¢ã«åœ¹ç«ãŠãŠããã ããã°ãšæããŸãã speakerdeck.com 13幎ç¶ãã¬ã¬ã·ãŒãµãŒãã¹ãå®å
šã«ãªãªãŒã¹ãç¶ããããã®ãE2Eãã¹ããš ã«ãã¬ããž ããŒã«ãå©çšãããã¹ãæŠç¥ã«ã€ã㊠ãªãªãŒã¹ãã13幎ãçµéããé
é
ã¡ãŒã«ã«ããããåå
ãåãçµããã¹ãæŠç¥ãã話ãããŠããã ããŸããã åèã®ã¬ã¬ã·ãŒã³ãŒãæ¹åã¬ã€ãã§ã¯ãèªåãã¹ããç¡ãã³ãŒãã¯ã¬ã¬ã·ãŒã³ãŒãã§ããããšè§ŠããããŠããŸãããåå
ã®æºããé
é
ã¡ãŒã«ã§ã¯ãŸãã«èªåãã¹ãç°å¢ãååšãããé«ãå質ãä¿ã£ããªãªãŒã¹ã«èª²é¡ãæ±ããŠããŸããã www.amazon.co.jp ããããã¯ãã³ãŒãã®è€éæ§ãããèšç»ã®äžç¢ºå®æ§ããšãã£ã課é¡ãæ±ããŠããéçºããŒã ã§ããããããã«åãåã£ããéèŠæ©èœãã¹ãã®èªååããã ãã¹ãé§åéçº ããªã©ã®æŠç¥ãèªãããŠããŸãã 詳现ã§å®è·µçãªå
容ã§ããããããèªèº«ã®éçºçŸå Žã§ã掻çšã§ããããšæããŠããã ããã¯ãã§ãã speakerdeck.com ãããã« ã¬ã¬ã·ãŒã«åãåã ã©ã¯ ã¹ãšã³ãžãã¢ã®åãçµã¿ããããã ã£ãã§ããããã ç°¡åãªèª²é¡ã¯1ã€ãååšããŸããããå€ãã®ã客æ§ã«ãå©çšããã ããæåŸ
ã«å¿ãããããæ¥ã
ã¬ã¬ã·ãŒãå¹ãé£ã°ããã¯ããã¯ã«åãçµãã§ããŸãã ããŠã次åã®MeetupïŒ8/25éå¬äºå®ïŒã¯ ãæ°ãµãŒãã¹ã ãããŒãã§ãïŒ ãã§ã«100人以äžã®æ¹ã«ç³ã蟌ã¿ããã ããŠããã倧ã€ãã³ãã«ãªããããªäºæãããŠããŸãã rakus.connpass.com ãŸã PHP ã«é¢ããã€ãã³ãã8æäžã«2åéå¬äºå®ã§ãã ãã¡ããããããã®ãåå ããåŸ
ã¡ããŠããŸãïŒ rakus.connpass.com rakus.connpass.com
ã¯ããã« æè¡åºå ±ã®itoken1013ã§ããããã«ã¡ã¯ã 6æã«å€ãã®æ¹ã«ãåå ããã ããŸãã ã©ã¯ ã¹Meetupã7/29(æ°Ž)ã«ã ã SaaS éçºãªãŒããŒãå®è·µããéçºé床åäžã ã©ã¯ ãã£ã¹/æµ·å€æ ç¹ã ã¹ã¯ã©ã ãæé管çã ãã¿ã€ãã«ã«ãªã³ã©ã€ã³éå¬ãããŠããã ããŸããã ä»åãåœæ¥ã®çºè¡šãç°¡åã«ç޹ä»ãããŠããã ããŸãïŒ ã€ãã³ãããŒãæŠèŠ ã©ã¯ ã¹ã§ã¯ãäŒæ¥ã§åã人ã
ã®çç£æ§ãåäžããããè±ããªç€ŸäŒã®å®çŸããæ²ããŠã倿§ãª SaaS ãã客æ§ã«å±éããŠããŸãã ãã®ããã« ã©ã¯ ã¹ã®ãšã³ãžãã¢èªèº«ãæ¥ã
ãéçºé床ãçç£æ§åäžã«åããã ã©ã¯ ãã£ã¹ã«åãçµãã§ããŸãã ä»åã¯å€ãã®ã客æ§ã«ãæ¯æãããã ããŠããŸã æ¥œæ¥œç²Ÿç® ãš æ¥œæ¥œæçް ã®éçºã«æºãããšã³ãžãã¢3åãç»å£ãããããããææŠäžã®åãçµã¿ãã玹ä»ãããŠããã ããŸããã å人ã»ããŒã ã»ãªãã·ã§ã¢ã®3ã€ã®èŠç¹ããã®ã ã©ã¯ ãã£ã¹ã玹ä»ããã倿§ãªããžã·ã§ã³ã®åå è
ã®æ¹ããã³ã¡ã³ãããå¯ãããã ããŸããã çºè¡šã®çŽ¹ä» 25 + 5åã§éçºé床ãäžããæé管çè¡ïŒ ãã¢ããŒããã¯ãã㯠ã®çŽ¹ä» ãŸã楜楜粟ç®ã§éçºã»éçšãšãã«ããªåœ¹å²ãæ
ã平山ãããäœæ¥æéã管çããããã® ãã¢ããŒããã¯ãã㯠ã玹ä»ãããŠããã ããŸããã éçºã«éããçç£æ§åäžã®ãã¯ããã¯ãšããŠåºãç¥ããã ãã¢ããŒããã¯ãã㯠ã§ãããä»åã¯å¹³å±±ã®å
·äœçãªèª²é¡ã®ãšããœãŒããšå®è·µåŸã®å¹æãèªãããããšã§ãæ¥ã
ã®ãä»äºã§åãå
¥ããŠã¿ãããšæããŠããã ããã®ã§ã¯ãªãã§ããããã è¥æã»äžå
ã»ããã©ã³ã®ã©ã®ãšã³ãžãã¢ã«ããå§ãããããã¯ããã¯ã§ãã www.slideshare.net ã¹ã¯ã©ã éçºããã¥ã¡ã³ã¿ãªãŒ ïœãªããªããèœã¡ã ã¹ã¯ã©ã éçºéåºŠïœ æ¬¡ã¯æ¥œæ¥œæçŽ°ã§ ã¹ã¯ã©ã éçºãå®è·µäžã®æŽç°ãããéçºãã¢ã§èµ·ããŠããŸã£ãããšããèŠããšããœãŒãã玹ä»ãããŠããã ããŸããã éçºãµã€ããšããžãã¹ãµã€ãïŒãããã¯ãŠãŒã¶ãŒïŒã§çãŸããèªèã®ãºã¬ãããçŽãã¯ãã©ã®äŒæ¥æ§ã«æå±ãããšã³ãžãã¢ã®æ¹ã§ããçµéšã®ãããã©ãã«ããšæããŸãã æŽç°ãæå±ããæ¥œæ¥œæçްããŒã ã§ã¯ãããã®ãã©ãã«ã«å¯Ÿãã ã¹ã¯ã©ã ã®æ çµã¿ã«æããããã«æè»ã«éçºã¹ã¿ã€ã«ã倿Žããããšã§æ¹åãå³ã£ãŠãããŸããã ããŸã 詊è¡é¯èª€ãç¶ããªããã®åãçµã¿ãä»åŸã®ææã«æåŸ
ã§ãã speakerdeck.com Quality First & Fastãå®çŸãããªãã·ã§ã¢éçºã®ãã€ã³ã9éž ä»åã®ã©ã¹ãã¯ã楜楜æçްã®éçºãªãŒããŒãåããæšå£ã§ãã ã©ã¯ ã¹ã®åäŒç€Ÿã§ãã ãããã ã®ãRAKUS Vietnam Co., Ltd.ãã®ãšã³ãžãã¢é£ããããžã¡ã³ãããæšå£ã§ãããéçºé床ãšå質ã®äž¡ç«ã®ããã«é§äœ¿ãããã¯ããã¯ãå
·äœçã«ç޹ä»ãããŠããã ããŸããã ãæ¥æ¬ãç¹æ®ãªåœã ãšããããšãçè§£ããããæ¥æ¬ã®èšèšèгç¹ãäŒããããªã©ãè€æ°åœã®æ¹ãšã®ä»äºçµéšãè±å¯ãªæšå£ãªãã§ã¯ã®çºè¡šã§ããã ãŸããªãã·ã§ã¢ãããŒãã«ããå
容ã§ã¯ãããŸãããæ¥æ¬äººã®ãšã³ãžãã¢å士ã§ãåèã«ããŠããã ããã ã©ã¯ ãã£ã¹ãèŠã€ããŠããã ããã¯ãã§ãã speakerdeck.com ãããã« ä»åã¯ç¹å®ã®æè¡ã¹ã¿ãã¯ã«åã£ãã€ãã³ãããŒãã§ã¯ãªãã£ãããšããããããŸããŸãªã¬ã€ã€ãŒã®æ¹ã«ãåå ããã ããŸããã ãããžã§ã¯ããããžã¡ã³ãã«èª²é¡ãæ±ããæ¹ãå人ã®ã¹ã±ãžã¥ãŒã«ç®¡çãããŸããããªãæ¹ãªã©ã®åèã«ããŠããã ããŸããšå¹žãã§ãã ã©ã¯ ã¹ã§ã¯8æä»¥éãMeetupãLTã»å匷äŒã®éå¬ãäºå®ããŠããŸãã ãã§ã«å€ãã®æ¹ã«ãç³ã蟌ã¿ããã ããããããšãããããŸãïŒ ä»åŸã ã©ã¯ ã¹ãšã³ãžãã¢ããã®æ
å ±çºä¿¡ãã©ãããæ¥œãã¿ã«ïŒïŒ rakus.connpass.com rakus.connpass.com
æè¡åºå ±ã® syoeshin ã§ãã åœç€Ÿã§ã¯æè¿ãäžèšïŒã€ã®å®æçãªèªæžäŒãäŒç»ããã¹ã¿ãŒãããŸããã 瀟å
ã®æå¿éããªãŒãããŠãããããã奜ããªæ¬ãèªã¿/玹ä»ãããèªæžäŒ 瀟å
ã® æèè
éããªãŒãããŠãéžå®ããæè¡æžã®çè§£ãæ·±ããèªæžäŒ 宿çãªèªæžäŒãçµç¹ã®åçµã¿ãšããŠå§ããç®ç㯠"åãšçµç¹ã®æé·" ã§ãã æé·ã®ããã»ã¹ã¯ ç¥èãåŸã (å匷äŒã§è©±ãèããæ¬ãèªãããã¥ãŒã¹/èšäºãèªã ãªã©) èšç·Žãã (ç¹°ãè¿ã修緎ãç¿æ
£ã«ãã ãªã©) å®è·µãã ã«åè§£ã§ããŸãã 宿çãªèªæžäŒã®æ©äŒãã€ãããåå ããŠãããäºã§ æé·ã®æºæ³ãšãªã ç¥èãåŸã ã à ã èšç·Žãã ã®ãµã€ã¯ã«ã¯å®çãããäºãã§ããŸãã ãã¡ãã å®è·µãã ã¯ãšãŠãéèŠã§ãã ç§ãã¡ã®éçºçµç¹ã¯ æ¯æŽã®åãå®è·µã·ãŒã³ã®é£ç¶ ã§ãã®ã§ ç¥èãåŸã ã à ã èšç·Žãã ãµã€ã¯ã«ãå®çããã° åã®æé·ãå éããäºã¯ãèšããŸã§ããããŸããã ã㊠ãŸã㯠ç¥èãåŸã ã à ã èšç·Žãã ã®ãµã€ã¯ã«å®çãç®çãšããŠå§ããèªæžäŒã¯ æ©éã以äžã®ãããªãããã坿¬¡å¹æãèŠããå§ããŸããã çµç¹å
ã³ãã¥ãã±ãŒã·ã§ã³ã® ãã€ããŒã·ã㣠å èŠçŽ/æèŠããŸãšãã/人åã§è©±ãã¹ãã«ã®åäžãšãªãŒããŒã·ããã®è²æ çµç¹å
ã§ã®å°éæ§/ ã¢ã€ãã³ãã£ã㣠ã®ç¢ºç« ãŒãŒçµç¹å
ã³ãã¥ãã±ãŒã·ã§ã³ã® ãã€ããŒã·ã㣠å ç§ãã¡ã®éçºæ ç¹ã¯ æ±äº¬ã»å€§éªã» ãããã ãšåãããŠãã ãããŸã§ç€Ÿå
ã€ãã³ãã¯æ ç¹ãäžå¿ãšããéå¬ã䞻㧠æ¥åå€ã®ã³ãã¥ãã±ãŒã·ã§ã³ãæ ç¹ãäžå¿ãšãªã£ãŠãããŸããã å¯ãé¿ããã¹ãç¶æ³äžã§ãèªæžäŒã¯ãªã³ã©ã€ã³éå¬ãšãªã£ããã ãããŸã§ã®æ§ã«æ ç¹å¥ã®éå¬ã§ã¯ãªã æ±äº¬ã倧éªã ãããã ãã瀟å¡ãäžæåå ã§ããèªæžäŒã¯ æ ç¹ãåãããè¥æã»äžå
ã»ããã©ã³ãåãã æ¥åå€ã³ãã¥ãã±ãŒã·ã§ã³ã亀ãããæ©äŒã®äžã€ãšãªããŸããã ãŒãŒèŠçŽ/æèŠããŸãšãã/人åã§è©±ãã¹ãã«ã®åäžãšãªãŒããŒã·ããã®è²æ èªæžäŒã«ã¯ããŸããŸãªåœ¢åŒããããŸãããåœç€Ÿã宿œããŠãã 瀟å
ã®æå¿éããªãŒãããŠãããããã奜ããªæ¬ãèªã¿/玹ä»ãããèªæžäŒ ã®åå ç®çã¯ãããããã®èªç±ã§ããããšããŠããŸãã ãã¡ãèªæžäŒã®åå è
ã«ã¯ äŒã®åé ã§ ã仿¥ã¯ã©ããŸã§èªãããšèªæžå®£èšãããŠããã 1~1.5ïœã®èªæžåŸ ã« èªãã æ¬/éšåãèŠçŽããåå ã¡ã³ããŒã«äŒããŠãããããã«ããŠãããŸãã ãŸããåå è
ãã ãã¡ã·ãªããŒã¿ãŒ (ç°¡åãªåžäŒé²è¡)ãéžåºã äŒã®é²è¡ãããŠããããŸãã ã»èªæžå®£èš ã»èªãã æ¬/éšåã®èŠçŽãçºè¡š ã»èªæžäŒã®åžäŒé²è¡ ãããŠãããäºã§ã ç¥èãåŸãããã ãã®èªæžäŒã§ã¯ãªã ã»äººåã§è©±ã ã»æèŠããŸãšãã ã»äººã®æèŠãèããªããçµè«ãå°ãå Žãäœã ãšããã ã¬ãŒãã³ ã°ã«ãªããã¹ãã«ã磚ãããšãã§ããä»çµã¿ã§ åå è
㯠å¿çç è² æ
ãå°ããäžã§ ãªãŒããŒã·ããã«å¿
èŠãªèŠçŽ ã身ã«ä»ããããããã«ãªã£ãŠãŸãã ãŒãŒçµç¹å
ã§ã®å°éæ§/ ã¢ã€ãã³ãã£ã㣠ã®ç¢ºç« 瀟å
ã§ã¯ ã» ã¢ãŒããã¯ã㣠ã«è©³ãã 人 ã» ã¢ãžã£ã€ã« éçºã ã¹ã¯ã©ã ã«è©³ãã 人 ã»ããã³ããšã³ãã«è©³ãã 人 çã
ãããŸãã ãããã£ãã¡ã³ããŒã¯âç¹å®åéã®ç¥èãšçµéšãè±å¯âãšç€Ÿå
ã§èªèãããŠãã ç¹ã«ç¥èé¢ã§ã¯ããã®åéã«é¢ããããããã®æ¬ãäœåºŠãæ·±ãèªãã§ããäºãå€ãã§ãã 瀟å
ã® æèè
éããªãŒãããŠãéžå®ããæè¡æžã®çè§£ãæ·±ããèªæžäŒ ã§ã¯ ç¹å®åéãæè¡ããŒãã«æ²¿ã£ãŠèªæžäŒãéå¬ãããŠãã èªæžäŒãäž»å¬ããã¡ã³ããŒéã¯ã âç¹å®åéã«è©³ãã人â ãšç€Ÿå
ã§èªèãã èªèº«ã®å°éæ§ãš ã¢ã€ãã³ãã£ã㣠ã確ç«ããŠããŸãã ãŸã åœç€Ÿã§ã¯æå¿éãå§ãã瀟å
å匷äŒããçºå±ãã ã TechCafeâ» ããšãã 瀟å€åãå匷äŒã³ãã¥ã ãã£ãŒ ãéå¶ããŠãã 瀟å€åãã«ç¹å®åé/æè¡ã®ãã³ããäž»å¬ããäºã§ 瀟å
ã ãã§ãªã瀟å€ã«ãèªèº«ã®å°éæ§ãš ã¢ã€ãã³ãã£ã㣠ã®ç¢ºç«ãé²ããŠããŸãã â»TechCafe詳现ãTechCafeãã§ãããŸã§ã tech-blog.rakus.co.jp ãŒãŒãŸãšã èªæžäŒã®éå¬/åå ã¡ãªããã¯äžéã§ããŸããŸã«èšãããŠãŸãã 瀟å
ã§èªæžäŒãéå¬ããŠã¿ãŠ äžéã§èšãããŠããã©ã®ã¡ãªãããåŸããã ãšããã®ãçŸæç¹ã§ã®ææã§ãã ãŸã ãŸã éå¬ã®å®çžŸã¯å°ãªãã§ãã äžæ žã¡ã³ããŒã管çè·ãéçºçµç¹ä»¥å€ã¡ã³ããŒã®åå ãå¢ããŠããã° ã»çµç¹ã³ãã¥ãã±ãŒã·ã§ã³ã® ãã€ããŒã·ã㣠å ã»çµç¹ã¡ã³ããŒã®ãªãŒããŒã·ããè²æ ã»çµç¹ã¡ã³ããŒã®å°éæ§/ ã¢ã€ãã³ãã£ã㣠ã®ç¢ºç« ã®é²åãã§ã âåãšçµç¹ã®æé·âãå éã§ãã ãšèããŠãããã ä»åŸãããå€ãã®ã¡ã³ããŒãåå ãããã äœããæ¥œããããèªæžäŒããäŒç»ããŠããããšèããŠãããŸãã åœç€Ÿéå¶ã®å匷äŒã³ãã¥ã ãã£ãŒ ã¯ä»¥äžãµã€ããããåå ãã ããã rakus.connpass.com ãŸããç§ãã¡ã¯äžç·ã«åãã¡ã³ããŒãåéããŠããŸãã ãèå³ãæãããŸããã以äžã®ãµã€ããããåãåãããã ããã career-recruit.rakus.co.jp
ã¯ããã« ã¯ãããŸããŠã ã©ã¯ ã¹ã®ã€ã³ãã©ãšã³ãžãã¢ã®cappy_potterãšç³ããŸãã åŒç€Ÿã§æäŸããŠãã ã¯ã©ãŠã ãµãŒãã¹ãæ
ããµãŒãã«ïŒ ã¯ã©ã¹ã¿ ïŒã€ããŠãã©ã®çšåºŠã®ã¢ã¯ã»ã¹ãŸã§ã§ããã° åé¡ãªããµãŒãã¹æäŸã§ããã®ãããšããéçå€ãç¥ãããã® è² è·è©Šéš ãéå»ã«å®æœããŸããã Webã·ã¹ãã ãæ§æãããµãŒã矀ã«å¯Ÿããã©ã®ããã«ããŠè² è·ããããéçå€ãæ¢ãã®ããããããæ¹æ³ã¯ ãããšæããŸãããå®éã«åŒç€Ÿã§è©Šããããæ¹ãã玹ä»ããŸãã®ã§ãåèã«ããŠããã ããã°ãšæããŸãã ã¯ããã« ãµãŒãæ§æ è² è·è©Šéšç°å¢æºå è² è·è©Šéšãã¿ãŒã³ã®æ€èšãšJMeterçšã·ããªãªã®äœæ JMeterã§è² è·ãããã ããã«ããã¯ã®èª¿æ» ãããã« ãµãŒãæ§æ ä»åè² è·ãããããµãŒãã®æ§æã¯äžå³ã®ããã«ãªã£ãŠããŸãã 察象ã®ã·ã¹ãã ã¯è€æ°ã®ãµãŒããããªã£ãŠããŸãããå€éšããã®ã¢ã¯ã»ã¹ã¯å
šãŠããŒããã©ã³ãµã§åããŠã é
äžã®ãµãŒãã«éä¿¡ãæ¯ãåãã圢ãšãªã£ãŠããŸãã è² è·è©Šéš ç°å¢æºå â æ¬çªã·ã¹ãã ãšåãæ§æïŒå°æ°ãã¹ããã¯ïŒã® è² è·è©Šéš çšãµãŒããçšæããã ä»åãè² è·éçå€ãæ£ç¢ºã«æž¬ããããæ¬çªç°å¢ãšå
šãåãããŒãæ§æã»å°æ°ã®è©ŠéšçšãµãŒããçšæããŸããã ãªãœãŒã¹ãè¶³ããé£ããå Žåã¯ãåãµãŒãã®ã¹ããã¯ãåãå²åã§èœãšãããã®ãçšæããŠè©Šéšãè¡ãããšã§ ãšããããã ããã«ãã㯠ã¯ã©ããããæ¢ãããšã¯ã§ãããšæããŸãã â Apache JMeter ãµãŒãã®çšæ 詊éšçšãµãŒãã«å¯ŸããŠè² è·ããããããã®ãµãŒããšããŠã Apache JMeter ãµãŒããçšæããŸããã ãã®ãšããåæã«å€§éã®ã¢ã¯ã»ã¹ããããããããã«ãããããäžå³ã®ããã«ãã¹ã¿ãµãŒã以å€ã« 4å°ã®ã¹ã¬ãŒããµãŒããçšæããŸããã ãâ» JMeter ãµãŒãåŽã貧匱ã ãšãè² è·éçã«éããåã« JMeter ãµãŒãåŽã®æ¹ãå
ã«éçã«éãã å¯èœæ§ã ãããããŸãã®ã§ããããªããªãããã«èæ
®ããŸããã â åãµãŒãã®ããã©ãŒãã³ã¹ããŒã¿åéæºå è² è·è©Šéš 察象ã®åãµãŒãã«ã¯ZabbixãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããããã©ãŒãã³ã¹ããŒã¿ãååŸã§ããããã«ããŸããã åŒç€Ÿã§ã¯ãããšããšãµãŒãã®ç£èŠçšãšããŠZabbixãå©çšããŠããŸãã®ã§ããããçšããŠãåãµãŒãã®CPU䜿çšçã ããŒãã¢ãã¬ãŒãž ãDisk I/Oãswap䜿çšéããããã¯ãŒã¯åž¯åã®ããŒã¿ãåéããããã«ããŸããã ãâ è² è·ãããããšãã«ãã©ã®ãµãŒãã®äœã®ãªãœãŒã¹ã ããã«ãã㯠ã«ãªã£ãŠãããã確ãããããã ãªããããŒã¿ã®ååŸééã¯30ç§ã«ããŸãããééãçãããæ¹ããã¬ãå°ãªãããŒã¿ãšãªããŸãããçããããããš ããŒã¿ååŸèªäœãè² è·ã«ãªãå¯èœæ§ãããããã§ãã è² è·è©Šéš ãã¿ãŒã³ã®æ€èšãš JMeter çšã·ããªãªã®äœæ ä»åã è² è·è©Šéš ãè¡ãããšã«ããã倧ããåãããšä»¥äžã®2ãã¿ãŒã³ã®éçå€ãæ±ããããšèããŸããã ãâ WebãµãŒã1å°ããããç§éäœã¢ã¯ã»ã¹ãŸã§èããããã®ã ãâ¡ ã·ã¹ãã å
šäœãšããŠç§éäœã¢ã¯ã»ã¹ãŸã§èããããã®ã ãã ãã²ãšå£ã«ãç§éäœã¢ã¯ã»ã¹ãŸã§èããããã®ãããšãã£ãŠããã¢ã¯ã»ã¹ããããŒãžããŠãŒã¶ã®æäœå
容ã«ãã£ãŠ å€ãã£ãŠããŸãã®ã§ãåºæºãèšããªããã°ãªããŸããã åºæ¬çã«ã¯æãã¢ã¯ã»ã¹ãå€ãããŒãžããæšæºçãªãŠãŒã¶ã®æäœå
容ãããã£ãŠããã®ã§ããã°ããããåºæºã«ããã°ãã ãšæããŸãããå®ãŸããªãå Žåã¯ããã€ãã®ãã¿ãŒã³ã«ã€ããŠè©Šéšãè¡ãããã®çµæãããšã«å€æãããããããŸããã åŒç€Ÿã§ã¯ãâ ã®è©Šéšãè¡ãããã«9ãã¿ãŒã³ã®ã·ããªãªãäœæããŸããããŸããâ ã®è©Šéšã¯WebãµãŒã1å°ã ãã«å¯Ÿã㊠ã¢ã¯ã»ã¹ãæµããããã«ããããã ããŒããã©ã³ãµãŒ ã§ã®æ¯ãåãå
ã1å°ã®WebãµãŒãã®ã¿ãšãªãããã«èšå®ã倿ŽããŠè©Šéšãè¡ããŸããã ïŒâ¡ã®è©Šéšã®ãšãã¯ã3å°ã®WebãµãŒãã«å¯ŸããŠåçã«ã¢ã¯ã»ã¹ãæ¯ãåããããããã«ããŸãããïŒ JMeter ã§è² è·ãããã äœæãã JMeter ã®ã·ããªãªã䜿ã£ãŠè² è·ããããŸãããç§éã®ã¢ã¯ã»ã¹æ°éçå€ãæ¢ãã®ãç®çã§ãã®ã§ã 以äžã®ãããªæµãã§è² è·ããããŠãããŸããã ïŒåã·ããªãªã§åãããã«è©Šéšãè¡ããããããã®ã·ããªãªã§ã®éçå€ãæ¢ããŸãããïŒ ã ïŒïŒå¯Ÿè±¡ã®ãµãŒãã«å¯ŸããŠããŸãã¯ããããããããããã§ã¯ãªããããšæãç§éã®ã¢ã¯ã»ã¹æ°ã5åéãããã ãããâäŸãã°ãç§é20ã¢ã¯ã»ã¹ã5åéãããå Žåã JMeter ã®èšå®ã¯ä»¥äžã®ããã«ãªããŸãã ãããRamp-UpæéïŒãè² è·ããããæé ïŒ 300(ç§) ãããã¹ã¬ããæ°ïŒãRamp-Upæé(ç§) à ç§éã¢ã¯ã»ã¹æ° ÷ è² è·ãããã JMeter ãµãŒãã®å°æ° ïŒ 300Ã20÷4 ïŒ 1500 ã ïŒïŒ5åéè² è·ããããçµæã JMeter ã§ãšã©ãŒãæ€ç¥ããŠããããã§ããã°ãç§éã®ã¢ã¯ã»ã¹æ°ãæžããã ããã ååºŠè² è·ããããããšã©ãŒãæ€ç¥ããŠããªããã°ç§éã®ã¢ã¯ã»ã¹æ°ãå¢ãããŠååºŠè² è·ããããã JMeter ã§ãšã©ãŒãæ€ç¥ããŠãããã©ããã¯ãå®è¡çµæã®ç»é¢ã§ãStatusãã®éšåãã¯ãªãã¯ããŠã ã¹ããŒã¿ã¹å¥ã«äžŠã³æ¿ãããããšã«ãã倿ã§ããŸãã ïŒäžå³ã®ããã«èµ€ããÃãããŒã¯ãããã°ããšã©ãŒãçºçããŠãããšããããšã«ãªããŸããïŒ ã ïŒïŒäžèšïŒïŒã§ç§éã®ã¢ã¯ã»ã¹æ°ã墿žãããªããäœåºŠããã¹ããè¡ããæçµçã«ããã以äžç§éã®ã¢ã¯ã»ã¹æ°ã ããã å¢ãããšãšã©ãŒãåºãããšããå€ã倿ããã°ããããéçå€ãšãªãã ããã«ãã㯠ã®èª¿æ» éçãšãªãè² è·ããããããŠãããšãã®ZabbixããŒã¿ã確èªããã©ã®ãµãŒãã®äœã ããã«ãã㯠ã«ãªã£ãŠããã 確èªããŸãã äžå³ã¯ãè² è·ããããŠããéã®åãµãŒãã®ããã©ãŒãã³ã¹ããŒã¿ãèšé²ããè³æã®æç²ã§ããããããèŠããš WebãµãŒãã® CPU䜿çšçã100% ã«éããŠããããšãããããŸãã ãã®ããããã®å Žåã¯ããWebãµãŒãã®CPUãå¢èšããããWebãµãŒãã®å°æ°ãå¢ããããªã©ããã°ãã·ã¹ãã å
šäœãšããŠã® éçå€ã¯å»¶ã³ãããšãäºæ³ãããŸãã ãããã« æ¬èšäºã§ã¯ã è² è·è©Šéš ã«ãã£ãŠãµãŒãã®éçå€ãæ±ããããã®æ¹æ³ã«çµã£ãŠèšèŒããŠããŸãããå®éã¯è©Šéšã宿œããåã« è² è·è©Šéš ãè¡ãç®çãæ±ãããã è² è·è©Šéš çµæãããšã«ä»åŸã©ãéçšããŠããã®ã ããšããããšãæããã«ããŠãã 宿œããªããšãäœåºŠã è² è·è©Šéš ã宿œããªããã°ãªããªããªãå¯èœæ§ãããããããããããã£ããèªèããããã§ å®è¡ããããã«ããŠäžããã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com
ããã«ã¡ã¯ã ã©ã¯ ã¹ã²ãã¡ã§ãã 07/21(ç«) ã«éå¬ãããã Developers Summit 2020 Summerãã«åå ããŸããã https://event.shoeisha.jp/devsumi/20200721#outline ä»åã¯ãªã³ã©ã€ã³éå¬ãšããããšã§åå ãããæ¹ãå€ãã£ãã®ã§ãªãã§ããããã åå ãã4ã€ã®ã»ãã·ã§ã³ã®äžã§ç¹ã«æ°ã«ãªã£ãã»ãã·ã§ã³ã«ã€ããŠææ³ãæžããŠããããšæããŸãã ãšã³ãžãã¢ãªã³ã°ãçµç¹ã«åºãããä¹³åããç®æãããã®åãçµã¿ READYFORæ ªåŒäŒç€Ÿ VPoEäŒè€ åå¿(éç§°ïŒããšã²ã)ãããç»å£ããŠãã£ããããŸããã éçºããã»ã¹ æ ã§ããã ã¹ã©ã€ãã¯äžèšã«ãªããŸãã speakerdeck.com READYFORãããæ²ãããä¹³åããšã¯ã * çµç¹ã®äžã«ãšã³ãžãã¢ãªã³ã°ãèªç¶ã«æº¶ã蟌ãã§ããç¶æ
* æ¢åã®äŸ¡å€èгãšã㯠ãã ãžãŒ ãèåããããšã«ãã ã€ãããŒã·ã§ã³ ã®åµé ãç®æã çµç¹éã®éãããªããããã·ã§ã³ã®ããã«ååãåããç¶æ
ããªãšè§£éããŸããã 確ãã«åãäŒç€Ÿãšããã©ãä»äºã®åãçµã¿æ¹ãæåãåãããŠããã®ã£ãŠå€§å€ã§ããããã ãããªæåã®äžã泚ç®ãã¹ããªã®ã¯ããã§ãã BPMN B usiness P rocess M odeling and N otation èš³ããšãããžãã¹ããã»ã¹ ã¢ããªã³ã° åãšèšæ³ãã§åœéæšæºèŠæ Œ(ISO/IEC19510)ã«ãæå®ãããŠããæŠå¿µã§ãã ãããŸããŸãªããžãã¹ããŒã ãBPMNãæŽ»çšããŠãããŒãå¯èŠåããŠãããããã«ãªã£ãã ãããç®ãããŠãã³ã®åãçµã¿ã§ããã ããžãã¹ããŒã ãèŠã¯å¶æ¥ã補åäŒç»ããµããŒããªã©ã®äºæ¥éšã§ããã ããžãã¹ããŒã ãšéçºéã§èªèåããããããã§ããããããçµæ§ãµãã£ãšããã¡ã§ãã éçºããæ¥åã·ããªãªãªã©ãå³ç€ºãããšãã«Draw.ioãªããã䜿ã£ãŠããžãã¹ããŒã ã«èŠããããšã¯çµæ§ãããŸãã ãããããžãã¹ããŒã ãBPMNããŒã«ã䜿ã£ãŠãããŒãå¯èŠåããŠãããããã®äŸ¡å€ãããªãé«ãã§ãã ããžãã¹ããŒã ããèšèã§èŠæ±ã®èª¬æãåãããéçºãäŒç»ã« ãã¢ãª ã³ã°ãã äžèšã®çµæããéçºãèŠä»¶ãææžãå³ã«èµ·ãã èªèéœéœ¬ããããšãããåãã倿Žãã ã ããã2ïœ3ãç¹°ãè¿ãè¡ããŸãã ããžãã¹ããŒã ãæãæããŠããå³ç€ºããã£ãšã§ããç¶æ³ãäžèšã®å·¥çšãççž®ããããšã«ã€ãªãããŸããã ãã¡ããã¯ããã¯éçºããã¶ã€ã³ããŒã ã®ãã©ããŒãå
¥ãã®ã§ã ããç°¡åã§äœ¿ããããããŒã«ãéžã¶ã®ãéèŠã«ãªã£ãŠããŸãã èšèšãå³ç€ºããããŒã«ã¯ããã€ããããŸãããREADYFORãããå©çšããŠããããŒã«ã¯ãã¡ãã ã Camunda Modeler ã ããšã²ããããäœ¿ãæ¹ãã¬ã¯ãã£ãŒããŠãããŠããŸãã http://itohiro73.hatenablog.com/entry/2018/01/15/082158 ãã£ãããã£ãŠã¿ãŸããã ãããç°¡åã§ãã Camundaã§å³ç€º UIãçŽèгçã§è§Šããããããš ç¡é§ãªããŒã«ããªãããš ãããšããã£ãŠäœ¿ãã¥ãããªããŸã å³ç€ºããŠããšãããšæ¥ã«è¶³ãéããªã£ãŠããŸãããã§ããã ãããªãããŒã«ãå©çšãã粟ç¥çãªããŒãã«ãäœãåãçµãããšæããŸãã ãã£ããããžãã¹ããŒã ã«ã¬ã¯ãã£ãŒããªããé²ããŠããããã§ããã ããäžã€ã®åãçµã¿ãSlackã® Reacji Channeler ãé
åçã§ããã çµµæåãæŒãã ãã§ç¹å®ã®ãã£ã³ãã«ã«é£ã¹ããã§ãã£ãŠã slack.com æ®å¿µãªããåŒç€Ÿã¯Slackã§ã¯ãªãã®ã§å°å
¥ããŒãã«ãé«ããã§ãããSlackãå©çšã®æ¹ã¯ãã²äœ¿ã£ãŠã¿ãŠãã ããã ããããããã€ãã®åãçµã¿ããã£ãŠãçµç¹ã®ä¹³åãé²ãã°ãéçºã«çæãããŸã§ã®äžæµå·¥çšãã¹ã ãŒãºã«ãªããšæããŸãã READYFORããã®åãçµã¿ãå¿
èŠã§ãã ä»ã®ã»ãã·ã§ã³ãåæ§çã§é
åçã§ãããçŽ æŽãããã£ãã§ãã èªåã§æ°ã¥ããªã芳ç¹ãåãå
¥ããå匷äŒã£ãŠãã£ã±ã倧äºã§ããã æ¬¡åããã²åå ãããã§ãã
ããã«ã¡ã¯ãwest-cã§ãã æºãã£ãŠããæ°èŠãµãŒãã¹ã«ãŠ ãã¡ã€ã³ é§åèšèšïŒä»¥äžãDDDïŒãåãå
¥ããéçºãè¡ã£ãŠããããšãããå»å¹Žã®ç§é ããDDDã®åŠç¿ãã¯ãããŸããã ä»åã¯ãç§ãåŠç¿ã«ãããèªãã ããããæžç±ã玹ä»ããŸãã ç®æ¬¡ ç®æ¬¡ ãã¡ã€ã³é§åèšèšãšã¯ ããããæžç± çŸå Žã§åœ¹ç«ã€ã·ã¹ãã èšèšã®åå ã倿Žã楜ã§å®å
šã«ãããªããžã§ã¯ãæåã®å®è·µææ³ ãã¡ã€ã³é§åèšèš ã¢ããªã³ã°/å®è£
ã¬ã€ã ãã¡ã€ã³é§åèšèšå
¥é ããã ã¢ããã§ããã! ãã¡ã€ã³é§åèšèšã®åºæ¬ Domain Driven DesignïŒãã¡ã€ã³é§åèšèšïŒ Quickly æ¥æ¬èªç å®è·µãã¡ã€ã³é§åèšèš ãšãªãã¯ã»ãšãŽã¡ã³ã¹ã®ãã¡ã€ã³é§åèšèš ãããã« ãã¡ã€ã³ é§åèšèšãšã¯ æ¬é¡ãžå
¥ãåã«ããããããDDDã£ãŠäœïŒããšããæ¹ãž3è¡ã§ãšãŠããã£ãããšèª¬æããŸãã DDDãšã¯ããœãããŠã§ã¢ã§åé¡è§£æ±ºããããšããé åïŒ ãã¡ã€ã³ ïŒãäžå¿ã«æ®ããŠéçºãè¡ããœãããŠã§ã¢éçºææ³ã®ããš DDDãå®è·µããããšã§ã ãã¡ã€ã³ ç¥èããã®ãŸãŸã³ãŒããžåæ ãããããã«ãªã ãã¡ã€ã³ ç¥èãšã³ãŒããå°ç¶ãã«ãªãããšã«ãã£ãŠã å€åã«åŒ·ããœãããŠã§ã¢ãæ§ç¯ã§ãã ãå€åã«åŒ·ãïŒä¿å®æ§ã®é«ãïŒãœãããŠã§ã¢ããšèããŠèå³ãæã£ãæ¹ã¯ãããããã玹ä»ããæžç±ãèªãã§ã¿ãŠã¯ãããã§ããããã ããããæžç± ååŠè
ãDDDãåŠã¶å Žåã¯ãã®é çªã§èªãã®ãããã®ã§ã¯ãšæã£ãé çªã«ç޹ä»ããŸãã ãªããåŠç¿åã®ç§ã®ç¶æ³ã¯ä»¥äžã®ãšããã§ãã Java ã§ã®ããã°ã©ãã³ã°çµéšããïŒãµã³ãã«ã³ãŒãã®èªè§£ã«ã¯èŠåŽããªãïŒ ãªããžã§ã¯ãæå çãªããã°ã©ãã³ã°ã¯èŠæ DDDã¯ãŸã£ããç¥ããªã çŸå Žã§åœ¹ç«ã€ã·ã¹ãã èšèšã®åå ã倿Žã楜ã§å®å
šã«ãã ãªããžã§ã¯ãæå ã®å®è·µææ³ çŸå Žã§åœ¹ç«ã€ã·ã¹ãã èšèšã®åå ã倿Žã楜ã§å®å
šã«ãããªããžã§ã¯ãæåã®å®è·µææ³ äœè
: å¢ç° 亚 æè¡è©è«ç€Ÿ Amazon æ¥åã¢ããªã±ãŒã·ã§ã³ã®ä¿å®æ§ãé«ããããã®èšèšææ³ã«ã€ããŠèª¬æãããŠããæžç±ã§ãã DDDåŠç¿ã®å段éã«ããããã§ãã ã ãªãã¡ã¯ã¿ãªã³ã° ãã®å
容ã«ãéããã³ãŒãã®èŠéãã®è¯ãã®è©±ãã ãªããžã§ã¯ãæåèšèš ã«ãã ã¢ããªã³ã° æ¹æ³ãŸã§ãæ¥åã¢ããªã±ãŒã·ã§ã³ã«ãããã³ãŒããããããããããããã®ææ³ã説æãããŠããŸãã ã¿ã€ãã«ã ããèŠããšDDDãšã¯é¢ä¿ç¡ãããã«ãèŠããŸãããæ¬æäžã«ã¯ãæ¥åçãªé¢å¿äºã ãã¡ã€ã³ ã¢ãã«ãšããŠè¡šçŸãããèãæ¹ãDDDã§èŠãããå®è£
ãã¿ãŒã³ãå°å
¥ãããŠããããšãDDDã®ãšãã»ã³ã¹ãèŠæã«è©°ãŸã£ãŠããŸãã ãã®æžç±ãèªãã åœåã®ç§ã¯ ãªããžã§ã¯ãæå çãªããã°ã©ãã³ã°ã«æ
£ããŠããªãã£ããããæç¶ãåã®èšèšããã®çºæ³ã®åãæ¿ãã«åœ¹ç«ã¡ãŸããã ãDDDããã³ ãªããžã§ã¯ãæåèšèš ãåãå
¥ãããä¿å®æ§ã®é«ãã³ãŒãã«ãªãããããšæããã£ããã«ããªããåŠç¿ã®ã¢ãããŒã·ã§ã³ã«ãç¹ãããŸããã ãã¡ã€ã³ é§åèšèš ã¢ããªã³ã° /å®è£
ã¬ã€ã little-hands.booth.pm DDDã® ã¢ããªã³ã° ããå®è£
ãŸã§ã®äžé£ã®æµãã玹ä»ãããŠããæžç±ã§ãã å
š100ããŒãžã»ã©ã§DDDã®å
šäœåãã³ã³ãã¯ãã«ãŸãšãŸã£ãŠããŸãã ååŠè
ããDDDãšã¯ããçè§£ããã«ã¯ããŸãã¯ãã®æžç±ãäžèªãããšããã®ã§ã¯ãšæããŸãã èè
ã®æ¹ã® YouTube ãã£ã³ãã«ã«æžç±ã®è§£èª¬åç»ãæçš¿ãããŠããŸãã®ã§ããŸãã¯ãã¡ãã芳ãŠã¿ãã®ãã¢ãªããšæããŸãã åç»åŸåã®è³ªååçã³ãŒããŒã§ã¯èŠèŽè
ã®æ¹ããã®çåãå€ãå¯ããããŠããããã¡ããããã«ãªããŸãã little_hand_s DDD Channel - YouTube ã¡ãªã¿ã«ãåŒç€Ÿã§ã¯çŸåšãã¡ãã®æžç±ã®èªæžäŒãè¡ã£ãŠããŸãã DDDåå¿è
ããå®éã«DDDã«åãçµãã§ããã»åãçµãããšããŠãããµãŒãã¹ã®ã¡ã³ããŒãŸã§ãå¹
åºãå±€ãåå ããäŒãšãªã£ãŠããŸãã æžç±ãèªãäžã§æ¹§ãäžããçŽ æŽãªçåã«å¯ŸããŠããã¡ã®ãµãŒãã¹ã§ã¯ãã®ãããªæ¹éã«ããŠããããšãã£ããªã¢ã«ãªå®æ
ãèãããšãã§ããæŽ»çºã«æèŠäº€æãè¡ãããŠããŸãã ãã¡ã€ã³ é§åèšèšå
¥é ããã ã¢ãã ã§ããã! ãã¡ã€ã³ é§åèšèšã®åºæ¬ ãã¡ã€ã³é§åèšèšå
¥é ããã ã¢ããã§ããã! ãã¡ã€ã³é§åèšèšã®åºæ¬ äœè
: æç¬ å
宣 ç¿æ³³ç€Ÿ Amazon DDDã«ãããå®è£
ãã¿ãŒã³ïŒæŠè¡çèšèšãšåŒã°ããŠããŸãïŒãäžå¿ã«ç޹ä»ãããŠããæžç±ã§ãã æŠè¡çèšèšã®åãã¿ãŒã³ã«ã€ããŠè©³ãã解説ãšå®è£
æéã瀺ãããŠããŸãã æŠè¡çèšèšã®çè§£ã®ããã«äžèªããã®ã¯ãã¡ãããå®è£
æã«ãªãã¡ã¬ã³ã¹çãªçšéã§çºããŠãåèã«ãªããŸãã ç§ãDDDãå®è·µãã¯ãããé ã¯ãŸã åè¡ãããŠããªãã£ãããããã®æžç±ã®å身ã§ããã ããã ã¢ãããã¡ã€ã³é§åèšèš ãã«ãããäžè©±ã«ãªããŸããã DDDã«æ
£ããªãåœåã¯ã©ã®ããã«å®è£
ããã®ãé©åãªã®ãè¿·ãããšãå€ã
ãããŸãããããµã€ãã«èšèŒãããŠãã詳现ãªèª¬æã倿ææãšãªãå©ããããããšãå€ãã£ãã§ãã ããã ã¢ãããã¡ã€ã³é§åèšèš â nrslib ããã ã¢ãããã¡ã€ã³é§åèšèš åŸç·š â nrslib Domain Driven DesignïŒ ãã¡ã€ã³ é§åèšèšïŒ Quickly æ¥æ¬èªç Domain Driven DesignïŒãã¡ã€ã³é§åèšèšïŒ Quickly æ¥æ¬èªç åŸã»ã©ç޹ä»ããããšãªãã¯ã» ãšãŽã¡ ã³ã¹ã® ãã¡ã€ã³ é§åèšèšããéç§°ã ãšãŽã¡ ã³ã¹æ¬ããã³ã³ãã¯ãã«èŠçŽããæžç±ã§ãã éå㪠ãšãŽã¡ ã³ã¹æ¬ã®èŠç¹ãæŽãããšãã§ããŸãã ãã®æžç±ã§ã¯ããããŸã§ç޹ä»ããŠããæžç±ã§ã¯ããŸã詳现ã«ã¯è§ŠããããŠããŠããªãã£ããå¢çã¥ããããã³ã³ããã¹ãããªã©ã®æŠç¥çèšèšã«é¢ãã解説ãå«ãŸããŠããŸãã ãããã玹ä»ãã2åã¯æŠç¥çèšèšã«é¢ãã話ãç»å Žãé£æåºŠãé«ããªãããããã®æžç±ãå
ã«èªããšãã®åŸã®çè§£ãã¹ã ãŒãºã«é²ãã®ã§ã¯ãšæããŸãã å®è·µ ãã¡ã€ã³ é§åèšèš å®è·µãã¡ã€ã³é§åèšèš (Object Oriented SELECTION) äœè
: ãŽã©ãŒã³ã»ãŽã¡ãŒãã³ ç¿æ³³ç€Ÿ Amazon ãšãŽã¡ ã³ã¹æ¬ã®å
容ãã³ãŒãã亀ããŠå
·äœçã«èª¬æããŠããæžç±ã§ãã DDDãåãå
¥ããæ¶ç©ºã®ãããžã§ã¯ãã顿ãšããŠããããå®éã®ãããžã§ã¯ãã§ã¯ã©ã®ããã«å®çŸããã®ã ããïŒããšæãéšåãå®è£
äŸã€ãã§è§£èª¬ãããŠããŸãã ãµã³ãã«ãããžã§ã¯ãã¯è€æ°ã¢ããªã±ãŒã·ã§ã³ïŒïŒå¢çã¥ããããã³ã³ããã¹ãïŒã«åå²ãããŠããããããŸã§ç޹ä»ããæžç±ã§ã®ãµã³ãã«ãããžã§ã¯ãã®äžã§ãå€§èŠæš¡ãªãã®ãšãªã£ãŠããŸãã ã ãã¡ã€ã³ ã€ãã³ãããªã©ãDDDã«ãããã³ã³ããã¹ãå
å€ãšã®æ
å ±é£æºã®ææ®µã«é¢ããŠè©³çްã«è¿°ã¹ãããŠããããŸãã«DDDãå®è·µããéã®å
·äœäŸãè©°ãŸã£ãŠããŸãã ãšãŽã¡ ã³ã¹æ¬ã®èª¬æã¯æœè±¡çãªãããå
ã«ãã¡ããèªãã§ãããš ãšãŽã¡ ã³ã¹æ¬ã§èšã£ãŠããããšã®ã€ã¡ãŒãžãä»ããããå°è±¡ã§ãã ãã ãã©ã¡ãã®æžç±ãé£ããããçè§£ãå®çãããããã«ã¯ããããèªã¿è¿ãå¿
èŠããããšæããŸãã ãªãããã®æžç±ã®ç« ããšã®èŠçŽãã IDDDæ¬ããçè§£ãããã¡ã€ã³é§åèšèš ããšããŠé£èŒãããŠãããç« ãèªãã åŸã®åãã£ãããã§åãã£ãŠããªãè³å
ãæŽçããã®ã«åœ¹ç«ã¡ãŸãããã ãå®è·µãã¡ã€ã³é§åèšèšãããåŠã¶DDDã®å®è£
å
¥é ããšããŠæžç±åããããŠããããã§ãã®ã§ãè¿ããã¡ã«ãã¡ããçæã«åèªããããšæã£ãŠããŸãã ãå®è·µãã¡ã€ã³é§åèšèšãããåŠã¶DDDã®å®è£
å
¥é äœè
: éæš 淳倫 ç¿æ³³ç€Ÿ Amazon ãšãªãã¯ã» ãšãŽã¡ ã³ã¹ã® ãã¡ã€ã³ é§åèšèš ãšãªãã¯ã»ãšãŽã¡ã³ã¹ã®ãã¡ã€ã³é§åèšèš (IT ArchitectsâArchive ãœãããŠã§ã¢éçºã®å®è·µ) äœè
: ãšãªãã¯ã»ãšãŽã¡ã³ã¹ ç¿æ³³ç€Ÿ Amazon ãã¡ã€ã³ é§åèšèšã®åå
žãšãåŒã°ããæžç±ã§ãã åå
žã§ããïŒåå
žãããã«ïŒïŒæžããŠããå
容ãé£ãããç§ã¯ã²ãšãšããèªäºããããŸãããçè§£ã§ããæèŠã¯ãããŸããã§ããâŠâŠã 察象ãšãªã ãã¡ã€ã³ ãã©ã®ããã« ã¢ããªã³ã° ãæ·±ãã¢ãã«ãžå°éãããŠããããæŠç¥çèšèšã«ã€ããŠè©³çްã«è¿°ã¹ãããŠããæžç±ã¯å°ãªãããããã®ç¹ã¯äžèªããŠã¿ã䟡å€ã¯ãããšæããŸãã æ¬æäžã§äŸãšããŠæããããŠããã¢ããªã±ãŒã·ã§ã³ã¯ãçè
ãå®éã«æºãã£ãæ¥åã¢ããªã±ãŒã·ã§ã³ãåºã«ãªã£ãŠãããããäŸç€ºããã ãã¡ã€ã³ ç¥èã«ãªã¢ãªãã£ãããç¹ããã®æžç±ãªãã§ã¯ã ãšæããŸãã ãªã¢ãªãã£ã®ããè€é㪠ãã¡ã€ã³ ã察象ã«ããŠãããããã«çè§£ãé£ããç¹ãç¡ãã«ããããããªã®ã§ããã察象åéãéãã ãã§æ¥åã¢ããªã±ãŒã·ã§ã³ã«ããã ãã¡ã€ã³ ç¥èã¯å
æ¥è€éãªãã®ã®ã¯ãã§ãã®ã§ããã®å
容ãçè§£ã§ããã°DDDã«å¯Ÿããæ±çšçãªç¥èã身ã«ã€ãããšããããšãªã®ããªãšå人çã«æã£ãŠããŸãã ãªããåè¿°ã®ã ãã¡ã€ã³ é§åèšèš ã¢ããªã³ã° /å®è£
ã¬ã€ããã®èªæžäŒã®åã¯ããã¡ãã®æžç±ã®èªæžäŒãåŒç€Ÿå
ã§éå¬ãããŠããŸããã ç§ã¯ãã®èªæžäŒã§ã¯ãã㊠ãšãŽã¡ ã³ã¹æ¬ã«è§Šããã®ã§ããããããããªãããåå è
ã®éã§å
±æã§ããåã
ã®è§£éãèªãåãããšã§ã¢ãããŒã·ã§ã³ã®ç¶æã«å€§ãã«ç¹ãããŸããïŒäžäººã§èªãã§ãããæ«æããŠãããšæããŸãïŒã ã ãšãŽã¡ ã³ã¹æ¬ã¯é£ããããšããåè©å€ã«è
°ãåŒããŠãªããªãæãåºããã«ããæ¹ïŒéå»ã®ç§ã§ãïŒã¯ã身è¿ãªæ¹ãèªã£ãŠäžç·ã«èªã¿ã¯ãããŠã¿ãã®ãã¢ãªã ãšæããŸãã ãããã« ãã¡ã€ã³ é§åèšèšãšèããšååã ãã§å
容ãã€ã¡ãŒãžã§ããé£ããå°è±¡ãåããŸãããããæè¿ã¯å
¥éè
åãã®æžç±ãã¹ã©ã€ãããããäžã®èšäºãªã©ãå€ãèŠãããããã«ãªãåŠç¿ã®ããŒãã«ã¯äžãã£ãã®ã§ã¯ãšæããŸãã ããããç§ã¯DDDæŽ1å¹Žæªæºã®æ°åè
ã§ããâå®å
šã«çè§£ããâã®åã«ããŸã å°éã§ããŠããªããšã¯æãã®ã§ãããã ãã¡ã€ã³ ç¥èããã®ãŸãŸã³ãŒãã«èœãšã蟌ãããšã§ã³ãŒãã®èŠéããè¯ããªãããä»ã®äººãæžããã³ãŒããã©ãã«äœãæžããŠããã®ãçè§£ããããããªã©ã®æ©æµã¯çŸæç¹ã§ãæããŠããŸãã ãŸã æŠç¥çèšèšã«é¢ããç¥èŠã¯æµ
ããšæããŠããŸãã®ã§ãä»åŸãåšèŸºç¥èã®ç¿åŸå«ãåŠç¿ãç¶ããŠãããŸãã ã¿ãªããããã²ãã®æ©äŒã«DDDãåŠãã§ã¿ãŠã¯ãããã§ããããã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com
ã¯ããã« ããã«ã¡ã¯ããChatDealerãã®éçºã«æºãã£ãŠããy_kwmtã§ãã Excel ãã¡ã€ã«ãããã°ã©ã ã§æ¥œã«æžãåºãæ¹æ³ã調ã¹ãŠããã PHP ã®ã©ã€ãã©ãªãçšã㊠Excel ãã¡ã€ã«ãæžãåºãæ¹æ³ãèŠã€ããŸããã ã¯ããã« PhpSpreadsheetãšã¯ PhpSpreadsheetã®ã€ã³ã¹ããŒã« ã³ãŒãã£ã³ã° PHPãã¡ã€ã«å®è¡ æåŸã« åèã«ãããµã€ã PhpSpreadsheetãšã¯ PhpSpreadsheetã¯ã Excel ãªã©ã®æ§ã
㪠ã¹ãã¬ããã·ãŒã ãã¡ã€ã«åœ¢åŒãèªã¿æžãã§ããã©ã€ãã©ãªã§ãã ä»åã¯ãã® PHP ã®ã©ã€ãã©ãªãPhpSpreadsheetãã«ã€ããŠç޹ä»ããŸãã PhpSpreadsheetã®ã€ã³ã¹ããŒã« Composer ã䜿çšããŠãããžã§ã¯ãã«ãPhpSpreadsheetããã€ã³ã¹ããŒã«ããŸãã PHP ããŒãžã§ã³ã¯ 7.2 以éãå¿
é ãšãªããŸãã composer require phpoffice/phpspreadsheet ã³ãŒãã£ã³ã° Excel ãã¡ã€ã«äœæããã°ã©ã ãindex. php ããäœæããŸãã äžèšã®ã³ãŒãã§ç°¡åãªç¹æ°è¡šãäœæããŸãã <?php require 'vendor/autoload.php' ; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // ã¹ãã¬ããã·ãŒãäœæ $ spreadsheet = new Spreadsheet () ; $ sheet = $ spreadsheet -> getActiveSheet () ; // å€ãšã»ã«ãæå® $ sheet -> setCellValue ( 'B1' , 'è±èª' ) ; $ sheet -> setCellValue ( 'C1' , 'æ°åŠ' ) ; $ sheet -> setCellValue ( 'A2' , 'Aãã' ) ; $ sheet -> setCellValue ( 'A3' , 'Bãã' ) ; $ sheet -> setCellValue ( 'B2' , '90' ) ; $ sheet -> setCellValue ( 'B3' , '80' ) ; $ sheet -> setCellValue ( 'C2' , '70' ) ; $ sheet -> setCellValue ( 'C3' , '95' ) ; // Excelãã¡ã€ã«æžãåºã $ writer = new Xlsx ( $ spreadsheet ) ; $ writer -> save ( 'score.xlsx' ) ; PHP ãã¡ã€ã«å®è¡ php ã³ãã³ãã§å
çšäœæãããindex. php ããå®è¡ããŸãã php index.php Excel ãã¡ã€ã«ãscore.xlsxããäœæãããŸãã æåŸã« ä»åã¯ãPhpSpreadsheetããçšããŠç°¡åãªç¹æ°è¡šãäœæããŸããã ãã®èšäºã PHP ãŠãŒã¶ãŒã®åèã«ãªãã°å¹žãã§ãã ä»åŸãäœæããã³ãŒãã®æ¹è¯ãè¡ããè€é㪠Excel ãã¡ã€ã«ãã³ãã³ãäžçºã§äœæã§ããããã«ããããšæããŸãã åèã«ãããµã€ã phpspreadsheet.readthedocs.io blitzgate.co.jp blitzgate.co.jp ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com
ããã«ã¡ã¯ãYSã§ãã 2020幎7æ9æ¥ã«ã·ã¥ãŒãã€ãã³ãã¥ããã£ã«ãŠéå¬ããã Laravel ã®å匷äŒã«åå ããŠããŸããã shuuu-mai.connpass.com æ®æ®µã®ãããã¯ãéçºã§ãé¢ãã£ãŠãã Laravelã ãã®æ©äŒã«ç€Ÿå€ã®ãããããªç¥èŠã«ãè§ŠããŠã¿ãããšæã£ãã®ããåå ã®ãã£ããã§ãã 以äžãç°¡åã§ããã€ãã³ãå
å®¹ãšææ³ãã¬ããŒãããŸãã çºè¡šå
容 Laravel x Herokuã«ããéçºã»éçš Laravelã®ã³ã³ããéçšã®ãã¹ããã©ã¯ãã£ã¹ãèããŠã¿ã 埪ç°çè€é床80è¶
ãã®çŸè¡ã·ã¹ãã ã« Laravel à ãªããªã³ã¢ãŒããã¯ã㣠ã§ç«ã¡åãã£ã話 Laravelã§å°èп𡿥åã·ã¹ãã ãäœãæã®èŠç¹ ææ³ Laravel ã®å°å
¥ãããã Laravel ã®è±å¯ãªæ©èœäŸ ãããã« ã çºè¡šå
容 CTOããªãŒããšã³ãžãã¢ãšããŠã掻èºãããŠããæ¹ã
ã æ¥åã§å®éã«éçšã»éçºãããŠãã Laravel ã«ã€ããŠèªã£ãŠäžãããŸããã Laravel x Herokuã«ããéçºã»éçš æ ªåŒäŒç€Ÿã¿ã³ããªã³ CTOãç©é è£ä»ãã speakerdeck.com Heroku ã䜿çšãããµãŒãã¹ã®èšå®/éçšã«ã€ããŠèªã£ãŠäžãããŸããã ã¹ã±ãŒã«ã¢ãŠããèšå®ç»é¢ã§ã¹ã©ã€ããŒãåããã ãã§è¡ããã Git merge ã§èªåãããã€ããããã¿ã³ãæŒãã ãæ¬çªãªãªãŒã¹ãè¡ããç Heroku ã§ã¯ããšãŠãç°¡åã«ãµãŒãã¹ã®èšå®ã»éçšãè¡ããããã§ãã èªåãããã€ããã® Laravel ã® Migration ã®é£æºã¯ãŸã 宿œã§ããŠããªããšã®ããšã 工倫ãå¿
èŠãªç®æãããããã§ãã ã Laravelã®ã³ã³ããéçšã®ãã¹ãã ã©ã¯ ãã£ã¹ãèããŠã¿ã æ ªåŒäŒç€ŸROXX CTOãæŸæ¬ å®å€ªãã slides.com Amazon ECS ã䜿çšããã³ã³ããéçšã«ã€ããŠèªã£ãŠäžãããŸããã ã³ã³ããã®äœ¿ãåããããã®ã³ã°ã®èšå®çã«ã€ã㊠å®éã®èšå®å€ããã€ã³ããªã©ãæžãããŠããããã²åèã«ãããæ
å ±ã°ããã§ããã ã 埪ç°çè€é床80è¶
ãã®çŸè¡ã·ã¹ãã ã« Laravel à ãªããªã³ ã¢ãŒããã¯ã㣠ã§ç«ã¡åãã£ã話 æ ªåŒäŒç€Ÿããããæ å 岿ãã speakerdeck.com ãªããªã³ ã¢ãŒããã¯ãã£ ãæ¡çšããããã« Laravel ãå°å
¥ããã話ã«ã€ããŠã®çºè¡šã§ããã ãªããªã³ ã¢ãŒããã¯ã㣠æšé²ã®ããæé©ãª ãã¬ãŒã ã¯ãŒã¯ ãšããŠããªã Laravel ãéžãã ã®ãã å®éã«å°å
¥ããŠã¿ãŠã©ãã ã£ãã®ããªã©ã詳现ãªäºäŸãè峿·±ãã£ãã§ãã ã Laravelã§å°èп𡿥åã·ã¹ãã ãäœãæã®èŠç¹ æ ªåŒäŒç€Ÿã ã©ã ã¶ ãšã³ãžã㢠ãªã³ã°ã ããŒãžã£ãèç§ æ ãã speakerdeck.com é·ã Laravel ã§ã®éçºã«æºãã£ãŠããèç§ããã«ããçºè¡šã§ãã å°èŠæš¡ã·ã¹ãã ã®å®çŸ©ãšãLaravel ã®æ©èœãçšéããšã«ãããããã説æãããŠããããšãŠãåèã«ãªãå
容ã§ããã ã ææ³ ä»åã®ã€ãã³ãã§ã¯å€§ããåããŠãéçšåãããéçºåããã®2çš®é¡ã®LTãããã ç§ã«ã¯ãæ¥ããæºãã£ãŠãããããã¯ãéçºã«é¢ä¿ãããéçºåããã®çºè¡šãåºãããŸããã ç§ãèå³ãæã£ããéçºåããLT ã¯2ã€ãããŸãã Laravel ã®å°å
¥ãããã 1ã€ç®ã¯ããªããªã³ ã¢ãŒããã¯ãã£ ãæ¡çšããããã« Laravel ãå°å
¥ãã話ã§ãã Laravel ãæ¡çšãã芳ç¹ã¯ããèªç±åºŠã®é«ãããDI ãµããŒããã ãã©ãã«ã·ã¥ãŒãã£ã³ã° ãããããããšãã3ç¹ããšã®ããšã§ããã ãèªç±åºŠã®é«ããã ãã©ãã«ã·ã¥ãŒãã£ã³ã° ãããããããšãã2ç¹ã¯ã ç§ãéçºã«æºãã£ãŠãã補åããã£ãããã£ãŒã©ãŒãã§ãLaravel ãæ¡çšããæ¡ä»¶ãšé¡äŒŒããŠãããèŠªè¿æããããŸããã ç¹ã«èгç¹ã ãã©ãã«ã·ã¥ãŒãã£ã³ã° ããããããã®äžã§èª¬æãããŠãã ãå©çšè
ã®å€ãããšããç¹ã¯ã ãã¬ãŒã ã¯ãŒã¯ ã®å¯¿åœã«ãé¢ãããã ãã¬ãŒã ã¯ãŒã¯ éžå®æã®éèŠãªèŠçŽ ã ãšæããŠããŸãã ãŸãã ããžãã¹ããžã㯠ã®åé¢ã«ã€ããŠã解説ãããŠããŸããã ããã£ãããã£ãŒã©ãŒãã®éçºã§ã ããžãã¹ããžã㯠ã®åé¢ãæèããã¬ã€ã€ãŒèšèšãåãå
¥ããŠããŸããã ããæ¬æ Œçã«é²ããããŠããå°è±¡ãäŒãã£ãŠããŸããã Laravel ã®è±å¯ãªæ©èœäŸ 2ã€ç®ã¯ãLaravel ã§ã®éçºã«é·ãæºãã£ãŠããæ¹ãªãã§ã¯ã®è©³çŽ°ãªæ©èœèª¬æã§ããã ãããã Laravel ã§éçºããæ¹åãã®çºè¡šãšã®ããšã§ããã ãã§ã«èŠç¥ã£ãæ©èœä»¥å€ã«ãã䜿çšããããšã®ãªãæ©èœã®èª¬æããããŸããã ä»åŸã®éçºã§æŽ»ãããããªæ©èœãå«ãŸããŠããããLaravel ã£ãŠäŸ¿å©ã ãªããšæ¹ããŠæã£ã次第ã§ãã ä»å玹ä»ã®ãã£ãæ©èœä»¥å€ãå«ããŠã äžåºŠãLaravel ã®å
¬åŒãªãã¡ã¬ã³ã¹ã«ããã£ãŠãå
šæ©èœã確èªããŠããå¿
èŠãããããã§ãã ã ãããã« å®ã¯ Zoom ã§ã®ãªã³ã©ã€ã³å匷äŒåå ã¯äººçåã®çµéšã§ããã 話ããŠããæ¹ã®ãéããæ®æ®µã®å匷äŒãšã¯ãŸãéã£ããéããããããšãŠãæ°é®®ã§ããã ä»åã®åå ããå匷äŒã¯ãæ®æ®µã¯æ±äº¬ã§éå¬ãããŠããããã§ãã 倧éªåšäœã®ç§ãšããŠã¯ãåå ãé£ããå匷äŒã«åå ããããšãã§ããã®ãããªã³ã©ã€ã³éå¬ãªãã§ã¯è¯ãçµéšã§ããã ã æåŸã«å®£äŒãšãªããŸããã æ ªåŒäŒç€Ÿã©ã¯ã¹ ã§ã PHP ãã¯ãããšããåçš®å匷äŒãéå¬ããŠããŸãã ãªã³ã©ã€ã³äžå¿ãšãªããŸãã®ã§ãåå ããããããšæããŸãããããããã°ãã²ãåå ãã ããã 詳ããã¯ãã¡ããã芧ãã ããã https://rakus.connpass.com/ rakus.connpass.com
ããã«ã¡ã¯ããšã³ãžãã¢ã® id:eichisanden ã§ãã CentOS6ããCentOS7ã«ããŒãžã§ã³ã¢ããããæã«è¬ã®æ§èœå£åã«èŠãããããããšããããŸããã 仿ŽCentOS7ãšããæãããããŸãããæããCentOS8ã«ãéãã話ãªã®ãšã CentOS6ã®ãµããŒãã2020/11/30ã«åããã®ã§ããŒãžã§ã³ã¢ããããæ¹ããããšæãèšäºã«ããŠã¿ãŸããã åãæ¡ä»¶ã§æ§èœãæ¯èŒããŠã¿ã ç¹å®ã®åŠçãé¡èã«æ§èœå£åãã ããããOSåäœã®æ§èœã¯ã©ããªã®ã ã¿ãŒãã»ããŒã¹ããæå¹ã«ãªã£ãŠãããã®ç¢ºèª ã¿ãŒãã»ããŒã¹ãã¯æå¹ã ã£ã CPUã¬ãããŒãperformanceã«å€æŽããŠã¿ã tunedã®èšå®ã倿Žãã CPUã®è匱æ§ãããã®ååšã«æ°ã¥ã 詊ãã«è匱æ§ããããç¡å¹ã«ããŠã¿ã ãããã« åãæ¡ä»¶ã§æ§èœãæ¯èŒããŠã¿ã ãŸããã»ãŒåãã¹ããã¯ã®ç©çãµãŒãã2å°çšæããŠãåãã¢ããªãåãããŒã¿ãåãåŠçãæµããŠæ§èœæ¯èŒãè¡ããŸããã ç¹å®ã®åŠçãé¡èã«æ§èœå£åãã ãã ãããåŠç ã¯CentOS6ã§ã¯148ç§ã§çµãã£ãŠããã®ã«CentOS7ã§ã¯168ç§ããããçµæã«ãªããŸããã ã¡ãã£ãšååŸã¿ã€ãã³ã°ãããã¡ãã£ãŠãŸããvmstatãã°ã©ãåããŠèŠãŠã¿ãŸãã CentOS7 CentOS6 ããã«CPUã®sysïŒ Linux ã«ãŒãã« ã䜿ã£ãŠããCPU䜿çšçïŒã®èµ€ãç®ç«ã€ã®ãšè¥å¹² ã³ã³ããã¹ãã¹ã€ãã ãå€ãããšãç®ã«ã€ããã®ã§CPUåšããçãããšã«ããŸããã ããããOSåäœã®æ§èœã¯ã©ããªã®ã OSåäœã®æ§èœã¯ã©ããªã®ããšããããšã§UnixBenchãååŸããŸããã çµæãã¿ããšã Dhrystone 2 using register variables ãšããæŽæ°æŒç®ä»¥å€ã¯CentOS6ã®å§åãšããçµæã«ã 枬å®ããã¢ããªã«éãã¯ãªãããç°å¢èªäœã®åé¡ãšçã£ãŠããŸããã®ã§äºæ³éãã®çµæã«ãªããŸããã ãšèšãããšã§ãç¶ããŠOSã®èšå®ã«ãã¹ããªãããèŠãŠãããŸãã ã¿ãŒãã»ããŒã¹ããæå¹ã«ãªã£ãŠãããã®ç¢ºèª ã¿ãŒãã»ããŒã¹ã ãšããã®ã¯è² è·ãããã£ãŠããã³ã¢ã«å¯ŸããŠå®æ Œã®åäœåšæ³¢æ°ãããé«ãåšæ³¢æ°ã§åãã ã€ã³ãã« ã®CPUã®ä»çµã¿ã§ãã æ€èšŒã«äœ¿çšããã®ã¯ã¿ãŒãã»ããŒã¹ãã«å¯Ÿå¿ãã Xeon ã§ããããããç¡å¹ã«ãªã£ãŠããªãã®ã§ã¯ïŒãšçã£ãŠã¿ãŸããã ã¿ãŒãã»ããŒã¹ãã¯æå¹ã ã£ã cpupowerã³ãã³ãèŠããšã boost state support ã Active: yes ã«ãªã£ãŠããã®ã§æå¹ã«ãªã£ãŠããããã§ãã # cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 800 MHz - 3.50 GHz available cpufreq governors: performance powersave current policy: frequency should be within 800 MHz and 3.50 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: 1.20 GHz (asserted by call to hardware) boost state support: Supported: yes Active: yes åæã«ããã®CPUã®åšæ³¢æ°ã¯3GHzã§ããã800MHzãã3.5GHzã®ç¯å²ã§åãããšã ãã®ã³ãã³ããå©ããç¬éã¯1.2GHzã®åšæ³¢æ°ã§åããŠããããšãã³ãã³ãã®çµæããåãããŸãã äœãåšæ³¢æ°ã§åäœããŠããã®ã¯CPUã¬ãããŒã powersave ã«ãªã£ãŠããããšãåå ãªããã§ãã powersave ã¯æ äœåšæ³¢ æ°ã«åºå®ããŠåäœãããšããèšäºããã£ãã®ã§ããã UnixBenchäžã®è² è·ãæãã£ãç¶æ
ã§èŠãŠã¿ããšè² è·ãæããã°æå€§åšæ³¢æ°ã§åäœããããã§ããã # cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 800 MHz - 3.50 GHz available cpufreq governors: performance powersave current policy: frequency should be within 800 MHz and 3.50 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: 3.50 GHz (asserted by call to hardware) boost state support: Supported: yes Active: yes æ€èšŒã«äœ¿çšãããµãŒããŒã®CPU㯠performance ãš powersave ãããµããŒãããŠããŸãããã powersave 㯠ondemand ãéžãã æã®ããã«å¿
èŠã«å¿ããŠåšæ³¢æ°ãäžãããããªåããããããšãåãããŸããã CPUã¬ãããŒãperformanceã«å€æŽããŠã¿ã è² è·ãæããã°åšæ³¢æ°ãæå€§ãŸã§äžããã®ã§æå³ããªããããšæãã€ã€ performance ã«å€æŽããŠã¿ãŸã # cpupower frequency-set --governor performance Setting cpu: 0 Setting cpu: 1 Setting cpu: 2 Setting cpu: 3 å床æ§èœæž¬å®ãããšããã168ç§æãã£ãŠããã®ãã159ç§ã«ãŸã§äžæ°ã«æ©ããªããŸããïŒïŒ powersaveã§ãæçµçã«ã¯ããŒã¹ããå¹ãã®ã§ãããŸã§å·®ãåºããšã¯æã£ãŠãããæå€ãªçµæã§ããã ãã ããŸã æã£ãæ§èœãåºãŠããªãã®ã§æ€èšŒãç¶ããŸãã tunedã®èšå®ã倿Žãã CPUã¬ãããŒã ããèšå®ããŠãããã®ã§ãããCentOS7ããå°å
¥ãããtunedãšããåçš®ãã©ã¡ãŒã¿ã䟿å©ã«èšå®ã§ããä»çµãããã®ã§ããã䜿çšããŠèšå®ããŸãã æ€èšŒã«äœ¿çšãããµãŒããŒã¯ balanced ãããã©ã«ãã§èšå®ãããŠããã®ã§ã throughput-performance ã«å€æŽããŸããã # ããã©ã«ãã®èšå® # tuned-adm recommend balanced # çŸåšã®èšå®ãç¢ºèª # tuned-adm active Current active profile: balanced # throughput-performanceã«å€æŽ # tuned-adm profile throughput-performance CPUã¬ãããŒãperformanceã«ãªã以å€ã«ãããã€ãã®ãã©ã¡ãŒã¿ãããã©ãŒãã³ã¹å¯ãã®èšå®ã«ãªããŸãããã©ããªèšå®ã«ãªããã¯èšå®ãã¡ã€ã«ã§ç¢ºèªã§ããŸãã # cat /lib/tuned/throughput-performance/tuned.conf |grep -e "^[^#]" [main] summary=Broadly applicable tuning that provides excellent performance across a variety of common server workloads [cpu] governor=performance energy_perf_bias=performance min_perf_pct=100 [disk] readahead=>4096 [sysctl] kernel.sched_min_granularity_ns = 10000000 kernel.sched_wakeup_granularity_ns = 15000000 vm.dirty_ratio = 40 vm.dirty_background_ratio = 10 vm.swappiness=10 CPUã® èåŒ±æ§ ãããã®ååšã«æ°ã¥ã ãŸã CentOS6ã®æ§èœã«åã°ãªãã®ã§è²ã
調ã¹ãŠãããšã2018幎ã¯ããã«åé¡ã«ãªã£ãSpectreãšMeltdown察çã®ãããã§æ§èœå£åãããšããèšäºãèŠã€ããŸããã IntelがSpectreとMeltdown修正による0〜21パーセントのパフォーマンス低下を公表 ãã®èгç¹ã§èŠãŠãããšCentOS6ã®æ€èšŒã«äœ¿ã£ããµãŒãã® ã«ãŒãã« ã¯ã¢ããããŒããããŠãããã 察ããŠCentOS7㯠èåŒ±æ§ ãããããã£ããåœãã£ãŠããã®ã§ã ãããé床ã®éãã®èŠå ã ãšããããããšãèŠããŠããŸããã 詊ãã« èåŒ±æ§ ããããç¡å¹ã«ããŠã¿ã æ¬çªç°å¢ã® èåŒ±æ§ ã®ããããç¡å¹ã«ããã€ããã¯ãããŸãããã Meltdownã®ããããç¡å¹ã«ããããšãèšå®ãã¡ã€ã«ã®æžãæãã ãã§åºæ¥ãã®ã§è©Šãã«ãã£ãŠã¿ãŸããã # cat /sys/kernel/debug/x86/pti_enabled 1 # cat /sys/kernel/debug/x86/retp_enabled 1 # cat /sys/kernel/debug/x86/ibrs_enabled 0 # echo 0 > /sys/kernel/debug/x86/pti_enabled # echo 0 > /sys/kernel/debug/x86/retp_enabled ç¡å¹ã«ã㊠ãã³ãããŒã¯ ãåããšå
ãã§ããæ§èœåäžããŠããŸããã CentOS7ã®æ¹ã¯ä»ã«ããã€ãCPUé¢é£ã® èåŒ±æ§ ããããåœãã£ãŠããã å
šãŠã®ããããç¡å¹ã«ããŠã®æ€èšŒãåºæ¥ãªãããæ³åã«ãªããŸãããæ§èœå£åã®åå ã¯ãã®ããããšããçµè«ã«èªåã®äžã§ã¯èœã¡çããŸããã ããããå
ã¯ãã¥ãŒãã³ã°ã§è£ãæ¹åã«æ¹éãåãæ¿ãã調æ»ãšããŠã¯äžæŠå®äºãšããŸããã ããã㫠倧ããªæ§æå€æŽãããæã«ã¯ååŸã®æ§èœæ¯èŒãããããšãéåžžã«å€§äºã ãšæ¹ããŠæããŸããã æ§èœæž¬å®ããç°å¢ã®æ¡ä»¶ã¯æ¥µåæãããšããã®ãæèšã«ãªããŸããã åå ãåããã°å¯Ÿçã®ããããããã®ã§ããã€ãã調ã¹ãç²æããããŸããã 以äžã«ãªããŸããæåŸãŸã§èªãã§ããã ãããããšãããããŸããã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
ããã«ã¡ã¯ãtakaramã§ãã æè¿æ¥åã§ PHPUnit ã䜿ã£ããã¹ããæžãæ©äŒãå¢ããŠããŸãããåã㯠assertEquals ããç¥ããªãã£ãããã§ãããæè¿ã¯é©å㪠ã¢ãµãŒã·ã§ã³ ã¡ãœãããéžæã§ããããã«ãªã£ãŠããŸãããããã§ä»åã¯æ°ãã PHPUnit ã® ã¢ãµãŒã·ã§ã³ ã¡ãœããã®äžãããäžè¬çã«ãã䜿ããããªãã®ãç¬æãšåèŠã§éžãã§ã玹ä»ããŸãïŒ ãªãã以äžã®å
容ã¯å·çæç¹ã®ææ°çã® PHPUnit (v9.2.6) ã«åºã¥ããŠããŸãã PHPUnitã®ã¢ãµãŒã·ã§ã³ã¡ãœãã assertEquals assertSame assertTrue, assertFalse, assertNull assertCount assertStringStartsWith, assertStringEndsWith, assertStringContainsString assertRegExp assertIsXXX, assertInstanceOf æåŸã« PHPUnit ã® ã¢ãµãŒã·ã§ã³ ã¡ãœãã assertEquals ããå€ãæåŸ
ããå€ãšçãããã©ãããå€å®ããŸãã PHPUnit ã®åå¿è
åãè³æã«ãããåºãŠããããªãã¿ã®ã¡ãœããã§ããã åºæ¬çã«ã¯ã»ãŒäœ¿ããŸãã ããšããã®ãããã㯠æé»ã®å倿ãè¡ããã ããã§ã *1 ãããšãã°ã以äžã® ã¢ãµãŒã·ã§ã³ ã¯å
šãŠæåããŸãã $this- > assertEquals(1, '1'); $this- > assertEquals(null, ''); $this- > assertEquals(null, false); $this- > assertEquals(null, 0); $this- > assertEquals('1', true); ãã¹ãã«ãããŠã¯ãããããå倿ã¯å¬ããå Žé¢ãããå°ãå Žé¢ã®ã»ããå€ãã®ã§ã¯ãªãã§ãããããåŒæ°ã®å
容ã«ãã£ãŠã¯å倿ãèµ·ãããªãã±ãŒã¹ããããŸãããç¹ã«çç±ããªãéãã¯äœ¿ããªããšæã£ãŠããã§ãããã assertSame ã§ã¯ assertEquals ã®ä»£ããã«äœã䜿ãããšãããšããã® assertSame ã§ããåãå«ããæ¯èŒãè¡ãããŸãã PHPUnit åå¿è
ãªãããšããããããããç¥ã£ãŠããã°äœãšããªããŸãã $this- > assertSame('hoge', 'hoge'); // OK $this- > assertSame(0, 0); // OK $this- > assertSame(false, false); // OK $this- > assertSame('hoge', 'fuga'); // NG $this- > assertSame(0, false); // NG $this- > assertSame(7, '7'); // NG assertTrue, assertFalse, assertNull ãããã true , false , null ãšçããããšãå€å®ããŸããå倿ã¯è¡ãããŸãããã€ãŸãã以äžã®2ã€ã¯ã»ãŒåçã§ãã $this- > assertTrue($actualValue); $this- > assertSame(true, $actualValue); ã©ã¡ãã§ããã¹ãã®æåã»å€±æã¯å€ãããŸãããã倱ææã®ã¡ãã»ãŒãžã assertTrue ãªã©ã®æ¹ãå€å°åããããããªããŸãã # assertSame(true, false) ã®ã¡ãã»ãŒãž Failed asserting that false is identical to true. # assertTrue(false) ã®ã¡ãã»ãŒãž Failed asserting that false is true. assertCount é
åã countable ãªãªããžã§ã¯ãã®èŠ çŽ æ° ãæ€æ»ããŸãã assertSame ã®åŒæ°ã« count() ã®çµæãæž¡ãããšã§ãåããã¹ãã¯ã§ããŸãããããããã¯ã倱ææã¡ãã»ãŒãžã assertCount ã®æ¹ãåããããããªã£ãŠããŸãã # assertSame(1, count([])) ã®ã¡ãã»ãŒãž Failed asserting that 0 is identical to 1. # assertCount(1, []) ã®ã¡ãã»ãŒãž Failed asserting that actual size 0 matches expected size 1. assertStringStartsWith, assertStringEndsWith, assertStringContainsString æååã®å
容ãéšåäžèŽã§æ€æ»ãã ã¢ãµãŒã·ã§ã³ ã§ããåãããšã assertSame ã§ããããšæããš strpos() ã substr() ã䜿ãããšã«ãªããŸããããããã® ã¢ãµãŒã·ã§ã³ ã¡ãœãããå©çšããã»ãããã¹ãã³ãŒãäžãæå³ããããããããªããŸããã // 以äž2ã€ã¯åãå
容ã®ãã¹ã $this- > assertStringStartsWith('foo', $string); $this- > assertSame(0, strpos($string, 'foo')); // äœããã¹ããããã®ãããçè§£ãã«ãã // 以äž2ã€ã¯åãå
容ã®ãã¹ã $this- > assertStringEndsWith('bar', $string); $this- > assertSame('bar', substr($string, -3)); // ãããçè§£ãã«ãã assertRegExp æååã æ£èŠè¡šçŸ ã«ããããããæ€æ»ããŸããäžèšã® assertStringContainsString ãªã©ãããæ¡ä»¶ãè€éãªå Žåã«äœ¿ããŸãã assertIsXXX, assertInstanceOf å€ãé
åãã©ãããæ€æ»ããããã«ã assertTrue(is_array($value)) ãšãã代ããã« assertIsArray($value) ãšæžãããšãã§ããŸãã is_array 以å€ã«ã is_int , is_numeric , is_string , is_bool , is_callable , is_object ãªã©ã is_xxx ã®é¢æ°ã«å¯Ÿå¿ãã ã¢ãµãŒã·ã§ã³ ã¡ãœããã¯äžéãçšæãããŠããŸãã ãŸãããªããžã§ã¯ãã®åãæ€æ»ãããå Žå㯠assertInstanceOf(SomeClass::class, $value) ã䜿ããŸãã æåŸã« ä»å玹ä»ãã ã¢ãµãŒã·ã§ã³ ã¡ãœããã¯ããäžéšã§ãã ã¢ãµãŒã·ã§ã³ã¡ãœããã®äžèЧ ãããã¥ã¢ã«ã«ããã®ã§ãã©ããªã¡ãœãããçšæãããŠããã®ãããã²äžåºŠèŠãŠã¿ãŠãã ããïŒ ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com *1 : PHP ã®== æŒç®å ã«äŒŒãŠããŸããã以äžã®èšäºã§è§£èª¬ãããŠããããã«ãå³å¯ã«ã¯ç°ãªããŸãã https://qiita.com/aminevsky/items/238b7ed77766a3d3023d
ã¯ããã« åããŸããŠãntthuatãšç³ããŸãã ã©ã¯ ã¹ã«å
¥ç€ŸããŠ3幎ç®ã«ãªããŸãããæéãéããã®ã¯æ©ãã§ããã ããŠã2020幎12ææ«ã« Flash ã®ãµããŒããçµäºãããšãã話ã¯çããããåç¥ããšæããŸãã ä»åãç§ãéçºæ
åœããŠãããæ¥œæ¥œç²Ÿç®ãã§ã Flash ã®ä»£ããã« WebUSB ãšããæè¡ãçšããŠã ICã«ãŒã å±¥æŽãåãèŸŒãæ©èœããªãªãŒã¹ããããšã«ãªããŸããã ãã®èšäºã§ã¯ãã® WebUSB ã«ã€ããŠè©Šããããšãäžéšã玹ä»ãããŠããã ããŸãã ã¯ããã« åäœç¢ºèªç°å¢ WebUSBãšã¯ PaSoRi RC-S380/Sã®ãã©ã€ããŒãã€ã³ã¹ããŒã«ãã WebUSBã®åäœç¢ºèª ãããã« åäœç¢ºèªç°å¢ 以äžã®ç°å¢ã§ WebUSB ã®åäœã確èªããŸãã Windows 10 Google Chrome 83 PaSoRi RC-S380/S WebUSB ãšã¯ ç°¡åã«èšããšã WebUSB 㯠javascript ã§æžãããŠãã API ã§ãã WebUSB ã¯PCã«æ¥ç¶ãããUSBã ãã€ã¹ ã« Chromium ç³»ãã©ãŠã¶ïŒ Chrome ãªã©ïŒããçŽæ¥ã¢ã¯ã»ã¹ããããšãã§ããæè¡ã§ãã USBã ãã€ã¹ ã®èªèãèªã¿åºããªã©ãè¡ãããšãã§ããŸãã Edge㯠Chromium ããŒã¹ã§éçºããŠããŸãã®ã§Edgeã§ã WebUSB ã䜿çšã§ããŸãã Chrome ã®Developer Toolsã§ WebUSB ã® API ãå®è¡ããŠã¿ãŸãããã await navigator.usb.requestDevice( { 'filters' : []} ) ãã©ã€ããŒãã€ã³ã¹ããŒã«ããã«ãã©ãŠã¶èªäœã®ã¿ã§USBã ãã€ã¹ ãèªèã§ããŸãã ä»å㯠PaSoRi RC-S380/Sçµç±ã§ WebUSB ã®åäœã確èªããŸãã®ã§ PaSoRi RC-S380/Sã®ãã©ã€ããŒã®ãã©ã€ããŒãå¿
èŠã§ãã PaSoRi RC-S380/Sã®ãã©ã€ããŒãã€ã³ã¹ããŒã«ãã ソニー株式会社 | FeliCa | 法人のお客様 | 製品情報 |ソフトウェア開発環境 |ICS-DCWE9 SDK for NFC Web Client | 個人情報取得同意説明 ã§è©äŸ¡çãããŠã³ããŒãã§ããŸãã Sony ãµã€ãã§ã®ããã¥ã¢ã«ã®ãšããå®è¡ããŸãã ã³ãã³ãããã³ãã çã§ã NFC ããŒããœãããŠã§ã¢ã以äžã®ãªãã·ã§ã³ãæå®ããŠã€ã³ã¹ããŒã«ããŠãã ããã NFCPortWithDriver.exe /WinUSBã æ³šæç¹ïŒ NFCPortWithDriver.exeãããã«ã¯ãªãã¯ãããšãWinUSBãå«ããªããã©ã€ããŒãã€ã³ã¹ããŒã«ããŠããŸããŸãã®ã§ãWinUSBã«ä»ããŠå®è¡ããŠãã ããã ãã©ã€ããŒã€ã³ã¹ããŒã«ãå®äºãããã NFC ããŒãèªå·±èšºæ(ãã©ã€ãåãæã)ã§WinUSBãã©ã€ããŒã«åãæããã§ããŸãã WinUSBã«åãæ¿ãããŠãã ããã WebUSB ã®åäœç¢ºèª PaSoRi RC-S380/Sçµç±ã§ ICã«ãŒã ãåã蟌ã¿ã確èªããŸãããã ãœã㌠ã®ãµããŒããµã€ãã§æäŸãããŠãããµã³ãã«ããã°ã©ã ãå®è¡ããŠã¿ãŸãã ãµã³ãã«ããã°ã©ã ã® ãœãŒã¹ã³ãŒã ã«ã€ããŸããŠã¯ã詳ãã㯠Sony ãµã€ãã§ã芧ãã ããã PaSoRi RC-S380/SãPCã«ç¹ããŠExecuteãã¿ã³ãã¯ãªãã¯ãããšãã ãã€ã¹ ãéžæãããã€ã¢ãã°ãåºãŠãRC-S380/Sãèªèã㊠ICã«ãŒã å±¥æŽãèªã¿åãã§ããŸãã å®è¡çµæã¯ä»¥äžã®ããã§ãã ã¬ã¹ãã³ã¹ã®ããŒã¿ã¯hexã®ãã©ãŒãããã§ãããåæããŠæ¥ä»ãè·é¢ãéé¡ãªã©ãååŸã§ããŸãã ãããã« Flash ã®ãã¢ãŒãéãŸããš WebUSB ã®ãã¢ãŒãéãããŸããã(^_^) WebUSB ã§ãã©ãŠã¶ããUSBã ãã€ã¹ ãèªåãã§ããŠçŽ æŽãããã£ãã§ãã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com
ã¯ãããŸããŠãæ°èŠãµãŒãã¹ã®éçºããŒã ã«æå±ããŠããkarabishã§ãã åããæ°ã«ãªã£ãŠãã Grafana Loki ãããŒã«ã«ã§è©ŠããŠã¿ãŸããã Grafana Lokiã¯ãã°éçŽã·ã¹ãã ã§ã䌌ããã®ãšããŠã¯ Elasticsearch ã Splunk ã«ãªãã®ããšæããŸãã å
¬åŒããã¥ã¡ã³ãã§ã Elasticsearch ãšã® æ¯èŒ ãèšèŒãããŠããŸãã ç°å¢æ§ç¯ 1. ãã®ã³ã°ãã©ã°ã€ã³ã®ã€ã³ã¹ããŒã« 2. docker-compose.ymlã«Lokiã远å 3. docker-composeã®èµ·å ãã°ã®é²èŠ§ãšæ€çŽ¢ åæèšå® ãã°ã®é²èЧ æåŸã« ç°å¢æ§ç¯ ä»åã¯ã docker-compose ã§ããŒã«ã«ã«Lokiãæ§ç¯ããæé ã«ãªããŸãã PostgreSQL ã®ãã°ã転éãããããã«ããŠããŸãã 1. ãã®ã³ã° ãã©ã°ã€ã³ ã®ã€ã³ã¹ããŒã« PostgreSQL ã®ãã°ãLokiã«çŽæ¥è»¢éããããã«docker pluginãã€ã³ã¹ããŒã«ããŸãã docker pluginã«ã€ããŠã¯ Docker Driver Client ã«èšèŒãããŠããŸãã $ docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions latest: Pulling from grafana/loki-docker-driver 0974501310e6: Download complete Digest: sha256:436fb0e17e7dde023398b539b03d91d902d5293da199a6ef6bb0b8262b8801e7 Status: Downloaded newer image for grafana/loki-docker-driver:latest Installed plugin grafana/loki-docker-driver:latest $ 2. docker-compose.ymlã«Lokiã远å ããã¥ã¡ã³ã ã«ç޹ä»ãããŠããdocker-compose.ymlãåèã«èšèŒãããã®ã§ãã PostgreSQL ã®ãã°ãLokiã«è»¢éããããã«loggingããããã£ã§Lokiã®æ¥ç¶æ
å ±ãèšèŒããŠããŸãã version: "3.8" networks: loki: services: postgres: image: postgres:12.3 container_name: postgresql ports: - 5432:5432 environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=sample restart: always logging: driver: loki options: loki-url: http://localhost:3100/loki/api/v1/push volumes: - postgresdata:/var/lib/postgresql/data loki: image: grafana/loki:1.5.0 container_name: loki ports: - 3100:3100 command: -config.file=/etc/loki/local-config.yaml networks: - loki grafana: image: grafana/grafana:master container_name: grafana ports: - 3000:3000 networks: - loki volumes: postgresdata: driver: local 3. docker-composeã®èµ·å $ docker-compose up -d Creating network "grafana-loki_default" with the default driver Creating network "grafana-loki_loki" with the default driver Creating volume "grafana-loki_postgresdata" with local driver Creating loki ... done Creating grafana ... done Creating postgresql ... done $ ãã°ã®é²èŠ§ãšæ€çŽ¢ åæèšå® Grafanaã«ãã°ã€ã³ããŸãã URL㯠http://localhost:3000/ ã§ãã ååã¯Email or username: admin ãPassword: admin ã§ãã°ã€ã³ã§ããŸãã Add your first data sourceããLokiãéžæããŠãURLæ¬ã« http://loki:3100 ãå
¥åã®äžã[SaveïŒTest]ãã¿ã³ãæŒãã°åæèšå®ã¯å®äºã§ãã ãã°ã®é²èЧ ãµã€ãã¡ãã¥ãŒããExploreã«ã¢ã¯ã»ã¹ããŸããããšã¯ãLog lablesãèšå®ãããšãã°ãé²èЧã§ããŸãã äžã®ç»å㯠container_name ã©ãã«ã§ postgresql ã³ã³ããã®ãã°ãé²èЧããçµæã§ãã æåŸã« æ¯èŒçå°ãªãäœæ¥ã§ PostgreSQL ã®ãã°ãLokiã§éçŽããŠGrafanaã§é²èЧãããŸã§ã®æ§ç¯ã¯ã§ããŸããã PostgreSQL ã®ãã°ãèŠãã ãã§ããã° docker logs ã§åé¡ãªãã®ã§ãããä»ã®ãã°ãããããŠã¿ããæãããã®ã§ä»åŸã¯éçŽãããã°ãå¢ãããŠãããã°ãšæããŸãã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
çããããã«ã¡ã¯ã ã©ã¯ ã¹ã®ããžãµã¯ã§ãã 以åãTypeScriptãå§ããå㯠ãåŠç¿ã³ã¹ããé«ããããä»åããŠãããµãŒãã¹ã«å°å
¥ããã®ã¯é£ãããã ãããªãã ãšããã€ã¡ãŒãžã匷ãã£ãã®ã§ããããªããŠããšã¯ãªããã¿ã€ãã«ã«ããéãã ãTypeScript䜿ããªããšããéžæè¢ãªããïŒãããã¬ã¬ã·ãŒãªã¢ããªã±ãŒã·ã§ã³ããã䜿ã£ãŠããã¹ããããïŒã ãšæã®ã²ããã°ãªã³ã°ãªã³å転ããã®ã§ããã²çããã«ç޹ä»ãããŠããããããšæãããã®èšäºãæžãããšã«ããŸããã TypeScriptãšã¯ Microsoft 補ã®AltJS( JavaScript ã®ä»£æ¿ãšãªããã®ïŒã§ã OSS ã§éçºãããŠãã éçåä»ãèšèªã§ãçŽæçã«ããã°ã JavaScript ïŒåã TypeScript ã³ã³ãã€ã© ããwebpackãBabelãªã©ã§ JavaScript ã«ãã©ã³ã¹ãã€ã«ããŠäœ¿çšãã ããã³ããšã³ãïŒãã©ãŠã¶ïŒãããã¯ãšã³ãïŒNode.jsïŒåæ¹ã®éçºã§æŽ»çšã§ãã çç±â ãTypeScript㯠JavaScript ã®ã¹ãŒããŒã»ããã§ããã ããã¯ã å
¬åŒãµã€ã ã®åé ã«åºãŠããèšèãªã®ã§ãããã¡ãã£ãšäœèšã£ãŠããåãããªãã§ãããã ç°¡åã«ãããšã ãTypeScript㯠JavaScript ã®äžäœäºæã§ããã JavaScript ã®ææ³ã»ç¥èããã®ãŸãŸé©çšã§ãããã ãšããããšãèšã£ãŠããŸãã ãã¡ãããTypeScriptåºæã®èšèªä»æ§ãã䟿å©ãªäœ¿ãæ¹ãªã©ã¯ååšããã®ã§ããããããç¿åŸããŠããªããŠãTypeScriptãå©çšããããšãã§ããŸãã ãã£ãšèšãã°ãã JavaScript ãšæã£ãŠäœ¿ãããšãã§ããããå¿
èŠã«å¿ããŠTypeScriptãªãã§ã¯ã®æ©èœã䜿ãããšãã§ããããšè¡šçŸã§ããŸãã çç±â¡ã åæšè« ã®æ©æµã«ããåã«å¯Ÿããå®å
šæ§ãç²åŸã§ãã åæšè« ãšã¯ã倿°ã颿° ã·ã°ãã㣠ã®åãæç€ºçã«å®£èšããªããŠããåæåã®éã«ä»£å
¥ããå€ãã颿°åŒã³åºãã®å®åŒæ°ãªã©ã®æ
å ±ãæèãããèªåçã«åãæšæž¬ããŠæ±ºå®ããä»çµã¿ã®ããšãèšããŸãã ããã«ããããã¡ãã¡åãæžããšåé·ãªèšè¿°ã«ãªããã¡ãªåã·ã¹ãã ã«ããå®å
šæ§ã享åããªãããåé·ããåé¿ããã·ã³ãã«ãªèšè¿°ãã§ãããšèšãããŠããŸãã â»ãªãã åæšè« ã«ã€ããŠã¯è³åŠãããã åæšè« ãæŽ»ãããã³ãŒãã¯ãæç€ºçã«åã衚çŸãããªãã®ã§ãäºæ³å€ã®æšè«çµæã«ãªã£ãããéã«ãããã«ãããªã£ãŠããŸããšããæèŠããããŸãã TypeScriptã® åæšè« ããªãã¬ã¬ã·ãŒã³ãŒãã«ãšã£ãŠéèŠãªã®ãïŒ åè¿°ã®éããTypeScriptã® åæšè« ã®æ©èœã«ãã£ãŠãæ¢åã® JavaScript ã³ãŒããå宣èšãè¡ã£ãŠããªããŠããåãæšæž¬ãã ã³ã³ãã€ã« æã«é©åã«ãã§ãã¯ãè¡ã£ãŠãããããã«ãªããŸãã ããã¯ããããšããšåã®æŠå¿µãååšããŠããªãã³ãŒããã§ãã£ããšããŠããéšåçã«åå®å
šãä¿ã£ãŠããããšãã§ãããšããããšãæå³ããŠããŸãã ã³ãŒãã®å
·äœäŸãããã€ãæããªãããã©ã®ããã« åæšè« ãè¡ããã ã³ã³ãã€ã« æã®åãã§ãã¯ã«å©çšããããã玹ä»ããŸãã TypeScriptã«ããã åæšè« ã®äŸ äŸ1 : let/const let foo = 'hello' ; // æç€ºçã«æå®ããŠããªãããfooã¯stringã§ãããšèªèããã foo = 1; // ã³ã³ãã€ã«ãšã©ãŒ console.log(foo); 1è¡ç®ã§foo㯠string ã§ããããšãããã£ãŠããã®ã§ã2è¡ç®ã® number åã®å€ã代å
¥ããããšãããšãšã©ãŒã«ãªã äŸ2 : returnå€â function someFunc() { return 100; // æç€ºçã«æå®ããŠããªãããè¿åŽå€ã¯numberã§ãããšèªèããã } let message: string = someFunc(); // ã³ã³ãã€ã«ãšã©ãŒ someFuncã®æ»ãå€ã number ã§ããããšãåãã£ãŠããã®ã§ã string åã®å€ãžã®ä»£å
¥ã ã³ã³ãã€ã« ãšã©ãŒã«ãªã äŸ3 : returnå€â¡ function multi(a: number, b:number) { return a * b; //number * number = number } åŒæ°ã number ãªã®ã§ãæŒç®çµæã number ã§ãããšæšè«ããã äŸ4 : é
å let foo = [ 0, 1, 2 ] // foo: number[]ãšæšè« let bar = [ 0, 1, 'aaa' ] // bar: (number | string)ãšæšè« äŸ5 : Object const user = { name: 'Taro' , // name: stringãšæšè« age: 20 // age: numberãšæšè« } /* 以äžã®åãæã€ãªããžã§ã¯ãã§ããããšãæšæž¬ããã const user: { name: string; age: number; } */ JSON let data = [ { "id" : 100, "name" : "Taro" } , { "id" : 101, "name" : "Hanako" } ] /* 以äžã®åãæã€ãªããžã§ã¯ãã§ããããšãæšæž¬ããã let data: { id: number; name: string; }[] */ ã¬ã¬ã·ãŒã³ãŒãããTypeScriptã®å°å
¥ã«ãã£ãŠæ©æµãåŸããµã³ãã« äžèšã®ãããªã³ãŒãããã§ã«ã·ã¹ãã äžã«å®è£
ãããŠããã³ãŒãã ãšããŸãã function someFunc(foo) { if (foo > 0) { return foo * 2; } } var bar = someFunc(1); console.log(bar.toString()); ãã¡ããããã® JavaScript ã¯åé¡ãªãåäœããŸããããã®ã³ãŒãã«ã¯äžã€ã®åé¡ãæœãã§ããŸãã ãã©ã¡ãŒã¿ã«è² å€ãæž¡ããšã©ããªãã§ããããã var baz = someFunc(-1); // è² ã®å€ãæž¡ããšundefinedãåž°ã£ãŠãã console.log(baz.toString()); baz.toString() ã¯ã baz ã undefined ãªã®ã§ãã©ã³ã¿ã€ã ãšã©ãŒãçºçããŸãã ããããããã¯å®è¡ããªããã°æ€åºããããšãã§ããŸããã ã§ã¯ããããTypeScriptç°å¢ã§ ã³ã³ãã€ã« ãããšã©ããªãã§ããããïŒ ã³ã³ãã€ã« ãšã©ãŒãçºçãã var baz = someFunc(-1); console.log(baz.toString()); // ã³ã³ãã€ã«ãšã©ãŒïŒObject is possibly 'undefined'. ã³ã³ãã€ã© ãã³ãŒããè§£æããŠ åæšè« ããçµæã¯æ¬¡ã®éããšãªãã number ãŸã㯠undefined ãè¿ãã¡ãœããã§ãããšèªèãããŸãã function someFunc(foo: any): number | undefined someFunc 㯠undefined ãè¿ãå¯èœæ§ãããããããã®è¿åŽå€ã代å
¥ããŠãã baz ã«å¯Ÿããæäœãå±éºã§ããããšãã ã³ã³ãã€ã© ãæããŠãããããã«ãªããŸãã someFuncãå®å
šã«äœ¿çšããã«ã¯ã次ã®ãããªã³ãŒãã«ä¿®æ£ããå¿
èŠããããŸãã var bar = someFunc(-1); if (bar === undefined ) { ã // undefinedã®ãã§ã㯠bar = 0; } console.log(bar.toString()); äžèšã®ããã«èšè¿°ããã°ã ã³ã³ãã€ã« ãšã©ãŒã¯èµ·ããªããªããŸãã bar === undefined ã®ãã§ãã¯ãããããšã§ã toString ãå®è¡ãããã¿ã€ãã³ã°ã§ã¯ number ããå°éããªãããšãTypeScriptãçè§£ããããã«ãªãããã§ãã â»ãªãããã®ãããªåã®çµã蟌ã¿åŠçããåã¬ãŒãããšåŒã³ãŸãã å
çšã¯ someFunc ã䜿ãåŽã®ã³ãŒãã®åé¡ãTypeScriptãæ€åºããŠãããäŸãèŠãŸããããå®ã¯ someFunc èªäœã«ãåé¡ãæœãã§ããŸãã ã³ã³ãã€ã« æã®ãªãã·ã§ã³ noImplicitReturns ãæå¹ã«ãããšã次ã®ãã㪠ã³ã³ãã€ã« ãšã©ãŒãçºçãã function someFunc(foo) { // ã³ã³ãã€ã«ãšã©ãŒïŒNot all code paths return a value. if (foo > 0) { return foo * 2; } } someFunc ããã¹ãŠã®ãã¹ã§è¿åŽå€ãè¿ããŠããããæå³ããªãundefinedãè¿ãå¯èœæ§ãæããŠãããããã«ãªããŸãã ãã®ããã«ãæ¢åã³ãŒãã«å宣èšãªã©ãåã®æ
å ±ãäžããŠããªãã«ããããããã åæšè« ã«ãã£ãŠæªç¶ã«äžå
·åãæ€åºããããšãã§ããããã«ãªã£ãã®ãåããããšæããŸãã çç±â¢ã JavaScript ã©ã€ãã©ãªãšã®é£æºã容æã§ãã ã¬ã¬ã·ãŒãªã·ã¹ãã ã«ã¯ãã§ã«ããããã® JavaScript ã§èšè¿°ãããã©ã€ãã©ãªã䜿çšãããŠããŸãã TypeScriptã«ã¯ããããã JavaScript ã©ã€ãã©ãªãšããŸã飿ºããä»çµã¿ãåãã£ãŠããŸãã JavaScript ã§èšè¿°ãããã©ã€ãã©ãªãTypeScriptã«å°å
¥ããæ¹æ³ã¯ããã€ãååšããŸãã å宣èšãã¡ã€ã«ãèªäœãã DefinitelyTypedã§å
¬éãããŠããåå®çŸ©ãã¡ã€ã«ã䜿çšãã allowJSãªãã·ã§ã³ã掻çšãã å宣èšãã¡ã€ã«ïŒd.tsãã¡ã€ã«ïŒãèªäœããæ¹æ³ ãå宣èšãã¡ã€ã«ããäœæããTypeScriptã«ã©ã€ãã©ãªã®åæ
å ±ãäŒããããšã§å®çŸããæ¹æ³ã§ãã äŸãã°ã次ã®ãã㪠JavaScript ã§èšè¿°ãããã©ã€ãã©ãª calc.js ããããšããŸãã // calc.js exports.sub = function (a, b) { return a - b; } ãã®ã©ã€ãã©ãªãå©çšããã«ã¯ã次ã®ãããªå宣èšãã¡ã€ã«ãäœæããŠé
眮ããããšã§å®çŸå¯èœã§ãã â»ä»åã®äŸã§ã¯ãtsãã¡ã€ã«ãšåã ãã£ã¬ã¯ã ãªã«é
眮ããããã«ããŠããŸãã // calc.d.ts export function sub(a: number, b: number): number; ããã«ããã exec.ts 㯠calc.d.ts ãéã㊠sub 颿°ãèªèããããšãã§ãã ã³ã³ãã€ã« ãéãããã«ãªããŸãã // exec.ts import { sub } from "./calc" ; console.log(sub(100, 1)); å宣èšãã¡ã€ã«ã®å®çŸ©ã«åºã¥ãã ã³ã³ãã€ã« æã« åæšè« ãåãã§ãã¯ãè¡ãããããã«ãªããŸãã ãã¡ããã IDE ã«ãèªèãããã®ã§ã³ãŒãè£å®ãªã©ãæå¹ã«ãªããŸãã DefinitelyTypedïŒ@typesïŒã§å
¬éãããŠããåå®çŸ©ãã¡ã€ã«ã䜿çšããæ¹æ³ jQuery ãChart.jsãšãã£ãã©ã€ãã©ãªãTypeScriptã«å°å
¥ããéã«ãããã®ãå宣èšãã¡ã€ã«ããå¿
èŠã«ãªããŸãã ããããèŠæš¡ã®å€§ããªã©ã€ãã©ãªã«å¯ŸããŠãå
ã»ã©ã®äŸã®ããã«ãããèªåã§äœæããã®ã¯éªšãæããäœæ¥ã§ãã ããã«å¯ŸããDefinitelyTyped( http://definitelytyped.org/ )ãšããã³ãã¥ããã£ãããžã§ã¯ããååšããŠãããããã«ã¯ JavaScript ã§èšè¿°ãããã©ã€ãã©ãªã®å宣èšãã¡ã€ã«ãéãŸã£ãŠããŸãã â»ãããŸã§ã³ãã¥ããã£ã«ãã OSS ãªã®ã§ãææ°ããŒãžã§ã³ã«è¿œåŸããŠããªããæ£ãããªããšããå Žåãç¡ãã¯ãªãã®ã§æ³šæãå¿
èŠã§ãã DefinitelyTypedã«å¯Ÿè±¡ã®ã©ã€ãã©ãªã®å宣èšãã¡ã€ã«ãååšãããã¯ãTypeSearchïŒ https://microsoft.github.io/TypeSearch/ ïŒ ã§æ€çŽ¢ããããšãã§ããŸãã DefinitelyTypedã«ç»é²ãããŠããå宣èšãã¡ã€ã«ã¯ãnpmã³ãã³ãã§ãããžã§ã¯ãã«åã蟌ãããšãã§ããŸãã npm install --save @types/jquery jQuery ã®åå®çŸ©ãå°å
¥ãããç¶æ
ã§ã jQuery ã® addClass ã¡ãœãããèšè¿°ããŠã¿ãŸãããã $( function () { $( '#foo' ).addClass( 'bar' ); } ); TypeScriptã jQuery ã®ã¡ãœãããèªèããŠããã®ã§ãäžèšã®ã³ãŒã㯠ã³ã³ãã€ã« ãšã©ãŒã«ã¯ãªããŸããã ã§ã¯ãããã§ã addClass ã®åŒæ°ã«æ°å€ãæž¡ããŠã¿ãŸãããã $( function () { $( '#foo' ).addClass(1); } ); ãããšãäžèšã®ãã㪠ã³ã³ãã€ã« ãšã©ãŒãçºçããããã«ãªããŸãã Argument of type '1' is not assignable to parameter of type 'string | string[] | ((this: HTMLElement, index: number, currentClassName: string) => string)'. äžèšããã jQuery ãæäŸãã颿°ã®åå®çŸ©ãæ£ããèªèãããŠããããšãããããŸãã allowJSãªãã·ã§ã³ã䜿çšããæ¹æ³ JavaScript ã§èšè¿°ãããã©ã€ãã©ãªãTypeScriptã«å°å
¥ããã«ã¯ã allowJS ãªãã·ã§ã³ãæå¹ã«ããæ¹æ³ããããŸãã â»éåžžã¯.tsæ¡åŒµåã®ã¿ ã³ã³ãã€ã« ããã.jsæ¡åŒµåã®ãã¡ã€ã«ã¯ ã³ã³ãã€ã« ã®å¯Ÿè±¡ã«ã¯ãªããŸãããããã®ãªãã·ã§ã³ãæå¹ã«ããããšã§ã.jsãã¡ã€ã«ã ã³ã³ãã€ã« ã®å¯Ÿè±¡ã«ããããšãã§ããŸãã $ tsc --allowJS calc.js exec.ts ãã ããçŽ ã®ç¶æ
ã® JavaScript ã¯åã®æ
å ±ãäžããããŠããªããããããªãç·©ã åæšè« çµæã«ãªãããšã«æ³šæããŠãã ããã // calc.js exports.sub = function (a, b) { return a - b; } /* æšè«ãããã·ã°ãã㣠sub(a: any, b: any): number */ ããããªãããããšããšåã®æŠå¿µãæã£ãŠããªãã£ãã¬ã¬ã·ãŒãªã©ã€ãã©ãªããããã èªã¿èŸŒãŸããã ããã§ãå€å°ãªããšãåã«ããå®å
šæ§ã®èœåãæã«å
¥ããããšãã§ããŠããããšã泚ç®ãã¹ããã€ã³ãã§ãã JSDocã«ãã£ãŠåå®çŸ©ãããããšãå¯èœ äžèšã®ããã«JSDocãèšè¿°ãããšã詳现ã«åã®å®çŸ©ãè¡ãããšãã§ããŸãã /** * @param {number} a * @param {number} b * @return number */ exports.sub = function (a, b) { return a - b; } /* æšè«ãããã·ã°ãã㣠sub(a: number, b: number): number */ ãã èªã¿èŸŒãŸããã ãã§ åæšè« ã®æ©æµãåŸãããšãã§ãããã ãã§ãååã§ããããšã¯ãã§ã«è¿°ã¹ãéãã§ãããæ¢åãããžã§ã¯ãããã£ã¡ããšJSDocãèšè¿°ããŠããç°å¢ã§ããã°ãTypeScriptãžã®ç§»è¡ã¯ãªãããæ©æµãåŸããããšèšããã§ãããã ã©ã®æ¹æ³ãæ¡çšããã°è¯ãã®ãïŒ ãããŸã§ç޹ä»ãããæ¢åã®JSã©ã€ãã©ãªãTypeScriptç°å¢ã«å°å
¥ããæ¹æ³ã¯ãããããã«ã¡ãªããã»ãã¡ãªãããããã®ã§ããããžã§ã¯ãã®ç¶æ³ã«å¿ããŠäœ¿ãåããã®ãè¯ããšæããŸãã å宣èšãã¡ã€ã«ã«ã€ããŠã¯ãã©ã€ãã©ãªèªèº«ãå宣èšãã¡ã€ã«ãå
¬éããŠããå ŽåããããŸãã ãŸãã¯ã©ã€ãã©ãªå
¬åŒããããã¯DefinitelyTypedäžã®ãã®ãæ¢ããååšããŠããªãå Žåã¯allowJSãªãã·ã§ã³ã䜿çšããŠãåŸã
ã«å宣èšãã¡ã€ã«ãäœãããããã¯ã©ã€ãã©ãªåŽãTypeScript仿§ã«å€ããããšããã¢ãããŒããè¯ãã®ã§ã¯ãªãã§ããããã çç±â£ã段éçãªTypeScriptåãå©ãã ã³ã³ãã€ã« ãªãã·ã§ã³ããã TypeScriptã«ã¯ã ã³ã³ãã€ã« æã®ãã§ãã¯å
容ãæè»ã«å€ããããšãã§ãããªãã·ã§ã³ãåãã£ãŠããŸãã ãããã䜿çšããããšã§ããããžã§ã¯ãã®ç¶æ³ã«åãããTypeScriptå°å
¥ãè¡ãããšãã§ããŸãã noImplicitAny æé»çã« åæšè« ã®çµæ any åãšãªã£ãå Žåã« ã³ã³ãã€ã« ãšã©ãŒã«ãããªãã·ã§ã³ OFFã«ããããšã§ãæé»ç㪠any ã蚱容ã§ãã æç€ºçã«åæå®ãè¡ããªãå Žåãã¡ãœããã®åŒæ°ãªã©ã¯ any åã«ãªã any åã¯ããã®ååã®éãããªãã§ããããã®åãªã®ã§ãããŸãè¯ããã®ã§ã¯ãªãã any åãé¿ããã®ãæãŸãã ãã ããããšããš JavaScript ã§èšè¿°ãããŠããã³ãŒãã«ã€ããŠã¯ãäžæŠãã®ãªãã·ã§ã³ãOFFã«ããŠãããŠã ã³ã³ãã€ã« ãšã©ãŒãç®å°ã«ãåŸã
ã«åæå®ãå¢ãããŠããã®ãè¯ããšæããã strictNullChecks nullåãundefinedåã«ã®ã¿ã null ã undefined ã®ä»£å
¥ãèš±å¯ããèšå® nullåïŒ null ã®ã¿ã蚱容ããç¹æ®ãªå undefinedåïŒ undefined ã®ã¿ã蚱容ããç¹æ®ãªå T | null åãš null åã¯å¥ç©ãšæ±ãããT | null åã«ã¯ null ã代å
¥ã§ããªã ããã«ãããæå³ããªã undefined ããæå³ããªã null ãé²ãããšãã§ãã noImplicitAnyåæ§ãæåã¯ãªãã·ã§ã³ãOFFã«ããŠãããONã«ããæã«èŠã€ãã ã³ã³ãã€ã« ãšã©ãŒãåŸã
ã«ä¿®æ£ãããšè¯ããšæããã ããããªã³ãŒãã®åããæ€åºããŠããã䟿å©ãª ã³ã³ãã€ã« ãªãã·ã§ã³ noUnusedLocals æªäœ¿çšã®ããŒã«ã«å€æ°ããããšãšã©ãŒã«ãªã noUnusedParameters æªäœ¿çšã®åŒæ°ããããšãšã©ãŒã«ãªã noImplicitReturns æ¢åºãã¡ãœããå
ã®å
šãŠã®ãã¹ã§returnæãç¡ãå Žåãšã©ãŒã«ãªã noFallthroughCasesInSwitch Switchæå
ã«ãããbreakæŒãããšã©ãŒã«ãªã ãŸãšãïŒTypeScriptã¯ã JavaScript ãããžã§ã¯ãããããŸãç§»è¡ããç°å¢ãæŽã£ãŠãã TypeScript㯠JavaScript ã®ã¹ãŒããŒã»ãããªã®ã§ãæ¢åã®ã³ãŒãããã®ãŸãŸäœ¿ãããšãã§ãã åæšè« ã«ãã£ãŠããã ã® JavaScript ãåã®åãæã«å
¥ããããšãã§ãã JavaScript ã§èšè¿°ãããæ¢åè³ç£ãæè»ã«çµã¿å
¥ããä»çµã¿ããããæ¯ããã³ãã¥ããã£ãååšãã æè»ãª ã³ã³ãã€ã« ãªãã·ã§ã³ã«ãã£ãŠãã¬ã¬ã·ãŒãªã³ãŒããæ®µéçã«å³å¯ãªã³ãŒãã«å€ããŠããããšãã§ãã ãããã« TypeScriptã®å°å
¥ãããã«å®¹æã§ããã€ã©ãã ãã¡ãªããããããããã®èšäºã§ç޹ä»ãããŠé ããŸããã ãã®èšäºãã芧ã«ãªã£ãæ¹ã§ãTypeScriptå°å
¥ã«åã³è
°ã®æ¹ãããã£ããããŸãããããã²ãã©ã€ããŠã¿ãŠé ããã°å¹žãã§ãïŒ åèæç® æ¬èšäºå·çã«ããããç§ãåŠç¿ã«äœ¿çšããæžç±ãäžèšã«ç޹ä»ããŸãã éç¿TypeScript ãŸãTypeScriptããå®å
šã«çè§£ãããç¶æ
ã«ããã®ã«ãããã éç¿TypeScript: altJSã®ããã¡ã¯ãã¹ã¿ã³ããŒããçŽ æ©ãåŠã¶ïŒ éç¿ã·ãªãŒãº äœè
: å±±ç°ç¥¥å¯ WINGSãããžã§ã¯ã Amazon å®è·µTypeScript åãTypeScriptã®äŸ¿å©ãªæ©èœã«ã€ããŠè©³ããæžãããŠããã®ã§ããå®å
šã«çè§£ãããç¶æ
ãããè²ã
ããã£ãŠãªãããšã«æ°ã¥ããã§ãŒãºãã«ã¡ããã©ãã åŸåã«ReactãVueãNode.jsã«å°å
¥ããéã®å®è·µäŸã®èšèŒãããã®ã§ãååã®éãå®è·µåã å®è·µTypeScript äœè
: åäº å¥æ ãã€ããåºç Amazon TypeScriptå®è·µããã°ã©ãã³ã° äžèšïŒåããåºãåéã®è©±ãæžãããŠãããç¥èã®è£å®ã«äŸ¿å©ã§ãã TypeScriptå®è·µããã°ã©ãã³ã° (Programmer's SELECTION) äœè
: ã¹ãã£ãŒãã»ãã§ã³ãã³ ç¿æ³³ç€Ÿ Amazon ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
ã¯ããã« ããã«ã¡ã¯ã @rs_tukki ã§ãã æ°åã³ãããŠã€ã«ã¹ ã®åœ±é¿ã§å€§åãã¿ãã¿ããŠããŸããããåŒç€Ÿã§ã¯ãããã瀟å¡ç ä¿®ãçµããæ°å瀟å¡ã®é
å±ã®è©±ãæ¬æ ŒåããŠããŸããã æ°ããéçºã¡ã³ããŒãåãå
¥ãããšãããŸããã£ãŠãããã®ã¯éšçœ²ããšã®éçºãããŒãšãå®éã«éçºãããããã¯ãã®äžèº«ãåŠãã§ãããããšããšæããŸãã ããã§ä»åã¯ããã®2ç¹ãäžæ°ã«è§£æ±ºã§ãããå®è£
éå»åãã«ã€ããŠè©±ããŠãããããšæããŸãã ã¯ããã« å®è£
éå»åãšã¯ å®è£
éå»åã®å®æœæé åé¡éããåãçµãåé¡ã決ãã ãããžã§ã¯ãã®gitãã©ã³ããããåé¡ãä¿®æ£ããåã®ãã©ã³ããcheckoutãã åé¡ãè§£ãããã¹ãé
ç®æžã«æ²¿ã£ãŠãã¹ããè¡ã ã¬ãã¥ãŒæ
åœè
ãã¬ãã¥ãŒãè¡ã éå»åãè¡ãã¡ãªãã ãŸãšã ããŸã å®è£
éå»åãšã¯ å®è£
éå»åãšã¯ãç§ãã¡ã®éšçœ²ã§æ¡çšããŠããåŠç¿ããã°ã©ã ã®1ã€ã§ã ç°¡åã«èšããšããã®ãããã¯ãã§å®è£
ãããæ©èœãåŠç¿ã®ããã«åŸè¿œãã§å®è£
ããŠã¿ãããšãããã®ã§ãã äžè¬çã«éå»åãšãããšãå
¥åŠè©Šéšãè³æ Œè©Šéšã§éå»ã«åºé¡ãããåé¡ãéãããã®ã§ããã ãã®åŠç¿ããã°ã©ã ããéå»ã«éçºãããå
容ãããããã€ãæç²ããŠããç·Žç¿ã®ããã«ããã£ãŠã¿ããšããç¹ãããéå»åãšããååãã€ããŠããŸãã å®è£
éå»åã®å®æœæé ã§ã¯ãå®éã«éå»åãè¡ãæé ã玹ä»ããŸãã åé¡éããåãçµãåé¡ã決ãã ãŸãã¯ããããããããã¥ã¡ã³ãåãããŠããéå»åã®äžãããã©ã®åé¡ã«åãçµãããæ±ºããŸãã åé¡ã¯çŸæç¹ã§27åçšæãããŠãããååé¡ã«å¯ŸããŠâ1ïœâ5ãŸã§ã®é£æåºŠãæ¯ãããŠããŸãã â1ãâ2ã®åé¡ã¯ç°¡åãªUIãUXãã°ã®ä¿®æ£ã§ãããâ5ã¯å®è£
æ¹æ³ããæ©ãŸããããããªé£åã ãã®é£æåºŠã¯æåã¯åé¡äœæè
ã®äž»èгã«ãããã®ã§ãããéå»åã«åãçµãã äººã®ææ³æ¬¡ç¬¬ã§ä¿®æ£ããããããŸãã äžã«ã¯åœåâ3ã ã£ããã®ãâ5ã«åŒãäžããããäºäŸã⊠æ°èŠã¡ã³ããŒã¯â3ã®åé¡ããåãçµãã§ããããåæ Œ(åŸè¿°)ãªãâ4ã®åé¡ãžãäžåæ Œãªãåãâ3ãŸãã¯â2ã®åé¡ãžç§»ããŸãã ããããŠãâ4ã®åé¡ã«åæ Œããã®ãã²ãšãŸãã®ç®æšã§ãã ãããžã§ã¯ãã®gitãã©ã³ããããåé¡ãä¿®æ£ããåã®ãã©ã³ããcheckoutãã ååé¡ã®ããã¥ã¡ã³ãã«ã¯ãå®è£
å
容ã»èšèšæžã®ãªã³ã¯ã»æŽŸçå
ã®ãã©ã³ãã»å¶éæéãªã©ãèšèŒãããŠããŸãã ç§ãã¡ã®éšçœ²ãéçºããŠããããã¯ãã¯ãgitã§ãªãªãŒã¹ããŒãžã§ã³ããšã«ãã©ã³ããäœæããŠããã®ã§ã ãã®æ©èœãå®è£
ãããçŽåã®ãªãªãŒã¹ãã©ã³ããcheckoutããããšã§ãä¿®æ£åŸã®å®è£
ãèŠãããšãªãåŸè¿œãã®å®è£
ãå¯èœã«ãªã£ãŠããŸãã åé¡ãè§£ãããã¹ãé
ç®æžã«æ²¿ã£ãŠãã¹ããè¡ã ããšã¯ãèšèšæžã®éããcheckoutãããã©ã³ãã«å®è£
ãããŠããã ãã§ãã ãã®ãšã泚æç¹ãšããŠã以äžã®å¶éããããŸããèŠããã« ã«ã³ãã³ã° ã¯NG ãšããããšã§ãã ãªãªãŒã¹æžã¿ã®æ¢åã³ãŒããåç
§ããããšã¯çŠæ¢ æ¢åã³ãŒãããã¹ãç°å¢ã§åãããŠã¿ãŠåäœç¢ºèªããã®ã¯OK 誰ãã«ã¢ã ãã€ã¹ ãæ±ããããšã¯OKã ããå®è£
æ¹æ³ãçŽæ¥å°ããããšã¯çŠæ¢ èšèšæžãªã©ã®ããã¥ã¡ã³ããåç
§ããããšã¯OKã ããå®éã®PRãåç
§ããããšã¯çŠæ¢ å
šãŠå®è£
ãçµãã£ãããå®è£
ãã人æ¬äººããã¹ãé
ç®æžãèŠãªãããã¹ãã宿œããŸãã å
šãŠã®é
ç®ããã¹ãããå¿
èŠã¯ãããŸããããåœç¶ãã®åŸã¬ãã¥ãŒããããŸãã®ã§ãããã§ãã¹ãåºãªããããã¹ãã¯ãã£ããè¡ãå¿
èŠããããŸãã ã¬ãã¥ãŒæ
åœè
ãã¬ãã¥ãŒãè¡ã å®è£
ãšãã¹ããçµãã£ããããã®å
容ãgitã«pushããŠPRãäœæããã¬ãã¥ãŒãäŸé ŒããŸãã ãã®ãšãã®ã¬ãã¥ãŒæ
åœè
ã¯ããã®éå»åãè§£ããããšãããã¡ã³ããŒã宿œããããšãå€ãã§ãã éå»åããšã«ã¬ãã¥ãŒã®èгç¹ãããã¥ã¡ã³ãåãããŠãããPRã®å
容ããã®èгç¹ãæºãããŠããã°æŽããŠåæ ŒãšãªããŸãã éå»åãè¡ãã¡ãªãã éå»åãè¡ãã¡ãªããã§ããã Wikipedia ã® éå»åé¡é ãšããããŒãžã«ã¯ä»¥äžã®ããã«èšèŒãããŠããŸãã ãã詊éšãåããã«ããã£ãŠéå»åãè§£ãããšã¯ãæ¬¡ã®æå³ã§å©ç¹ãããã 詊éšã®ååŠã©ã€ã³ãšæ¯èŒãã圢ã§ãèªåã®åãæž¬ãããšãã§ããã å®éã®è©Šéšåé¡ãè§£ãæ¹æ³ãçŽæ¥çã«èº«ã«ä»ããããšãã§ããã è³æ Œè©Šéšã®å Žåã¯éå»ã«åºé¡ãããåé¡ããã®ãŸãŸåºé¡ãããããšãããã å
¥åŠè©Šéšã®å Žåã¯å
šãåãåé¡ã¯åºé¡ãããªããã®ã®ããã䌌ãåé¡ãåºé¡ããããïŒãŸãã«åºé¡åŸåãäžå®ã§ãªãåŠæ ¡ãããïŒ æ©ãææã«è§£ããŠãããšãèªåã®äžè¶³ããŠããéšåãææ¡ãããã®åŸã®ååŒ·ã®æ¹éãç«ãŠãããšãã§ããã 詊éšåé¡ã¯æ¯èŒçè¯ãåé¡ã§ããããšãå€ããããä»ã®åé¡ãè§£ãå Žåã«æ¯ã¹ãŠå¹ççã«ãèªåã®çè§£ãç¥èãæ·±ããããšãã§ããã å€ãã®å Žåãåé¡ã®åºé¡ç¯å²ãå¹
åºãã°ãããŠãããããå
šäœã®ç解床ãå°é床ã«ã€ããŠãéãããæéã§ææ¡ããããšãã§ããã å
¥è©Šãè³æ Œè©Šéšã®éå»åãšéããå®è£
éå»åã§ã¯åœç¶å
šãŠãåœãŠã¯ãŸãããã§ã¯ãããŸãããã å®éã®éçºæ¥åã§ããããšã«ãªãåé¡ã«åãçµãããšã§èªåã®åãæž¬ãã æ¬çªã®ãããŒã«åã£ãŠåãçµãã®ã§éçºã®ç·Žç¿ã«ãªã æ§ã
ãªåŸåã®åé¡ããããããå®éã®æ¥åã§å¿
èŠãšãªãç¥èãå¹çããçè§£ããããšãã§ãã ãšãã£ãç¹ã¯å
±éããŠããããšæããŸãã ãŸãšã ä»åã¯ãæ°èŠã¡ã³ããŒã®åãå
¥ãã«æé©ãªãå®è£
éå»åãã«ã€ããŠè§£èª¬ããŸããã ã¡ã³ããŒãå
¥ãæ¿ããªããé·ãéçºãšæ¹ä¿®ãç¶ããŠãããããžã§ã¯ãã§ã¯å¿
ã圹ã«ç«ã€ãšæããŸãã®ã§ããã²åãå
¥ããŠã¿ãŠã¯ãããã§ããããã ããŸã å
æ¥ãåŒç€Ÿã®ãªã³ã©ã€ã³ã€ãã³ãã§çºè¡šããæ©äŒããããŸããã SaaS ã®éçºååã§ãããTwelve-Factor Appãã«ã€ããŠèªã£ãå
容ã§ãè³æãã¢ããããŒãããŠããŸãã®ã§ãã²ã芧ã«ãªã£ãŠã¿ãŠãã ããã rakus.connpass.com speakerdeck.com
ã¯ããã« æè¡åºå ±ã®itoken1013ã§ããããã«ã¡ã¯ã 宿éå¬ãããŠããã ããŠããŸã ã©ã¯ ã¹Meetupã2æã«å€§éªã§çæ³ã§ãã ã SaaS ãæ¯ããéçºåå/DDDã å¿çç å®å
šæ§ãTwelve-Factorã ãããŒãã«ãç»å£è
ãšçºè¡šå
å®¹ãæ°ãã«å·æ°ããŠ6/24(æ°Ž)ã«éå¬ããŸããã ä»åã§2åç®ã®ãªã³ã©ã€ã³éå¬ãšãªããŸãããã60åã®æ¹ã«ãåå ããã ãïŒæºå¡ïŒïŒã Twitter ã Zoomäžã«ã¯ã³ã¡ã³ããæº¢ããçæ³ã®ã€ãã³ããšãªããŸããã ä»åã¯åœæ¥ã®çºè¡šãã玹ä»ãããŠããã ããŸãïŒ rakus.connpass.com ã€ãã³ãããŒãæŠèŠ ãœãããŠã§ã¢éçºã«ã¯æ§ã
ãªååã»æ³åãååšããŸãã ãããã®éçºååã ã©ã¯ ã¹ã® SaaS éçºã§ã©ã®ããã«æŽ»ããããŠããããéçºããŒã ã§äž»èŠãªåœ¹å²ãæ
ãè¥æã»äžå
ã»ããã©ã³ã®3åã®ãšã³ãžãã¢ãã玹ä»ãããŠããã ããŸããã SaaS éçºãªãã§ã¯ã®ååãæ¡å€§ããéçºèŠæš¡ãä¹ãè¶ããããã®ååãæ°ããªãµãŒãã¹éçºã§ ãã¡ã€ã³ ã€ãã³ããæŽ»çšããããã®åãçµã¿ãªã©ãå¹
åºãå
容ãšãªããŸããã çºè¡šã®çŽ¹ä» Twelve-Factor Appã§èªã¿è§£ããã¢ãã³ãªã¢ããªã®çæ³ãšã¬ã¬ã·ãŒãªã¢ããªã®çŸå® å€ãã®æ¹ã
ã« ã©ã¯ ã¹ãç¥ã£ãŠããã ããã£ãããšãªããŸãã æ¥œæ¥œç²Ÿç® ã ãã®æ¥œæ¥œç²Ÿç®ã®éçºããŒã ã§æŽ»èºããç¢é ããã Twelve-Factor App ã«ååšãã4ã€ã®ååã玹ä»ãããŠããã ããŸããã 2009幎ã«ãªãªãŒã¹ãããæ¥œæ¥œç²Ÿç®ã¯ Twelve-Factor App ãããé·ãæŽå²ãæã€ãµãŒãã¹ã§ãããTwelve-Factor Appã«ååšããååãšã®å
±éç¹ãšçŸç¶ã®ã®ã£ããã«è§Šãã€ã€ãçæ³çãªWebã¢ããªã±ãŒã·ã§ã³ã®å§¿ã解説ããŠããŸãã speakerdeck.com éçºã°ã«ãŒããéçºããŒã ã«ãªããŸã§ã®æ©ã¿ åããæ¥œæ¥œç²Ÿç®ã«ãããŠPMãåããçŽäºã玹ä»ããã®ã¯ã以äžã®3ã€ã®ååã§ãã 2幎éã§æ¥éã«èŠæš¡ãæ¡å€§ããæ¥œæ¥œç²Ÿç®ã®éçºããŒã ãè»éã«ä¹ããããã«ãçŽäºãææŠããåãçµã¿ã玹ä»ãããŠããã ããŸããã OODAã«ãŒã å¿ççå®å
šæ§ éã®åŒŸãªã©ãªã çºè¡šã§ã¯å€§ãã3ã¹ããŒãžã«æž¡ã課é¡ãåãäžããããŸããããã©ã®ã¹ããŒãžã§ã®ææŠãåå è
ã®çæ§ã«å
±æããã ããç»å£ãšãªããŸããã speakerdeck.com çŽäºã®ç»å£ã«ã€ããŠã¯ãå¥élogmiã§ã玹ä»ããŠãããŸãã ãã²åœæ¥ã®çºè¡šå
容ãã芧ããã ããã°ãšæããŸãã logmi.jp çµææŽåæ§ãã§ããªãéçºè
ã® ãã¡ã€ã³ ã€ãã³ã掻çšäŸ ã©ã¯ ã¹ã®æ°ã
ã®ãµãŒãã¹ãæåã«å°ããŠããå³°æã玹ä»ããŸããã®ã¯ã DDD ïŒ ãã¡ã€ã³ ã€ãã³ããéçŽïŒãš çµææŽåæ§ ã§ãã ãã¡ã€ã³ ã€ãã³ããšã¯ã ãã¡ã€ã³ å
ã§çºçãããââãããÃÃã«ãªãããšãã£ãåºæ¥äºã衚çŸãã ãã¡ã€ã³ ã¢ãã«ã§ãã ä»åã¯å³°æããªãŒããšã³ãžãã¢ãšããŠåãçµãæ°èŠãµãŒãã¹ã®éçºã§ ãã¡ã€ã³ ã€ãã³ããæŽ»çšããç¥èŠããå®äŸã亀ããŠç޹ä»ãããŠããã ããŸããã ãã¡ã€ã³ ã€ãã³ããå°å
¥ããããšã§åŸãããã¡ãªããã®ä»ãå°å
¥ã®ããã®å°é£ããããŠããŒã ã« ãã¡ã€ã³ ã€ãã³ããå®çãããããã®åãçµã¿ã玹ä»ãããŠããã ããŠããŸãã speakerdeck.com ãããã« å€ãã®æ¹ã«æ°ã
ã®å
±æãããã ããŸãã ã©ã¯ ã¹Meetupããåå ããã ããŸããçæ§ãããããšãããããŸããã ã©ã¯ ã¹ã§ã¯7æã»8æãMeetupãLTã»å匷äŒãéå¬äºå®ã§ãã ä»åŸããšã³ãžãã¢ã®çæ§ãžæçãªæ
å ±ãçºä¿¡ããå Žã«ããŠãããã°ãšæããŸãã®ã§ã ã©ããåŒãç¶ããããããé¡ãããããŸãïŒ rakus.connpass.com rakus.connpass.com
ã¯ããã« ããã«ã¡ã¯ãMasaKuã§ãã æšä»ã ã³ãããŠã€ã«ã¹ ã®åœ±é¿ã«ããããªãã©ã€ã³ã§éå¬ãããå匷äŒãèªç²ã®æµãã«ãªã£ãŠãããéã«ãªã³ã©ã€ã³éå¬ãããå匷äŒãå¢ããŠããŠãããšæããŸãã ããã§å
æ¥ã以äžã®ã€ãã³ãã«åå ããŸããã®ã§ãåå ããææ³ã«ã€ããŠè¿°ã¹ãŠãããããšæããŸãã nrs-seminar.connpass.com YouTube Live ã®ã¢ãŒã«ã€ãã¯ãã¡ã ã¯ããã« åå ããã€ãã³ã åå åæ© ææ³ ã³ãŒãçè§£ã¯ãŸãå
šå®¹ææ¡ãã å³è§£ã¯ãã¯ã匷å ã³ãŒãã®ãããããããéèŠã ããã£ã¬ã¯ããªæ§é ã¯ãã£ãšéèŠ PHPã®ããžãã¯ã¡ãœããã¯ã³ãŒããªãŒãã£ã³ã°ã«ãããŠããªãæ²è
ã«ãªã åå è
ã®ã³ã¡ã³ããã€ã³ãããã«ãªã ãããã« åå ããã€ãã³ã ãã¡ã€ã³é§åèšèšå
¥é ããã ã¢ããã§ãããïŒãã¡ã€ã³é§åèšèšã®åºæ¬ ã®èè
æç¬å
宣ããäž»å¬ã®ãªã³ã©ã€ã³å匷äŒãšããããšã§ã ä»äººãã©ããªé¢šã«ã³ãŒããèªãã§ããã ãç¥ãããšãç®çãšããå匷äŒã§ãã ä»åã¯ã PHP ãã¬ãŒã ã¯ãŒã¯ ã® Laravel ã®å
éšãèŠãŠããããšããè¶£æšã®ã³ãŒããªãŒãã£ã³ã°ã§ããã ãªããä»åã® ãã¬ãŒã ã¯ãŒã¯ èªè§£ã®ç®æšãšããŠã¯ ãèªäœ ãã¬ãŒã ã¯ãŒã¯ ãäœãããã«åèã«ããã ãšããäœã§é²ããããŠããŸããã www.shoeisha.co.jp åå åæ© ããããããªãç§ããã®å匷äŒã«åå ããããšæã£ãã®ããã説æããããšæããŸãã ã»ãã®äººãã©ã®ããã«ããŠã³ãŒããèªãã§ããã®ãåçŽã«èå³ããã 人æ°ã® ãã¬ãŒã ã¯ãŒã¯ ã®äžèº«ãèªãã§ã¿ãããã©ãäžäººã§èªãã§ãããšè¡ãè©°ã£ãŠããŸã Eloquent (Laravel ã®æšæºORM)ã®ãœãŒã¹ã軜ãèªãã ããšã¯ãããã ãã¬ãŒã ã¯ãŒã¯ ã®å
šå®¹ãæèããŠèªãã ããšã¯ãªãã£ã ãã¬ãŒã ã¯ãŒã¯ ãèªã¿é²ããäžã§ã®ãã¯ããã¯ãåžåããã å®ç³ãã¿ãŒã³ãªã©ãããã°ä»åŸãœãŒã¹ã®èªã¿æžããããäžã§ãåèã«ãªããã ã¡ãªã¿ã«ãäž»å¬ã®æç¬ããã«ã€ããŠã§ããã2019幎ã®PHPerKaigiã®éã«ã¢ã³ã«ã³ãã¡ã¬ã³ã¹ã«ãŠçºè¡šãããŠããå
容ãéåžžã«è峿·±ãã£ãããšãèŠããŠããŸãã ãã®ããšããã£ããã§ãŸãã話ã䌺ããããªãšæã£ãããšãåæ©ã®äžã€ã§ãã ïŒ2019幎ã®PHPerKaigi ã®ã€ãã³ãã¬ããŒãã¯ä»¥äžïŒ tech-blog.rakus.co.jp ææ³ ã³ãŒãçè§£ã¯ãŸãå
šå®¹ææ¡ãã ã³ãŒãã远ããããã¹ããŒãã¯ããããšãªãããã³ãŒããèªããã¯ããã¯ã«ã€ããŠãå匷ãããŠããã ããŸããã äŸãã°ã ãã¬ãŒã ã¯ãŒã¯ ã®æ§ãªå
šå®¹ã®å€§ããããã°ã©ã ã¯ãäžåºŠã«ãã¹ãŠãäžå¯§ã«èªã¿èŸŒãã§ããããšããã®ã§ã¯ãªãã ãŸãã¯å
šäœãçºãã ããšã倧äºã§ãã ããã®å€æ°ã«ã¯ã©ãããå€ãå
¥ã£ãŠããŠãã©ãããã¡ãœããã«æž¡ãããŠãããã§ãªããžã§ã¯ãã«æ ŒçŽãããŠããããããã£ãååŸããŠã»ã»ã»ããªã©ãšããããšããã¹ãŠé ã«å
¥ããªããèªã¿é²ããŠãããšãééããªããªãŒããŒãããŒãèµ·ãããŠæèã忢ããŠããŸããŸãã ãªã®ã§ããŸãã¯ãã£ãããšå
šäœã®æµããææ¡ããŠããããããæ°ã«ãªããšãããèªã¿è¿ããŠããããšããèªã¿æ¹ãè¯ãããã§ãã ãã®ç¹ã«é¢ããŠã¯ãç§ãæ¥åã§éçºããŠããããã°ã©ã ãèªã¿é²ããŠããéã«æ°ãä»ããŠãããã€ã³ãã ã£ãã®ã§ãèªåã®é²ãæ¹ã倧ããééã£ãŠããªãããšã«å®å¿ããŸããã ããã€ãã®æ¥åããžãã¯ãé¢é£ãããããªåŠçãèªã¿èŸŒãã§ããéã¯ãæåãã现ãã«åŠçã远ããããã®ã§ã¯ãªãããã£ãšåŠçã®æµããææ¡ããŠãã现ãã仿§ã確èªããããã«ããŠããŸãã å
šå®¹ãããã£ãŠããã°ååŠçã®çްãã仿§ããªããããªã£ãŠããã®ããçŽã¥ããŠèãããããšæããŸãã å³è§£ã¯ãã¯ã匷å ãŸãã ãã¬ãŒã ã¯ãŒã¯ ã®å
šå®¹çè§£ãé²ããäžã§ã¯ã å³è§£ããã®ãäžçªè¯ã ãšæããŸããã Laravelã«ã¯ãªã¯ ãšã¹ ãæ
å ±ãã³ã³ãããŒã©ã«æž¡ãåãViewã«è¿ãåã« Middleware ãšããåŠçã远å ã§ããŸãã ãã®ä»æ§ã«ã€ããŠã¯ææ¡ããŠããã®ã§ãããäœãšãªãææ¡ããŠããããšãå³è§£ããŠããããã ãã§ãMiddleware ã ãã¬ãŒã ã¯ãŒã¯ ã®ã©ã®ãããªäœçœ®ã§ã©ã®ãããªåŠçãããŠãã®ããããã詳ããçè§£ã§ãããããªæ°ãããŸããã èªåã®çè§£ãæ¯ãè¿ãããã«ããå³è§£ããŠããããšã¯åŒ·åãªçè§£ä¿é²ã«ã€ãªãããšæããŸãã ã³ãŒãã®ãããããããéèŠã ã ãã£ã¬ã¯ã ãªæ§é ã¯ãã£ãšéèŠ ãã¬ãŒã ã¯ãŒã¯ ã§ã¯ã¢ããªã±ãŒã·ã§ã³éçºã§å¿
èŠã«ãªãæ§ã
ãªåŠçãå®çŸããããã«ãåæ©èœãé©åãªç²åºŠã§ã°ã«ãŒãã³ã°ã㊠ãã£ã¬ã¯ã ãªãåã£ãŠç®¡çããŠããŸãã é
眮ããããã°ã©ã ããã¡ããšã°ã«ãŒãã³ã°ããã ãã£ã¬ã¯ã ãªã«ç®¡çãããŠãããšããšããåŠçã远ããããŠããéã«ããŸããŸèŠã€ããç¹å®åŠçã«é¢é£ããããŒããã©ãã§ç®¡çãããŠããããåããããããªããŸãã ãã¡ãããã³ãŒãå
ãããžã£ã³ãããŠã åç
§å
ãžã©ãã©ããã©ã£ãŠããããšãã§ããŸãããé¢é£ããåŠçãã©ãã«ããã®ããããã£ãŠãããšããªãã¡ã¬ã³ã¹ãèªãŸãªããŠã ãã¬ãŒã ã¯ãŒã¯ ãè¡ã£ãŠãããã®ä»ã®åŠçãç¥ããã£ããã«ããªããŸãã éã«ã ãã£ã¬ã¯ã ãªæ§æãæ¯é¢æ»
è£ã§ã©ãã«äœãé
眮ãããŠããã®ãããããã«ããç¶æ
ã«ãªã£ãŠãããšåŠçã远ããããéã®å¯èªæ§ãäžããŠããŸãã°ããã§ãªãã管çãç
©éã«ãªã£ãŠããŸã£ãŠä¿å®æ§ãäœäžããŠããŸãã§ãããã PHP ã®ããžãã¯ã¡ãœããã¯ã³ãŒããªãŒãã£ã³ã°ã«ãããŠããªãæ²è
ã«ãªã PHP ã«ã¯ ããžãã¯ã¡ãœãã ãšããç¹æ®ãªã¡ãœããããããŸãã äžã§ã __call() ã __callStatic() ã¯ã³ãŒããªãŒãã£ã³ã°ãé£è§£ã«ãããããžãã¯ã¡ãœããã®äžã€ã§ãã äŸãã° __callStatic() ã¯ããªããžã§ã¯ãå
ã®éçã¡ãœãããåŒã³åºãããšããéã«ãã¢ã¯ã»ã¹ äžèœ ãªå Žåã«å®è¡ãããã¡ãœããã§ãã <?php // 以äžãµã³ãã«ã³ãŒã class MagicMethodTest { public static function __callStatic ( $ name , $ arguments ) { echo "ããªããåŒã³åºããã¡ãœãã㯠' $ name ' " . implode ( ', ' , $ arguments ) . " \n " ; } } MagicMethodTest :: runMethod ( 'åŒæ°ïŒ' , 'åŒæ°ïŒ' ) ; // å®è¡çµæ // ãããªãåŒã³åºããã¡ãœãã㯠'runMethod' åŒæ°ïŒ, åŒæ°ïŒ ãã¬ãŒã ã¯ãŒã¯ ã§ã¯ããããã¡ãœãããé »ç¹ã«ç»å Žãããããªã®ã§ãããæ®æ®µã®ã¢ããªã±ãŒã·ã§ã³éçºæã¯ããŸãç®ã«ããæ©äŒãå°ãªãã ãã«ãäžç¬æèãæ¢ãŸã£ãŠãããŸããŸãã ããããäž»å¬è
ã®æ¹ãåå è
ã®æ¹ã
ãšããŸãã§ ãã¢ãã ããŠãããã®ããã«èªã¿é²ããŠããããšã§ãããžãã¯ã¡ãœããã®æå³ãå·éã«èããªããèªã¿é²ããŠããããšãã§ããŸãã åå è
ã®ã³ã¡ã³ããã€ã³ãããã«ãªã ä»åã®ã€ãã³ã㯠YouTube Live ã§å
¬éãããŠãããããä»ã®åå è
ã®æ¹ã®ã³ã¡ã³ããèªãããšãã§ããŸããã ã³ã¡ã³ãã®äžã«ã¯èªåãšåããããªããšãæããªããã³ãŒããèªã¿é²ããŠããæ¹ãããã£ããã£ãããå¥èŠç¹ã®æ·±ãå
容ã®ããšãã³ã¡ã³ããããŠããæ¹ãããŠãã³ãŒããªãŒãã£ã³ã°ã®ã¢ãããŒã·ã§ã³ãé«ããªããåå ããããšãã§ããŸããã ïŒåå è
ã®äžã«ã¯Laravelã«éåžžã«ã詳ããæ¹ãåå ãããŠããããã§ãéãã³ã¡ã³ãããããæ¹ãããã£ããããŸãããïŒ åå è
éã®ã³ãã¥ãã±ãŒã·ã§ã³ã掻çºã§ãã£ãããšãéåžžã«å°è±¡çã§ãçµå§éåããããšãªãã³ã¡ã³ããæµããŠããŸããã ãããã« ä»åããªã³ã©ã€ã³ã®ã³ãŒããªãŒãã£ã³ã°ã«åå ãããŠããã ããä»ã®äººãã©ã®ããã«ã³ãŒããèªã¿é²ããŠããã®ããæèŠããããšãã§ããŸããã ãã¬ãŒã ã¯ãŒã¯ ã®ãããªå·šå€§ãªã³ãŒããèªãäžã§ã¯ããŸãã¯ãã£ãšå
šå®¹ãææ¡ããŠããã现ãããã€ã³ããæ¯ãè¿ã£ãŠçè§£ããªããèªã¿é²ããŠããã¹ãã ãšæããŸããã æ¯ãè¿ã£ãŠãããšãã®ãã€ã³ããšããŠããšããåŠçã§å©çšãããã¯ã©ã¹ã«ã¯ä»ã«ã©ã®ãããªã¡ãœãããããã®ãããšãããšãããŸã§èŠéãåºããããšã§ã ãã¬ãŒã ã¯ãŒã¯ ãå®çŸã§ããä»ã®åŠçãç¥ããã£ããã«ããªãããšãçè§£ããŸããã ããããã¹ããŒãã«é²ããããã«ãã ãã£ã¬ã¯ã ãªæ§æããã£ãããšã«ãŒã«ä»ãããŠãæ£ãã管çããŠããããšãéèŠã§ãã ãããã®ããŠããŠã¯æ¥åã§éçºããŠããããã°ã©ã ãèªã¿èŸŒãéã«ã䜿ãããã¯ããã¯ã ãšæããŸããã äŸãã°ããããã«ã¯ãŸã£ãŠããŸã£ãŠãåããšãããã°ã«ã°ã«èªã¿è¿ããŠããŸãããªããŠããšãèµ·ããªãããã«ããããã®æ¹æ³ãšããŠããããããšåèã«ãªãããšãåŸãããããªãšæããŸããã æ¬¡åã®éå¬ã楜ãã¿ã§ãïŒ ãªããåŒç€Ÿ ã©ã¯ ã¹ã§ããªã³ã©ã€ã³ã§ PHP ã®å匷äŒãéå¬ããŠããŸãã Laravelã«ã€ããŠãLTãªã©ã§éå»ã«äœåºŠã話é¡ã«ãªã£ãŠããŸãã®ã§ããåå ããã ãããšå¹žãã§ãã rakus.connpass.com