株匏䌚瀟ラクスのブログ - TECH PLAY

TECH PLAY

株匏䌚瀟ラクス

株匏䌚瀟ラクス の技術ブログ

å…š982ä»¶

はじめに こんにちは、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