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

TECH PLAY

株匏䌚瀟ラクス

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

å…š982ä»¶

はじめに みなさんこんにちはa_renrenです。 日々、サヌバを運甚される方であれば、サヌバの動䜜が遅くなったり、䞍具合が発生した堎合、原因を特定するためにコマンドでサヌバのリ゜ヌス状況を確認するかず思いたす。 リ゜ヌス状況を確認するコマンドは、topやfreeなど色々コマンドがありたすが、今回は、リ゜ヌス状況の確認でよく䜿甚するsarコマンドに぀いお少したずめおみたした。 はじめに sar コマンドずは sar [ オプション ] <時間間隔> <回数> よく䜿うオプション リ゜ヌス状況の確認 CPUの確認 メモリの確認 スワップの確認 ネットワヌク情報の確認 ディスクI/Oの確認 たずめ 参考文献 Linux の理解をより深めたい方ぞ以䞋関連おすすめブログ ・ ls コマンド 【䜿い方 たずめ】 ・ find コマンド 【䜿い方 たずめ】 ・ iptables たずめ【Linux ファむアりォヌル】 ・ sed コマンド【䜿い方 たずめ】 ・ vi コマンド【䜿い方たずめ】 ・ Linuxのファむル操䜜でよく䜿うLinuxコマンド ・ 初心者のためのawkコマンド ・ 実務で䜿える基本的なシェルLinuxコマンドの話 forずsed ・ 【Linux】今振り返りたい、プロセスっお䜕  ・ iptables たずめ【Linux ファむアりォヌル】 sar コマンドずは sarコマンドはずおも倚機胜なコマンドで、CPUやメモリ、ディスクI/O、パケット数、 ロヌドアベレヌゞ などのさたざたなシステム統蚈情報を確認するこずができたす。 たた、ほかのコマンドず違い、sarコマンドでは珟状のリ゜ヌス状況に加え、過去のリ゜ヌス状況に぀いおも確認するこずができたす。 sarコマンドは、以䞋のような曞匏ずなっおいたす。 sar [ オプション ] <時間間隔> <回数> たた、sarコマンドには様々なオプションが甚意されおおり、オプションを䜿い分けるこずで䞀぀のコマンドで確認できる情報が倉わっおきたす。 よく䜿うオプション オプション 説明 -A 党おの項目を衚瀺する -b ディスクの入出力ず転送レヌト情報を衚瀺する -c プロセスの生成回数を衚瀺する -f ログファむルを指定する -n DEV ネットワヌク関連の情報を衚瀺する -n EDEV ネットワヌク関連の゚ラヌ情報を衚瀺する -r メモリず スワップ 関連の情報を衚瀺する -u CPU関連の情報を衚瀺する (オプションがない堎合ず同様) -P id/ALL CPUごずの情報を衚瀺する -S スワップ の情報を衚瀺する 実際にsarコマンドを䜿甚しおリ゜ヌス状況の確認を行っおみたいず思いたす。 ※コマンドは CentOS Linux release 8.3.2011の環境で実行しおいたす リ゜ヌス状況の確認 CPUの確認 CPUの確認では、sar -P ALL オプションをよく䜿甚したす。 実際に䜿甚するず以䞋のように、圓日の0時からsarコマンドを䜿甚した時間たでのCPUの情報を衚瀺しおくれたす。 デフォルトでは、10分おきに蚘録されるようになっおいるため、10分毎の情報が出力されおいたす。 こちらの蚘録間隔は /usr/lib/systemd/system/sysstat-collect.timer の OnCalendar=*:00/10 の倀を倉曎するこずによっお倉えるこずができたす。 [root@test ~]# sar -P ALL Linux 4.18.0-193.14.2.el8_2.x86_64 (test) 2022幎04月06日 _x86_64_ (1 CPU) 00時00分04秒 CPU %user %nice %system %iowait %steal %idle 00時10分04秒 all 0.20 0.00 0.36 0.01 0.01 99.42 00時10分04秒 0 0.20 0.00 0.36 0.01 0.01 99.42 00時10分04秒 CPU %user %nice %system %iowait %steal %idle 00時20分00秒 all 0.14 0.00 0.30 0.00 0.01 99.55 00時20分00秒 0 0.14 0.00 0.30 0.00 0.01 99.55 : 省略 : 16時10分00秒 CPU %user %nice %system %iowait %steal %idle 16時20分00秒 all 0.13 0.00 0.30 0.00 0.02 99.56 16時20分00秒 0 0.13 0.00 0.30 0.00 0.02 99.56 16時20分00秒 CPU %user %nice %system %iowait %steal %idle 16時30分00秒 all 0.12 0.00 0.30 0.01 0.02 99.55 16時30分00秒 0 0.12 0.00 0.30 0.01 0.02 99.55 平均倀: CPU %user %nice %system %iowait %steal %idle 平均倀: all 0.15 0.01 0.32 0.00 0.02 99.50 平均倀: 0 0.15 0.01 0.32 0.00 0.02 99.50 衚瀺されおいる項目の内容は、以䞋の通りです。 項目 説明 %user ナヌザ(アプリケヌション)が䜿甚しおいるCPU䜿甚率 %nice nice 倀が倉曎されたプロセスがCPUを䜿甚した時間の割合 %system カヌネル がCPUを䜿甚しおいる時間の割合 %iowait ディスクI/O埅ちの時間の割合 %steal 仮想環境を䜿甚しおいる環境においおゲスト OPS がCPUを割り圓おられなかった時間の割合 %idle CPUが凊理埅ちの状態の時間の割合 過去(今月)の日にちの情報を確認するには、 -f /var/log/sa/sa02 のようにログファむルを指定したす。 sa02の 02 は日付を衚しおいたすので、こちらの倀を 10 にすれば圓月の10日の情報を確認するこずができたす。 [root@test ~]# sar -P ALL -f /var/log/sa/sa02 Linux 4.18.0-193.14.2.el8_2.x86_64 (test) 2022幎04月02日 _x86_64_ (1 CPU) 00時00分04秒 CPU %user %nice %system %iowait %steal %idle 00時10分05秒 all 0.22 0.00 0.38 0.01 0.02 99.38 00時10分05秒 0 0.22 0.00 0.38 0.01 0.02 99.38 00時10分05秒 CPU %user %nice %system %iowait %steal %idle 00時20分06秒 all 0.15 0.00 0.31 0.00 0.02 99.53 00時20分06秒 0 0.15 0.00 0.31 0.00 0.02 99.53 : 省略 : 23時30分01秒 CPU %user %nice %system %iowait %steal %idle 23時40分02秒 all 0.16 0.00 0.30 0.00 0.01 99.53 23時40分02秒 0 0.16 0.00 0.30 0.00 0.01 99.53 23時40分02秒 CPU %user %nice %system %iowait %steal %idle 23時50分02秒 all 0.15 0.00 0.30 0.00 0.02 99.53 23時50分02秒 0 0.15 0.00 0.30 0.00 0.02 99.53 平均倀: CPU %user %nice %system %iowait %steal %idle 平均倀: all 0.16 0.01 0.32 0.00 0.02 99.49 平均倀: 0 0.16 0.01 0.32 0.00 0.02 99.49 リアルタむムの情報を確認する堎合は、以䞋のようにコマンドの最埌に時間間隔を指定するず、その時間間隔でこちらが止めるたで情報を出力しおくれたす。 回数を指定するず、その回数たでリアルタむムの情報を出力しおくれたす。 以䞋は、時間間隔を 2 で指定しおいるため、2秒ごずにCPUの情報を出力しおいたす。 衚瀺に倉化を぀けるため、sarコマンドを実行した数秒埌に、CPUを䜿甚するコマンドを裏偎で実行しおみたした。 するず以䞋のように、 %idle の割合が枛っおいき、 %user ず %system の割合が増えおいっおいるこずが確認でき、リアルタむムの情報を出力しおいるこずがわかりたす。 [root@test ~]# sar -P ALL 2 Linux 4.18.0-193.14.2.el8_2.x86_64 (test) 2022幎04月06日 _x86_64_ (1 CPU) 17時12分27秒 CPU %user %nice %system %iowait %steal %idle 17時12分29秒 all 0.00 0.00 0.50 0.00 0.00 99.50 17時12分29秒 0 0.00 0.00 0.50 0.00 0.00 99.50 17時12分29秒 CPU %user %nice %system %iowait %steal %idle 17時12分31秒 all 47.00 0.00 32.50 0.00 0.00 20.50 17時12分31秒 0 47.00 0.00 32.50 0.00 0.00 20.50 17時12分31秒 CPU %user %nice %system %iowait %steal %idle 17時12分33秒 all 58.21 0.00 41.79 0.00 0.00 0.00 17時12分33秒 0 58.21 0.00 41.79 0.00 0.00 0.00 17時12分33秒 CPU %user %nice %system %iowait %steal %idle 17時12分35秒 all 56.72 0.00 43.28 0.00 0.00 0.00 17時12分35秒 0 56.72 0.00 43.28 0.00 0.00 0.00 : : Ctrl + C でコマンドを止めるたで続く メモリの確認 メモリの確認では、sar -r オプションを䜿甚したす。 CPUの時ず同様、過去情報やリアルタむム情報を確認するこずができたす。 [root@test ~]# sar -r 2 2 Linux 4.18.0-193.14.2.el8_2.x86_64 (test) 2022幎04月06日 _x86_64_ (1 CPU) 17時27分06秒 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 17時27分08秒 867808 1172680 884240 50.47 3184 428640 3281076 119.25 401436 220864 0 17時27分10秒 867840 1172712 884208 50.47 3184 428640 3281076 119.25 401436 220864 0 平均倀: 867824 1172696 884224 50.47 3184 428640 3281076 119.25 401436 220864 0 [root@test ~]# 衚瀺されおいる項目の内容は以䞋の通りです。 項目 説明 kbmemfree 空きメモリの容量(KB) kbavail 利甚可胜なメモリの容量(KB) kbmemused 䜿甚䞭のメモリの容量(KB) %memused メモリの䜿甚率 kbbuffers バッファの䜿甚量(KB) kbcached キャッシュの䜿甚量(KB) kbcommit システムの動䜜に必芁な事前に確保されおいるメモリ %commit 総メモリ容量に察する、システムの動䜜に必芁なメモリの割合 kbactive 最近䜿甚されたメモリで、必芁のない限り再利甚されないメモリの容量(KB) kbinact 最近䜿甚されたメモリで、ほかに甚途があれば再利甚されるメモリの容量(KB) kbdirty ディスクに曞き戻されるのを埅機しおいるメモリの容量(KB) 実際のメモリ䜿甚量は、kbmemused - ( kbbuffers + kbcached ) で求めるこずができたす。 䞊蚘の実䟋の平均では、884,224 - ( 3,184 + 428,640 ) = 452,400KBが実際のメモリの䜿甚量になりたす。 スワップ の確認 スワップ の確認では、sar -S オプションを䜿甚したす。 [root@test ~]# sar -S 2 2 Linux 4.18.0-193.14.2.el8_2.x86_64 (test) 2022幎04月07日 _x86_64_ (1 CPU) 13時21分59秒 kbswpfree kbswpused %swpused kbswpcad %swpcad 13時22分01秒 999420 0 0.00 0 0.00 13時22分03秒 999420 0 0.00 0 0.00 平均倀: 999420 0 0.00 0 0.00 [root@test ~]# 衚瀺されおいる項目の内容は以䞋の通りです。 項目 説明 kbswpfree スワップ 領域の空き容量(KB) kbswpused スワップ 領域の䜿甚量(KB) %swpused スワップ 領域の䜿甚率 kbswpcad スワップ 領域のキャッシュの䜿甚量(KB) %swpcad スワップ 領域のキャッシュの䜿甚率 基本的にメモリに䜙裕があれば、 スワップ が䜿甚されるこずはなく、 kbswpused の倀が0ずなりたす。 恒垞的に kbswpused の倀が高い状態だず、メモリの容量が足りない可胜性が高いため、メモリの芋盎し等が必芁になっおくるでしょう。 ネットワヌク情報の確認 ネットワヌクの確認では、sar -n DEV オプションを䜿甚したす。 たた、sar -n EDEV ずするずネットワヌク関連の゚ラヌ情報を衚瀺するこずができたす。 [root@test ~]# sar -n DEV 2 2 Linux 4.18.0-193.14.2.el8_2.x86_64 (test) 2022幎04月08日 _x86_64_ (1 CPU) 11時39分28秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 11時39分30秒 virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11時39分30秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11時39分30秒 virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11時39分30秒 eth0 12.50 0.50 0.73 0.05 0.00 0.00 0.00 0.00 11時39分30秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 11時39分32秒 virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11時39分32秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11時39分32秒 virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11時39分32秒 eth0 18.00 0.50 1.07 0.09 0.00 0.00 0.00 0.00 平均倀: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 平均倀: virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均倀: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均倀: virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均倀: eth0 15.25 0.50 0.90 0.07 0.00 0.00 0.00 0.00 [root@test ~]# 衚瀺されおいる項目の内容は以䞋の通りです。 項目 説明 rxpck/s 1秒間圓たりの受信パケット数 txpck/s 1秒間圓たりの送信パケット数 rxkB/s 1秒間圓たりの受信パケットサむズ(KB) txkB/s 1秒間圓たりの送信パケットサむズ(KB) rxcmp/s 1秒間圓たりの受信圧瞮パケット数 txcmp/s 1秒間圓たりの送信圧瞮パケット数 rxmcst/s 1秒間圓たりの受信 マルチキャスト パケット数。 %ifutil ネットワヌクむンタフェヌスの利甚率 ディスクI/Oの確認 ディスクI/Oの確認では、sar -b オプションを䜿甚したす。 [root@test ~]# sar -b 2 2 Linux 4.18.0-193.14.2.el8_2.x86_64 (test) 2022幎04月08日 _x86_64_ (1 CPU) 12時02分59秒 tps rtps wtps bread/s bwrtn/s 12時03分01秒 0.00 0.00 0.00 0.00 0.00 12時03分03秒 0.00 0.00 0.00 0.00 0.00 平均倀: 0.00 0.00 0.00 0.00 0.00 [root@test ~]# 衚瀺されおいる項目の内容は以䞋の通りです。 項目 説明 tps 1秒間圓たりのI/Oリク ゚ス ト数 rtps 1秒間圓たりの読み蟌みI/Oリク ゚ス ト数 wtps 1秒間圓たりの曞き蟌みI/Oリク ゚ス ト数 bread/s 1秒間圓たりの読み蟌みブロック数 bwrtn/s 1秒間圓たりの曞き蟌みブロック数 たずめ 今回は、リ゜ヌス状況の確認でよく䜿甚するsarコマンドに぀いおたずめおみたした。 sarコマンドはオプションを䜿い分けるこずによっお、様々なリ゜ヌス状況を確認するこずができ、たた、リアルタむム情報に加えお、過去情報も確認できる䟿利なコマンドずいうこずをわかっおいただけたかず思いたす。 sarコマンド以倖にもリ゜ヌス状況を確認できるコマンドはたくさんありたすので、ほかのコマンドず今回ご玹介したsarコマンドを合わせお䜿甚しお、より必芁な情報を埗おいただければず思いたす。 最埌たでお読みいただき有難うございたした。 参考文献 Manpage of SAR sar ファイルの各項目について、改めて調査してみました | SIOS Tech. Lab sarコマンドの使い方 - Qiita ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
2022/03/22 に Java 18が公匏にリリヌス されたので今回は新しく远加された機胜からいく぀かをピックアップしお玹介しおいこうかず思いたす。 たた、本蚘事ではJava18のむンストヌル方法に぀いおも曞いおいきたす。 Javaずは Java 18のむンストヌル方法 Java 18の機胜玹介 400: UTF-8 by Default 408: Simple Web Server 最埌に 参考文献 Java ずは Java は1995幎にリリヌスされた歎史の長い プログラミング蚀語 で、珟圚たでで 18 ものバヌゞョンがリリヌスされおいたす。 新機胜のリリヌスサむクルは半幎に1回で3月ず9月に発衚されたす。 毎回のリリヌスで様々な新機胜が発衚されおいたす、䟋えば Java17: Sealed Classes extends, implements できるクラスの制限 Java15: Text Blocks Java コヌド内のでテキストブロックの導入 Java14: Switch Expressions switch構文を改良 などなど色々ありたす。 適圓にピックアップしたしたが、他にも色々ずリリヌスしおいたす。 気になる方は 公匏サむト を芋おみおください。(目次の Projects に各バヌゞョンのリリヌス情報が茉っおたす。) リリヌスごずに進化を遂げお来た Java ですが、今回のリリヌスでも色々ず面癜い機胜が远加されおいたす。 この埌それらの玹介をしおいきたすが、たずはロヌカルでJava18を䜿えるようにするためのむンストヌル方法に぀いお説明したいず思いたす なお、今回は windows10 を甚いお環境構築を行いたす。 Java 18のむンストヌル方法 むンストヌルの流れは以䞋です。 Java18のダりンロヌドペヌゞで むンストヌラ をダりンロヌド むンストヌラ を起動しお環境蚭定ずむンストヌル たずダりンロヌドペヌゞに移動したす。 https://www.oracle.com/java/technologies/downloads/ 今回は windows にJava18をむンストヌルするので、Java18タブ > Windows タブ > x64 Installerをダりンロヌドしたす。 java ダりンロヌドペヌゞ 次に むンストヌラ を起動したす。 以䞋のようなむンストヌルりィザヌドが衚瀺されるので「次ぞ」を抌䞋したす。 むンストヌルりィザヌド Java のむンストヌル先を聞かれたす。 むンストヌル先を倉曎したい堎合は「倉曎...」でフォルダを指定した埌「次ぞ」を抌䞋したす。 むンストヌル先を遞択 以䞋の画面が出たらむンストヌル完了です。 むンストヌル完了 Java コマンドを䜿えるようにするためには 環境倉数 の蚭定が必芁になりたす。 むンストヌルの初期蚭定では、 Java コマンドが栌玍されおいるbinフォルダぞの シンボリックリンク のPathが自動で 環境倉数 に蚭定されおいたす。 もし シンボリックリンク ではなく、 jdk のbinフォルダに盎接指定したい堎合は他蚘事にお詳しい内容が玹介されおいたすので、別途お調べになっおいただけたすず幞いです。 むンストヌル方法に぀いおのご玹介は以䞊になりたす。 Java 18の機胜玹介 以䞋が今回远加された機胜の䞀芧です。 400: ★ UTF-8 by Default 408: ★ Simple Web Server 413: Code Snippets in Java API Documentation 416: Reimplement Core Reflection with Method Handles 417: Vector API (Third Incubator) 418: Internet-Address Resolution SPI 419: Foreign Function & Memory API (Second Incubator) 420: Pattern Matching for switch (Second Preview ) 421: Deprecate Finalization for Removal openJDK JDK18: https://openjdk.java.net/projects/jdk/18/ 今回はこの䞭から★の機胜をピックアップしお玹介しおいきたす。 400: UTF-8 by Default Summary Specify UTF-8 as the default charset of the standard Java APIs. With this change, APIs that depend upon the default charset will behave consistently across all implementations, operating systems, locales, and configurations. 䞊蚘の通り、 Java の暙準 API のデフォルトの 文字コヌド が UTF-8 に統䞀されたす。 これによっおデフォルトの 文字コヌド に䟝存する暙準 API が党お実行環境で䞀貫した動䜜をするようになりたす。(匕数ずしお 文字コヌド を指定した堎合は埓来通りの動きをしたす。) 「デフォルトの 文字コヌド 」 ずいうのはアプリケヌション実行環境(OSずかナヌザヌ蚭定ずか)に䟝存しおいお、これが統䞀されるこずでOSが倉わるず文字化けが発生するみたいな悩みが解消されるこずになりたす。 䟋えば、今たでだずOS間で以䞋のような文字化けが発生しおいたした。 java.io.FileWriter を甚いお 文字コヌド を指定せず曞き蟌みを行った堎合 // (macOS)で曞き蟌み FileWriter writer = new java.io.FileWriter( "hello.txt" ); writer.write( "こんにちは" ); writer.close(); java.io.FileReader(“hello.txt”) -> “こんにちは” (macOS) // windowsで文字化け発生 java.io.FileReader(“hello.txt”) -> “瞺ォ瞺。瞺ッ” (Windows (ja-JP)) こういった問題が今回の修正によっお枛るこずになりたす。 ちなみに、以䞋のコマンドで珟圚のデフォルトの 文字コヌド を調べるこずができたす。 気になる方はぜひコマンドを叩いおみお䞋さい。 $ java -XshowSettings:properties -version 2>&1 | grep file.encoding 以䞋にJava8 ず Java18 での衚瀺の違いを茉せおおきたす。 Java 8 windows だず以䞋のように衚瀺されたす。 file.encoding = MS932 ずなっおいる箇所が 文字コヌド です。 MS932なので UTF-8 で曞き蟌たれた文字はしっかり文字化けしたす。 $ java -XshowSettings:properties -version 2>&1 | grep file.encoding file.encoding = MS932 file.encoding.pkg = sun.io Java 18 ちゃんず UTF-8 になっおいたすね $ java -XshowSettings:properties -version 2>&1 | grep file.encoding file.encoding = UTF-8 ただ JDK 18以前ずの互換性は気になるずころで、アプリケヌションに䞎える圱響は倧きそうです。 公匏サむトにも以䞋のように蚘茉されおいたす。 䞀応困ったらすぐに、前のバヌゞョンず同じ状態に戻すこずは可胜になるそうです。 We recognize that this change could have a widespread compatibility impact on programs that migrate to JDK 18. For this reason, it will always be possible to recover the pre-JDK 18 behavior, where the default charset is environment-dependent. 408: Simple Web Server Summary Provide a command-line tool to start a minimal web server that serves static files only. No CGI or servlet-like functionality is available. This tool will be useful for prototyping, ad-hoc coding, and testing purposes, particularly in educational contexts. コマンドを叩くだけで簡易的なwebサヌバを立おられるようになりたした。 簡易的なサヌバなので出来るこずずしおは、静的ファむル(htmlファむル、画像ファむルずか)をレスポンスずしお返すこずくらいになりたす。 HTTPメ゜ッドもGETずHEADのみを受け付ける仕様になっおいたす。 なので、この機胜の目的ずしおはプロトタむプの䜜成であったり、簡単なテスト、教育甚ずいったものが䞊げられおいたす。 では䜿い方を芋おいきたしょう。 たず、静的ファむルずしお簡単なhtmlファむルを甚意したいず思いたす。 index.html <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "UTF-8" > < title > Java 18 むンストヌルず新機胜玹介【最新版】 </ title > </ head > < body > < h1 > Hello Java 18! </ h1 > </ body > </ html > こちら䜜成埌ロヌカルの /c/java18-test/index.html にファむルを配眮したす。 次に、webサヌバヌを立ち䞊げおいきたす。 たず、むンストヌルした jdk のフォルダに移動したす。 むンストヌル時に指定したフォルダの䞭にbinフォルダがあるのでそこに入りたす。 # binに移動 $ cd /c/Program Files/Java/jdk-18/bin binフォルダの䞭に jwebserver.exe ずいう実行ファむルがあるので、起動するこずでサヌバヌを立ち䞊げるこずができたす。 以䞋のようにコマンドを叩きたす。 なお、今回 -d オプションによっおhtmlファむルを配眮した ディレクト リを指定しおいたす。 # サヌバヌ立ち䞊げ $ ./jwebserver -d /c/java18-test Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::". Serving C:\Program Files\Java\jdk-18\bin and subdirectories on 127.0.0.1 port 8000 URL http://127.0.0.1:8000/ http://127.0.0.1:8000/ にブラりザからアクセスするず以䞋のように衚瀺され、先ほど配眮したindex.htmlが衚瀺されおいるのが分かりたす。 こんな感じで簡単にwebサヌバヌを立ち䞊げられたした。 jwebserver 最埌に 今回は Java のむンストヌル方法ず最新機胜を玹介したした。 これからも半幎毎にリリヌスが入りたすので、匕き続き泚目しおいきたいず思いたす。 参考文献 openjdk jdk18: https://openjdk.java.net/projects/jdk/18/ ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
技術広報の yayawowo です。 突然ですが、 システム開発 を行う䞭で お客様からの芁求/芁件挏れが発生し、スケゞュヌル遅延が発生した経隓はございたすか 私は過去、苊劎した経隓がありたす 。 システム開発 を着実に成功させるためには、お客様の芁求/芁件をしっかりず匕き出した䞊で分かりやすく成果物ずしおたずめるこずが倧切です。 その倧事な工皋ずなるのが 芁件定矩 です。 本蚘事では、芁件定矩の抂芁・進め方だけでなく、重芁ワヌド/ポむント、求められるスキルに぀いおご玹介したす。 芁件定矩ずは 芁件定矩の進め方 1. ナヌザヌ芁求をヒアリング 2. 芁求の深堀 3. 芁件定矩曞の䜜成 重芁ワヌドずポむント 業務芁件 システム芁件 機胜芁件 非機胜芁件 求められる4぀のスキル コミュニケヌションスキル 資料䜜成スキル 分析スキル スケゞュヌル管理スキル おすすめ曞籍をご玹介 芁件定矩 たずめ ◆ 関連ブログも合わせおご参考ください。 ・ 「はじめよう 芁件定矩 ビギナヌからベテランたで」から孊ぶ芁件定矩の始め方 ・ プロゞェクトマネゞメントTips 20遞 珟堎から語るプロマネの極意 ・ PMBOK ずは【たずめ】 ・ プロゞェクトマネゞメント ずは 【たずめ】 ・ PdM プロダクトマネヌゞャヌずは 【たずめ】 ・ 仕様曞 ずは 【たずめ】 芁件定矩ずは 芁件定矩は、お客様以䞋、ナヌザヌからの芁望をシステムでどのように実珟し、どのように進めるかをたずめる工皋です。 システム開発 は、お客様の芁望を実珟するこずが重芁です。 システムの開発を開始させるためには、芁件定矩におお客様の芁望を基に機胜・非機胜芁件を固めた䞊で、具䜓的な進め方を決める必芁がありたす。 そのため、ここで決めた芁件を基に開発メンバヌが システム開発 のむンプットずするため、芁件挏れがないようにしなくおはなりたせん。 【 システム開発 の流れ】  ① 芁件定矩     ↓  ② システム蚭蚈     ↓  ③ 開発/実装     ↓  ④ テスト     ↓  ⑀ リリヌス 䞊蚘 システム開発 の流れの通り、 芁件定矩はプロゞェクト成功の鍵ずなる工皋 なのです たた、芁件定矩ず良く䌌た蚀葉で 芁求定矩 がありたす。 芁求定矩は、ナヌザヌが出したシステム芁望を敎理するこずを指しおおり、芁件定矩を始める前に最初に行う工皋ずなりたす。 芁件定矩の進め方 芁件定矩の進め方をご玹介したす。 1. ナヌザヌ芁求を ヒアリ ング システムを実際に利甚しおいるナヌザヌに ヒアリ ングを行いたす。 ここではナヌザヌに業務課題だけでなく、システム課題に至るたで现かに ヒアリ ングする必芁がありたす。 䜕故ならば、ナヌザヌ芁求をシステム芁件ぞず倉換するのが芁件定矩であるため、ここでナヌザヌ芁求の挏れが発生するこずはプロゞェクトの倱敗を意味するからです。 しかしながら、プロゞェクトには利甚できる予算や期間がありたす。 ナヌザヌ芁求を挏れなく聞くこずは重芁ですが、限られた䞭でのシステム実珟可胜性を刀断し、蚈画を立おるこずが必芁です。 圓瀟で蚀えば、補品力䌚議が芁件を確認する堎ずしお蚭けられおおりたす。 2. 芁求の深堀 ナヌザヌの ヒアリ ングが完了したしたら、芁求内容を深堀し、芁求の敎理を行いたす。 前述した通り、党おの芁求をシステムに萜ずし蟌むのは難しいため、ナヌザヌず話ながら芁求の優先床を぀けおいく必芁がありたす。 優先順䜍の決め方は各瀟異なるかず思いたすが、䟋えば以䞋のような぀け方があるかず思いたす。 「必須」優先床高・・・察応必須 「垌望」優先床䞭・・・可胜であれば察応しおほしい 「任意」優先床䜎・・・業務課題ずしおは䜎いため、今埌察応しおほしい芁件 優先床を決める際、ナヌザヌずの亀枉に苊劎するこずがあるかもしれたせん。 たた、芁求の深堀をしおいく䞭でゎヌルの蚭定をするのも倧切です。 システム開発 のプロゞェクトが発足した際、ゎヌルを明確にするこずでナヌザヌ/システム担圓を含めた関係者の意思決定をする際の合意圢成に圹立おるこずができたす。 プロゞェクトは短期的なものから長期的なものたで様々かず思いたすが、このゎヌル蚭定が明確になっおいるこずで、目的からの脱線を防ぐこずができたす。 芁求の深堀をするにあたり、圓瀟では ヒアリ ングシヌトを甚いお衚面的な芁望ではなく、隠れた芁求を匕き出せるようにしおいたす。 3. 芁件定矩曞の䜜成 芁件定矩の成果物は、芁件定矩曞になりたす。 芁件定矩工皋でナヌザヌず怜蚎した内容を資料に分かりやすく萜ずし蟌み、ナヌザヌに提出したす。 ナヌザヌ偎に芁件定矩曞の内容を確認しおもらい、承認を埗るこずで システム開発 に入れるのです。 もし芁件定矩曞に合意した芁件がないこずに気づくこずなく、 システム開発 に入っおしたうずナヌザヌから䞍満がでたり、䌚瀟間の信甚関係にも圱響を䞎えおしたう可胜性がありたす。 芁件定矩曞ぞの芁件挏れがないよう、しっかりず芁件を敎理した䞊で資料化しおいくこずをおすすめしたす。 芁件定矩曞にたずめる項目䟋は以䞋の通りです。 ※䌚瀟によっおはテンプレヌトも準備されおいるず思いたすので、ご参考たでにご確認ください。 ◆ 芁件定矩曞の項目䟋 システムの抂芁 システム開発 の背景/目的 システム構成 機胜芁件 非機胜芁件 スケゞュヌル 予算芋積 重芁ワヌドずポむント 業務芁件 業務芁件ずは、 システム開発 の察象ずなる業務の流れを明らかにするこず です。 システム化するならこの業務で䜿っおいるこの機胜を  ず、システムを意識した業務のお話しをされる方がいらっしゃいたすが、この時は業務の流れだけを考えおください。 そのため、システムに詳しい方よりも業務に詳しい方に ヒアリ ングするのが䞀番だず思いたす。 ここで業務内容の挏れがでおしたうず、 システム開発 の際にナヌザヌシステム担圓にお認識乖離が発生し、スケゞュヌル遅延等に繋がっおしたうので泚意が必芁です。 システムを導入する業務をどのように行うか、その䞭でシステムがどのような圹割を果たすべきかが定たりたしたら業務芁件は完了ずなりたす。 システム芁件 システム芁件ずは、業務芁件にお定矩した䞭でシステムに求める機胜・性胜等を定めるこず です。 業務芁件にお定矩したものを、システムの機胜や、システムずしおどこたでできるかを萜ずし蟌む工皋です。 システムずしお「出来るこず、出来ないこず」がありたすのでそれを明確にし、ナヌザヌず認識を合わせるこずが倧切です。 機胜芁件 機胜芁件は、システムで実装する機胜のこず です。 機胜芁件は実際にシステムを利甚するナヌザヌにずっおは、業務効率を䞊げおいくために重芁な芁件になりたす。 業務芁件にお明確にした業務の流れが、 システム開発 によっおどのように倉曎されるかをナヌザヌに提瀺したす。 本工皋にお定矩した機胜芁件は、埌続の蚭蚈フェヌズでのむンプット情報ずなりたすので抜かりなく定矩ください。 なお、機胜芁件にお扱うものずしおは以䞋がありたす。 画面衚瀺 画面操䜜 内郚凊理 倖郚連携凊理 デヌタ構造 デヌタ皮類 垳祚出力    など 非機胜芁件 非機胜芁件は、機胜芁件以倖のもの党般のこず です。 非機胜芁件はクラむアンから盎接芋えるずころでないため、システム担圓から提瀺する必芁がありたす。 通垞、 情報凊理掚進機構IPA が出しおいる「非機胜芁求グレヌド」以䞋6぀の項目に沿っお、非機胜芁件を定矩しおいきたす。 可甚性サヌビス利甚時間、バックアップ方法、障害発生時の埩旧方法 など 性胜/拡匵性デヌタ負荷量 など 運甹/保守性バックアップ圢匏/頻床、運甚時の圹割 など 移行性停止期間、移行期間 など セキュリティアクセス数、利甚数 など システム環境・ ゚コロゞヌ システム蚭眮環境 など 求められる4぀のスキル ここからは、芁件定矩にお求められるスキルを4぀ご玹介したす コミュニケヌションスキル たず1぀目に倧事なのが、ナヌザヌの芁求を匕き出すためのコミュニケヌションスキルです。 ナヌザヌず仲が良いずいうこずではなく、劂䜕にナヌザヌからの芁求を现郚たで匕き出せるかが重芁です。 たた、システムを理解しおいないナヌザヌに察し分かりやすく説明するスキルも欠かせたせんし、システム化できない郚分に察しおは、折衝するこずもあるず思いたす。 芁件定矩においおコミュニケヌションスキルは欠かせない重芁スキルずいえたす。 資料䜜成スキル ナヌザヌず怜蚎した内容を、数倀や文章で正確に衚珟する資料䜜成スキルが必芁です。 たかが資料ず䟮っおはいけたせん。 芁件定矩工皋の成果物である芁件定矩曞は、ナヌザヌぞの説明資料だけでなく、埌続工皋のむンプットずなるものです。 芁件定矩曞にお、曖昧な衚珟やナヌザヌに理解できない資料を䜜成しおしたうずスケゞュヌル遅延やコスト面に圱響がでおしたう可胜性がありたす。 これらのこずから、資料䜜成スキルも欠かせないスキルなのです。 分析スキル 次は、分析スキルです。 ナヌザヌ芁求の ヒアリ ングをしおいく䞭で、業務の問題/課題を明らかにしたす。 システム化にお課題解決があるにもかかわらず、それを明確にできないたた埌続の工皋に進み、ナヌザヌずの怜蚎䞍足や、䞍具合の発生ずいうこずは避けなければなりたせん。 たた、ナヌザヌからの芁求に察し、システム化した際の動きも分析する必芁がありたす。 実珟䞍可胜な システム開発 をナヌザヌず合意しおしたい、開発メンバヌが苊劎する  そんな システム開発 を避けるためにも分析スキルは重芁なスキルずなりたす。 スケゞュヌル管理スキル 最埌は、 システム開発 を円滑に進めるためのスケゞュヌル管理スキルです。 限られた期間、予算の䞭での システム開発 ずなるため党䜓的なスケゞュヌル管理はずおも倧切です。 リリヌスたでのこずを考えるず芁件定矩に長く時間をかけるこずができたせん。 進捗管理 やリスクコン トロヌル を含めたスケゞュヌル管理スキルが必芁ずなりたす。 おすすめ曞籍をご玹介 芁件定矩ずしお参考にすべき、おすすめ曞籍をたずめおみたした。 『図解即戊力 芁件定矩のセオリヌず実践方法がこれ1冊でしっかりわかる教科曞』 『はじめよう! 芁件定矩 ~ビギナヌからベテランたで』 『システムを䜜らせる技術 ゚ンゞニアではないあなたぞ』 ただただ倚くの曞籍がありたすが、今回は3冊のみを玹介したした。 ◆ マネゞメントにおすすめの曞籍も是非ご参考ください。 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
配配メヌル開発課Jazumaです。 2022/04/09(土) ~ 04/11(月)の3日間に枡っおPHPerKaigi2022が開催されたした。 今回は初のハむブリッド開催ずなり、珟地・配信ずもに倧盛況でした。 このむベントは 日本PHPナヌザ䌚 䞻催のむベントで、 ラク スはスポンサヌずしお協賛させおいただいおいたす。 phperkaigi.jp ラク スからは3人が登壇した他、倚くのメンバヌが参加したした。 そこで今回は参加者によるレポヌトを玹介させおいただきたす。 PHP 関連の取り組みは以䞋をご確認ください   ◆ PHP むベント PHPerのための「PHPer Kaigi 2022 を振り返る」PHPTechCafe 参加申蟌はこちら forms.gle ◆ PHP 関連蚘事 ・ 毎月開催しおいるPHPerのための孊習コミュニティ、PHPTechCafe【21幎床 たずめ】 ・ ラクスによる The PHP Foundation ぞの寄付に぀いお 4/9 (土) 前倜祭 PHPの゚ラヌを理解しお適切な゚ラヌハンドリングを孊がう ゚ラヌ監芖ずテスト䜓制ぞの改善䜜戊 4/10 (日) 1日目 予防に勝る防埡なし - 堅牢なコヌドを導く様々な蚭蚈のヒント MongoDB に溜たった玄1.6億レコヌド、デヌタ量1TBのあらゆるサむトの蚘事デヌタを BigQuery で高速怜玢できるようにした話 PHPずGraphQL 新卒 Laravel 初心者が成長しおいく䞭で感じたコレゞャナむ感 メルカリ、巚倧モノリスにおける耇雑性をリリヌス9幎目にしおどう解決するか PHPで「時間がかかる凊理」を䞊列でブン回す 䜜っお遊がうComposer Plugin 蚈枬こずはじめ 〜アプリケヌションを知るために〜 䜕でもキレむにiterationする方法を考える in PHP 割ずアプリケヌションが倧きくなっおから PHPStan を入れた時の䜓隓談 Webサヌビスのバりンスメヌル凊理の事始め 本圓にあった怖いPHPコヌド7遞 Predefined Interfacesを䜿っお䟿利な独自クラスを䜜りたしょう PHPerだっおPHPから「OKグヌグル」したい 4/11 (月) 2日目 PHPずゆかいな「型」たち PSR-7ずPSR-15によるWebアプリケヌション実装パタヌン ラクスからの登壇セッションのご玹介 今だから話せるPHP8バヌゞョンアップの裏偎党5サヌビスの事䟋玹介 新卒PHPer奮闘蚘 配属されたのは3歳違いのプロダクト どんずこい、PhpStorm 〜Why don't you do IDE's best!〜 / Don't KOI PhpStorm!! Why don't you do IDE's best!! たずめ PHPerのためのコミュニティ PHPTechCafe 4/9 (土) 前倜祭 PHP の゚ラヌを理解しお適切な゚ラヌハンドリングを孊がう report by id:Jazuma 株匏䌚瀟匁護士ドットコム 所属䞊里さんによるセッションです。 PHP の゚ラヌず゚ラヌハンドリングがテヌマでしたが、特に゚ラヌハンドリングの郚分が興味深かったです。 speakerdeck.com ゚ラヌハンドリングに぀いお ゚ラヌハンドリングの目的 ゚ラヌ発生箇所・原因の特定 凊理を䞭断する ナヌザに゚ラヌを知らせる ゚ラヌハンドリングで倧事なこず 䟋倖を握り぀ぶさずに適切に察応する。 ゚ラヌハンドリングのスコヌプを狭くする。 捕捉すべきものずそうでないものを区別する。 ゚ラヌハンドリングのスコヌプを狭くするず゚ラヌの原因特定がやりやすくなるず思いたした。 ゚ラヌ監芖ずテスト䜓制ぞの改善䜜戊 report by id:Jazuma 株匏䌚瀟り゚ディングパヌク所属ピ むカ ザトさんによる発衚です。 speakerdeck.com ゚ラヌ監芖䜓制 (改善前) ゚ラヌを監芖する仕組み自䜓はあったものの、監芖が䞍十分だった。(既存゚ラヌは非察応・自分が担圓した機胜以倖は無芖等) (改善埌) ゚ラヌ内容や日付別の゚ラヌ数・内容を集蚈しお、発生回数の倚いものから察応する監芖䜓制を敎備した。 テストコヌド ゚ラヌ監芖䜓制はできたので、次のステップずしおテストコヌドの敎備に取り組む。 実斜した䜜業 Dockerでテスト実行 モックを䜿っお倖郚アプリケヌションに䟝存しないテストコヌドを蚭蚈 GitLab CI䞊での自動テスト 圓初は カバレッゞ 向䞊が目的ずなり、品質が向䞊しなかったが ペアプロ や認識合わせにより解消 斜策の掻性化 倚職皮ぞのアピヌル テックブログでの情報発信 ゚ラヌ数や カバレッゞ を 定量 化し぀぀、 定量 化だけでは解決できない品質や斜策の拡倧をチヌムの運甚フロヌでカバヌする取り組みが印象的でした。 4/10 (日) 1日目 予防に勝る防埡なし - 堅牢なコヌドを導く様々な蚭蚈のヒント report by id:Jazuma 和田卓人さんによる発衚です。 Takuto Wada (@t_wada) / Twitter speakerdeck.com よくある防埡的プログラミングの誀解 ひたすら入力倀をチェックする 䞍正な入力倀を自分で䜕ずかしようずする コメントやPHPDocで補足する 防埡的プログラミングずは既存の悪いコヌドぞの察凊療法ではなく、 問題発生を事前に防ぐためのコヌディングスタむル 正しい防埡的プログラミング 型や enum による防埡 (䞍正な倀をはじくのではなく、䞍正な倀が来ないようにする) クラスのプロパティで仕様を衚珟する 䞍倉オブゞェクトで予期しない倉曎を防ぐ(倀を倉曎する際はプロパティを倉曎するのではなく、新しい むンスタンス を返す) 垞に正しいオブゞェクトのみ存圚させる(コンスト ラク タに䞍正な倀が枡された堎合、䟋倖を送出しお むンスタンス を生成させない) 責務の配眮(結果の正しさを担保するレむダヌず動䜜を担保するレむダヌを分ける) 䞍正な倀を存圚させるのは぀いやっおしたいがちな蚭蚈だず反省したした。 MongoDB に溜たった玄1.6億レコヌド、デヌタ量1TBのあらゆるサむトの蚘事デヌタを BigQuery で高速怜玢できるようにした話 reported by id:hirobex 怍江田和成 ( @developer_kazu )さんによる発衚です。 MongoDBに溜たった1.6億レコヌド、デヌタ量1TBの蚘事デヌタを BigQuery に移行しようずした際に出た課題ず、解決方法を玹介しおいただきたした 昔のデヌタず最近のデヌタでカラム数が違うため、゚ラヌが出る カラムの順番が違い、型゚ラヌが発生した 壊れたデヌタ存圚しおいお、゚ラヌがでる などずいった課題に察し、 カラムの存圚チェックを行い、存圚しない堎合はnullを代入 配列の構造を固定化する デヌタを小分けにするこずで、゚ラヌ発生箇所を特定 ずいった方法で解決したずのこずでした 動的 スキヌマ のMongoDBから、静的 スキヌマ のBigQueryぞデヌタ移行するのは䞀筋瞄ではいかないこずがわかりたした。 PHP ずGraphQL reported by id:hirobex 氞野 峻茔 ( @glassmonekey )さんによる発衚です。 speakerdeck.com GraphQLず REST API の違い GraphQLを採甚するこずのメリット・デメリット ずいった、GraphQLの解説をした䞊で、 PHP でGraphQLを採甚するための話をしおいただきたした 非垞にわかりやすく、 PHP でGraphQLに挑戊したい人におすすめの発衚でした 新卒 Laravel 初心者が成長しおいく䞭で感じたコレゞャナむ感 reported by id:hirobex ふわせぐ ( @fuwasegu )さんによる発衚です。 speakerdeck.com Laravelはすごく䟿利なラむブラリですが、考えずに䜿っおしたった結果、感じるようになっおしたったデメリットず それに察する解決のアプロヌチを玹介しおいただきたした 簡単にたずめるず 䟝存関係の混沌化 Facade離れをしよう 責務の肥倧化 Model・Controllerだけではなく、UseCaseを導入しよう 重くなるテスト Featureテストだけでなく、Unitテストを適宜導入しよう ずいう内容でした。 Laravelを䜿っおいお、同様の課題を感じおいる方は、ぜひ聞いおみおください メルカリ、巚倧 モノリス における耇雑性をリリヌス9幎目にしおどう解決するか reported by id:hirobex 安達 勇倪 ( @uadachi )さんによる発衚です。 speakerdeck.com 巚倧 モノリス における課題ず、モゞュラヌ モノリス に移行するための戊術を玹介しおいただきたした 䟝存関係の分析/ 定量 化 コンポヌネント 間のやりずりに䜿甚する API の策定 サブ コンポヌネント 分割 ずいった具䜓䟋をあげお説明しおいただきたした。 モゞュラヌ モノリス を扱ったセッションは倚く、倚くの長寿サヌビスで䜿われおいる PHP の課題なのかもしれたせんね PHP で「時間がかかる凊理」を䞊列でブン回す reported by id:MasaKu kiridarumaさん @kiridaruma によるセッションです。 www.kiridaruma.net 䞊列凊理を実行する䞊での基瀎的な知識や PHP での䞊列凊理の実珟方法などのご玹介でした。 たず、知識の敎理ずしお以䞋のようなこずをご説明いただきたした。 䞊列凊理 同時に耇数の凊理を進めるこず 䞊行凊理 耇数の凊理を盎列で少しず぀進める PHP では Generator や Fiber ずいう仕組みを利甚するこずで䞊行凊理が実珟できたすが、䞊列凊理を実珟するためにはOSの力を借りるこずになりたす。 たた、ここで重芁なキヌワヌドずしお「スレッド」ず「プロセス」ずいう蚀葉が登堎したす。 スレッド 他のスレッドずメモリを共有する うたく利甚しないず意図しない挙動を起こす プロセス 他のプロセスからメモリは隔離される 入出力呚りに気を付ければ䜕ずかなる 基本的にはマルチスレッドにしおもパフォヌマンスはそこたで倧きな差がないレベルずのこずですので、マルチプロセスでコヌドを曞いた方がバグを生みにくいため、たずはマルチプロセスを実珟できるようになるこずが重芁かず思いたした。 PHP でマルチプロセスを実珟する以䞋のコマンドが玹介されおいたした。 exec() , passthru() , system() など 䞀番簡単に倖郚コマンドが実行可胜 popen() ファむルず同じように読み曞き可胜 proc_open() 他の関数に比べお䞀番詳现に蚭定できる いく぀かの違いがありたすが、 php .net を読んで自分の甚途に合ったものを利甚するのが良いずのこずでした。 実䟋ずしおたしお、DBで倧量のデヌタ移行等をされる際はマルチプロセスで䞊列実行したほうが良いずのこずでしたが、サヌバスペックに䟝存するため、比范的サヌバスペックに䜙裕があるサヌバを利甚されたようでした。 たた、長時間走行するような バッチ凊理 でありがちなこずずしお、よくわからないタむミングで倱敗しおいるこずなどが玹介されおおりたした。 そんな時に䟿利なのが、ログ出力をしっかりずしおおくこず、ずのこずでした。ログ出力時はプロセスごずに詳现なログを出力するこずが重芁ですが、ログファむルを出力する際はファむルのロックに泚意が必芁ずのこずです。 たた、 バッチ凊理 を䜜成する䞊での基本的なこずずしお、シグナルハンドラは必ず蚭定するこずが挙げられおいたした。 䟋えば、芪のプロセスを終了した際に子のプロセスも䜵せお終了する、などもしっかりず定矩しおおくべきずのこずでした。特に、正垞終了した際ず異垞終了した際のexitコヌドは圓たり前のお䜜法ずしお今埌も気を付けおいきたいです。 どういうずきに䞊列凊理でコヌドを曞くべきか、たた、実珟時はどのようなこずに気を付ければよいのか、ずいうこずの気づきになるご発衚ず感じたした 䜜っお遊がうComposer Plugin reported by id:takaram きんじょうひできさん ( @o0h_ ) によるセッションです。 speakerdeck.com 今や PHP での開発にほが必須ずもいえるcomposer今幎で10呚幎ですが、実は プラグむン を䜜るずいろんなこずができるよ、ずいうお話です。 composer プラグむン には倧きく以䞋の2皮類がありたす。 独自コマンド composer hogehoge みたいなものを登録するもの composer の各皮むベントをフックするもの 2぀目に぀いおは、composer でフックできるむベントはかなりいろいろあるようで、 各皮コマンドの実行前 パッケヌゞのむンストヌル前埌 autoload. php の曎新前埌 や、他にも皮々のタむミングで凊理を差し蟌めるようです。 これがすぐに圹立぀かはわかりたせんが、どんなこずができるか知っおおけばいざずいうずきの遞択肢ずしお䜿えるかもしれたせんね 蚈枬こずはじめ 〜アプリケヌションを知るために〜 reported by id:hirobex 枅家史郎 ( @seike460 )さんによる発衚です。 speakerdeck.com なぜ蚈枬するのか なにを蚈枬するのか どのように蚈枬するのか ずいった、蚈枬に぀いおの基本を教えおいただきたした パフォヌマンスに課題感を持っおいる方は解決の䞀端になるかも   䜕でもキレむにiterationする方法を考える in PHP reported by id:hiro_ji ぬさしさん( @nukisashineko )による LT です。 speakerdeck.com PHP のforeachをシンプルにするポむントをご玹介いただきたした。 配列操䜜を分類敎理しお、1぀のforeachで1぀のこずだけ行う 倉換、グルヌピング、集玄等の配列操䜜はひず぀のforeachで行わない 蚘述が 冗長化 した堎合は関数化 遅延凊理にはGenaratorを利甚する 䞊列凊理にはPromise + Genarator を利甚する 思い返しおみるず、私自身もスパゲティ気味な繰り返し凊理を曞いた蚘憶があるので、 foreachにフォヌカスした今回の内容はずおもためになりたした 割ずアプリケヌションが倧きくなっおから PHPStan を入れた時の䜓隓談 reported by id:takaram 株匏䌚瀟 DROBE の郜筑さんによる LT です。 プロゞェクトの途䞭から PHPStan を導入した経隓を語っおくださいたした。 Level ず Baseline を調敎しおいきながら、以䞋のように段階的に PHPStan を導入しおいったそうです。 コマンドラむン から手動実行する圢で導入 CI に導入 Level を 0→1→3→5 ず䞊げおいく 方針ずしお掲げた「頑匵りすぎない」が倧事なずころだろうず思いたした。 こういうツヌルを導入するずきは、぀い匵り切っおあれもこれもやりたくなっおしたいがちな気がするのですが、䞀足飛びせず無理しない皋床に䞀歩ず぀やっおいく「急がば廻れ」を心に留めおおきたいですね。 Webサヌビス のバりンスメヌル凊理の事始め reported by id:hiro_ji BASE株匏䌚瀟の炭田さん( @tac_tanden )による LT です。 speakerdeck.com Webサヌビス におけるバりンスメヌル凊理に぀いお、その圹割ず利甚方法をご玹介いただきたした。 バりンスメヌルずは 䜕らかの理由で正垞に配信されなかったメヌルのこず バりンスメヌルが極端に倚いバりンス率が高いず... 送信者の評䟡が䞋がり、スパム扱いになっおしたう可胜性 ナヌザに届けたいメヌルが届かない バりンス率を抑制するには バりンス回数が倚い傟向にあるアドレスリストサプレッションリストぞの配信を停止する 匊瀟のメヌル配信サヌビスでもバりンスメヌル凊理を扱っおいたすが、より確実にナヌザにメヌルを届けるうえで重芁な圹割を担っおいるず改めお感じたした。 本圓にあった怖い PHP コヌド7遞 report by id:ryo479 speakerdeck.com 実際に開発珟堎で芋かけた怖いコヌド(可読性、保守性が明らかに䜎いコヌドなど)を぀玹介されたした。 メ゜ッドの匕数が個以䞊あっお、倉数名はアルファベットを䞊べただけ if文のネストが個以䞊ある 倉数名がわかりにくい 䞀぀のアクションメ゜ッドに裏で぀の゚ンドポむントが存圚しおいる コメントアりト 地獄 マゞックナンバヌ 地獄 䞀぀のファむルに぀のクラスが定矩されおいる たしかに怖いですね...。 分かりにくい倉数名は割ず芋かける気もしたす。 自分では分かりやすく曞いおいる぀もりでも、他人からは分かりにくいずいうこずも埀々にしおあるので、コヌドレビュヌは重芁ですね。 Predefined Interfacesを䜿っお䟿利な独自クラスを䜜りたしょう report by id:ryo479 speakerdeck.com PHP の蚀語偎に定矩枈みのむンタヌフェヌスである「Predefined Interfaces」に぀いおの発衚です。 Predefined Interfacesずは PHP 偎に定矩枈みのむンタヌフェヌス。実装するず、 PHP ゚ンゞン自䜓の機胜が提䟛される。 www.php.net 発衚では、定矩枈みむンタヌフェヌスの「Stringable」「Traversable」「 Iterator 」を䜿甚したコヌドを元に説明されたした。 定矩枈みむンタヌフェヌスをどのように䜿甚すればいいのか、どのようなメリットがあるのかがよく分かる内容でした。 PHPerだっお PHP から「OKグヌグル」したい report by id:ryo479 speakerdeck.com Googleアシスタント に PHP プログラムからアクセスしお、「OKグヌグル」するずいう遊び心あふれる発衚です。 Googleアシスタント の裏偎はgRPCなので、 Python やGoで実装されるこずが倚いずのこず。 しかし PHP もgRPCの正匏サポヌト蚀語なので、やればできるはずなのでやっおみようずいう詊みです。 発衚では実際に Googleアシスタント に PHP でアクセスし、アレクサを操䜜しお郚屋の照明を消すずいうデモンストレヌションもあり、興味を惹かれる内容でした。 4/11 (月) 2日目 PHP ずゆかいな「型」たち report by id:tsudachantan 株匏䌚瀟ナニラボの石揚千掋さんあげさんによるセッションです。 改めお PHP の「型」の皮類や䜿い方、メリットデメリットや実践に぀いおわかりやすくお話いただきたした。 fortee.jp 型っお䜕 プログラミング蚀語 における型静的型付け、動的型付け 静的型付け プログラムの実行前に型が決たっおいお、人間がコヌディング時に型を指定する 関数の匕数や返华の型指定が合っおいないず コンパむル 時点で゚ラヌになる 型安党性がある 動的型付け プログラムの実行前に型が決たっおおらず、実行時に内郚で型定矩される 蚭定や曞き方によるが型安党性が少し匱い 匷い動的ず匱い動的がある PHP は むンタヌプリタ 蚀語 PHP のゆかいな型の玹介 動的型付けだけでなくコヌディング時に型宣蚀できる 型宣蚀の䜿い方(メリット、デメリット 匕数の型指定ができる 実は PHP は型指定しおも、キャスト可胜なものはキャストしおいる 型倉換がうたくいかない堎合に゚ラヌになる PHP のデフォルトはこれ 匷い型付け型が違うずそもそも゚ラヌにするには PHP の堎合蚭定が必芁→strict_types=1 型宣蚀のメリット、デメリット 〇型がわかるので倉数を䜿いやすい 〇 IDE など䜿えば候補を出しおくれお䟿利 〇倧芏暡開発は倧きなメリット 〇型安党でバグが出にくいかも ×蚭定次第で暗黙的に型倉換 ×arrayを䜿うず䜕でもよくなっおしたう ×きちんず蚭蚈しないず砎綻する ×小芏暡開発ではメリット薄い 型ずは䜕かずいうずこから PHP での型の挙動たでおさらいするこずができたした。 「型」をあたり意識せずプログラムしおもなんずかなる時代は過ぎ去り、ほんの少しの抜け穎が倧損倱になるレベルたでむンタヌネットは広たり、 PHP でもバヌゞョンアップに぀れおかっちり型を瞛ったstrictプログラミングがほが䞻流ずなり぀぀ありたす。 PHP の柔軟性を理解したコヌディングに圹立぀内容ですので、ぜひ聞いおみおください。 PSR-7ずPSR-15によるWebアプリケヌション実装パタヌン reported by id:takaram うさみけんたさん ( @tadsan ) による トヌク です。 tadsan.fanbox.cc PHP で HTTP を扱う際によく登堎する PSR-7 / PSR-15 ずは䜕で、どんなメリットがあるのか、どうやっお䜿うのかずいったこずを解説する内容です。 PSR-7 HTTP リク ゚ス ト、レスポンス、 URI など、HTTP メッセヌゞに関わるむンタヌフェヌスを定矩しおいる PSR-15 HTTP ハンドラ、 ミドルりェア など、Web サヌバの実装に関連するむンタヌフェヌスを定矩しおいる PHP は フレヌムワヌク を䜿わなくおも簡単に、 $_GET , $_COOKIE 等でリク ゚ス ト情報を取埗し、 header() , setcookie() , echo 等で HTTP レスポンスを䜜れるわけですが、簡単で自由床が高すぎるがゆえに、無秩序になりやすいずいう面もありたす。 そこで PSR-7, 15 やそれを䜿った フレヌムワヌク を利甚するこずで、以䞋のようなメリットを埗られるずいうこずです。 コヌドの芋通しがよくなる テストがしやすくなる 埓来の mod_ php , PHP -FPM のような、リク ゚ス トごずに状態がリセットされる環境 以倖 でも動かしやすい RoadRunner, Swoole など 節冒頭の URL には、スラむドの他にサンプルプログラムの リポゞトリ URL も掲茉されおいるので、䞀床芋おみるず PSR での HTTP の扱いぞの理解が深たりそうです ラク スからの登壇セッションのご玹介 ここからは匊瀟から登壇させお頂いたセッションの内容をご玹介したす。 今だから話せるPHP8バヌゞョンアップの裏偎党5サヌビスの事䟋玹介 report by id:radiocat speakerdeck.com PHP で開発されおいる匊瀟の党5サヌビスの事䟋をもずにPHP8バヌゞョンアップをどのように行ったのか、その裏偎をご玹介する内容でした。PHP8では様々な新機胜がリリヌスされおいたすが、特に圱響が倧きいのが「䞋䜍互換性がなくなる倉曎」です。「==」の比范結果や関数に指定する匕数の型の扱いなど、これたで緩やかに扱われおきたものが厳栌化され、挙動が倉わったり、゚ラヌになったりしたす。 そのような圱響の倧きなバヌゞョンアップに察しお党サヌビスから代衚者が遞抜されお密に情報共有しながら察応を進めたした。特に、これたでの緩やかな仕様を受け入れおきた歎史の長いサヌビスでは圱響が倧きく、ツヌルなどの仕組みでの察応も難しく、調査範囲、テスト範囲ずも倧きくなったようです。最終的にこれたでのバヌゞョンアップ察応よりも最倧で玄10倍の 工数 がかかったずのこずでした。それでも防ぎきれなかった䞍具合も今埌PHP8バヌゞョンアップに取り組む際に圹立぀情報ずしお共有されおいたす。 圱響は倧きいものの、近幎 PHP が取り入れおいる新機胜を䜿えるメリットもあるため、 情報共有を倧切にしながらポゞティブに取り組むこずが倧切 ずのこずでした。 発衚者 久山勝生  @MasaKu_e  ◆ 登壇を終えお PHPerKaigi は以前より参加させおいただいおいるむベントで、昚幎は残念ながら非採択であったこずもあり、今幎こそは是非ずもスピヌカヌずしお参加したいずいう気持ちで登壇にチャレンゞしたした。   今回発衚させおいただいた、PHP8バヌゞョンアップは芏暡の倧きな察応であったため、各商材のノりハりや苊劎などが詰たった内容になるずいう印象がありたしたが、それゆえに情報の取りたずめやストヌリヌの組み立おには苊劎したした。 発衚圓日は、匊瀟の取り組みに぀いお共感しおもらえる声や決められたタむミングでバヌゞョンアップが蚈画されおいる点に賛同の声が頂けお嬉しかったです。 「次の PHP バヌゞョンアップの察応に぀いおも共有を埅っおいる」ずのコメントも芋受けられたしたので、機䌚があれば再チャレンゞできればず思いたした 新卒PHPer奮闘蚘 配属されたのは3歳違いのプロダクト report by id:ryo479 speakerdeck.com 2021卒で新卒入瀟した匊瀟瀟員が、2001幎リリヌスのプロダクト開発に携わるにあたっお苊劎した経隓ず、その乗り越え方を発衚したした。 苊劎した点ずしおは以䞋を䞊げおいたす。 PHP の曞き方 ノン フレヌムワヌク レガシヌコヌド 倖郚システム連携機胜 ノン フレヌムワヌク で独自の実装がされおいたり、レガシヌコヌドだったりするず苊劎したすよね。 新卒であればなおさらです。 改善を進めようにもある皋床倧きなシステムだず、簡単にはいかないのが難しいずころです。 研修内容やドキュメントの敎理、そしお呚りの方のサポヌトが重芁だず再確認できたした。 発衚者 廣郚知生  @tomoki2135 ◆ 登壇を終えお PHPerKaigiに初参加、初LT登壇をしたした 新卒入瀟埌初めお PHP に觊れたため、勉匷兌PHPerコミュニティを知るずいうこずで参加を申し蟌みたした。 CfP䜜成からスラむド資料の䜜成たで、登壇なれした先茩方にレビュヌしおいただいたおかげで無事採択され、LTも盛況に終わりたした 個人的には、 小桜゚ツ子 さんに自分の名前を読んでいただけたのが嬉しかったです。 次回も機䌚があれば挑戊したいなず思いたす どんずこい、PhpStorm 〜Why don't you do IDE 's best!〜 / Don't KOI PhpStorm!! Why don't you do IDE 's best!! report by id:radiocat speakerdeck.com PhpStormは PHP の代衚的な IDE の1぀でJetBrains瀟が開発しおいたす。皀に「PHPStorm」ず衚蚘されるこずがありたすが、JetBrains瀟のブラン ドガ むドラむンには「倧文字ず小文字を区別しおください」ず曞かれおおり、たず「PhpStorm」ず芚えおくださいず呌びかけられたした。 そしお、脱PhpStorm初心者を目指すための3段階のテクニックが玹介されたした。 Level1補完機胜を䜿いこなす Level2怜玢を䜿いこなす Level3 リファクタリング 機胜を掻甚する しかし、䜕よりも先に 「PHPStrom」じゃなくお「PhpStorm」 ずいう事を芚えおおきたしょう。 発衚者 加玍悠史  @YKanoh65 ◆ 登壇を終えお い぀も参加させおいただいおいるむベントなので、今回もぜひ登壇者ずしお参加したいず思い、応募したした。 今回、CfPは3案出したのですが、実は䞀番 トヌク 内容に自信がないものが採甚されたので、自分自身が普段䜿っおいる PhpStorm の小技だけでなく、チヌムの PhpStorm に匷いメンバヌぞの ヒアリ ング結果も䜵せお蚘茉するこずで、普段から䜿いこなしおいる人でもなにか新しい発芋がある発衚にできるようにしたした。   圓日は、久々のオフラむンむベントでの登壇だったため緊匵したした。 無事りケおよかった... 普段 PHP TechCafe などでお話させおいただいおいる方々も倚く、むベント期間䞭は、始終楜しく過ごすこずができたずずもに、いろいろなセッション、LT、アンカンファレンスを聞いお刺激を受けるこずができたした。   次回もチャレンゞしたいず思いたす たずめ コヌドの内郚品質向䞊・既存プロゞェクトぞの新ツヌルの導入等、今あるプロダクトをいかに改善しおいくかずいう芳点の登壇が倚かったように思いたす。 たた、匊瀟の PHP バヌゞョンアップに関しお、倚くの方に蚀及しおいただきたした。 PHP ずいう技術が成熟しおいるこずの珟れなのかもしれたせんね。 PHPerのためのコミュニティ PHPTechCafe ラク スでは PHP に特化したむベントを毎月開催しおおりたす。その名も「 PHPTechCafe 」 次回は4/22(金)に『「PHPer Kaigi 2022 を振り返る」』 をテヌマに開催したす ただただ参加者を募集しおいたすので、ぜひお気軜にご参加ください。 👉 PHPerのための「PHPer Kaigi 2022 を振り返る」PHPTechCafe」PHPTechCafe 参加申蟌は以䞋フォヌムよりお願いしたす forms.gle 最埌たでお読みいただきありがずうございたした ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
技術広報の yayawowo です。 プロゞェクトを進める䞊で重芁な プロゞェクトマネゞメント 。 プロゞェクトマネヌゞャヌ(PM)に任呜された方はどのように孊習、スキル習埗をされおいたすでしょうか 実務での経隓を通じおずいう方が倚いず思いたすが、匊瀟にお開催しおいるむベントもおすすめです 今回は、プロゞェクトマネゞメントのTipsを共有しあう「プロゞェクトマネゞメント Tips LT䌚」の過去開催分の発衚資料ず、次回むベントに぀いおたずめお玹介させおいただきたす 「プロゞェクトマネゞメント Tips LT䌚 vol.4」が5/11(æ°Ž)開催 ご興味ある方は、 参加申蟌フォヌム より申蟌をお願いしたす。 過去開催むベント プロゞェクトマネゞメント Tips LT䌚 vol.1 プロゞェクトマネゞメント Tips LT䌚 vol.2 プロゞェクトマネゞメント Tips LT䌚 vol.3 5/11(æ°Ž)開催プロゞェクトマネゞメント Tips LT䌚 vol.4 発衚者・タむトル䞀芧 むベントに参加する 終わりに ◆ 関連ブログも合わせおご参考ください。 ・ 芁件定矩 ずは【たずめ】 ・ 「はじめよう 芁件定矩 ビギナヌからベテランたで」から孊ぶ芁件定矩の始め方 ・ PdM プロダクトマネヌゞャヌずは 【たずめ】 ・ 仕様曞 ずは 【たずめ】 過去開催むベント プロゞェクトマネゞメント Tips LT䌚 vol.1 rakus.connpass.com 『痛みから孊ぶ Working Agreement の ぀くりかた 〜チヌムビルディングの倱敗から埗た、芪切さずいう教蚓〜』 発衚者 面川泰明 さん speakerdeck.com ☞ チヌムの合意を埗る良い方法は、芪切な情報共有ず、メンバヌの自䞻性の尊重である 『オフショア開発のマネゞメント い぀もここから 』 発衚者 iketomo1207 さん speakerdeck.com ☞ 倖囜人がマネヌゞャヌずしお信頌されるためにやったこず ☞ 自立型組織を目指しおやったこず 『党職皮混合で瀟内LTを開催した話』 発衚者 ryu さん speakerdeck.com ☞ LTずいう文化を、゚ンゞニア・デザむナヌで独り占めせず広げおみたら良かった話 『Retty流倧芏暡プロゞェクトマネゞメントのお話』 発衚者 tnkdaito さん Retty流倧芏暡プロゞェクトマネゞメントのお話 from Daito Tanaka www.slideshare.net ☞ 珟状を盎ちに把握できるこず ☞ 認識が揃った状態を維持するこず 『䞀番安い子だヌれだ 黒字化のための無慈悲なタスク配分』 発衚者 すずき さん speakerdeck.com ☞ チヌムのキャパシティを把握 ☞ 絊䞎制床ずタスク割り圓おの溝 ☞ タスク割り圓おひず぀ずっおも戊略的である 『数字からプロゞェクトの健康を管理する』 発衚者 komik さん speakerdeck.com ☞ プロゞェクトにおいおも数字を芋おいくこずで健康管理を 『1on1を120%有効掻甚する方法』 発衚者 masahiro_f さん note.com ☞ マネゞメント課題の解決手段ずしお1on1を掻甚しおいる話 プロゞェクトマネゞメント Tips LT䌚 vol.2 rakus.connpass.com 『性栌蚺断ず䟡倀芳分析ではじめる1on1』 発衚者 面川泰明 さん speakerdeck.com ☞ 人の成長を支揎するには、その人の䟡倀芳を指針にするず良い ☞ 䟡倀芳を指針にしおすべらない1on1をしよう 『 プレむングマネヌゞャヌ の葛藀』 発衚者 Pep299 さん speakerdeck.com ☞ プレむングマネヌゞャヌ の葛藀における察凊法、埗られたもの、次のステップ 『 アゞャむル なチヌムぞの道 はじめの䞀歩』 発衚者 sakamoto-k さん speakerdeck.com ☞ ナヌザヌストヌリヌずスプリングゎヌルを導入するこずで、小さな䟡倀単䜍で反埩的に怜蚌しやすくなり、自然にスりォヌミングできるようになった ☞ プロゞェクトの䞍確実性を前倒しで枛少させるこずができた 『 SaaS 開発ず受蚗開発におけるプロゞェクトマネゞメントの違い』 発衚者 komik さん speakerdeck.com ☞ 受蚗開発ず SaaS 開発における品質/コスト/タむムの比范 『「終わらせる」から考えるマネゞメント』 発衚者 癜柳隆叞 さん speakerdeck.com ☞ 「成功条件」ぞ向かい぀぀「倱敗条件」を回避する ☞ 最初だけでなく、 マむルストヌン ごずに行う 『心配性の僕が チヌムメンバヌに任せる良さに぀いお』 発衚者 ShoheiKun さん speakerdeck.com ☞ 心配性の人は勇気を出し手むケむケの人に任せおみよう ☞ 心配性を利甚しお改善ポむントを提案し、貢献 ☞ チヌムでむケむケず心配性のバランスをずろう 『メンバヌず䞀緒に進めるマネゞメントの孊び方ず䌝え方』 発衚者 Mazawa_Hajime さん speakerdeck.com ☞ 孊には時間をきちんず確保する、蚈画を立おる ☞ 楜しめるこず、自分ごずにしおもらうこず ☞ 埗たむンプットは自分たちの過去事䟋に圓おはめお匷い手觊り感を䜜る ☞ 読むだけでなく、みんなでやっおみお玹介し合うず良い 『プロゞェクトメンバヌのモチベヌション』 発衚者 moriyama_jun さん speakerdeck.com ☞ 幞犏床を䜿っおメンバヌのモチベヌションをマネゞメントする ◆ 関連蚘事はこちら tech-blog.rakus.co.jp プロゞェクトマネゞメント Tips LT䌚 vol.3 rakus.connpass.com 『チヌムの成功を加速するために、1on1で個人を成長させおみた』 発衚者 面川泰明 さん speakerdeck.com ☞ 人の成長ずは、自己理解に䌎う芖野の拡倧 ☞ 他者に貢献したい気持ちがモチベヌションを䞊げる 『利己䞻矩ず裏切りが支配する䞖界で称賛文化が生たれるチヌムずは』 発衚者 satoshi okami さん speakerdeck.com ☞ 耒めるずチヌムは協力する ☞ 協力は成果を高める 『チヌムが倧きくなったので、 開発プロセス を運甚しおみた』 発衚者 ミツカワ さん speakerdeck.com ☞ 暙準化するこずにより、組織党䜓の底䞊げに繋がる ☞ プロセスをみんなで育おるず浞透しやすい 『蟛くない受蚗開発』 発衚者 GHKEN さん speakerdeck.com ☞ 「䜕を䜜るか」だけでなく、「なぜ䜜るか」「どう成長させるか」を螏たえた提案をしお、蟛くない受蚗開発を実珟させる 『Fantia開発チヌムのマネゞメント改善』 発衚者 かのたん さん Fantia開発チヌムのマネゞメント改善 from かの たん www.slideshare.net ☞ 「䜕を改善するか」を倖から匕っ匵っおくるのではなく「なぜ改善するか」や「どうすれば改善できるか」を考えるこず 5/11(æ°Ž)開催プロゞェクトマネゞメント Tips LT䌚 vol.4 rakus.connpass.com 「プロゞェクトマネゞメント Tips LT䌚」の第4回目が5/11(æ°Ž)19時から開催したす ラク スからも2名登壇する他、珟時点で5名の登壇が決たっおおりたす。 タむトルは未定のものが倚いですが、圓日は充実な時間を過ごせるこず間違いなしです 是非この機䌚にご参加ください。 LT枠も空きがございたすので、こちらも合わせお怜蚎をお願いしたす 発衚者・タむトル䞀芧 登壇者 タむトル misato_kii_3 さん 考え䞭 dach さん 考え䞭 はち さん 考え䞭 komkom さん 考え䞭 miure さん システム開発 䜓隓 ボヌドゲヌム 「ペゞテの自転車」 ※2022/4/13時点での情報です。 発衚内容が倉曎する可胜性がありたすので、ご了承ください。 むベントに参加する ラク スが䞻催する「プロゞェクトマネゞメント Tips LT䌚 vol.4」にご興味を持ち、是非ずも参加したいずいう方は以䞋フォヌムより申し蟌みをお願いしたす。 forms.gle 開催日が近づきたしたら、圓日の芖聎URLなどをお送りさせおいただきたす 終わりに 「プロゞェクトマネゞメント Tips LT䌚」のたずめはいかがでしたでしょうか ラク スでは、定期的(週1回を目途)に技術むベントを開催しおおり、゚ンゞニア/デザむナヌの皆様の孊習の堎を提䟛させおいただいおおりたす。 最埌にはなりたすが、むベントを開催する偎ずしおも、参加する皆さんの䞀助ずなる情報がありたしたら幞いです。 お読みいただきありがずうございたした ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
はじめに 皆さんはじめたしお 今回 Rakus Developers Blog 初投皿ずなる株匏䌚瀟 ラク スの倧原(kzak_24)ず申したす。 むンフラ開発郚 SRE課に所属しおおりたす。 どうぞよろしくお願いいたしたす。 先日、 アサむ ンされおいるプロゞェクトにお、CIツヌルに GitHub Actionsを採甚する運びずなり、 AWS のサヌビスず連携しおの技術怜蚌を終えたした。結論、想像しおいたよりも簡単にCIパむプラむンを構築するこずができ、非垞に䟿利だず感じたした。そこで今回は、怜蚌内容や実装ポむントなどをご玹介しおいきたいず思いたす。 情報量が倚く、すべおをお䌝えするこずはできたせんが、 GitHub Actionsず AWS を䜿っお、CIを始めたいずいう方のご参考ずなれば幞いです。 目次 はじめに 目次 GitHub Actionsずは 怜蚌環境の構成 事前準備 ワヌクフロヌの定矩ファむルの䜜成 個人甚アクセストヌクンの取埗 リポゞトリのSecrets䜜成 workflowファむルの䜜成 Eventの定矩 Jobの定矩 AWSサヌビスずの連携 buildspec ワヌクフロヌの実行 テスト甚ワヌクフロヌを実行 ビルド甚ワヌクフロヌを実行 終わりに 参考文献 GitHub Actions ずは GitHub のドキュメントには次のように蚘茉されおいたす。 GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production. Google先生 による翻蚳 GitHub Actionsは、 継続的むンテグレヌション および継続的デリバリヌCI / CDプラットフォヌムであり、ビルド、テスト、およびデプロむのパむプラむンを自動化できたす。 リポゞトリ ぞのすべおのプルリク ゚ス トをビルドしおテストするワヌクフロヌを䜜成したり、マヌゞされたプルリク ゚ス トを本番環境にデプロむしたりできたす。 簡単に蚀うず、 GitHub リポゞトリ で起きるむベントをトリガヌにしたCI/CDパむプラむンを構築できるプラットフォヌムずいうこずになりたす。 GitHub Actionsには以䞋のような構成芁玠がありたす。 Workflow GitHub Actionsの䞀連の凊理をたずめた単䜍。1぀のファむルで1぀のワヌクフロヌを定矩できる Event ワヌクフロヌを実行するトリガヌ Job ランナヌ䞊で実行される凊理の単䜍。ゞョブが分かれるず別の環境で凊理が実行される Step ゞョブが実行する凊理の集合。 Actions ワヌクフロヌの最小構成芁玠。コマンドの実行やアクションずいう䞀連の凊眮がたずたったラむブラリのようなものを実行するこずができる Runner 凊理を実行する環境 怜蚌環境の構成 今回の怜蚌では以䞋のような構成でCIパむプラむンを構築したした。 開発者のPR䜜成から、最終的に Amazon ECRにコンテナむメヌゞをプッシュするずころたで、このパむプラむンでは実行したす。 CIは以䞋のような流れで実行されたす。 開発者がアプリケヌション リポゞトリ でPRを䜜成 PRマヌゞずいうEventを怜知し、CIが起動 Test Workflowが実行される Build Workflowが実行され、 AWS CodeBuildが実行される CodeBuildで䜜成されたコンテナむメヌゞを Amazon ECRにプッシュ 事前準備 それでは、CIを動䜜させる為の準備をしおいきたしょう。 今回必芁なものは以䞋の通りです。 アプリケヌション甚の リポゞトリ ワヌクフロヌの定矩ファむル GitHub の個人甚アクセス トヌク ン リポゞトリ のSecrets AWS サヌビスのリ゜ヌス AWS クレデンシャル ※ 今回は以䞋の項目の䜜成、取埗に぀いおは完了枈みずいう前提で、説明を省略したす。 アプリケヌション甚の リポゞトリ AWS サヌビスのリ゜ヌス AWS クレデンシャル ワヌクフロヌの定矩ファむルの䜜成 ワヌクフロヌを実行するアプリケヌションのルヌト ディレクト リに .github/workflows/ ずいう ディレクト リを䜜成したす。 test_workflow.yaml 、 build_workflow.yaml を .github/workflows/ 配䞋に䜜成したす。 GitHub Actionsのワヌクフロヌは YAML 圢匏で定矩し、 .github/workflows/ に配眮するこずで、ワヌクフロヌずしお管理されたす。 個人甚アクセス トヌク ンの取埗 GitHub Actionsの䞭で リポゞトリ に特定の操䜜を行う際、アクセス トヌク ンが必芁になる為、個人甚アクセス トヌク ンを取埗したす。(今回は埌述するrepository_dispatchずいう凊理で䜿甚したす)。 たず GitHub のペヌゞにアクセスし、ペヌゞ右䞊隅のプロフィヌルをクリックし、 「Settings」 をクリックしたす。 スラむダヌ最䞋の 「Developer settings」 をクリックしたす。 スラむダヌから、 「Personal access tokens」 をクリックしたす。 「Generate new token」 をクリックしたす。 パスワヌド入力を求められるので、入力したす。 䜜成するアクセス トヌク ンの説明や有効期限、暩限スコヌプを蚭定したす。 今回は リポゞトリ に関する操䜜暩限をスコヌプに蚭定したす。 ペヌゞ䞋郚の 「Generate token」 をクリックしたす。 䜜成したアクセス トヌク ンの倀が衚瀺されたす。 このタむミングでしか衚瀺されないので、泚意しおください。 再床アクセス トヌク ンのペヌゞにアクセスするず、 トヌク ンが䜜成されおいるこずが確認できたす。 有効期限の延長や暩限スコヌプの倉曎もここから行えたす。 リポゞトリ のSecrets䜜成 GitHub Actionsの䞭で䜿甚する AWS のクレデンシャルやアクセス トヌク ンなどの情報は、 Secrets ずいう機胜で暗号化したシヌクレットずしお䜿甚したす。 取埗した AWS クレデンシャルず個人甚アクセス トヌク ンをSecretsに登録したす。 リポゞトリ のメむンペヌゞにアクセスしたす。 リポゞトリ 名の䞋の 「Settings」 をクリックしたす。 スラむダヌから 「Secrets」 をクリックし、 「Actions」 をクリックしたす。 シヌクレットの管理ペヌゞが衚瀺されるので、 「New repository secret」 をクリックしたす。 Name にシヌクレットの名前(任意)を蚭定し、 Value に取埗したアクセスキヌIDの倀を入力したす。 「Add Secrets」 をクリックし、 Repository secrets に䜜成したシヌクレットがあるこずを確認したす。 同様にシヌクレットアクセスキヌ、個人甚アクセス トヌク ンも登録したす。 workflowファむル 今回の怜蚌で䜜成したワヌクフロヌファむルは以䞋のようになっおいたす。 test_workflow.yaml name : Test Workflow on : pull_request : branches : - main types : - closed jobs : Lint-Test : runs-on : ubuntu-latest steps : - name : Checkout Repository uses : actions/checkout@v2 - name : Run Lint run : | docker-compose up -d --remove-orphans docker-compose exec -T next npm run lint echo "Lint succees!." - name : Run Test run : | docker-compose exec -T next npm run test echo "Test succees!." - name : Dispatch Build Workflow uses : peter-evans/repository-dispatch@v1 with : token : ${{secrets.REPO_ACCESS_TOKEN}} repository : 怜蚌甚のリポゞトリ event-type : ci-sample build_workflow.yaml name : Build Workflow on : repository_dispatch : types : - ci-sample env : REGION : ap-northeast-1 PROJECT_NAME : example_CI_build_project IMAGE_TAG : ci-sample jobs : Build : runs-on : ubuntu-latest steps : - name : Configure AWS Credentials uses : aws-actions/configure-aws-credentials@v1 with : aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY }} aws-secret-access-key : ${{ secrets.AWS_SECRET_KEY }} aws-region : ${{ env.REGION }} - name : Run CodeBuild uses : aws-actions/aws-codebuild-run-build@v1 with : project-name : ${{ env.PROJECT_NAME }} env-vars-for-codebuild : IMAGE_TAG env : IMAGE_TAG : ${{ env.IMAGE_TAG }} それでは、䞭身に぀いお説明しおいきたす。 Eventの定矩 たずは、ワヌクフロヌを実行するトリガヌずなるむベントの定矩です。 test_workflow.yaml (䞀郚抜粋) on : pull_request : branches : - main types : - closed GitHub Actionsでは、 on セクションにむベントを定矩したす。 䞊蚘のように定矩するこずで、mainブランチぞPRをマヌゞしたこずをトリガヌにワヌクフロヌを実行できたす。 pull_request の他にも、 push や手動実行を行う workflow_dispatch ずいうむベントも定矩できたす。 たた、 repository_dispatch ずいうむベントを定矩するこずで、あるワヌクフロヌから別のワヌクフロヌを実行するむベントを送信できたす。 test_workflow.yaml (䞀郚抜粋) - name : Dispatch Build Workflow uses : peter-evans/repository-dispatch@v1 with : token : ${{secrets.REPO_ACCESS_TOKEN}} repository : 怜蚌甚のリポゞトリ event-type : ci-sample build_workflow.yaml (䞀郚抜粋) on : repository_dispatch : types : - ci-sample テスト甚ワヌクフロヌの䞭で ci-sample ずいうパラメヌタヌが蚭定された repository_dispatch むベントをビルド甚ワヌクフロヌに送信しおいたす。 指定されたむベントが送信されたこずをトリガヌにビルド甚のワヌクフロヌが実行されるようになっおいたす。 たた、 uses を䜿甚するこずで、アクションずいう䞀連の凊眮をたずめたラむブラリのような機胜を䜿甚できたす。 テスト甚ワヌクフロヌでは peter-evans/repository-dispatch ずいうアクションを䜿甚しお、repository_dispatchむベントを送信しおいたす。 Jobの定矩 続いお、ゞョブの定矩に぀いお芋おいきたしょう。 test_workflow.yaml (䞀郚抜粋) jobs : Lint-Test : runs-on : ubuntu-latest steps : - name : Checkout Repository uses : actions/checkout@v2 - name : Run Lint run : | docker-compose up -d --remove-orphans docker-compose exec -T next npm run lint echo "Lint succees!." ゞョブは jobs セクションに定矩したす。 Lint-Test でゞョブの名前を定矩しおおり。ゞョブは耇数䜜成するこずが可胜です。 runs-on でそのゞョブが実行されるランナヌの仮想環境を指定できたす。 steps セクションでゞョブが実行するステップを定矩したす。 steps は name でそれぞれ名前を指定するこずができ、順次実行されたす。 uses 、 run で実行するアクションやコマンドを定矩しおいたす。 AWS サヌビスずの連携 続いお、 AWS サヌビスず連携する凊理に぀いお芋おいきたしょう。 build_workflow.yaml (䞀郚抜粋) - name : Configure AWS Credentials uses : aws-actions/configure-aws-credentials@v1 with : aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY }} aws-secret-access-key : ${{ secrets.AWS_SECRET_KEY }} aws-region : ${{ env.REGION }} ここでは、 aws-actions/configure-aws-credentials ずいうアクションを䜿甚しお、 GitHub Actionsのランナヌから AWS サヌビスを操䜜できるように、 AWS クレデンシャルを蚭定しおいたす。 secrets.AWS_ACCESS_KEY で リポゞトリ に蚭定した Secrets から倀を取埗しおいたす。 build_workflow.yaml (䞀郚抜粋) - name : Run CodeBuild uses : aws-actions/aws-codebuild-run-build@v1 with : project-name : ${{ env.PROJECT_NAME }} env-vars-for-codebuild : IMAGE_TAG env : IMAGE_TAG : ${{ env.IMAGE_TAG }} ここでは、 aws-actions/aws-codebuild-run-build ずいうアクションを䜿甚しお、 GitHub Actionsから AWS CodeBuildを実行しおいたす。 たた、 env-vars-for-codebuild に 環境倉数 を枡すず、CodeBuild偎の 環境倉数 ずしお蚭定しおくれるので、ワヌクフロヌで定矩した倀がコンテナむメヌゞにタグ付けされたす(今回の堎合、 ci-sample がタグ付けされたす)。 buildspec ワヌクフロヌを実行する前に、 buildspec に぀いお、少し説明したす。 buildspecずはCodeBuildで実行する䞊でのビルド仕様のこずです。 buildspec.yaml を䜜成し、プロゞェクトのルヌト ディレクト リに配眮するこずで、CodeBuildは自動で buildspec.yaml を怜知し、定矩された内容通りに凊理を実行しおくれたす。 今回の怜蚌で䜜成したbuildspecファむルは以䞋の通りになりたす。 buildspec.yaml version : 0.2 env : parameter-store : DOCKER_USER : dockerhub-user DOCKER_TOKEN : dockerhub-token phases : install : runtime-versions : docker : 19 pre_build : commands : - echo Logging in to Amazon ECR... - aws ecr get-login-password --region ${AWS_DEFAULT_REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com - echo $DOCKER_TOKEN | docker login -u $DOCKER_USER --password-stdin build : commands : - echo Build start - echo Building the Docker image... - docker-compose build - docker tag リポゞトリ名_next:latest ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPO_NAME}:${IMAGE_TAG} post_build : commands : - echo Build completed - echo Pushing the Docker image... - docker push ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPO_NAME}:${IMAGE_TAG} 少し省略したすが、各セクションがそれぞれ䜕をしおいるか、簡単に説明したす。 pre_build : ECRにログむン build : docker-compose でコンテナむメヌゞをビルドし、ワヌクフロヌから枡された倀でタグ付け post_build : build セクションで䜜成したコンテナむメヌゞをECRにプッシュ ワヌクフロヌの実行 それではワヌクフロヌを実行し、ECRプッシュたで実行できおいるか確認しおいきたしょう 今回は リポゞトリ ペヌゞ䞊で確認しおいきたす。 テスト甚ワヌクフロヌを実行 たすはテスト甚ワヌクフロヌに぀いお確認しおいきたしょう。 mainブランチに察しお、PRを䜜成したす。 PRをマヌゞしたす。 リポゞトリ のトップペヌゞから、 「Actions」 をクリックしたす。 Workflowの䞀芧から、 「Test workflow」 をクリックしたす。 mainブランチぞのPRマヌゞをトリガヌにワヌクフロヌが実行されおいるこずが確認できたす。 赀枠郚分(実行䞭のワヌクフロヌ)をクリックしたす。 実行䞭のゞョブ䞀芧が衚瀺されるので、赀枠郚分(実行䞭のゞョブ)をクリックしたす。 経過時間やステヌタスなどを確認できたす。 実行䞭のStep䞀芧が衚瀺されたす。 Stepごずにコマンドやアクションのログを確認できたす。 Lintずテストが正垞に完了しおいるこずが確認できたす。 Stepがすべお正垞に終了するず、緑色のチェックが入りたす。 Dispatch Build Workflow ずいうStepで、ビルド甚のワヌクフロヌが実行されるトリガヌずなる repository_dispatch むベントを送信しおいる為、 Test workflow の実行が終了するず、 Build workflow が自動的に実行されたす。 ビルド甚ワヌクフロヌを実行 続いおビルド甚ワヌクフロヌに぀いお確認しおいきたしょう。 前述した通り、ビルド甚のワヌクフロヌはテスト甚のワヌクフロヌの䞭で、 repository_dispatch むベントが送信されるこずをトリガヌに実行されたす。 凊理の確認の流れは先ほどのテスト甚ワヌクフロヌず同様です。 リポゞトリ のトップペヌゞから、 「Actions」 をクリックしたす。 Workflowの䞀芧から、 「Build workflow」 をクリックしたす。 repository_dispatch むベントをトリガヌにビルド甚ワヌクフロヌが起動しおいるこずが確認できたす(Repository dispatch triggered ず蚘茉されおいたすね) 赀枠郚分(実行䞭のワヌクフロヌ)をクリックしたす。 実行䞭のゞョブ䞀芧が衚瀺されるので、赀枠郚分(実行䞭のゞョブ)をクリックしたす。 実行䞭のStep䞀芧が衚瀺されたす。 Run CodeBuild のログからCodeBuildが実行されおいるこずが確認できたす( GitHub ActionsからCodeBuildのログを確認できたす)。 ECRぞのプッシュが完了しおいるこずが確認できたす ECRにプッシュされたコンテナむメヌゞを確認したす。 想定通り、タグに ci-sample が蚭定されたむメヌゞがプッシュされおいるこずを確認できたした 終わりに 最埌たでご芧いただきありがずうございたす。 今回は GitHub Actionsず AWS サヌビスを連携したCIパむプラむンの構築に぀いお、ご玹介したした。 CIパむプラむンの敎備は開発サむクルの高速化に繋がるので、今埌もしっかりず孊んでいきたいず思いたす。 GitHub Actionsでは他にもPR䜜成やコミットの自動化など、䟿利な機胜がたくさんあるので、今埌も蚘事の発信を継続しおいきたいです 参考文献 GitHub Docs GitHub Actionsの䜿い方メモ AWS 公匏ドキュメント CodeBuildのビルド仕様に関するリファレンス    ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
こんにちは。 株匏䌚瀟 ラク スで先行技術怜蚌をしたり、ビゞネス郚門向けに技術情報を提䟛する取り組みを行っおいる「技術掚進課」ずいう郚眲に所属しおいる鈎朚 @moomooya です。 ラク スの開発郚ではこれたで瀟内で利甚しおいなかった技術芁玠を自瀟の開発に適合するか怜蚌し、ビゞネス芁求に察しお迅速に応えられるようにそなえる 「技術掚進プロゞェクト」 ずいうプロゞェクトがありたす。 このプロゞェクトで「認蚌」にた぀わる怜蚌を行ったので、その成果を共有しようかず思いたす。 なお半幎前に曞いた以䞋の蚘事の続きになりたすので䜵せお埡芧ください。 tech-blog.rakus.co.jp 認蚌関連の暙準に぀いお OpenID Connect (OIDC) FIDO 2.0 認蚌サヌバヌOPミドルりェア 珟状ではKeycloakが最有力候補 OpenAM, Keycloakの比范 Keycloakの必芁スペック サヌビスRP偎ラむブラリ Java PHP Node.js 泚意点 認蚌アヌキテクチャ 珟状の課題 怜蚎しおいるアヌキテクチャ構成 顧客偎認蚌サヌバヌを甚いる堎合 たずめ 認蚌関連の暙準に぀いお 認可 プロトコル のOAuth2.0や、SSOで甚いられる SAML などがありたすが、 埌方互換 性の制玄がなくこれから新しく構築するシステムであれば OpenID Connect ず FIDO 2.0 の組み合わせで察応するこずを最優先で怜蚎したしょう。 OpenID Connect (OIDC) 耇数の認蚌関連の暙準を組み合わせおいた状況から OpenID Connectに暙準が集玄されおいたす。 NRI瀟補䜜の資料より抜粋 FIDO 2.0 いわゆるパスワヌドレス認蚌の暙準です。 初めおサヌビスを利甚する際にクラむアントず鍵情報を登録するこずで、その埌のサヌビス利甚時には 認蚌結果だけを通信 し、クレデンシャル情報ID/パスワヌドずか、指王パタヌンずかは通信せずに枈む仕組み。 通信経路にもサヌバヌにもクレデンシャル情報を保持する必芁がないため、䞇が䞀通信内容の盗聎や、サヌバヌデヌタの流出があった堎合にもなりすたされる心配がない。 䞊図は非゚ンゞニア向けに説明した資料から抜粋しおいるため「暗号鍵埩号鍵」ずなっおいたすが、 SSH の鍵認蚌などず同様のいわゆる 公開鍵暗号方匏 です。 認蚌サヌバヌOP ミドルりェア 珟状ではKeycloakが最有力候補 OpenID Connect, FIDO2.0に察応した認蚌サヌバヌ ミドルりェア ずしおは OpenAM 2008幎、 OpenSSO ずしお米Sun瀟からリリヌス 2010幎、OpenAMずしお米Forgerock瀟によりfork 2018幎、日OpenAMコン゜ヌシアムによりfork Java による実装 Keycloak 2014幎、 JBoss コミュニティよりリリヌス Java による実装 ZITADEL 2020幎3月リリヌス Go蚀語による実装 Casdoor 2021幎8月リリヌス Go蚀語による実装 authelia 2020幎1月リリヌス3.7.0たでしか蟿れなかった Go蚀語による実装 ずいったものが珟圚存圚しおいたす。 ただし、このうちZITADEL, Casdoor, autheliaは怜蚌開始圓初は新しすぎた機胜も䞍足しおいたため怜蚌察象ずしおいたせん。 かなり掻発に開発は進んでいるようなので、数幎埌に再評䟡するずしたら有力候補になっおいる可胜性がありたす 1 。 特にZITADELはKeycloakの察抗銬ずなるべく意識しおいるようで、OIDC, FIDO2.0ぞの察応はもちろん、マルチテナンシヌ察応、Identity Brokering機胜埌述など Saas での利甚を意識しおいるようです vs Keycloak 。 OpenAM, Keycloakの比范 怜蚎察象ずなったのはOpenAM, Keycloakです。 機胜的には䞡者ずも充実しおいたす。 OpenAMに぀いおは普及床合いや枯れ具合は良かったものの、開発はセキュリティアップデヌト䞭心ずいう状況であり、開発母䜓の芏暡に䞍安があったために採甚を芋送りたした。最終リリヌスも2019幎で止たっおいたす。 Keycloakは珟状でも掻発に機胜远加リリヌスが行われおおり、 K8s などコンテナ環境での利甚も想定された蚭蚈になっおいるようなので将来性も問題ないず刀断しおいたす。 Keycloakの必芁スペック 実隓環境ではそれほど倚くのスペックは芁求されたせんでしたが、環境構築圓初 VM のメモリをケチっお128MBにしたら起動シヌケンスで゚ラヌを吐いお起動できたせんでした。その埌ちょっず䜙裕を芋お512MBで動䜜させおいたしたが、512MBあれば今回の怜蚌内容に぀いおは党く問題なく動䜜しおいたした。 Java のアプリケヌションはメモリを消費するむメヌゞがありたすが、メモリに関しおは倚めに確保するのが良いかもしれたせん。 サヌビスRP偎ラむブラリ OpenID Connect甚のラむブラリはCertifiedなラむブラリやUncertifiedなラむブラリが公匏で玹介されおいたす。 openid.net openid.net Java Spring Securityを䜿う堎合 spring-boot-starter-oauth2-client Spring Securityを䜿わない堎合非Spring環境 Nimbus OAuth 2.0 & 2.1 SDK with OpenID Connect extensions Java 甚のラむブラリはOAuth2.0甚のラむブラリが拡匵されお䜿われおいるずいう経緯から名前がわかりにくいのが難点です。 Spring(Spring Boot含む)を利甚しおいる堎合は公匏ペヌゞで玹介されおいるspring-boot-starter-oauth2-clientを利甚したしょう。玹介ペヌゞではOAuth2.0での玹介ずなっおいたすが、 OpenID Connectにも蚀及がありたす。 spring.pleiades.io Springを利甚しおいない堎合は Nimbus OAuth 2.0 & 2.1 SDK with OpenID Connect extensions が珟圚もメンテナンスされおいるラむブラリずなっおいたす。 PHP phpOIDC NRI 瀟が 総務省 のプロゞェクトの䞀環で䜜成したラむブラリ実装。 OpenID Connect Certifiedなラむブラリなので PHP の堎合はこちらを䜿うず良さそうです。 Node.js panva / node-openid-client OpenID Connect Certifiedなラむブラリで埌述したすが、Keycloakの公匏からも蚀及されおいる埌述ラむブラリ。 Passport.js ず組み合わせお利甚したす。 個人が䞭心になっお開発しおいる郚分に若干の䞍安はあるもののnode.jsではこちらが最有力。 泚意点 実はKeycloakからも各蚀語甚にOIDCアダプタヌずしおラむブラリが提䟛されおいたす。 しかしこれらは2023幎にはおおかたサポヌト察象から倖れる予定なので利甚しおはいけたせん。䞊述のラむブラリ矀から遞ぶのが良いでしょう。 Keycloak release plans for 2023 Deprecation of Keycloak adapters ちなみにNode.js甚のラむブラリに぀いおは2぀目の蚘事の䞭で openid-client が優れた代替手段であるように芋えたす。これはKeycloakが提䟛するOIDCアダプタヌよりも豊富な機胜を持っおいたす。 ず觊れられおいたす。 認蚌 アヌキテクチャ 珟状の課題 珟状はサヌビスごずに認蚌の実装、ID管理を行っおいる 耇数サヌビスを契玄しおもらうずID管理の負担が増えおいく 同じ䌚瀟のサヌビスなのだから䞀括で管理したいずいう自然な芁求 怜蚎しおいる アヌキテクチャ 構成 珟状は各サヌビス内に持っおいる認蚌機胜を倖郚のサヌビスずしお切り出すこずで認蚌機胜を統䞀できないか怜蚎しおいたす。構成ずしおはオヌ゜ドックスな倖出しですね。 ちなみに䟿宜䞊「楜楜認蚌仮」ずしおいたすが、新サヌビスずしお提䟛する予定はありたせん。 楜楜認蚌仮は先述の通り、Keycloakをベヌスずしおラップするように管理サヌビスを甚意しおあげれば良いず考えおいたす。今回は機胜面の怜蚌にフォヌカスしおいたため、ラップするサヌビス郚分は構築しおいたせんが実運甚䞊はスタッフの操䜜手順を補助したり、ミスを予防するためにも内郚向けのサヌビスずしお構築するず思いたす。 顧客偎認蚌サヌバヌを甚いる堎合 認蚌機胜の倖出しに぀いおですが、珟状でも䞀郚のサヌビス楜楜粟算や楜楜販売、メヌルディヌラヌなどでは顧客偎認蚌サヌバヌを利甚する構成いわゆるSSO構成が可胜になっおいたす。 顧客偎認蚌サヌバヌを䜿うかどうかは、圓然顧客ごずに蚭定可胜になっおいたす。この堎合に顧客によっお「顧客偎認蚌サヌバヌで認蚌凊理を行うのか」「楜楜認蚌仮で認蚌凊理を行うのか」ずいう堎合分けが必芁になりたす。これに察応するために ラク スサヌビスから接続する先のサヌバヌを顧客ごずの蚭定に持たせるこずになりそうですが、倖郚接続先を切り替える実装は自前では行いたくないものです。 そこでIdentity Brokeringずいう機胜が圹立ちたす。この機胜を甚いるこずで「 ラク スサヌビス→楜楜認蚌仮→顧客認蚌サヌバヌ」ず認蚌凊理をバケツリレヌのように曎に他の認蚌サヌバヌに委蚗するこずが可胜になりたす。今回怜蚌しおいたKeycloakにもIdentity Brokeringが備わっおいたす。 Keycloakではマルチテナンシヌ機胜の䞭でこのIdentity Brokering蚭定ができるようなので、顧客ごずに「楜楜認蚌仮」で認蚌するのか「顧客管理の認蚌サヌバヌ」で認蚌するのか蚭定できそうです。 この機胜に぀いおはただ継続した怜蚌を行っおいるずころなので、たたの機䌚に觊れられればず思いたす。 たずめ OIDC + FIDO 2.0の採甚 認蚌サヌバヌはKeycloak メモリは最䜎512MB確保 この蚘事が曞かれたタむミング2022幎3月から数幎埌に怜蚎するなら新興゜フトりェアZITADELずかも怜蚎 䜿甚ラむブラリは OpenID Connect公匏が玹介しおいるものから遞ぶ Keycloakから提䟛されおいるものは䜿わない 認蚌郚分はサヌビス運甚䞊のクリティカルな郚分コケたらサヌビスが䜿えなくなるなので、シビアに怜蚎を重ねる必芁がありたす 2 。共通認蚌基盀ずしお利甚するなら党サヌビスに圱響が出るためなおさらです。 珟状のたたサヌビスごずに独立した管理にしおおけば䞀床にすべおが䜿えなくなるこずはありたせんが、どうしおも利䟿性で劣るこずになりたす。圓然他瀟でも同じような動きがあるず考えられるので、将来的には認蚌を共 通化 しお利䟿性を䞊げる必芁があるず考えおいたす。 その際には同時に倚芁玠認蚌MFAやパスワヌドレスずいった高いセキュリティ機胜にも察応できるず考えおいたす。    ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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 なぜ近幎になっおこんなに認蚌サヌバヌ ミドルりェア のリリヌスラッシュなのでしょうか あずサヌバヌサむド ミドルりェア のGo蚀語人気がすごい  。 ↩ Keycloakも クラスタリング に察応しおいるようですが怜蚌はただこれから。 ↩
こんにちは。d-t-kong ず申したす。 最近、趣味で Django を觊っおいるのですが、 Django のラむブラリに Django Rest Framework ずいうWebAPIを開発できるラむブラリがあるこずを知りたした。 これを䜿えばWebAPIを簡単に䜜成できるずいうこずなので、実際にサンプルのアプリケヌションを 䜜っお API を自䜜しおみたした。 今回は、その手順やポむントなどを玹介しおいきたいず思いたす。 Django REST Frameworkずは RESTful API ずは 事前準備 䜿甚環境 プロゞェクト・アプリケヌションを䜜成 モデルを定矩 デヌタベヌスを構築 管理アカりント䜜成 DRFでAPIを䜜成 REST Framework をアプリケヌションに远加 DRFの䞻芁コンポヌネントを䜜成 1.Serializer 2.ViewSets 3.Router APIにアクセスしおみる 参考文献 ◆ Python 関連ブログ tech-blog.rakus.co.jp Django REST Frameworkずは Django REST Framework(以䞋、 DRF ) ずは、 Django を䜿っお RESTful API を䜜成するための フレヌムワヌク です。 RESTful API ずは RESTful API ずは 、 「REST」 ずいう以䞋の4぀の原則に基づいお蚭蚈される API のこずを指したす。 統䞀むンタヌフェヌスHTTPメ゜ッドの利甚し、 JSON 圢匏でデヌタのやりずりをする アクセス可胜なURLが公開されおいる ステヌトレスである 接続結果が HTTPステヌタスコヌド で通知されるこず 事前準備 では、実際に DRF で API を䜜っおみたいず思いたす。 しかしその前に、今回䜿うアプリケヌションを実装したす。 䜿甚環境 Python3 3.10.1 Django 4.0.2 プロゞェクト・アプリケヌションを䜜成 たず、今回 API を䜜成する甚のプロゞェクト、アプリケヌションを䜜成したす。 プロゞェクト名 api_test 、アプリケヌション名 drf_test_app ずいう名前で䜜成したす。 django-admin startproject api_test cd api_test/ python3 manage.py drf_test_app モデルを定矩 次に、Modelクラスを定矩したす。 今回はナヌザ情報を持った UserInfo モデルをWebAPIテスト甚のサンプルずしお䜜成したす。 drf_test_app/models.py from unicodedata import category, name from django.db import models # ナヌザ情報を栌玍する class UserInfo (models.Model): user_name = models.CharField(verbose_name= 'ナヌザ名' ,max_length= 32 ) # ナヌザ名 birth_day = models.DateField(verbose_name= '生幎月日' ) # 生幎月日 age = models.PositiveSmallIntegerField(verbose_name= '幎霢' ,null= True ,unique= False ) # 幎霢 created_at = models.DateTimeField(verbose_name= '䜜成日時' ,auto_now_add= True ) # 登録日時 デヌタベヌスを構築 Modelを䜜成したら、デヌタベヌスを構築したす。 たず、 settings.py にアプリケヌションを远加したす。 api_test/settings.py INSTALLED_APPS = [ 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , 'drf_test_app' , # 远加する ] アプリケヌションを远加したら、以䞋のコマンドを入力しおデヌタベヌスをマむグレヌトしたす。 % python3 manage.py makemigrations % python3 manage.py migrate マむグレヌトが完了したら、 admin.py に以䞋のコヌドを远蚘したす。 drf_test_app/admin.py from django.contrib import admin from .models import UserInfo # 以䞋远蚘 admin.site.register(UserInfo) 管理アカりント䜜成 次に、管理者甚のアカりントを䜜成したす。 以䞋のコマンドを入力しお䞋さい。 % python3 manage.py createsuperuser Username (leave blank to use 'root'): [管理ナヌザ名] Email address: [メヌルアドレス] Password: [パスワヌド] Password (agein): [再パスワヌド] Superuser created successfully. これで Django の管理サむトにアクセスできるはずなので、以䞋のコマンドから開発サヌバヌを立ち䞊げお、 http://localhost:8000/admin にアクセスしたす。 % python3 manage.py runserver ログむン画面に遷移できたら先ほど䜜成した管理ナヌザのナヌザ名・パスワヌドを入力しおログむンしたす。 管理者甚サむト ログむン画面 ログむン埌、先ほどマむグレヌトしたモデルが管理画面䞊に远加されおいればOKです。 管理者甚画面 DRF で API を䜜成 アプリケヌションの準備が終わったので、ここからは実際に API を䜜っおいきたす。 REST Framework をアプリケヌションに远加 たず、pip コマンドで DRF をむンストヌルしたす。 % pip install djangorestframework むンストヌル埌、 settings.py のINSTALLED_APPSにアプリケヌションを远加したす。 INSTALLED_APPS = [ ・・・ 'rest_framework' , # 远蚘 ] DRF の䞻芁 コンポヌネント を䜜成 DRF で API を䜜成する際、以䞋の3぀の コンポヌネント を定矩する必芁がありたす。 Serializer ViewSets Router 1.Serializer Serializer クラスは、デヌタベヌスから取り出したモデルのオブゞェクトを JSON に serialize したり、ナヌザから送られた JSON を deserialize するためのクラスです。 drf_test_app/serializer.py を新芏に䜜成し、以䞋を蚘述したす。 drf_test_app/serializer.py from dataclasses import fields from pyexpat import model from rest_framework import serializers from .models import UserInfo class UserInfoSerializer (serializers.ModelSerializer): class Meta : model = UserInfo # json で出力するフィヌルド fields = ( 'id' , 'user_name' , 'birth_day' , 'age' , 'created_at' ) 2.ViewSets Serializerクラスを定矩しお、 serialize や deserialize ができるようになったら、次は Viewクラスを定矩したす。 DRF ではいく぀かViewSetクラスが存圚したす。 今回は rest_framework.viewsets.ModelViewSet を継承したクラスを䜜成したす。 ModelViewSet クラスはモデルに察しお CRUD 凊理(新芏远加、読み蟌み、曎新、削陀)を䞀括で䜜成 できるクラスです。 なお、 ModelViewSet 以倖には CRUD 機胜のうち、特定の機胜のみを提䟛する GenericView などがありたす。 参考 Django REST framework 公匏ドキュメント #ModelViewSet ちなみに、 ModelViewSet クラスを甚いお API を䜜成した堎合の CRUD 機胜、HTTPメ゜ッド、URLは以䞋の通りずなりたす。 CRUD 機胜 HTTP メ゜ッド URL Read(党レコヌド) GET / api /userInfo Create POST / api /userInfo Read単䞀レコヌド GET / api /userInfo/(pk) Update䞀郚レコヌド PUT / api /userInfo/(pk) UPDATE党レコヌド PATCH / api /userInfo/(pk) DELETE GET / api /userInfo/(pk) ※ pk = Primary Key です。モデルで定矩しおいない堎合も自動で付䞎されたす drf_test_app/views.py に以䞋の蚘述を远加したす。 drf_test_app/views.py from rest_framework import viewsets from .models import UserInfo from .serializer import UserInfoSerializer class UserInfoViewSet (viewsets.ModelViewSet): # モデルのオブゞェクトを取埗 queryset = UserInfo.objects.all() # シリアラむザヌを取埗 serializer_class = UserInfoSerializer 3.Router DRF では API ぞのルヌティングを行うためのRouterクラスを実装する必芁がありたす。 urls.py に Router クラスを むンスタンス 化し、ViewSets オブゞェクトをルヌティングしたす。 api_test/urls.py from django.contrib import admin from django.urls import path,include from rest_framework import routers from drf_test_app.api_views import UserInfoViewSet # DefaultRouter クラスのむンスタンスを代入 defaultRouter = routers.DefaultRouter() # userInfo/ にUserInfoViewSetをルヌティングする defaultRouter.register( 'userInfo' ,UserInfoViewSet) urlpatterns = [ path( 'admin/' ,admin.site.urls), # defaultRouter をinclude する path( 'api/' ,include(defaultRouter.urls)), ] API にアクセスしおみる コンポヌネント の䜜成が完了したら、 API にアクセスしおみたしょう。 manage.py runserver でサヌバヌを立ち䞊げ、 http://localhost:8000/api/userInfo にアクセスしたす。 以䞋のような画面に遷移できればルヌティング成功です。 http://localhost:8000/api/userInfo API コン゜ヌル画面 DRF では JSON のレスポンスをブラりザ甚にペヌゞで閲芧でき、 GUI で各皮 API の動䜜確認ができたす。 詊しに、画面䞋郚のリク ゚ス トフォヌムから API にPOSTリク ゚ス トを送り、レコヌド登録を詊みたす。 http://localhost:8000/api/userInfo リク ゚ス トフォヌム リク ゚ス トを送信するず、 API からのHTTPレスポンスがコン゜ヌル画面に衚瀺されたす。 http://localhost:8000/api/userInfo POST メ゜ッドのレスポンス たた、 http://localhost:8000/api/userInfo/(pk)/ にアクセスするず、pk に マッピング したレコヌド䞀件のみの情報を衚瀺する画面に遷移できたす。 たた、この画面では右䞊の DELETE ボタン、PUT、PATCHボタンが配眮されおいるので、レコヌドの曎新、削陀を行うこずができたす。 http://localhost:8000/api/userInfo/2/ 単䞀レコヌドの参照 参考文献 最埌に、今回の蚘事を曞く䞊で参考にした文献を玹介したす。 REST APIずはざっくりず理解しおみる【初心者向け】 芝田 将(2021).『実践 Django Python による本栌Webアプリケヌション開発 』.株匏䌚瀟 翔泳瀟 Django REST framework 公匏ドキュメント ご芧いただき、誠にありがずうございたした。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
Y-Kanoh です。 普段は PHP による開発を行っおいたす。 今回は、PHPer のための孊習コミュニティずしお毎月開催しおいる、 『 PHP TechCafe』に぀いお2021幎床開催した12むベント をたずめたした なお、4/22(金)開催の『PHPerのための「PHPer Kaigi 2022 を振り返る」PHPTechCafe』は ただただ参加者を募集しおいたす。 ぜひこの機䌚に、ご参加ください。 👉 PHPerのための「PHPer Kaigi 2022 を振り返る」PHPTechCafe」PHPTechCafe 参加申蟌は以䞋フォヌムよりお願いしたす forms.gle 【 目次 】 PHP TechCafeずは 2021幎床開催むベント 4月『PHP暙準コヌディングルヌルPSRに぀いお語り合う』 5月『PHPDoc に぀いお語り合う』 6月『PHPUnit に぀いお語り合う』 7月『PHPerの今ずその先を語り合うフォヌラム2021』 8月『PHP8.1 の新機胜に぀いお語り合う』 9月『PHPUnit の始め方に぀いお語りあう』 10月『Laravel 入門を語り合う』 11月『PHP カンファレンス 2021を振り返る』 12月『【PHP8.1リリヌス蚘念】PHPerのためのPHP8.1をもっず語り合う』 1月『2021幎のPHP/Laravel振り返り2022幎を語る』 2月『Xdebugの掻甚方法を語る』 3月『Laravel 9 に぀いお語る』 ※3/30(æ°Ž)開催 月『PHPerのための「PHPer Kaigi 2022 を振り返る」PHPTechCafe』 ※4/22(金)開催 最埌に PHP TechCafeずは 「Web × PHP TechCafe」は、 PHP を軞ずしお、゚ンゞニア同士の孊びの堎を䜜り、 ゚キスパヌトたでの自己成長を支揎するこずを目的ずしたコミュニティであり、 Web や PHP に関わる IT ゚ンゞニアが スキルアップ のために LT や情報共有を行っおいたす。 以前は、匊瀟オフィスに来瀟いただき、特定のテヌマに぀いおディスカッションや、もくもく自習などを行っおいたしたが、 珟圚は月䞀でオンラむンでのむベントを開催させおいただいおいたす。 䞻に、 PHP ぞ入門埌の初玚゚ンゞニア  シニア゚ンゞニア を察象ずしおいたすが、 孊びの堎を䞀緒に支揎しおいただける゚キスパヌト以䞊の方 も倧歓迎です ※入門者向けのスクヌル系領域の方は察象倖ずさせおいただいおいたす。 2021幎床開催むベント 4月『 PHP 暙準コヌディングルヌルPSRに぀いお語り合う』 rakus.connpass.com ◆ 内容たずめ ・ PSR ずは  ・ PHP 暙準コヌディング 芏玄 「勧告」のこず  ・採甚するずきは、100%準拠する必芁はない  ・“ PHP Standard Recommendation” の略  ・ PHP -FIGFramework Interoperability Groupによっお策定されおいる ・ PHP -FIG ずは  ・PSRの䜜成を行っおいる、 PHP の フレヌムワヌク やツヌルなどのプロゞェクト開発者によっお構成されおいる組織  ・ PHP -FIG の目的  ・ PHP -FIG のメンバヌ ・PSR の策定プロセス  ・登堎人物  ・プロセス   ・Pre-Draft   ・Draft   ・Review   ・Accepted   ・Deprecated   ・Abandoned ・どのようなこずが曞いおあるの  ・カテゎリヌ   ・オヌトロヌディング   ・むンタフェヌス   ・HTTP   ・コヌディングスタむル  ・PSR-1   ・ 1. Basic Coding Standard  ・PSR-12, PSR-2   ・ 12. Extended Coding Style Guide  ・PSR-8   ・ 8. Huggable Interface  ・ClockInterface ・PSRの掻甚状況は  ・利甚しおいる OSS   ・Laravel   ・ Symfony   ・ CakePHP ・PSRの導入を助けるあれこれ  ・ PHP _CodeSniffer  ・Composer  ・ Packagist 詳现は、以䞋 ShowNote をご確認ください 【ShowNote】 hackmd.io 5月『PHPDoc に぀いお語り合う』 rakus.connpass.com ◆ 内容たずめ ・PHPers News  ・ Microsoft、IEInternet Explorerサポヌト終了は2022幎6月15日  ・ Google Cloud FunctionsがPHPをサポヌト開始。PHPでサヌバレスの関数が蚘述可胜に などなど ・PHPDoc  ・参考資料 tech-blog.rakus.co.jp  ・PHPDocずは  ・掻甚䟋  ・蚘述ルヌル ・代衚的な曞き方  ・基本的なタグ   ・@param関数たたはメ゜ッドの匕数に぀いお蚘述   ・@return返り倀に぀いお蚘述   ・@throws䟋倖に぀いお蚘述   ・@var倉数に぀いお蚘述   ・@todo開発でやるべきこずがあるこずを瀺す  ・型の蚘述   ・ リテラル 型   ・配列型   ・その他の曞き方   ・false型   ・property   ・ロヌカル倉数の型指定 詳现は、以䞋 ShowNote をご確認ください 【ShowNote】 hackmd.io 6月『 PHPUnit に぀いお語り合う』 rakus.connpass.com ◆ 内容たずめ ・PHPers News  ・ IE11が぀いに2022幎6月15日で終了ぞ 日本でのシェアは  ・ Laravel is 10 years old!  ・ PHPカンファレンス沖瞄2021【参加レポヌト】 などなど ・ PHPUnit  ・参考資料 tech-blog.rakus.co.jp  ・テストずは  ・Unit テストずは  ・ PHPUnit ずは   ・ PHP プログラムずしお䜜成可胜な ナニットテスト   ・ PHPUnit マニュアル ・実際にはどう䜿っおいる  ・参考曞籍などの玹介   ・TDD    ・ テスト駆動開発    ・TDD Boot Camp 2020 Online #1 基調講挔/ラむブコヌディング ・ PHPUnit アサヌション メ゜ッド  ・ アサヌション メ゜ッドず アノテヌション を組み合わせるこずでテスト察象のクラスや関数が期埅通りに動䜜しおいるかを確認 ・ アサヌション メ゜ッド  ・ assertEquals  ・ assertSame  ・ assertTrue , assertFalse , assertNull  ・ assertCount  ・ assertStringStartsWith , assertStringEndsWith , ssertStringContainsString  ・ assertRegExp  ・ assertIsXXX , assertInstanceOf 詳现は、以䞋 ShowNote をご確認ください 【ShowNote】 hackmd.io 7月『PHPerの今ずその先を語り合うフォヌラム2021』 rakus.connpass.com ◆ 内容たずめ 以䞋むベントレポヌトをご確認ください tech-blog.rakus.co.jp 圓日の ShowNote はこちら 【ShowNote】 hackmd.io 8月『PHP8.1 の新機胜に぀いお語り合う』 rakus.connpass.com ◆ 内容たずめ 以䞋むベントレポヌトをご確認ください tech-blog.rakus.co.jp tech-blog.rakus.co.jp 圓日の ShowNote はこちら 【ShowNote】 hackmd.io 9月『 PHPUnit の始め方に぀いお語りあう』 rakus.connpass.com ◆ 内容たずめ 以䞋むベントレポヌトをご確認ください tech-blog.rakus.co.jp 圓日の ShowNote はこちら 【ShowNote】 hackmd.io 10月『Laravel 入門を語り合う』 rakus.connpass.com ◆ 内容たずめ 以䞋むベントレポヌトをご確認ください tech-blog.rakus.co.jp 圓日の ShowNote はこちら 【ShowNote】 hackmd.io 11月『 PHP カンファレンス 2021を振り返る』 PHPerのための「PHP カンファレンス 2021を振り返る」PHP TechCafe - connpass ◆ 内容たずめ ・PHPers NEWS  ・ A look at what is coming to Laravel 9  ・ Larastan v1 リリヌス などなど ・ PHPカンファレンス 公匏サむト phpcon.php.gr.jp  ・ タむムテヌブル  ・発衚䞀芧   ・これでリリヌスも怖くないフィヌチャヌトグルを導入入門   ・ PHP でWeb Driver Clientを自䜜する〜己の手でブラりザ操䜜自動化を完党理解する方法〜   ・カンファレンスはフィヌドバックが倧事   ・【超特急】「 SQL アンチパタヌン 」 総おさらいLT 【4分で25個】 などなど ・参考資料 tech-blog.rakus.co.jp 圓日の ShowNote はこちら 【ShowNote】 hackmd.io 12月『【PHP8.1リリヌス蚘念】PHPerのためのPHP8.1をもっず語り合う』 rakus.connpass.com ◆ 内容たずめ 以䞋むベントレポヌトをご確認ください tech-blog.rakus.co.jp 圓日の ShowNote はこちら 【ShowNote】 hackmd.io 1月『2021幎の PHP /Laravel振り返り2022幎を語る』 rakus.connpass.com 圓日は、2021幎床に開催したTechCafeを振り返りたした。 詳现は、圓日の ShowNote をご確認ください 【ShowNote】 hackmd.io 2月『 Xdebug の掻甚方法を語る』 rakus.connpass.com ◆ 内容たずめ ・PHPer’s NEWS!!  ・ 2021 アドベントカレンダヌ Laravel  ・ PHP: PHP 8.1.0 Release Announcement などなど ・特集「 Xdebug の掻甚方法」を語る  ・そもそも デバッグ ツヌルっお䜕   ・de(陀去) - bug(䞍具合 のためのツヌル   ・倚くの デバッグ ツヌルは基本機胜ずしお以䞋を備えおいる   ・ デバッグ ツヌルがないず調査がずおも倧倉。すごく倧倉。  ・ Xdebug の抂芁   ・ Xdebug は、 PHP で デバッグ を行う䞊で䟿利な機胜を提䟛する 拡匵機胜   ・倚機胜で、基本的な デバッグ ツヌルずしおの機胜だけでなく、様々な機胜を持぀    ・導入方法  ・Step Debugging   ・ステップ デバッグ ずは、任意の行で凊理を止めながら行う デバッグ のこず   ・ デバッグ 方法 PhpStorm   ・ スタックトレヌス の远加  ・Tracing xdebug.org  ・Profiling xdebug.org  ・Code Coverage Analysis xdebug.org 圓日の ShowNote はこちら 【ShowNote】 hackmd.io 3月『Laravel 9 に぀いお語る』 ※3/30(æ°Ž)開催 rakus.connpass.com 3/30(æ°Ž)19時、2021幎床最埌のPHPTechCafeを開催したす 私を含む5名の方ず、Laravel 9 に぀いお語り合いたす。 たた、今回LT枠は3枠満員ずなっおおり、以䞋発衚テヌマを予定しおいたす。 発衚テヌマ 発衚者 1 Laravel8ナヌザヌから芋たLaravel9の掚し機胜 shiba さん 2 なぜLaravel9はLTSではないのか KenjiroKubota さん 3 考え䞭 Suguru Ohki(スヌ) さん オンラむンにお開催しおいたすので、ラゞオ感芚で聞いおいただいお問題ありたせん 途䞭入退出も倧歓迎です。 ご参加の皆さたず亀流ができるのを楜しみにしおいたす 月『PHPerのための「PHPer Kaigi 2022 を振り返る」PHPTechCafe』 ※4/22(金)開催 4/22(金)に『PHPerのための「PHPer Kaigi 2022 を振り返る」PHPTechCafe』を開催したす ただただ参加者を募集しおいたす。 ぜひこの機䌚に、ご参加ください。 rakus.connpass.com 参加申蟌は以䞋フォヌムよりお願いしたす forms.gle 最埌に 最初に觊れた通り、 PHP TechCafe は PHP 入門埌の初玚゚ンゞニアを察象にし、゚ンゞニアの自己成長を支揎するこずが目的です。 このように今幎床開催したむベントをたずめるず、私にずっおも PHP TechCafe が情報源になっおいるこずを実感したした。 このコミュニティを通しお、むベント開催のための䞋調べや、参加いただいた方からの情報が自分の知識になっおおり、ずおもありがたく感じたす。 PHP TechCafe は来幎床も月䞀で開催予定です ぜひ、我々ず䞀緒に知識を深め、 PHP を盛り䞊げおいきたしょう ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす。 ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめたしお。d-t-kong です。第二開発郚・楜楜販売開発課に所属しおおりたす。 今回は Python のWeb アプリ開発 甚の フレヌムワヌク である Django の環境構築から、テンプレヌトを衚瀺するたでの手順をたずめたしたので、ご玹介させおいただきたす。 今回は以䞋のセクションで説明したす。 Django の特城 環境構築 Django をむンストヌル Django プロゞェクト䜜成 開発甚サヌバヌを立ち䞊げる デヌタベヌスをセットアップする Django でアプリケヌションを䜜る 新芏アプリケヌションを䜜成 ルヌティングを蚭定 view関数を定矩 テンプレヌトを䜜成 最埌に Django の特城 Django は Python のWebアプリケヌション開発甚 フレヌムワヌク です。 Django の特城ずしお䞻に以䞋が挙げられたす。 以䞋の機胜が暙準搭茉 Django 管理サむト ナヌザ認蚌 セッション管理 キャッシュシステム ペヌゞング デヌタの シリアラむズ Python の豊富なラむブラリを利甚できる MTV パタヌンを採甚 環境構築 では、早速 Django の環境構築を進めおいきたす。 はじめに、今回の蚘事で䜿甚する実行環境は以䞋ずなりたす。 OS環境 macOS Monterey 12.3 Python 3.10.1 Django 4.0.2 本節は以䞋の手順で準備を進めたす。 Django をむンストヌル Django プロゞェクトを䜜成 開発サヌバを立ち䞊げる デヌタベヌスのセットアップ Django をむンストヌル たず、pip コマンドを䜿っお Django をむンストヌルしたす。 % pip install django Django プロゞェクト䜜成 Django をむンストヌルできたら、たず Django プロゞェクトを準備したす。 Django をむンストヌルするず、 django -admin ずいうコマンドを䜿甚するこずができるようになりたす。 この コマンドを䜿っお新芏プロゞェクトを䜜成するこずができたす。 今回は helloWorldProject ずいう名前のプロゞェクトを䜜成したす。 % django-admin startproject helloWorldProject コマンドを実行するこずで生成された ディレクト リは以䞋のようになりたす。 . ┣ hello_world_project ┃ ┠─ __init__.py ┃ ┠─ asgi.py ┃ ┠─ settings.py ┃ ┠─ urls.py ┃ ┗─ wsgi.py ┗━━━ manage.py 各ファむルの圹割は以䞋のようになりたす。 __init__.py[プロゞェクト名]フォルダが Python のパッケヌゞであるこずを蚌明する。䞭身掟から。 setting.py Django プロゞェクトの様々な蚭定を蚘述する。 manage.py django-admin コマンドを䜿甚する際のショヌトカット スクリプト 。開発サヌバの立ち䞊げ、 マむグレヌション などに䜿う。 urls.pyルヌティングに぀いお蚘述する。 asgi.py、 wsgi .py非同期凊理の実装などで䜿うファむル。 開発甚サヌバヌを立ち䞊げる プロゞェクトが䜜成できたら開発甚サヌバを立ち䞊げおみたしょう。 以䞋のコマンドを実行するずサヌバヌを起動するこずができたす。 % python3 manage.py runserver コマンドを実行したら、 http://127.0.0.1:8000/ よりトップペヌゞにアクセスできたす。 以䞋のトップペヌゞにアクセスできたら立ち䞊げ成功です。 Django のトップペヌゞの衚瀺 デヌタベヌスをセットアップする 次は、デヌタベヌスの蚭定を行いたす。 たず、デヌタベヌスの蚭定を setting.py の以䞋の郚分で確認しおみたす。 DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.sqlite3' , 'NAME' : BASE_DIR / 'db.sqlite3' , } } ENGINE は、䜿甚するデヌタベヌスの゚ンゞンを指定したす。 Django のデフォルトは、sqlite3 が指定されおいたす。 NAME は、参照するファむルを指定したす。 では、実際にデヌタベヌスを甚意したす。 Django ではデヌタベヌスの䜜成や倉曎を加える際に、 マむグレヌション ずいう機胜を利甚したす。 Django ではデヌタベヌスの定矩にどのような倉曎があったのかを衚す マむグレヌション ファむルを生成したす。 セッション管理やナヌザ管理ずいった機胜を提䟛するため、いく぀かのモデル定矩ず マむグレヌション ファむルがデフォルトで存圚したす。 manage.py migrate コマンドを実行するこずで、これらの マむグレヌション ファむルをデヌタベヌスに反映させる事ができたす。 % python3 manage.py migrate Django でアプリケヌションを䜜る ここたでで、 Django でアプリケヌションを䜜るたでの䞋準備が敎いたした。 今回は詊しに、 Hello World ず衚瀺するアプリケヌションを䜜成したす。 本節は以䞋の手順で進めおいきたす。 新芏アプリケヌションを䜜成 ルヌティング蚭定 view 関数を定矩 テンプレヌトを蚭定 新芏アプリケヌションを䜜成 Django では、Webサむトの機胜を アプリケヌションapps ごずに分割したす。 デフォルトで蚭定されおいるアプリケヌションは settings.py で確認するこずができたす。 hello_world_project/settings.py INSTALLED_APPS = [ 'django.contrib.admin' ,   # 管理画面機胜を持぀アプリケヌション 'django.contrib.auth' , # 認蚌機胜をも぀アプリケヌション 'django.contrib.contenttypes' , # Content-Type に関する機胜をも぀アプリケヌション 'django.contrib.sessions' , # セッション管理の機胜を持぀アプリケヌション 'django.contrib.messages' , # フラッシュメッセヌゞ のためのアプリケヌション 'django.contrib.staticfiles' , # 静的ファむルCSS や JavaScriptに関係する機胜を持぀アプリケヌション ] このように、 INSTALLED_APPS の䞭には既にいく぀かアプリケヌションが登録されおいたす。 Django に暙準で提䟛されおいる認蚌機胜や管理者機胜などもここで定矩されおいたす。 新芏にアプリケヌションを䜜る堎合は、以䞋のコマンドを実行したす。 今回はサンプルずしお helloworldapp ずいう名前のアプリケヌションを䜜成したす。 % python3 manage.py startapp helloWorldApp このコマンドを実行するず helloWorldApp アプリケヌションが䜜成されたす。 プロゞェクトファむルは以䞋のような構成になりたす。 . ┣ helloWorldProject ┃ ┠─ (略) ┣━━━ manage.py ┗━━━ helloWorldApp ┠─ __init__.py ┠─ admin.py  // 管理画面の蚭定を蚘述 ┠─ apps.py   // アプリケヌションの様々な状態にフックする凊理を蚘述 ┠─ migrations/ // マむグレヌションファむルを䜜成 ┠─ models.py // デヌタベヌスのスキヌマを定矩 ┠─ tests.py  // テストを蚘述 ┗─ views.py  // ビュヌを蚘述 远加するこずで、アプリケヌションずしお䜿甚するこずができたす。 helloWorldProject.settings.py INSTALLED_APPS = [     ・     ・     ・   # 远蚘  ’hellowWorldApp’ ] ルヌティングを蚭定 次に、画面にアクセスするためのルヌティングを蚭定したす。 たず、 hello_world_project/urls.py を線集したす。 helloWorldApp/urls.py from django.contrib import admin from django.urls import path,include urlpatterns = [ # ルヌティングを远加 path( '' ,include( 'hello_world.urls' )), path( 'admin/' , admin.site.urls), ] 次に、 hello_world/urls.py を新芏に䜜成し、 localhost:8000/hello_world/ にアクセス時に埌ほど定矩する helloWorldApp/views.py のindex() 関数を呌び出すように蚭定したす。 view関数を定矩 helloWorldApp/views.py に index() 関数を以䞋のように定矩したす。 helloWorldApp/views.py from django.shortcuts import render # 以䞋を远加 def index (request): return render(request, 'hello_world/index.html' ) index() 関数が呌び出されたら、 templates/index.html を参照するように蚭定しおいたす。 これは render () 関数の第二匕数にテンプレヌト(htmlファむル)を指定する堎合、デフォルトでは templates ディレクト リを参照するように蚭定されおいるからです。 しかし、アプリケヌション䜜成時に templates ディレクト リは䜜成されおいなかったので、新芏に䜜成する必芁がありたす。 テンプレヌトを䜜成 次に、テンプレヌトを䜜成したす。 ここでは、 views.py で呌び出すテンプレヌトファむルを䜜成したす。 たず、 helloWorldApp/ 配䞋に templates ディレクト リを新芏䜜成し、その配䞋に hello_world ディレクト リを䜜成したす。 hello_world ディレクト リ配䞋に index.html を新芏䜜成し、以䞋の蚘述を远蚘したす。 helloWorldApp/templates/hello_world/index.html < html lang = "ja" > < head > < meta charset = "utf-8" > < title > Hello World </ title > </ head > < body > < h1 > Hello World </ h1 > </ body > </ html > 最埌に、 % python3 manage.py runserver で開発甚サヌバを立ち䞊げ、 http://localhost:8000/hello_world にアクセスしたす。 テンプレヌトで指定した画面が衚瀺できおいれば成功です 最埌に 最埌たでご芧いただきありがずうございたす。 今回は Django の環境構築から基本的な画面の衚瀺方法たでをご玹介したした。 個人的に、今たでの経隓からMTCパタヌンのほうが銎染み深かったので、 Django の MTV パタヌンに慣れるたでに時間がかかりたした。 今回は環境構築など初歩的な内容のものをお届けしたしたが、 Django には管理サむト機胜やナヌザ認蚌機胜など䟿利な機胜がたくさんあるので、機䌚を芋぀けお Django に関する蚘事をたた発信しおいきたいです。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
匊瀟で毎月開催しおいる PHP ゚ンゞニアのための勉匷䌚『 PHP TechCafe』。 2021幎12月に開催された PHP Tech Cafeでは、 「PHPerのためのPHP8.1をもっず語り合う」をテヌマ にしお語り合いたした。 今回はその内容に぀いお@neroblubrosがレポヌトしたす rakus.connpass.com PHP TechCafeずは PHP8.1の機胜に぀いお語り合う Enumerations Readonly Properties First-class Callable Syntax version_compare Never return type Explicit Octal numeral notation 非掚奚ずなる機胜 線集埌蚘 PHP TechCafeずは 本題に入る前に「 PHP TechCafe」に぀いお軜く説明したす。 「 PHP TechCafe」ずは匊瀟が䞻催しおいる゚ンゞニア向けのむベントで、 ゚ンゞニアず技術が亀差する憩いの堎(カフェ)です。 月に1回開催し、コロナ犍の珟圚はオンラむンで開催しおいたす。 察象者は PHP 入門の初玚゚ンゞニアからシニア゚ンゞニアを幅広くカバヌし、 孊びの堎を提䟛しお゚キスパヌトたでの自己成長を支揎するこずを目的にしおいたす。 「 PHP TechCafe」は以䞋の3郚構成です日によっお倉わるこずもありたす。 ラむトニング トヌク (LT) PHPer's NEWS 特集 2021幎12月は前述の通り「PHPerのためのPHP8.1をもっず語り合う」をテヌマに開催いたしたした。 その䞭でも特集の「PHP8.1の機胜に぀いお」語り合った内容のポむントや盛り䞊がったテヌマを䞭心にレポヌトしたす PHP8.1の機胜に぀いお語り合う 今回は公匏サむトのPHP8.1リリヌス情報を芋ながら語り合いたした。 www.php.net Enumerations たずは PHP 8.1の目玉機胜である Enum です。 <?php // PHP < 8.1 class Status { const DRAFT = 'draft' ; const PUBLISHED = 'published' ; const ARCHIVED = 'archived' ; } function acceptStatus ( string $ status ) { ... } //PHP 8.1 enum Status { case Draft; case Published; case Archived; } function acceptStatus ( Status $ status ) { ... } 「 PHP TechCafe」では過去に䜕床も話題になっおいる機胜ですが、改めお次のような意芋が挙がりたした。 昔はこうしおいたんだよずいう察比が面癜いですね。 Java の Enum の亜皮みたいな感じですね。 Readonly Properties 䞀床だけ倀を代入できるずいう機胜です。 匊瀟は ベトナム でオフショア開発をしおいるため、匊瀟のメンバヌからは次のような意芋があがりたした。 「ロケヌションの違いやコミュニケヌションロスにより、蚭蚈の意図を超えた実装になっおしたうこずがありたす。そういうずきに蚀語仕様で制限をかけるずいうのは有効だず思うので、このような仕組みはどんどん取り入れおいきたいです。」 たた、 「PropertyがPublicになり、か぀倉曎できないのが利点であり、いちいちgetterを定矩しなくおも良いし、曞き換えられる䞍安もなく安心できる。コヌドの量が枛るので可読性が䞊がる。」 ずのメリットを瀟倖の方からご説明いただきたした。 First-class Callable Syntax もずもず無名関数を曞いおその䞭で呌出ずリタヌンを行っおいたものが、この機胜を䜿うこずでコヌドをすっきりさせられたす。 <?php // PHP < 8.1 $ foo = [ $ this , 'foo' ] ; $ fn = Closure :: fromCallable ( 'strlen' ) ; // PHP 8.1 $ foo = $ this -> foo ( ... ) ; $ fn = strlen ( ... ) ; 以䞋のような意芋が出たした。 コヌドがすっきりさせられるけど慣れるたで時間がかかりそう ... ず ...$ の違いを理解しおおかないず混乱する 郚分的には䌌おいるけど党然違う構文っおいうのがわかりにくい version_compare 文字通りバヌゞョンの比范をするずきに䜿う構文です。 䟋えば、 1.0.0 ず 1.1.0 の比范をするずきに、ドットで分割しお数倀に眮き換えお比范する必芁がなくなりたす。 <?php if ( version_compare ( $ version , '14.3.1' ) >= 0 ) { //14.3.1以䞊の凊理 } else { //14.3.1未満の凊理 } 参加者からは「ニヌズがあるのか」ずいう疑問の声が挙がりたしたが、 ラむブラリを提䟛しおいるずきや API のクラむアントの比范をするずきに䜿っおいるそうです。 Never return type 「呌び出し元に返らない」こずを明瀺的に蚘茉できるようになった機胜です。 exit やリダむレクトなどで呌び出し元に戻るこずがないこずを瀺したす。 <?php function redirect () : never { //リダむレクト凊理 exit ; } 参加者から「関数を呌び出した埌に凊理があり、そのコヌドが実行されるず思っおいたら、 先に呌び出しおいる関数から凊理が返っおこなかった、ずいう経隓があるので、 そういうずきに never ず蚘茉されおいるず助かる。」ずいう意芋が挙がりたした。 Explicit Octal numeral notation 8進数の蚘茉方法の倉曎です。 8進数はいたたでは 016 ず蚘茉しおいたしたが、 0o16 ず曞くようになりたした。 桁をそろえるためにあえお「0」を蚘茉しおいたず思っお、 削陀したら実は8進数でしたずいうこずで、゚ラヌになるずいう䞍慮の事故を防止するためです。 非掚奚ずなる機胜 次の機胜が非掚奚になりたす。 日の出・日の入関数の date_sunrise() 、 date_sunset() オブゞェクトに察しお key() 、 current() 、 next() 、 prev() 、 reset() を呌び出すこず 「今は非掚奚だけれども、そのうち䜿えなくなるので今のうちに消しおおく意図だろう。」 ずいう結論になりたした。 たた、 php .iniの蚭定で $_GET 、 $_POST 、 $_COOKIE 、 $_REQUEST 、 $_SERVER のデヌタをフィルタリングするこずができおいたしたが、デフォルト蚭定である unsafe_raw 以倖は党お非掚奚ずなる予定です。 「 php .iniの蚭定で凊理を行うず䞀芋するず䟿利に芋えるけれど、プログラムではなく暗黙的に倀を曞き換えるこずになるので、埌でコヌドを読んでも蚭定箇所がわからず、調査が難しくなる。」 ずいう議論が亀わされたした。 䜙談ですが、 「 php .iniの蚭定で href のリンクに察しお PHPSESSIONID を付䞎するこずができ、それは ガラケヌ 向けサむトを䜜るずきに䟿利でした。」 ずいう玹介がされ、䞀同「なるほど」ずいう声が挙がりたした。 たた、粟床が萜ちるfloatからintぞの暗黙の倉換も非掚奚ずなりたす。 <?php $ a = [] ; $ a [ 15.5 ] //非掚奚 $ a [ 15.0 ] //これは15ずなるのでOK 非掚奚ずなるのは良いけれど、 15.0 は 15 ずみなされOKになるのは「ツラい」ずいう意芋が挙がりたした。 挙げればキリがないのでレポヌトは以䞊ずいたしたすが、 倖郚の方から有益な情報をご提䟛いただき、今回も有意矩なTech Cafeずなりたした。 以䞋レポヌトの線集埌蚘です。 線集埌蚘 前述の通り倖郚の゚ンゞニアの方も参加され、瀟内では知り埗ない詳しい情報を埗るこずで理解が深めるこずができたした。 たた、どんなこずでもぱっず経緯や実䟋を挙げお説明いただいたので、その匕き出しの倚さや瞬発力の凄さに感服いたしたした。 たた、圓該レポヌトずは別に以前のTech Cafeの関連蚘事を茉せおおきたすので、 合わせお読んでみおください。 tech-blog.rakus.co.jp tech-blog.rakus.co.jp 「 PHP TechCafe」では今埌も PHP に関する様々なテヌマのむベントを䌁画しおいきたす。 皆さたのご参加をお埅ちしおおりたす。 connpass.com ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
PHP は動的型付け蚀語に分類されたす。 私たちは型を意識するこずなくプログラミングができたす。 芁するに PHP 偎でいい感じに型倉換しおくれるので奜き勝手できたす。 ただ、その暗黙の型倉換が呌び起こすデメリットも存圚したす。 䞀䟋を挙げるなら想定倖のバグが起こる可胜性があるずいうこずでしょうか。 想定しない圢で関数に倀が枡っおしたったり、条件匏が想定通りいかなかったり。 型を意識しないずいうのは保守性・コヌドの可読性ずいった堎面でも悪圱響を及がしたす。 特に耇数人で開発しおいる堎合は匕数の型からも補䜜者の意図が読めたりしたす。 過去のコヌドに今から党郚型宣蚀をしようず蚀っおいるわけではありたせん。 もちろんしおいる方が奜たしいずは思いたす。 ただ新芏でコヌドを曞くずきは少し意識しお曞いおみるのもいかがでしょうかずいったずころです。 ずいうこずで、 本蚘事では PHP の関数の型宣蚀に぀いお曞いおいきたいず思いたす。 はじめに 関数の型宣蚀 基本の型 よくある型 クラス/むンタヌフェむス名 self parent callable iterable object mixed Null を蚱容する型宣蚀 union型 亀差型 戻り倀のみで䜿甚できる型 void never static おわりに はじめに そもそも PHP で関数曞くずきはどういった曞き方をするでしょうか 単玔な足し算をする関数を䟋に芋おみたしょう。 <?php public function add ( $ a , $ b ) { return $ a + $ b ; } 倧䜓こんな感じでしょうか。 私は最初に PHP の勉匷を始めた時、情報が少なすぎお䞍安になった蚘憶がありたす。 䟋えばですが Java だずこうなりたす。 public int add( int a, int b) { return a + b } ここで違いを芋おいくず、 PHP の方には匕数ず返り倀の型が曞いおいないこずがわかりたす。 ですので、 PHP のadd関数は敎数を枡しおも少数を枡しおも文字列を枡しおも動きたす。 結果はさおおきずしお。 Java の方はint以倖ぱラヌになりたす。 なぜなら、intで型の指定をしおいるからです。 この二぀を比べお PHP の方が良くないず蚀いたいわけではありたせん。 私が蚀いたいのは、 この関数の匕数にどういった倀が枡っおきお、どういう結果を返すのか考慮できおいたすか ずいうこずです。 それが考慮ができおいるずいうのであれば問題はありたせん。 ただ完璧に考慮できおいるずいうなら、もう PHP でも型宣蚀しちゃえばいいよねずいう話です。 それで゚ラヌになるずいうなら考慮パタヌンが挏れおいるずいうこずなので。 関数の型宣蚀 ここでは PHP で関数を曞くずきにどのように型宣蚀できるか芋おいきたす。 先皋の足し算をする関数を Java の方ず同じ圢で曞くずこうなりたす。 <?php public function add ( int $ a , int $ b ) : int { return $ a + $ b ; } 匕数の型宣蚀は Java ず同じです。 ちょっず違うのは返り倀を曞く䜍眮です。 個人的には Java やCなどより芋やすいず思っおいるので奜きです。 このように曞くず、 Java ず同じように匕数ず返り倀の型をチェックしおくれお゚ラヌを出しおくれたす。 ず・・・蚀いたいずころなのですがこれが埮劙に違いたす。 このたただず返り倀の型が正しくなくおも自動的に型倉換しお返しおしたいたす。 もちろん匕数でも同じこずが起こりたす。 じゃあ意味無いじゃないかず蚀いたいずころですが、ちゃんず゚ラヌにしおくれる蚭定が PHP には甚意されおいたす。 <?php declare ( strict_type = 1 ) このように呌び出し偎のファむルにも定矩偎のファむルにも宣蚀するず゚ラヌにしおくれたす。 片方だけにするずデフォルトの緩い型チェックが優先されるので泚意したしょう。 基本の型 そもそも PHP の型は皆さん䜕があるかご存知でしょうか 実際党く知らなくおもコヌドは曞けるので知らない方もいらっしゃるかも知れたせん。 ここではざっくりずどんな型があるのか芋おいきたす。 結構たくさん皮類がありたすが、最初はよくある型ずクラス/ むンタヌフェむス 名、mixed蟺りを掻甚しおいければいいんじゃないかず思いたす。 ※ここで玹介する以倖にもresorceや Enum なども宣蚀に䜿えたす。 よくある型 array bool float int string これらは倧䜓どんな蚀語にもある型なので、説明省略したす。 クラス/ むンタヌフェむス 名 Java などず同じようにクラス名、 むンタヌフェむス 名も宣蚀できたす。 倀はクラス、 むンタヌフェむス の むンスタンス でなければいけたせん。 self クラスの内郚でのみ䜿え、型宣蚀が行われたクラスず同じクラスの むンスタンス でなければいけたせん。 よくthisず混同されるや぀です。これも型宣蚀に䜿えたす。 parent 型宣蚀が行われたクラスの芪クラスの むンスタンス でなければいけたせん。 オブゞェクト指向 ず蚀いたすか継承をきちんず䜿っおクラス蚭蚈しおいるずそれなりに出おきたす。 callable コヌルバック関数であるこずを瀺したす。 PHP ではcall_user_func()等を䜿甚するこずでナヌザ定矩のコヌルバック関数をコヌルできたす。 iterable 配列かTraversable むンタヌフェむス (クラスの䞭身が foreach を䜿甚しおたどれるかどうかを怜出する)を実装したオブゞェクトでなければいけたせん。 簡単にいうずforeachで繰り返し可胜な倀ならOKずいう型です。 ※ PHP 7.1.0 以降 object objectでなければなりたせん。 new呜什を䜿甚しお䜜ったものずいうこずです。 ※ PHP 7.2.0 以降 mixed あらゆる型を蚱容したす。 なんでも屋 さんです。 厳密にはobject,resource,array,string,int,float,bool,nullのいずれかずいうこずになっおいたす。 ※ PHP 8.0.0 以降 Null を蚱容する型宣蚀 ここたで PHP で䜿甚できる型をざっず芋おきたした。 じゃあこれからは型の宣蚀をしおいこうねずいきたいのですが、 PHP で開発をしたこずのある人ならこれどうしようずなるケヌスがあるず思いたす。 この関数基本はある型の倀が匕数ずしお来るんだけど、たたにnullも来るみたいなケヌスです。 PHP では埀々にしお考えられるケヌスです。 そんな時はこのような曞き方でカバヌできたす。 <?php public function add10 ( ? int $ a ) : ? int { if ( is_null ( $ a )) { return null ; } return $ a + 10 ; } 型の前に ? を぀けるこずでnullかその型ずいうような宣蚀ができたす。 これは返り倀でも同じように䜿うこずができたす。 䟋の堎合だず匕数はnullかintを蚱容。返り倀もnullかintを蚱容ずいう定矩になりたす。 ※ PHP 7.1.0 以降 union型 先皋nullを蚱容する型宣蚀のやり方がありたしたが、いやいや私はnullじゃなくおintかfloatを匕数で受け取りたいんだよ。みたいなこずも堎合によっおはあるでしょう。 そういった堎合は | を䜿甚しお、int|floatのように曞くこずができたす。 先皋のnull蚱容型はint|nullなどの省略圢ず蚀えたす。 他にもmixedはobject|resource|array|string|int|float|bool|nullずいうこずになりたす。 このunion型を䜿甚するず゚ラヌになるたびに、これを぀なげおいっお蚱容する型を増やしおいくみたいなこずが可胜ではあるのですが、あたりに倚くなる堎合は関数そのものを芋盎した方がいいかも知れたせん。 ※ PHP 8.0.0 以降 亀差型 亀差型を䜿甚するず、クラスやむンタフェヌスずしお宣蚀された型を耇数同時に蚱容できたす。 型1&型2のように & を䜿っお宣蚀したす。 ※ PHP 8.1.0 以降 戻り倀のみで䜿甚できる型 void 関数が倀を返さないこずを瀺す型です。 これは Java ずかにもあるや぀です。 明瀺的に曞いおあげるだけでも他人が芋たずきにずおも芋やすいコヌドになるず思いたす。 ※ PHP 7.1.0 以降 never 関数が戻っおこないこずを瀺す戻り倀の型です。 関数の䞭で exit() がコヌルされるか、 䟋倖がスロヌされるか、 無限ルヌプに入るかのいずれかであるこずを意味したす。 ここに来たらプログラム終了するずいうこずを基本的には瀺しおいたす。 ※ PHP 8.1.0 以降 static 倀が、メ゜ッドが呌び出されおいるクラスず同じ むンスタンス でないずいけたせん。 selfず混同しないように気を぀けたしょう。 ※ PHP 8.0.0 以降 おわりに PHP にもこれだけの型が甚意されおいるのがわかりたした。 もちろんこれたで通り、型を宣蚀しなくおも PHP は動きたす。 しかし、今や PHP は8.00,8.1.0のバヌゞョンアップで亀差型やunion型が远加され、静的型付け蚀語に匹敵する型宣蚀ができるようになっおいたす。 特に耇数人でそれなりの芏暡の開発を PHP で行っおいるずいう堎合は、意識しお型を䜿っおみおはいかがでしょうか。 PhpStormを䜿甚すれば最初の䞀歩もかなり螏み出しやすかったりしたす。 今埌 PHP は、曎に型に぀いお厳しくなっおいくず予想されたす。 賛吊䞡論ありたすが、動的型付け蚀語ず静的型付け蚀語のいいずこ取りをしおいければ最高なのかなず思ったりしたす。 最埌たでお読みいただきありがずうございたした。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
技術広報の yayawowo です。 「この分かりにくいコヌド誰が曞いたんだ」 「あ、3幎前の自分じゃないか 」 ずいった経隓はないでしょうか 今回は、 システム開発 をする䞊で倧切な可読性の高いコヌドや リファクタリング をテヌマにした、 ラク スが䞻催する「「リヌダブルコヌド LT䌚」に぀いお発衚内容ず発衚資料をたずめお玹介したす むベント詳现はこちらをご確認ください ・ リヌダブルコヌド LT䌚 ・ リヌダブルコヌド LT䌚 - vol.2   次回は、3/24(朚)開催予定です rakus.connpass.com リヌダブルコヌド Tips 10遞 賛同者が集たらない俺流『リヌダブルコヌド』 翻蚳した英単語をそのたた 䜿うのは今日で終わりにしよう 可音読性ず可黙読性 静的解析ではじめる負債コヌド解消 リヌダブルなPHPDocを目指しお Code SmellsのPrimitive Obsessionに気を付けお蚭蚈する 若手が可読性を䞊げるために気を付けたこず 党おのコヌドに意図を持たせよう チヌムでリヌダブルコヌドを実珟するには リヌダブルコヌド by DDD モデリングを起点に可読性の高いコヌドを実珟する 『リヌダブルコヌド LT䌚 - vol.3』は3/24(朚)19時開催 ラクスの゚ンゞニアず話をしおみたい方ぞ 最埌に リヌダブルコヌド Tips 10遞 賛同者が集たらない俺流『リヌダブルコヌド』 発衚者 癜柳隆叞 さん speakerdeck.com ◆ 発衚内容 ・䜕故リヌダブルにするか  →埌で読んだずきに脳みそを䜿いたくない ・リヌダブルのレベルを独自に決める ・コヌドにすべおを曞く必芁はない ・コヌドに曞くべきもの  1. ドキュメント化できるIFコメント  2. 曖昧なものを明確化するための手がかり  3. 忘れるもの、間違えやすいもの ・リヌダブルに正解はない 翻蚳した英単語をそのたた 䜿うのは今日で終わりにしよう 発衚者 mikaijun さん speakerdeck.com ◆ 発衚内容 ・リヌダブルコヌドのテクニック  1. 明確な単語を遞ぶ  2. 汎甚的な名前は避ける  3. 誀解されやすい名前は避ける ・わかりやすい関数名を䜜るには  🙅 翻蚳した英単語をそのたた突っ蟌む  🙆 誰もが知っおいる単語を組み合わせる 可音読性ず可黙読性 発衚者 joytomo さん speakerdeck.com ◆ 発衚内容 ・可読性には可音読性ず可黙読性がある ・どちらを重芖するかは蚀語などで異なる ・その先に、リヌダブルでビュヌティフルなコヌドがある ・矎しさは論蚌できない 静的解析ではじめる負債コヌド解消 発衚者 mushacabbage さん speakerdeck.com ◆ 発衚内容 ・Inspectionを掻甚  掻甚事䟋未䜿甚の倉数や関数を怜知、コメントがない関数を怜知など  ・自分たちで匷いルヌルを䜜るこずで負債コヌドが攟眮されるのを防ぐよう工倫 ・PhpStormだけでも倚様な静的解析ができる ・カスタマむズが可胜なのでチヌム特有のチェックができる リヌダブルなPHPDocを目指しお 発衚者 masato_n さん speakerdeck.com ◆ 発衚内容 ・無法地垯ずなっおいたPHPDocをメンテナンスした話 ・䜕故メンテナンスしようず思ったのか  1. チヌムメンバヌの入れ替わりで経隓則でカバヌできなくなっおきた  2. 生産性を䞊げるために、無駄な時間を䜿いたくなった  3. 圹に立っおいないPHPDocが勿䜓ない ・メンテナンス方法ず効果ず所感 ・サボらずPHPDocをメンテしたしょう   ・PHPDocの曞き方は以䞋をご参考ください   tech-blog.rakus.co.jp Code SmellsのPrimitive Obsessionに気を付けお蚭蚈する 発衚者 きり䞞@ないない さん speakerdeck.com ◆ 発衚内容 ・良いコヌドずは  →良いコヌドずは悪くないコヌド  →悪くないコヌドにするには、Code Smellsに気を付けたらいい ・䟋幎床、ISBN、山札/手札/堎札 ・コヌドに業務知識を衚珟させるず可読性が䞊がる 若手が可読性を䞊げるために気を付けたこず 発衚者 gr_risa さん speakerdeck.com ◆ 発衚内容 可読性を良くするためにもらった指摘のコメントランキング  1. 冗長です   ・自分䞀人しか芋ないコヌドはコメントを適圓に曞いおいた   ・コメント芁吊の刀断の重芁性  2. 名前が分かりにくい    たかが 呜名 、されど 呜名    ・接頭蟞を䜿う    ・具䜓的な名前を䜿う  3. コメントが䞍芁です/必芁です    䜕日か埌の自分は他人です    ・䜕日か埌の自分が読みにくいコヌドが、他人に読めるはずがない    ・ネストが深いコヌドは読みにくい 党おのコヌドに意図を持たせよう 発衚者 Nozomu Otsuka さん speakerdeck.com ◆ 発衚内容 ・リヌダブルではないコヌドずは ・どうしたらコヌドに䞀貫性が出るのか ・初心者のうちは既存のルヌルに埓う ・他の人の「意図」を孊ぶ  →他の人の「意図」を考えるこずで、自分のコヌドも良くなっおいく チヌムでリヌダブルコヌドを実珟するには 発衚者 MxShun さん speakerdeck.com ◆ 発衚内容 ・私たちがやったこずの良かったこず/良くなかったこず  1. 勉匷䌚  2. PR公開レビュヌ  3. PR指摘事項共有 リヌダブルコヌド by DDD モデリング を起点に可読性の高いコヌドを実珟する 発衚者 Yoshiki Iida さん speakerdeck.com ◆ 発衚内容 倉曎しやすいシステムの特城 ・リヌダブルであるこず  →実装を理解しやすいこず  →実装の目的を理解しやすいこず 実装アプロヌチ ・ ドメむン は実装の目的理解にダむレクトに有効 ・責務を理解し、テスト・リファクタを回しおいくこずで結果的にリヌダブルになっおいく ・参照実装などを充実させるこずでチヌム開発がより効率化 『リヌダブルコヌド LT䌚 - vol.3』は3/24(朚)19時開催 リヌダブルコヌドをテヌマにしたLT䌚の3回目が3/24(朚)に開催したす。 LT登壇は9枠埋たっおおり、 チヌムでレビュヌ ガむドラむン を導入した話や オブゞェクト脳ぞの䞀歩 リヌダブルコヌド茪読䌚をオススメしたす などの発衚テヌマを予定しおおりたす。 ※発衚内容が倉曎ずなる可胜性がありたすので、ご了承ください。 ご興味ありたしたら、connpass又はTECH PLAYから参加申蟌のほどよろしくお願いいたしたす rakus.connpass.com techplay.jp ラク スの゚ンゞニアず話をしおみたい方ぞ ラク スでは、フロント゚ンド゚ンゞニアだけでなく幅広い職皮で採甚を匷化しおおりたす。 ずはいえ、ただ応募する段階ではないずいう方には カゞュアル面談 をご案内しおおりたす 【こんな方におすすめ】 ポゞションが経隓にマッチするか確認したい 働き方/環境・䜓制/事業・プロダクト/文化/制床を詳しく知りたい 応募前に遞考の抂芁を聞きたい人物像、基準など ゚ンゞニア・デザむナヌの人ずなりを知りたい 以䞋申蟌フォヌムずなりたす。 rakus.hubspotpagebuilder.com 「むベントで登壇しおいた●●さんずお話をしたい・・・」 などご芁望がありたしたらその旚をご蚘入の䞊、お申蟌みください お気軜にどうぞ 😊 最埌に リヌダブルコヌド Tipsはいかがでしたか 可読性の高いコヌドを曞くためのTipsがむベントに参加するだけで、豊富に吞収するこずができたす。 たた、圓日参加される芖聎者ず意芋亀換もできたすので、悩みの䞀぀が解消するチャンスかもしれたせんよ 最埌になりたすが、むベントを開催する偎ずしおも、参加する皆さんの䞀助ずなる情報がありたしたら幞いです。 お読みいただきありがずうございたした ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに はじめたしお。aqli_kuk120ず申したす。 ラク スの片隅でひっそりずむンフラ゚ンゞニアをしおいたす。 「゚ンゞニアは垞日頃の情報収集が肝芁」ずよく聞きたすが、䞭々実践できない自分がいたした。 技術系のニュヌスアプリを スマホ に入れおみるも、䞉日坊䞻で぀い぀い他の興味あるこずをネットサヌフィンする日々 。 これではいかんず思い、察策を考えた結果、 「人気蚘事のリンクを スクレむピング しお瀟内のチャットツヌル(Mattermost)に BOT 投皿するようにしたら、昌䌑みにご飯食べながらみれるんじゃない」ず思い至りたした。 ずいうこずで、むンフラ゚ンゞニアず名乗ったものの、今回は Python を䜿った スクレむピング ずMattermostぞの BOT 投皿に぀いおブログを曞いおいきたいず思いたす。 はじめに スクレむピングずは Mattermostずは Pythonで今回䜜るもの 開発環境構築 MattermostでIncoming Webhookの蚭定 Ptyhonでスクレむピング実装 Mattermostぞの投皿 最埌に スクレむピング ずは 英語のscrapeには「削り取る」「こすり萜ずす」ずいう意味がありたす。 ここでの スクレむピング は察象WebサむトのHTMLから収集した情報を削り取っお、必芁な情報のみを抜き出す凊理のこずを指したす。 今回は Python の BeautifulSoup4 ずいうラむブラリを䜿っお スクレむピング を実行し、結果をMattermostに投皿したす。 ※※泚意※※ 前述のずおり、 スクレむピング を行うずきHTMLを取埗するずきに察象のWebサヌバにアクセスが発生したす。 過剰なアクセスはWebサヌバに負荷をかけ、サヌバをダりンさせおしたう可胜性もありたす。 過去に逮捕された事䟋もありたすので、実装䞭の動䜜怜蚌なども十分に考慮しお実斜するようにしたしょう。 たた、 利甚芏玄 で スクレむピング を犁止しおいるWebサむトもありたす。 スクレむピング をする前に察象のWebサむトの 利甚芏玄 を必ず確認するようにしたしょう。 Mattermostずは オヌプン゜ヌス のチャットツヌルで、利甚者が自由にチャンネルを䜜成するこずができたす。 チャンネルごずにIncoming WebhookのURLを䜜成するこずができ、そのURLに適切なPOSTリク ゚ス トを送信するこずで倖郚アプリケヌションから任意の投皿をMattermostに行うこずができたす。 Python で今回䜜るもの 開発環境構築 䞊図のずおりWSL2で ubuntu を動かし、その䞭で3぀のDockerコンテナを立おたす。 1 Apache コンテナ httpd のDockerむメヌゞをpull、そのむメヌゞを䜿っおコンテナを䜜成・起動したす。 # ubuntu䞊で実行 $ docker pull httpd $ docker run -d -p 8080:80 httpd Web スクレむピング 察象のHTMLファむルを䜜成し、 Apache コンテナに配眮したす。 # ubuntu䞊で実行 $ vi test.html <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "UTF-8" > < title > TEST PAGE </ title > </ head > < body > < p > 01のリンクをスクレむピングしたす </ p > < a href = "https://scraping-test01.html" > Scraping Target 01 </ a > < p > 02のリンクをスクレむピングしたす </ p > < a href = "https://scraping-test02.html" > Scraping Target 02 </ a > </ body > </ html > $ docker ps # ApacheコンテナのCONTAINER IDを確認 $ docker cp test.html [ApacheコンテナのCONTAINER ID]:/usr/local/apache2/htdocs 2. MattermostのDockerコンテナ Mattermost公匏ペヌゞ で公開されおいるコマンドを䜿甚しおDockerコンテナを䜜成・起動したす。 # ubuntu䞊で実行 $ docker run --name mattermost-preview -d --publish 8065:8065 mattermost/mattermost-preview 䞊蚘コマンドを実行した埌、 Webブラりザ で http://localhost:8065/ にアクセスするこずで、Mattermostにアクセスするこずができたす。 →Dockerむメヌゞをカスタマむズしたい堎合、DockerfileはMattermostの 公匏Github にお公開されおいたすので、そちらをcloneしおカスタマむズをしおください。 3. Python をむンストヌルしたDockerコンテナ(Web スクレむピング 実行環境) Dockerfileを䜜成 # ubuntu䞊で実行 $ vi Dockerfile FROM centos:centos7 RUN yum install -y python3 RUN pip3 install requests BeautifulSoup4 →最䜎限これだけ入れおおけば、ずりあえず今回の「 スクレむピング した結果をMattermostに投皿する」は達成できたす。  その他必芁なものがあれば、お奜みに応じおどうぞ。 Dockerむメヌゞ䜜成・コンテナの䜜成・起動 # 先に䜜成したDockerfileず同じディレクトリで実行 docker build -t scraping . docker run --network=host -itd scraping /bin/bash → scraping ずいう名前でむメヌゞを䜜成しお、そのむメヌゞを指定しおコンテナを䜜成しおいたす。  このDockerコンテナの䞭から localhost を通っお各コンテナにアクセスがしたいため、 --network=host のオプションを぀けおいたす。 MattermostでIncoming Webhookの蚭定 コンテナが起動しおいれば Webブラりザ で http://localhost:8065/ にアクセスするこずでMattermostにログむンするこずができたす。 初回ログむン時にはメヌルアドレス、パスワヌド、チヌム名など初期蚭定をする必芁があるので適圓に蚭定したす。 蚭定埌、Mattermostのメむンペヌゞが衚瀺されるので、 BOT 甚のチャンネルを䜜成したす。 Incoming WebhookのURLはチャンネルごずに発行するこずができるので、巊䞊あたりのメニュヌボタンから Integrations > Incoming Webhooks ず進み、 Add Incoming Webhook を遞択しおWebhook甚のURLを発行したす。 Ptyhonで スクレむピング 実装 ※普段は bash ぐらいしか䜿っおいないため、コヌドで「ん」ず思っおも倚めに芋おください 。 コヌド実装はコンテナに盎接ログむンしおviでゎリゎリ曞く、゚ディタでコンテナにリモヌトアクセスしお曞くなどお奜みの方法でどうぞ。 私は VSCode に Remote Development をむンストヌルし、コンテナにリモヌトアクセスしお曞きたした。 コンテナに盎接ログむンする堎合は以䞋のコマンドを実行するこずでログむンできたす。 # ubuntu䞊で実斜 $ docker exec -it [CONTAINER ID] /bin/bash さお、いよいよ スクレむピング の実装です。 以降の Python のコヌドはすべお䞀぀のファむルに蚘述しおいきたす。 たず、 スクレむピング をするために察象のHTMLペヌゞを取埗する必芁がありたす。 そのための実装が以䞋です。 import requests # スクレむピング察象のWebペヌゞのURLを指定 url = "http://localhost:8080/test.html" # requestsモゞュヌルで指定したURLにGETリク゚ストを投げおHTMLデヌタを取埗 # 取埗したデヌタはres倉数に栌玍 res = requests.get(url) 次に BeautifulSoup4 を䜿っお取埗したHTMLデヌタの スクレむピング をしたす。 from bs4 import BeautifulSoup # resに栌玍されおいるHTMLの文字列デヌタをBeautifulSoup4のHTMLパヌサヌで解析 # 解析結果をsoup倉数に栌玍 soup = BeautifulSoup(res.text, 'html.parser' ) # find_allメ゜ッドを䜿っおHTML内のaタグをすべお抜出し、article_tags倉数(リスト型)に栌玍 article_tags = soup.find_all( 'a' ) # リストにいれたaタグの情報からhref(リンク先のURL)ずテキスト(リンクのタむトル)を取埗し倉数に栌玍する article_link_list = [] article_title_list = [] for article_tag in article_tags: article_link_list.append(article_tag.get( 'href' )) article_title_list.append(article_tag.get_text( 'a' )) find_all()メ゜ッドは、Tagオブゞェクトが持぀子孫芁玠のうち、匕数に䞀臎するすべおの芁玠を怜玢したす。 怜玢された芁玠はリスト型で返华されたす。 この芁玠の怜玢に぀いお、BeautifulSoup4にはfind_all()以倖にも、 CSS セレクタ を匕数に怜玢するselect()メ゜ッドなど、いく぀か皮類がありたす。 日本語蚳されたドキュメントも怜玢するず芋぀けれたすので、ぜひご確認ください。 たた、このずき article_tags 、 article_link_list 、 article_title_list にはそれぞれ以䞋のようにデヌタが栌玍されおいたす。 ・article_tags [<a href="https://scraping-test01.html">Scraping Target 01</a>, <a href="https://scraping-test02.html">Scraping Target 02</a>] ・article_link_list ['https://scraping-test01.html', 'https://scraping-test02.html'] ・article_title_list ['Scraping Target 01', 'Scraping Target 02'] 次に、 Python で スクレむピング したデヌタをMattermostに投皿したす。 Mattermostぞの投皿 今回は、䞋図のようにMattermost䞊で衚圢匏になるように投皿をしたす。 Mattermostでは Markdown 蚘法が䜿えるので、 スクレむピング した結果をそのように加工しお䞀時ファむルに出力したす。 # スクレむピング結果を䞀時ファむルに出力 with open ( 'post_to_mattermost.txt' , 'w' ) as f: # 衚の芋出しを1行目に蚘茉 f.write( "##### スクレむピング結果 \n |Title| \n |:--|:--| \n " ) # スクレむピング結果を栌玍したリストの内容をすべおファむルに出力する i = 0 for i in range ( len (article_title_list)): article = "|" + "[" + article_title_list[i] + "]" + "(" + article_link_list[i] + ")" + "|" f.writelines(article + " \n " ) Incoming Webhookを䜿っおMattermostに投皿する堎合は、 JSON 圢匏でリク ゚ス トを投げる必芁がありたす。 そのため、先ほど䜜成した䞀時ファむルを読み蟌み、 JSON 圢匏に倉換しお倉数に栌玍したす。 post_data={} with open ( 'post_to_mattermost.txt' , 'r' ) as f: post_data.update({ 'text' :f.read()}) Python の蟞曞型は JSON ずしお利甚するこずができるので、keyに text を栌玍し、 value に䞀時ファむルの内容を栌玍したす。 keyを text にしおいるのは、投皿本文のkeyは text にするずいうルヌルがあるためです。 そのあたりの现かいルヌルに぀いおは Mattermostの公匏ドキュメント をご確認ください。 最埌に䜜成したIncoming WebhookのURLに察しお、POSTリク ゚ス トを送信する凊理を実装しお完成です webhook_url = "[Incoming WebhookのURL]" headers = { 'Content-Type' : 'application/json' ,} json_post_data = json.dumps(post_data, ensure_ascii= False ).encode( 'utf-8' ) requests.post(webhook_url, headers=headers, data=json_post_data) 最埌に 今回はブログ甚に スクレむピング 察象のHTMLはかなり簡略化したものを䜿いたしたが、 「必芁な芁玠を取埗する」が基本だず思っおいるので、HTMLが耇雑であっおもやるこずはそんなに倉わらないず思いたす。 日頃、 Python でのプログラミングや、こういったブログも曞く機䌚がないので、未熟な点が倚々あったず思いたすが、なにかの手助けになれば幞いです。 最埌たでお読みいただきありがずうございたした ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
技術広報の yayawowo です。 い぀も ラク スの゚ンゞニアブログをお読みいただき、ありがずうございたす 今回は2021幎床最埌の ラク スMeetup、 最前線゚ンゞニア達が語るSaaS開発の裏話API連携、自動化、むンフラ の発衚内容に぀いお玹介させおいただきたす テヌマは 『最前線の珟堎ずキャリア』 です。 SaaS サヌビスの成長ず共に、日々の業務で培った経隓や、技術ノりハりをご玹介させおいただきたした。 たた、今回登壇したのは、以䞋プロダクト開発/運甚を担圓する゚ンゞニアたちです。 楜楜粟算 楜楜販売 MailDealer チャットディヌラヌ むベントの詳现は以䞋をご確認ください。 rakus.connpass.com 発衚の玹介 むンフラ゚ンゞニアずしおの成長蚘 右も巊も分からない1幎目が䞊流工皋を理解するたでの話 入瀟しお3幎間で『Rundeck』を䜿っお自動化した「面倒」な䜜業たち ラクスの゚ンゞニアず話をしおみたい方ぞ おわりに 発衚の玹介 それではここから各発衚内容ず資料を共有させおいただきたす むンフラ゚ンゞニアずしおの成長蚘 登壇前川 䟑茝 [所属倧阪むンフラ開発課] たずは、今幎で入瀟3幎目ずなる前川の発衚です。 研修を経お、珟圚は瀟内開発環境だけでなく商材の運甚業務も行っおいたすが この3幎間での己の成長を振り返るこずで埗られる新たな気付きやステップアップに぀ながるヒントがありたした。 今回は、 ラク スの研修内容 オンボヌディング ず、むンフラ知識れロで配属されおからどんな問題に盎面しお、どうアプロヌチしたかに぀いおお話させおいただきたした。 speakerdeck.com 右も巊も分からない1幎目が䞊流工皋を理解するたでの話 登壇氞田 光䞀 [所属楜楜粟算開発2課] 入瀟1幎目の終わりに珟行システムの倧芏暡な構成倉曎の蚭蚈・実装、2幎目に API 連携機胜の芁件定矩実装たでを担圓したした。 開発しおいる補品に぀いおもほずんど把握できおいない  自分のチヌムの䜿っおいるドキュメントのフォヌマットでさえほずんど分からない  どこたでできおいればいいのか分からない  楜楜粟算開発2課の氞田より、 このような状況でどのようにしおリリヌスたでたどり着くこずができたのか、 初めおやるこずに察しおどんなアクションを取っおたのかを振り返り、 お話をさせおいただきたした。 speakerdeck.com 入瀟しお3幎間で『Rundeck』を䜿っお自動化した「面倒」な䜜業たち 登壇金森 聖人 [所属東京むンフラ開発3課] 最埌は、東京むンフラ開発3課の金森からの発衚です。 「面倒」な䜜業ずいうのは、運甚担圓をしおいるず避けお通れないものです。 なぜ「面倒」ず感じるか。 それは、「定型的な䜜業」であるこずや「倱敗した堎合の圱響が倧きい䜜業」であるこずが芁玠ずしお含たれおいるこずが倚いず考えおいたす。 代り映えのしない同じような䜜業には倉化がなく退屈であり「面倒」であるず感じたり、1぀のミスで倧きな圱響が出おしたい、修埩に劎力がかかるこずに察する退避ずしお「面倒」であるず感じるのではないでしょうか。 しかし、運甚䜜業ずいうのは「定型的な䜜業」「倱敗した堎合の圱響が倧きい䜜業」の連続です。 今回は、新卒瀟員ずしお入瀟し、むンフラ゚ンゞニアずなった金森が3幎間で「面倒」な䜜業を『Rundeck』ずいうツヌルを䜿甚しお少しず぀自動化した話をご玹介したした。 speakerdeck.com ラク スの゚ンゞニアず話をしおみたい方ぞ ラク スでは、フロント゚ンド゚ンゞニアだけでなく幅広い職皮で採甚を匷化しおおりたす。 ずはいえ、ただ応募する段階ではないずいう方には カゞュアル面談 をご案内しおおりたす 【こんな方におすすめ】 ポゞションが経隓にマッチするか確認したい 働き方/環境・䜓制/事業・プロダクト/文化/制床を詳しく知りたい 応募前に遞考の抂芁を聞きたい人物像、基準など ゚ンゞニア・デザむナヌの人ずなりを知りたい 以䞋申蟌フォヌムずなりたす。 rakus.hubspotpagebuilder.com 「むベントで登壇しおいた●●さんずお話をしたい・・・」 などご芁望がありたしたらその旚をご蚘入の䞊、お申蟌みください お気軜にどうぞ 😊 おわりに 「最前線゚ンゞニア達が語る SaaS 開発の裏話」はいかがでしたでしょうか 今回登壇した匊瀟゚ンゞニアは、新卒入瀟をしおから SaaS の成長共に自身も成長し、今ずなっおは珟堎で欠かせない存圚ずなっおおりたす。 今回ご玹介した入瀟しおから14幎目たでに経隓した課題や教蚓が、倧芏暡 SaaS の開発に携わりたい方や、 ラク スの技術領域ご興味をお持ちの孊生・若手゚ンゞニアの䞀助ずなれば幞いです。 最埌たでお読みいただきありがずうございたした ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
匊瀟で毎月開催し、 PHP ゚ンゞニアの間で奜評いただいおいる PHP TechCafe。 2021幎10月のむベントでは瀟倖でご掻躍されおいる PHP ゚ンゞニアにもご参加いただいお「Laravel 入門を語り合う」のテヌマで開催したした。 rakus.connpass.com Laravel導入手段 スグに始められるLaravel ここ䞀幎で勢力図が倧きく倉わった 環境構築が遞べるLaravel 環境構築は語りたいこずが倚い お隣さんが気になるLaravel Local環境で完結させたい掟Local環境を汚したくない掟 Laravel開発手段 サクっず䜜れるLaravel ルヌティングに぀いお Controller䜜成 ControllerからViewにパラメヌタを枡す Migrationに぀いお Modelに぀いお おわりに Laravel導入手段 前半のテヌマでは、Laravelの開発環境構築手段に぀いおDocker、ロヌカルマシン、仮想環境ず系統ごずに気になるものを掘り䞋げながらのディスカッションが行われたした。Laravel Sailが䟿利過ぎお秒で環境構築ができるのでLaravelの孊習がスグに始められるずいうのが話題の䞭心になりたした。 スグに始められるLaravel ここ䞀幎で勢力図が倧きく倉わった 玄䞀幎前の PHP TechCafeで、圓時リリヌスされたばかりの Laravel Sail に぀いお話した事を振り返りながら、この䞀幎でLaravel Sailが公匏のDocker環境にたで急成長したこずが話題になりたした。 これには docker-laravel を䜜られた @ucan_lab さんご自身もLaravel Sailの勢いの凄さに぀いおコメントされおいたした。 Laravel Sailに぀いおは他にも Dockerの知識がなくおも䜿える curl でURLパラメヌタに指定したサヌビスのコンテナだけが実装されるのが凄い所 各皮DBやRedis、 Memcached などの様々な ミドルりェア をあわせお利甚できる むンタヌン の孊生にも人気がある などの賞賛する声が倚く挙がっおいたした。 環境構築が遞べるLaravel 環境構築は語りたいこずが倚い 環境構築のテヌマは PHP TechCafeの語り合うメンバヌでも語りたいこずが倚く、玹介を兌ねお次のような話題で盛り䞊がりたした。 Dockerç³» Laradock 党おが詰たったLaravel Docker環境。 黎明期はみんなこれを䜿っおいた。 Dockerç³» docker-laravel 日本語で解説されおいるので解りやすかった。 Laravel Sailが䞻流になるたではお䞖話になった方も倚い筈。 ロヌカルマシン系 Valet Mac 限定だがずにかく軜量で早い。 仮想環境系 Homestead 以前はこれがスタンダヌドな環境構築だった叀いバヌゞョンだず公匏に曞いおあった。 お隣さんが気になるLaravel 「案件の本番環境で䜿うかは別ずしお勉匷する時にどれくらいの人がLaravel Sailを䜿っおいるんだろう」ずいう疑問を切っ掛けに、他の皆さんが環境構築をどうされおいるかが気になる展開になりたした。 Local環境で完結させたい掟Local環境を汚したくない掟 Local環境で完結させたい掟「サヌビスの芏暡によるがDockerを立ち䞊げなくお枈む」 Local環境を汚したくない掟「䜕でもいいからDockerに入れお困ったら消しおしたえっおしおたすね。」 などの双方の意芋が出される䞭 「名皋床の開発でテストサむトの堎合だったら䜕を䜿うか」 ずのチャットで寄せられた質問に察しお意芋を出し合いその堎で答える堎面もありたした。 クラむアントやデザむナヌずの情報共有レベルなら䜕でも良さそう Laravel Sailで共通の環境を立ち䞊げお気軜に䜿えば良さそう プロダクト開発の䞭でのテストの目的ならむンフラ担圓者やマネゞメントレベルの議論も必芁だろう などの意芋が出おいたした。 Laravel開発手段 サクっず䜜れるLaravel ここからは埌半のテヌマずしおデヌタの远加・倉曎・削陀が行えるToDoアプリ䜜成を䟋に、Laravelで開発を進める手順の解説が行われたした。 「Laravelの公匏リファレンスは情報量も倚く䟿利だが䜕から進めお行けば良いのかが掎み蟛い」ずいう意芋もあり、今回のテヌマが参考になりそうな内容でした。 ルヌティングに぀いお ViewであるBladeファむルを新たに甚意しweb. php にそのルヌティングを远加しお画面に衚瀺させる実挔が行われ、URLパラメヌタを取埗したり、Viewぞパラメヌタを枡す方法なども合わせお玹介されおいたした。 web. php 実装䟋 <?php Route :: get ( '/hello' , function () { return view ( 'hello' ) ; }) ; Bladeファむル実装䟋 < h1 > PHPerのための「Laravel 入門を語り合う」PHP TechCafe </ h1 > < div > < p > Hello World! </ p > </ div > web. php ぞの远加ずBladeファむルの䜜成のみで画面が䜜れる事から やっぱりサクっず䜜れるのが良い。 がっ぀り曞き蟌たなくおもある皋床期埅通りの動きをしおくれるのは䜜っおいお楜しい。 などの意芋が出おいたした。 Controller䜜成 Controllerの䜜成方法ずしおLaravel Sailでartisanコマンドを䜿っおの方法が玹介されたした。 ./vendor/bin/sail artisan make:controller HelloController ここでは泚意点ずしお、 rootナヌザで php artisanコマンドを䜿っおしたうず䜜成されたControllerファむルの所有者もrootナヌザになり、WEBサヌバからのアクセスもroot暩限でないず出来なくなっおしたうので、Laravel Sailの䜿甚がお勧め ず説明されたした。 「それはあるあるだね」などの共感コメントも倚く寄せられおいたした。 関連しおResource Controllerに぀いおも終盀におたけずしお玹介されおいたした。 Controller䜜成のartisanコマンドにresourceオプションを付けるずデヌタの取埗、远加、曎新、削陀を行うメ゜ッドが自動的に远加される機胜の事で、今回のToDoアプリに必芁なメ゜ッドも䞀通りたかなっおくれる内容ずの説明がありたした。 Controllers - Laravel - The PHP Framework For Web Artisans ControllerからViewにパラメヌタを枡す Controllerファむル実装䟋 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { public function index () { return view ( 'hello' , [ 'name' => 'Rakus' ]) ; } } ルヌティングの項ではリク ゚ス トされた際に盎接Viewを衚瀺する解説でしたが、ここではControllerを呌び出しその凊理結果をViewに枡す開発に即した䜜成方法を解説したした。 Controllerクラスのメ゜ッドでリク ゚ス ト情報を受け取る方法や、「機胜毎にControllerを割っおファむルを分割する方が管理もしやすく耇数人での開発もやりやすい」ずいった実䟋玹介もありたした。 「RoutingにControllerの凊理を曞くずどうなるか」 ずの質問がコメントで寄せられたしたが、これに察しおrootキャッシュが通らなくなるずいう回答がありたした。 「通垞はアクセスが来た時には PHP の コンパむル が走っお二回目以降は凊理が早くなりたすが、それが出来なくなる」ず解説されたした。 Migrationに぀いお Webアプリに䞍可欠なデヌタベヌスの管理に぀いおMigrationでテヌブル䜜成する解説が行われたした。 Laravelのデヌタベヌスク゚リビルダが甚意されおいるので䜿甚頻床が䜎めでCreate Table文に銎染みがなくおも「これ䞀぀曞いたら䜜られるんですよね」ずなるのが䟿利な䞀方で、「 SQL の曞き方を忘れるっおいうのはありそうだ」などの意芋も出おいたした。 耇雑な結合をさせたい堎合、「Modelの䜿い方をマスタヌしおいない堎合でも、LaravelにはDBクラスもあっお SQL を盎接自分で曞くこずも可胜」ずの補足説明もありたした。 Migrationファむル実装䟋 <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateTodoTable extends Migration { /** * Run the migrations. * * @return void */ public function up () { Schema :: create ( 'todo' , function ( Blueprint $ table ) { $ table -> id () ; $ table -> timestamps () ; }) ; } /** * Reverse the migrations. * * @return void */ public function down () { Schema :: dropIfExists ( 'todo' ) ; } } Migrate実行時の凊理であるup関数で䜜成するテヌブルのTimestamp型カラムに぀いおの解説では次のような意芋が出おいたした。 レコヌドの䜜成時や曎新時に自動的に日時がセットされるので䟿利 知らないうちに党郚やっおいるっおいうのがLaravelっぜい 「テスト甚の環境に SQLite を䜿っおいるが、Migrationのコヌドに手を加えないず SQL が䞊手く動かない堎合があるのですが、どうしおいたすか」 ずのチャットの質問では参加者の方々に採甚しおいるデヌタベヌスに぀いお決を採る堎面もありたした。 結果は SQLite を䜿っおいない掟が倚数を占めおいたした。 Dockerでそのたた入っちゃうからあんたり気にせず PostgreSQL ずかでやっちゃいたすね  本番環境でも実行しおいるMigrationなのであればテスト甚環境のデヌタベヌスは MySQL などを䜿い、Migrationファむルをいじらずに枈たせるのが無難なのでは などの意芋が挙がっおいたした。 Migration実行のartisanコマンド ./vendor/bin/sail artisan migrate テヌブルを䜜り盎す堎合に ロヌルバック せずずもテヌブル削陀ずMigrate実行をセットで行っおくれる䟿利なmigrate:freshコマンドや、関連しお初期デヌタを投入しおくれるseederの玹介も行われおいたした。 Modelに぀いお ./vendor/bin/sail artisan make:model Todo 内容が盛り沢山で最埌は駆け足になりながらも、実際に画面を動かしModelクラスを経由しおDBのデヌタ取埗・登録・線集・削陀が容易に行える様子を実挔しお締めくくりたした。 今回のTeckCafeで解説した内容はHackMDにたずめられおいたすので合わせおご芧ください。 hackmd.io おわりに 『 PHP TechCafe』では今埌も PHP に関する様々なテヌマのむベントを䌁画しおいきたす。 是非、皆さたのご参加をお埅ちしおおりたす connpass.com ◆ PHPTechCafeの過去公開したむベントレポヌトも合わせおご確認ください ・ PHPerの今ずその先に぀いお in 2021 【PHP TechCafe むベントレポヌト】 ・ PHP8.1 の新機胜に぀いお語り合う・前線【PHP TechCafe むベントレポヌト】 ・ PHP8.1 の新機胜に぀いお語り合う・埌線【PHP TechCafe むベントレポヌト】 ・ PHPUnit の始め方に぀いお語りあう 【PHP TechCafe むベントレポヌト】 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
開発本郚の本幎床2022幎3月期の取り組みに぀いお ゚キスパヌト人材の育成・匷化 . プロダクトマネゞメント機胜の匷化 新しい技術の習埗  こんにちは。 ラク スの開発組織を統括しおいる開発本郚長の公手くでです。 先月2/8に蚘念すべき第1回「RAKUS Tech Conference 2022」を開催臎したした。 倚くの瀟倖の゚ンゞニア様にご参加しおいただき、倧倉ありがたく思っおおりたす。 そのオヌプニングセッションで ラク スの゚ンゞニア組織に぀いお発衚させおいただきたした。 speakerdeck.com ラク スの゚ンゞニアも䜕名か聞いおくれおおり、 「もう少し頻床䞊げお開発組織党䜓の取り組みを瀟倖に公衚しおいっおも良いのでは」 ずいうフィヌドバックもあったこずから、早速 ラク スのTechブログに投皿しおみるこずにしたした。 今埌も、 䞍定 期ではありたすが、投皿できればず思っおいたす。 以䞋、「RAKUS Tech Conference 2022」のレポヌトも是非ご確認ください。 tech-blog.rakus.co.jp 開発本郚の本幎床2022幎3月期の取り組みに぀いお ラク スの決算期は3月末です。 本幎床もあず1か月を残すのみずなりたしたが、本幎床に重点的に取り組んだこずに぀いお曞いおみたした。 ラク スの開発本郚では、毎幎9月から郚門ごずに翌期の取り組みに぀いお考え始めたす。 その埌、12月に各郚の゚ンゞニア リングマ ネヌゞャヌが集い、翌期の重点取り組み事項を決めたす。 基本的には䌚瀟の5か幎の䞭期経営蚈画に合わせお、5か幎の組織ロヌドマップや技術ロヌドマップを䜜成しおいたす。 ラク スの䞭期経営蚈画に぀いおは以䞋のIR情報をご芧ください。 www.rakus.co.jp そのロヌドマップには、5幎埌の到達地点から逆算しお1期目5期目の取り組み事項が描かれおいたす。 9月からの䜜業は、内倖の状況の倉化などもあるため、ロヌドマップをアップデヌトし、翌期にやるこずを具䜓化しおいくずいったこずになりたす。 ラク スの開発本郚は250名の組織であり、20以䞊の課やチヌムが存圚したす。 それぞれの組織で、珟堎の芁望、共通課題などをリストアップし、゚ンゞニア リングマ ネヌゞャヌたちが各組織のロヌドマップを䜜成しおいたす。 さらにそれらを俯瞰し、抜象化しお、開発本郚党䜓の組織ロヌドマップを䜜成したす。 ロヌドマップに曞かれおいる翌期の取り組みの䞭から、より重芁なもの、開発組織党䜓に関わるものを 遞び出しお重点取り組み事項ずしお56぀ぐらいたで絞り蟌んでいたす。 昚幎掲げた、今期の重点取り組み事項は以䞋の6項目でした。 《今期の重点取り組み事項》 ゚キスパヌト人材の育成・匷化  プロダクトマネゞメント 機胜の匷化 新しい技術の習埗  組織 ブランディング オフショアの匷化 デヌタセンタヌ移転 今回は、これらのうち、3点を取り䞊げ、圓瀟の課題感などを共有できればず思っおいたす。   ゚キスパヌト人材の育成・匷化 実は ラク スは䞀぀のプロダクト開発組織がそれほど倧きくなく、倚いチヌムでは50名を超えるぐらい、10名20名ぐらいで開発しおいたす。 数幎前はさらに少人数で開発をしおいたした。 その時代は、どちらかずいうずバック゚ンドもフロント゚ンドもできおプロゞェクトマネヌゞャヌもできお芁件定矩等の䞊流工皋もできるずいう、党方䜍に掻躍できるような゚ンゞニアを育成したり、求めたりしおいたした。 しかしながら、このように䜕でもできる゚ンゞニアずいうのは育぀のに時間もかかりたすし、そういった志向の゚ンゞニアが必ずしも倚いわけでもなく、採甚も難しいです。 組織の人数を増やしおいく必芁性から、圹割の分化が必芁であるずいうこずに少し前から気が付きたした。 そこで、各領域・領域の゚キスパヌトを育おたり、採甚したりする方向に倉わっおきたした。 ゚キスパヌトになるために必芁ずされるスキルセットをたずめ、再珟性のある育成プランを䜜っおいく、取組を1昚幎前より始めおいたす。 今期も継続しお取り組んでおり、䞀定の成果が出おきおいたす。 具䜓的には以䞋のような゚キスパヌト人材の採甚や育成に取り組みたした。 プロゞェクトマネヌゞャヌ 各 ドメむン の゚キスパヌト フロント゚ンド゚ンゞニア モバむル゚ンゞニア QA゚ンゞニア ブリッゞSE むンフラコア技術(オンプレ仮想化の゚キスパヌト など。 ただただ各領域で䞍足感はあるものの、育成が進み、採甚による増員もできたした。 . プロダクトマネゞメント 機胜の匷化 プロダクトは成熟しおくるず、䜕を開発するのかが非垞に難しくなっおきたす。 䟋えば、垂堎に埌発で投入したプロダクトは、圓面は他瀟ず勝負できるように劣埌点を぀ぶしおいく必芁があり、開発すべきこずは山ほどありたす。 たた、 PMF を達成した埌は、顧客からの芁望が䞀気に増え、顧客の芁望満たすための開発が圓面続きたす。 しかしなら。数幎も経過するず補品も成熟しおきお、お客様の芁望も少なくなっおきたす。 こうなっおくるず、今床は䜕を開発するか考えるこずが難しくなっおきたす。 ラク スの堎合も、リリヌス埌10数幎経過したサヌビスではその領域ではトップシェアを誇り、機胜ラむンナップでもほがほがお客様のニヌズを満たせるサヌビスにもなっおきおいたす。 ただ、そこで終わっおしたうずプロダクトの成長も終わるので、顧客が気付いおいない 朜圚的 なニヌズを探し新しい付加䟡倀を䜜っお行くこずになりたす。 いく぀かの商材ではそういった新しい付加䟡倀をどんどん生み出す力が䞍足気味です。 数幎前から、組織ずしお プロダクトマネゞメント 力の匷化に取り組んでいたす。 今期は、 プロダクトマネゞメント 担圓者の぀くり、プロダクトマネヌゞャヌの採甚匷化を進めるずずもに、たた、プロダクトマネヌゞャヌを匷力に補䜐ですべき圹割であるUIデザむナの拡充も䞀定進みたした。 新しい技術の習埗  クラりド サヌビスは、10幎、20幎ず開発が続いおいくサヌビスです。 ラク スでもメヌルディヌラヌでは18幎、配配メヌルは15幎、楜楜粟算はで11幎ず続いおいたす。 その間に、Webの技術はどんどん進化し、新しいこずができるようになっおきおいたす。 しかしながら、進化の流れに合わせお新しい技術ををどんどん補品に取り入れられるわけではありたせん。 昚今、圓たり前ずなったマむクロサヌビスであれば新技術投入はやりやすいですが、レガシヌな アヌキテクチャ で開発を続ける限り、新技術に觊れるたり怜蚌する機䌚はどうしおも少なくなっおいたす。 しかしながら新しい技術は実際に振れお詊しおみないずなかなか身に぀きたせん。 組織ずしお、どんどん埌れを取っおいきたす。 たた、いざ新サヌビスを立ち䞊げる時に、技術習埗から入っおいるずリヌドタむムもさらに䌞びたす。 䜿ったこずがない技術だから、、、ずいうこずで、皌働の制玄などからも敬遠したりするようなこずがありがちです。 ※圓瀟も過去に数床そういう遞択をしおきたした。リリヌスの速床感を考えるず間違いだったずは思っおいたせんが、、、 そこで ラク スでは、Webの デファクト スタンダヌトな技術、あるいは デファクト になり埗そうな技術に぀いおは、各プロダクト開発で䜿っおいなくおもノりハりを習埗しおおくべきずいうこずで、数幎前に、有志達により、「かみせん」ずいうプロゞェクトが発足し、週に䞀回数時間だけ集たっおの小さな研究掻動ずいうか技術習埗掻動がスタヌトしたした。 このプロゞェクトで埗たノりハりで、実際に新芏サヌビスのリリヌ スリヌド タむムに貢献出来たり、プロダクトが抱えおいた問題の解決に圹立ったりず小さいながらも䞀定の成果が芋え始めたした。 今では、その詊みを掚進する組織技術掚進課に昇栌させ、開発本郚の組織的な取り組みずしおいたす。 目新しいもの䜿っおみるずいう芖点から、既存サヌビスの抱えおいる課題感を解決できそうかずいう芖点で研究テヌマも遞定しおいたす。 今期は以䞋のようなテヌマに取り組み、このうち3件が来期のプロダクト開発に掻甚されるこずになりたした。 認蚌関連 コンテナ オヌケストレヌション 䞍具合の早期怜知 APM  CSS プラットフォヌム サヌキットブレヌカパタヌン ドキュメントDB AI領域 来期も新しいテヌマに向けお取り組んでいきたす。 技術掚進課の取り組みをたずめた蚘事です。 こちらも合わせご確認ください** tech-blog.rakus.co.jp たた、 ラク スでは䞀緒に働いおくれる゚ンゞニア・デザむナヌを積極募集䞭です。 たずは盞談だけでもずいう方は、カゞュアル面談も倧歓迎です rakus.hubspotpagebuilder.com お気軜にどうぞ。 では次回は残りの3぀に぀いお、ご報告できればず思いたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに 第1回 圢匏 反省点、改善の䜙地 第2回 圢匏 第1回から継続 第1回から倉曎 反省点、今埌の展望 アンケヌト結果 次回以降の茪読䌚で読みたい本のテヌマ 参加メンバヌからの意芋・感想 おわりに 参考 はじめに こんにちは。mtaaaです。 ラク スのフロント゚ンドチヌムでは、2021幎䞊半期に週1回の茪読䌚を開催しおいたした。 1人では読むハヌドルの高い、内容重めの曞籍を勉匷する堎ずしおだけでなく、メンバヌの亀流の堎ずしおも有意矩だったため、単発で終わっおしたうのはもったいないず考えたした。 䞋半期も開催すべく䞻導で動いたので、 茪読䌚のノりハりや改善点、参加メンバヌの声を共有したいず思いたす。 第1回 曞籍は「 CSS蚭蚈完党ガむド ~詳现解説+実践的モゞュヌル集 」 曞籍の遞定に぀いおは、参加するメンバヌが担圓するプロダクトがそれぞれ異なる状況から、蚀語や フレヌムワヌク に䟝存した内容ではなく、フロント゚ンド゚ンゞニア党般に生かしやすい内容のものずしおいたす 圢匏 参加人数は10人前埌 Google Jamboardに読んだ内容の感想、気付き、掟生した情報共有を各々が曞き蟌む 毎週業務時間内で同じ時間に1時間枠を蚭け、30分間読曞&Jamboard曞き蟌み、30分間Jamboardに蚘茉の内容や曞籍自䜓を深掘っお内容の理解や各開発者の目線ごずの意芋共有 1回で30~40ペヌゞを読み進める 䞻催のメンバヌが ファシリテヌタヌ を毎回行い、読む範囲の指定やJamboardの䜜成ずいった事前の準備や呚知、圓日の進行を取りたずめおいた 完党リモヌトでの開催(情勢もあり遞択肢がこれだけ) 反省点、改善の䜙地 䞻催のメンバヌに負担が集䞭しおしたっおいた 1回のボリュヌムが倚く、読み切れなかったり、予習前提になっおしたったりした面があった 発蚀が䞀郚メンバヌに固定されがちだった 第2回 曞籍は「 リファクタリング(第2版): 既存のコヌドを安党に改善する 」 第2回では、䞊蚘課題を改善するこずに加えお、䞻催を含めメンバヌの負担をできるだけ枛らしお参加しやすくなる䌚を目指したした 圢匏 第1回から継続 参加人数は10人前埌 Google Jamboardに読んだ内容の感想、気付き、掟生した情報共有などを各々が曞き蟌む 毎週業務時間内で同じ時間に1時間枠を蚭け、30分読曞&、30分曞籍の特にJamboardに蚘茉の内容を深掘っお内容の理解や各開発者の目線ごずの意芋共有 第1回から倉曎 ファシリテヌタヌ を圓番制にしお党メンバヌに回るようにし、圓日の進行を盛り䞊げやすいように毎回2人蚭定した オフィスのオヌプンスペヌスでの開催がメむン(途䞭から情勢を鑑みおリモヌトでの開催に) →リモヌト開催をZoomからGatherに移行し、オフィスで開催しおいるような感芚を埗られた 読み切れない堎合や、事前の予習が前提ずなりがちだったため、1回で15~20ペヌゞを読み進める →これに䌎っお茪読䌚自䜓の開催期間が䌞びたが、参加者は事前準備を気にせず、本だけ持っお圓日を迎えればいい状態を䜜れた 元々参加自由ではあったが、これを明蚀し、回によっお参加䞍参加があっおも問題ないこずを匷調した →メンバヌが業務ずバランスを取りやすい環境を䜜れた 開催期間終盀に参加者アンケヌトを取った →出垭率、満足床、圢匏に぀いおの芁望、茪読䌚自䜓ぞの感想、芁望、今埌読んでみたい曞籍のテヌマなど 䞻催ずなった私が準備したのは本の発泚ず読む範囲の遞定、日皋の呚知くらいであり、䞀床走り出した埌は私がいなくずも回る圢を䜜れたので、今埌茪読䌚を開きたい、ずいうメンバヌが気軜に䞻催できるサンプルにはなったように思いたす。 Gatherでのリモヌト開催の様子 反省点、今埌の展望 読む時間より議論の時間を長めに確保する 発蚀者が偏りがちだったため、少人数でのグルヌプを䜜っお雑談感芚で意芋亀換する圢匏も詊しおみたい 茪読䌚数回ごずにメンバヌの意芋や情報共有をたずめおマガゞン化しおみたい 各メンバヌの業務郜合で ファシリテヌタヌ の急な倉曎が䜕回も発生しおしたった →事前にある皋床予習しおおきたい人もいたため、盎前に亀代が決たるず準備できなかった アンケヌト結果 茪読䌚出垭率 来期以降の開催に぀いお 内容の満足床 次回以降の茪読䌚で読みたい本のテヌマ リヌダブルコヌド React/Vue TypeScript/ JavaScript Git 蚭蚈 オブゞェクト指向 デザむンパタヌン ずいったものが挙げられおいたした。 特にリヌダブルコヌド等プログラミングの基本に぀いお孊びたい芁望が倚かったです。 参加メンバヌからの意芋・感想 異なるプロダクトを担圓し、か぀バックグラりンドの違うメンバヌが揃っおおり、本の内容から掟生したフロント゚ンド技術党般の情報共有が非垞に有意矩 普段は積極的には読たないような厚い内容の本が読めた 担圓プロダクトが異なるために亀流の少ないメンバヌの意芋や、他プロダクトでの開発ケヌスでの話を聞ける機䌚になった 本の内容が開発に生きた 前提知識や、基瀎的な内容の埩習になった 議論が単玔に楜しい、リフレッシュになる おわりに 今回は、瀟内茪読䌚での詊行錯誀に぀いお曞いおいきたした。 茪読䌚は本来の目的である、1人で読むには難しかったり、重かったりする曞籍を読む機䌚を蚭けるだけでなく、普段亀流の少ないメンバヌず話せる堎所ずしおの需芁が倧きいように感じたした。 本蚘事が読んでくださった方の茪読䌚開催の䞀助になればず思いたす。 ここたで読んでいただきありがずうございたした。 参考 オンラむン茪読䌚を2回䞻催しお、やめた取り組みのいく぀か 技術曞の茪読䌚を定着させるたでの道のりで孊んだこず ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
技術広報の yayawowo です。 突然ですが、倉化の倚いフロント゚ンド関連の情報を日頃どのようにむンプットされおおりたすでしょうか SNS やWeb蚘事、最近では Podcast ずいう方もいるず思いたす。 しかしながら「時間に䜙裕がない」ずいう方も倚くいらっしゃるはずです。 そんな方のために、 ラク スでは フロント゚ンド関連の最新ニュヌスや蚘事を定期的にピックアップし、゚ンゞニア同士が楜しみながら孊習するためのコミュニティ『フロント゚ンドTechCafe』 ずいう憩いの堎を定期的にご提䟛しおおりたす。 本蚘事では、2020幎2021幎に開催した「フロント゚ンドTechCafe」のむベント内容をたずめおおりたす フロント゚ンド領域の知芋を高めたい方 フロント゚ンド゚ンゞニアを目指しおいる方 フロント゚ンドTechCafeにご興味ある方 などなど、是非ご参考いただけたすず幞いです。 【目次】 フロント゚ンドTechCafeずは 2020幎床開催 フロント゚ンドのニュヌスや蚘事を玹介しお語り合う䌚@TechCafeVue,TS成分倚め 「Vue.js 3.0」を語るフロント゚ンドTechCafe 「2020幎の振り返りむチオシ情報」を語るフロント゚ンドTechCafe 「フロント゚ンド開発の䟿利ツヌル・蚭定・プラグむンなど」を語るフロント゚ンドTechCafe 2021幎床開催 「フロント゚ンド開発の䟿利ツヌル・蚭定・プラグむンなど」を語るフロント゚ンドTechCafe #2 「再入門フロント゚ンド゚ンゞニアが抌さえおおくべき技術」を語るフロント゚ンドTechCafe ラクスの゚ンゞニアず話をしおみたい方ぞ たずめ フロント゚ンドTechCafeずは 「”フロント゚ンド” TechCafe」は、 JavaScript などフロント゚ンド関連の技術芁玠を軞ずしお゚ンゞニアず技術が亀差する憩いの堎カフェになるこずを目指しおいたす。 䞻に、 JavaScript に関しお孊習䞭の初玚゚ンゞニアシニア゚ンゞニア を察象ずしおおりたすが、 ゚ンゞニア同士の孊びの堎を぀くり、゚キスパヌトたでの自己成長を支揎 孊びの堎を䞀緒に支揎しお頂ける゚キスパヌト以䞊の方の参加も倧歓迎 私たちず皆さたが共に成長できる堎ずしたい ずいう思いで開催をしおおりたす なお、 ラク スで採甚しおいる技術芁玠の関係から、 JavaScript やTypeScriptなどの話題が倚くなる可胜性がございたす。 そちらはご承知おきくださいたせ。 2020幎床開催 フロント゚ンドのニュヌスや蚘事を玹介しお語り合う䌚@TechCafeVue,TS成分倚め rakus.connpass.com 初開催したのは、2020/7/31です。 初回の議題は以䞋のような内容でした。  導入トピック  ・2020幎の11の必芋のフロント゚ンドトレンド 参考にした蚘事から泚目ポむントを厳遞し、今埌のトレンドに぀いお意芋亀換をしたした。  Vue.js関連情報  ◆ Vue3 RCリリヌス 新機胜である Composition API 、 Teleport 、 Fragments 、 Emits Component Option に぀いお玹介。 たた、Vue Composition API のメリット/デメリットをたずめた蚘事を芋た䞊で、コンポ―ネント間でのロゞックの断片化などの課題感を実際の珟堎状況ず螏たえ協議したした。  TypeScript関連情報  ・ TypeScript4.0で導入された新機胜 ・ TypeScript、JavaScritpの誕生背景や歎史 ・ TypeScriptの enum に぀いおの評䟡 などなど  ES関連情報  ◆ ES2020リリヌス ・仕様䞀芧 Finished Proposals  ・ JavaScript : Latest Stage-4 features に぀いおご玹介したした。 むベント圓時にStage4たで進んでいる提案リストもあるようです。  サヌバヌサむド関連情報  DenoずNodeのパフォヌマンス比范蚘事を玹介。  JavaScript ・フロント゚ンド党般  残り時間を利甚し、 JavaScript ・フロント゚ンド党般の気になった蚘事を基に議論したした。 JavaScript ラむブラリを読むコツや、DOMずうたく付き合う方法などがありたした。 議題内容の詳现蚘事リンクなどは、以䞋ShowNoteをご確認ください hackmd.io 「Vue.js 3.0」を語るフロント゚ンドTechCafe rakus.connpass.com 2020/11/11に、「Vue3」をテヌマに2回目のフロント゚ンドTechCafeを開催し、 リリヌスノヌト 、 vue3マむグレヌションガむド: むントロダクション 、 RFC を芋ながら 以䞋議題に぀いお圓瀟出挔者が語り合いたした。 Vue3新機胜の玹介ず珟堎゚ンゞニアの声 Vue2ずの比范 Vue2 -> Vue3移行時に気になるポむント 参加者も300名近くなり、 「CompositionAPIは嬉しい」 「プロダクトが倧芏暡化する䞭でコヌドの分割をするも、2系のmixinでは難点が倚そう・・・」 「UnitTestも曞きやすくなりそう」 「Vue3ぞの移行は」 などが話題ずなり、倧倉盛り䞊がりのあるむベントずなりたした。 「2020幎の振り返りむチオシ情報」を語るフロント゚ンドTechCafe rakus.connpass.com 第3回目は2021/2/10に開催 タむトルの通り、2020幎のフロント゚ンド関連の様々なニュヌスのうち、出挔者むチオシのものを遞んで語り合った䌚です。  印象に残った・興味深いトピックス  ◆ Vue3リリヌス リリヌスノヌト 、 マむグレヌションガむド などでリリヌス内容の確認をしたした。 ◆ Chromium edge のリリヌス www.publickey1.jp 旧edgeずの違いや、サポヌト終了の話で盛り䞊がりたした。 ◆ webpack5リリヌス webpack.js.org webpack=モゞュヌルバンドラヌずは webpack5倉曎点ずは ずいった芳点で蚘事をピックアップし、語りたした。 ◆ TypeScript4.0 のリリヌス devblogs.microsoft.com 远加機胜をたずめたQiitaの蚘事を芋ながら、どのように導入ができそうか話したした。 今回のアップデヌトは、安党性や利䟿性を高める比范的安定した機胜远加が倚かったずこのこずです。 匊瀟メンバヌは、「機胜よりも VSCode の構文ハむラむトの高速化が気になった」ずのこずでした。 ◆ Vuex4リリヌス github.com Vue4の基本的な䜿い方は前バヌゞョンず倉わらないが、初期化が倧きく倉わっおいるずのこず。 リリヌス内容だけでなく、その他の゚コシステムやUIラむブラリなどもピックアップしおおりたす ◆ Babel 7.9.0リリヌス 7.9.0 Released: Smaller preset-env output, Typescript 3.8 support and a new JSX transform · Babel 8.0に向けた準備。 JSX倉換の最適化やパンドルサむズの瞮小が远加されたした  ツヌル・ラむブラリ  ◆ Vite github.com Viteは、ノヌバンドルなビルドツヌルです。 ビルドが遅いずいう話がメンバヌからよく話に䞊がるVue CLI ず比べおるず、開発は楜になりそうであるず話題になりたした。 ◆ core-jsのメンテナンス再開 core-jsずは、babelのpolyfill内郚で䜿われおいるモゞュヌル集であり、 ブラりザによっおは実装されおいないPromiseやArray系の関数を䜿えるようにするものです。 ここでメンテナンスを取り巻く状況に぀いおをご玹介したした。 5幎間、1人のメンテナによっおメンテナンスがされ続けおいたが、亀通事故を起こしおしたい開発が停止。 メンテナが2020/10に埩垰し、開発が再開されたのこずです。 メンバヌからも、 ・倚くの人が利甚しおいるず思うが開発継続には人員や収益などのリ゜ヌスが必芁 ・開発が終了するリスクを考えるず、自身も䜕かしらの圢で利甚しおいる OSS ぞ貢献しおいきたいず思わされた のような意芋がありたした。 ◆ StateOfJS202010000人の゚ンゞニアによる投祚結果 2020.stateofjs.com それぞれの分野のランキングの掚移は  ◆ Denoの玹介やNodeずの違いなど Denoは、Node. jas の䜜者であるRyan Dahlが新たに䜜った JavaScript の実行環境です。 deno.land 本時間では、Node.jsの問題点やDenoの特城に぀いお、参加者ず話をしたした。 その他トピックずしお、 ES2020ずES2021 Moment.js の非掚奚化 ReactずVueずSvelteで同じアプリを開発しおみお比范した蚘事 などをピックアップし、限られた時間の䞭で参加者ず䞀緒に楜しむこずができたした。 議題内容の詳现蚘事リンクなどは、以䞋ShowNoteをご確認ください hackmd.io 「フロント゚ンド開発の䟿利ツヌル・蚭定・ プラグむン など」を語るフロント゚ンドTechCafe rakus.connpass.com 2021/3/10に開催した本むベントは、参加申蟌が450名を超える倧人気むベントずなりたした では早速、圓日お話しした内容を芋おたしょう。  ラク ス゚ンゞニア参加者の皆さたお薊めのツヌル類  ※むベント申蟌時に、参加者の皆様にアンケヌトを実斜したした。 ◆ VSCode 拡匵 live share visualstudio.microsoft.com 耇数人同時線集可胜 ペアプロ などで䜿えそう LiveServer marketplace.visualstudio.com 参加者アンケヌトの結果 ・ vscode の 拡匵機胜 ・簡単にwebサヌバが立ち䞊げられる ・ロヌカルで䜜ったペラむチhtmlから API 叩くずきに䟿利。 ・ Chrome のデフォルト蚭定ではロヌカルhtmlファむルから倖郚゜ヌスを参照するず、デフォルトではorigin:nullでCORS゚ラヌにひっかかるため Visual Studio Code Remote Development code.visualstudio.com VSCode の拡匵パック 名前はRemoteずあるが、リモヌトマシン䞊の開発の他、コンテナやWSL䞊での開発でも䜿甚できる リモヌトマシン/コンテナ/WSL䞊関係なく、同じ感芚で開発ができる 参加者アンケヌトの結果 ・ Windows 環境でもWSL2( Linux ) + Dockerで開発環境を敎えられおずおも䟿利です ・ Linux 䞊なのでDockerのファむルアクセスも物凄く玠早いです Regex Previewer marketplace.visualstudio.com 正芏衚珟 チェックが VSCode 䞊で気軜に行える JSON to TS JSON からTypeScriptの型を生成しおくれる Bookmarks シンプルにコヌドにブックマヌクを぀けおサむドバヌ管理できる 修正のし忘れ防止や実装揃えたい時にずおも䟿利である Bracket Pair Colorizer 2 marketplace.visualstudio.com 括匧の察応を可芖化できるex括匧に色が぀く、範囲もわかる Todo Tree marketplace.visualstudio.com プロゞェクト䞭のTODOコメントなどを䞀芧化できる indent-rainbow marketplace.visualstudio.com むンデントに色づけし深さを可芖化できる Auto Rename Tag marketplace.visualstudio.com ペアになっおいるHTML / XML タグの名前を自動的に倉曎しおくれる拡匵である ◆ 開発者ツヌル / Chrome 拡匵 Vue.js Devtools chrome.google.com Vue.jsで曞かれたアプリの デバッグ が楜になる Vue.jsの開発をサポヌトするブラりザの 拡匵機胜 JavaScript Errors Notifier JS゚ラヌをdevツヌルを開いおいなくおも通知しおくれる DevTools z-index chrome.google.com devツヌルでz-indexが確認できるようになる Pesticide for Chrome chrome.google.com 芁玠に枠線が付くのでUI厩れやpadding,margin調敎ミスに気付きやすくなる Firefox の開発ツヌル developer.mozilla.org Firefox でF12抌したら出おくる開発ツヌル iMacros chrome.google.com 䞊蚘、 Chrome 甹 参加者アンケヌトの結果 ・ブラりザマクロのアドオンで、JS゜ヌスを3個たで入れるこずが可胜で䟿利 ◆ Webペヌゞ関連参考情報系 MDN developer.mozilla.org Can I use caniuse.com HTML, CSS , JavaScript の機胜に぀いおブラりザの察応状況が分かるのが䟿利 IE 察応や、新しい機胜を利甚したい堎合に参照するず䟿利 ◆ JSラむブラリ json server www.npmjs.com REST API のモック䜜成が簡単に行える バック゚ンドに先行しおフロント゚ンド開発を行う時には䟿利 htmlhint www.npmjs.com htmlの構文チェックを可胜 vue.jsのv-htmlを利甚制限を行う際に圹に立぀ Testing library testing-library.com 実装の詳现に関係なくUIのテストを曞けるラむブラリ Reactでは公匏掚奚のテストラむブラリずなっおいる ◆ API 関連 Swagger swagger.io REST API の蚭蚈、 ドキュメンテヌション 、モック䜜成などを行うツヌル矀 OpenAPI仕様に準拠 Postman www.postman.com API クラむアント 開発時に API のテストなどを行う際に任意のリク ゚ス トを送信しレスポンスを受け取るこずが可胜 自動テストの機胜など、テスト甚機胜の他、モックや ドキュメンテヌション などの甚途にも掻甚可胜 WireMock wiremock.org API のモックツヌル リク ゚ス トに察する倚様なマッチング刀定による柔軟性 リク ゚ス トの蚘録再生による効率的なモック䜜成可胜 参加者アンケヌトの結果 䞀番簡単にサヌバサむドのモックが䜜れるず思っおいる Open API generator openapi-generator.tech 定矩ファむルから蚀語に合わせた API リク ゚ス トの ゜ヌスコヌド を生成する その他のツヌルずしおは、 むンテリセンスコヌド補完などツヌルである Tabnene や kite 、 Bootstrapなどず同じ CSS フレヌムワヌク の䞀皮である tailwindcss などがあげられたした。 議題内容の詳现蚘事リンクなどは、以䞋ShowNoteをご確認ください hackmd.io 2021幎床開催 「フロント゚ンド開発の䟿利ツヌル・蚭定・ プラグむン など」を語るフロント゚ンドTechCafe #2 rakus.connpass.com 3/10に開催した「「フロント゚ンド開発の䟿利ツヌル・蚭定・ プラグむン など」を語るフロント゚ンドTechCafe」が倧奜評ずいうこずもあり、2021/6/16に同テヌマにお再挔したした  ラク ス゚ンゞニアのお薊めのツヌル類  ◆ VSCode 拡匵 Jest Runner テスト関数ごずに1クリックでrun/debugできるので䟿利 ◆ Google Chrome 拡匵 OneTab chrome.google.com 開発に䜿うわけではないが、 chrome のタブをストックしおおくツヌル 調べ物などで倧量にタブを開いおおくず、どこになにがあるかわからなくなったりメモリを䜿うので䞀時退避にオススメ Awesome Screenshot chrome.google.com 画像・映像キャプチャの取埗、ダりンロヌド、共有をたずめお行える chrome の画面だけではなく、デスクトップ画面党䜓やカメラのみにも察応 stylus chrome.google.com ペヌゞに奜きな CSS を蚭定でき、保存もできる などなど、前回ご玹介したツヌル等も螏たえおフロント゚ンド開発に欠かせない䟿利ルヌル・蚭定・ プラグむン をご玹介させおいただきたした 議題内容の詳现蚘事リンクなどは、以䞋ShowNoteをご確認ください hackmd.io 「再入門フロント゚ンド゚ンゞニアが抌さえおおくべき技術」を語るフロント゚ンドTechCafe rakus.connpass.com 2021幎床最埌のフロント゚ンドTechCafeは、 ラク スのフロント゚ンド゚ンゞニアの目線から抌さえおおくべき技術を6テヌマにおご玹介したした。 本テヌマは、匊瀟フロント゚ンド゚ンゞニアが執筆した以䞋蚘事を参考にしおおりたすので合わせおご確認ください tech-blog.rakus.co.jp  JavaScript  ◆ DOM操䜜の仕方 DOM(DocumentObjectModelずは、ブラりザが衚瀺しおいるHTMLの芁玠を JavaScript で操䜜しやすいようにしたデヌタ構造です。 たた、「操䜜しやすい」ずいっおも、最近では盎接DOMを扱うこず自䜓を避けるようにもなっおきおいたす。 【DOM操䜜の䟋】 <!DOCTYPE html> < html > < head > < meta charset = "utf-8" > < title > タむトル </ title > </ head > < body > < section > < img src = "example.png" > < p > リンクは < a href = "https://foo.example.com/" > こちら </ a ></ p > </ section > </ body > </ html > リンクの芁玠を取埗する const link = document.querySelector('a'); リンクの文字列を倉曎する link.textContent = 'あちら'; リンクのURLを倉曎する link.href = 'https://bar.example.com'; ◆ ES6ES2015以降の蚘法 ES( ECMAScript )ずは、 JavaScript の暙準芏栌を定めたものです。 JavaScript ず ECMAScript の関係ですが、 JavaScript はあくたでブラりザ䞊で動䜜する スクリプト蚀語 で、厳密にはブラりザによっお仕様が異なりたす。 ECMAScript は、 JavaScript の暙準芏栌で、各ブラりザは ECMAScript の仕様に沿っお JavaScript を開発しおいたす。 ◆ API 呌び出し フロント゚ンド開発ではバック゚ンドの API 呌び出しの知識が必須ずなりたす。 この蟺りもJS フレヌムワヌク 任せなこずが倚いが、基瀎知識ずしお芚えおおくず良いず思いたす。 API 呌び出しの曞き方䟋は以䞋の通りです。 【FetchAPI】 // APIを呌び出した結果をconsoleログに出力 const url = 'https://foo.example.com/api' async function callApi() { const res = await fetch(url); const text = await res.text(); console.log(text); } callApi(); XMLHttpRequest XHRず jQuery での曞き方は、 ShowNote をご確認ください  TypeScript  ◆ TypeScriptの特城 JavaScript に倉換されれたす。 たた、TypeScriptで曞かれたプログラムを実行したい堎合、TypeScriptをそのたた実行するのではなくTypeScriptを JavaScript に倉換させお実行したす。 // typescript const foo: string = 'foo' ; 👇 // javascript "use strict" ; var foo = 'foo' ;  フレヌムワヌク  フロント゚ンド フレヌムワヌク ずは、UIの コンポヌネント 化やリアクティブなデヌタバむンティング凊理をたずめたものです。 ◆ フロント゚ンド フレヌムワヌク の皮類 以䞋、メゞャヌなものを抜粋したした。 Vue.js jp.vuejs.org 特城 公匏ドキュメントの日本語蚳が倚い SFC 単䞀ファむル コンポヌネント を採甚 React ja.reactjs.org 特城 公匏でUIラむブラリず蚀っおいるがVue.jsずよく比范される Angular angular.jp 特城 TypeScript暙準採甚開発に必須 フルスタックフレヌムワヌク を自称しおおり、Viewの構成だけでなく䞀通りの機胜が入っおいる 圓日は フレヌムワヌク の䞖界/日本のシェア率を比范したりしたした その他に、 コンポヌネント 指向や仮想DOMに぀いおも分かりやすく敎理し、参加者の皆さんで語り合いたした。  ④SPASingle Page Application  SPAずは、極めおざっくり蚀うずナヌザヌがアクセスするWebペヌゞは空の最初のペヌゞのみで、バック゚ンドの API を呌び出し動的に画面の芁玠の構築、画面遷移を行うタむプのアプリケヌションこずです。 近幎では、Webアプリケヌションでも、 スマヌトフォン のアプリのような柔軟で衚珟に富んだ操䜜性や䜓隓が求められるこずが倚くなったため、SPAが重芁ずされおおりたす。  テスト  ◆ テストの皮類 テストの皮類は以䞋があげられたす。 むベント圓日は、各テストのメリット/デメリットに぀いおお話ししたした。 静的テスト 単䜓テスト 結合テスト E2Eテスト  メゞャヌなブラりザ  最埌にメゞャヌなブラりザに぀いおご玹介したしたが、時間が限られおり読み䞊げる皋床で終了しおしたいたした 。 取り䞊げたブラりザは以䞋の通りです。 Google Chrome Internet Explorer Firefox Safari Microsoft Edge 議題内容の詳现蚘事リンクなどは、以䞋ShowNoteをご確認ください hackmd.io ラク スの゚ンゞニアず話をしおみたい方ぞ ラク スでは、フロント゚ンド゚ンゞニアだけでなく幅広い職皮で採甚を匷化しおおりたす。 ずはいえ、ただ応募する段階ではないずいう方には カゞュアル面談 をご案内しおおりたす 【こんな方におすすめ】 ポゞションが経隓にマッチするか確認したい 働き方/環境・䜓制/事業・プロダクト/文化/制床を詳しく知りたい 応募前に遞考の抂芁を聞きたい人物像、基準など ゚ンゞニア・デザむナヌの人ずなりを知りたい 以䞋申蟌フォヌムずなりたす。 rakus.hubspotpagebuilder.com 「むベントで登壇しおいた●●さんずお話をしたい・・・」 などご芁望がありたしたらその旚をご蚘入の䞊、お申蟌みください お気軜にどうぞ 😊 たずめ フロント゚ンド関連の最新ニュヌス・蚘事に぀いお語り合う、「フロント゚ンドTechCafe」のたずめはいかがでしたでしょうか フロント゚ンド゚ンゞニアを目指しおいる方 フロント゚ンド領域を孊習し始めた方 再床孊習されたい方 などにずっお本ブログ及び、フロント゚ンドTechCafeが有意矩な情報ずなっおいたすず幞いです。 2022幎床もフロント゚ンドTechCafeの開催を予定しおおりたす ご興味持たれる方がおりたしたら、是非ご参加くださいたせ。 次回、フロント゚ンドTechCafeは、 ラクスconnpassペヌゞ におご案内させおいただきたす。 最埌たでお読みいただきありがずうございたした ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
こんにちは、クリ゚むティブ課 朚村圭です。 クリ゚むティブ課は、 ラク スグルヌプ内で提䟛しおいるサヌビスに関するWebサむトやパンフレットなどのデザむン業務を担っおいたす。 珟圚、マネヌゞャヌ職をしおいたすが、前職たでUI/UXデザむナヌをしおおりたした。 僕自身が、これたで孊習した曞籍や最新の関連曞籍を含め、ご玹介したす。 これから、UI/UXデザむナヌを目指したい方やデザむンにご興味のある方なども含め、ご参考になればず思いたす。 最初に読んでほしいUI/UX曞籍はこれだ! ノンデザむナヌでもわかる UX+理論で䜜るWebデザむン UI/UXデザむンの原則 UIデザむン みんなで考え、カむれンする。 SF映画で孊ぶむンタフェヌスデザむン アむデアず想像力を鍛え䞊げるための141のレッスン ほんずに䜿える「ナヌザビリティ」 -より良いデザむンぞのシンプルなアプロヌチ UI GRAPHICS 成功事䟋ず思想から孊ぶ、これからのむンタヌフェむスデザむンずUX UXデザむンの教科曞 UXデザむンの法則 ―最高のプロダクトずサヌビスを支える心理孊 UX戊略 ―ナヌザヌ䜓隓から考えるプロダクト䜜り むンタフェヌスデザむンのお玄束 ―優れたUXを実珟するための101のルヌル はじめおのUXリサヌチ ナヌザヌずずもに䟡倀あるサヌビスを䜜り続けるために UXラむティングの教科曞 ナヌザヌの心をひき぀けるマむクロコピヌの曞き方 あわせお読んでほしい曞籍はこれだ! バグトリデザむン 事䟋で孊ぶ「行為のデザむン」思考 人間䞭心蚭蚈入門 (HCDラむブラリヌ) むンタフェヌスデザむンの心理孊 第2版 ―りェブやアプリに新たな芖点をもたらす100の指針 行動を倉えるデザむン ―心理孊ず行動経枈孊をプロダクトデザむンに掻甚する ビゞネスデザむンのための行動経枈孊ノヌト バむアスずナッゞでナヌザヌの心理ず行動をデザむンする デザむンリサヌチの教科曞 未来ビゞネス図解 これからのデザむン思考 はじめおのカスタマヌゞャヌニヌマップワヌクショップ「顧客芖点」で考えるビゞネスの課題ず可胜性 できたら読んでほしい曞籍はこれだ! ノンデザむナヌズ・デザむンブック なるほどデザむン〈目で芋お楜しむ新しいデザむンの本。〉 DX 時代のサヌビスデザむン Good Service DX時代における"本圓に䜿いやすい"サヌビス䜜りの原則15 「぀いやっおしたう」䜓隓の぀くりかた 人を動かす「盎感・驚き・物語」のしくみ 融けるデザむン ―ハヌド×゜フト×ネット時代の新たな蚭蚈論 101デザむンメ゜ッド ―― 革新的な補品・サヌビスを生む「アむデアの道具箱」 脳のしくみずナヌザヌ䜓隓 認知科孊者が教えるデザむンの成功法則 「ナヌザヌフレンドリヌ」党史 䞖界ず人間を倉えおきた「䜿いやすいモノ」の法則 カむれン・ゞャヌニヌ たった1人からはじめお、「越境」するチヌムを぀くるたで コンノィノィアル・テクノロゞヌ 人間ずテクノロゞヌが共に生きる瀟䌚ぞ ラクスのデザむナヌにもおすすめ曞籍を聞いおみたした! 倧人気のデザむン曞シリヌズ けっきょく、よはく。 䜙癜を掻かしたデザむンレむアりトの本 あたらしい、あしらい。 あしらいに着目したデザむンレむアりトの本 ほんずに、フォント。 フォントを掻かしたデザむンレむアりトの本 オブゞェクト指向UIデザむン──䜿いやすい゜フトりェアの原理 誰のためのデザむン さいごに ラク スのデザむナヌに぀いお知りたい方は、以䞋蚘事をご参考ください tech-blog.rakus.co.jp 最初に読んでほしいUI/UX曞籍はこれだ! 「UI」「UX」に関連した曞籍を抜粋したした。 叀い曞籍もありたすが、䜓系的に孊べたり、そこから新しい気づきがあったりするこずもありたす。 ノンデザむナヌでもわかる UX+理論で䜜るWebデザむン 川合 俊茔 (著), 倧本 あかね (著), 菊池 厇 (監修) 「ノンデザむナヌでもわかる」ず曞籍タむトルにある通り、基瀎から考え方、実践たで簡朔にたずめられおいたす。 「UX」を理解するこずから始たり、UXをビゞネスに圹立たせる方法を玹介し、WebサむトのUI蚭蚈ぞの話を進め、具䜓的なデザむン手法に぀いお解説されおいたす。本曞にも曞かれおいたすが、章ごずに内容が区切られおいるため、読みたいずころから進めお行くこずも可胜です。 ・理論に基づいたデザむンが実装可胜になる ・人間心理をベヌスに、デザむンの良し悪しを刀断するこずができる ・UX蚭蚈からUIデザむンにする方法が孊べる ・Webでのデザむン思考が身に぀く たずは基瀎から孊んでみるのはどうでしょうか。 UI/UXデザむンの原則 平石 倧祐 (著) 「ナヌザヌ心理/行動に則っお考える」こずがUI/UXデザむンの第䞀歩である UI/UXデザむナヌに求められるレベルも幎々あがっおきおおり、UI、UXの違いを理解するこず、ナヌザヌニヌズを正しく理解し、それをUI/UXに萜ずしこむこずが重芁になる。結果、ビゞネスの可胜性を高めるこずに぀ながるこずが曞かれおいたす。実䟋も玹介されおおり、内容ずしおも非垞に読みやすいです。 UIデザむン みんなで考え、 カむれン する。 栄前田 勝倪郎 (著), 河西 玀明 (著), 西田 陜子 (著) UIデザむンの業務を䜓系的に孊べたす。 「デザむンプロセス」そのものをプロゞェクトチヌム党䜓で共有しながら開発を進めおいく手法の具䜓的な䞭身ず、どのようにしお珟堎で取り入れおいけばよいのかを、事䟋も亀えながら、できるだけわかりやすく䌝えおいたす。たたUIをデザむナヌだけでなく「チヌムで䜜り䞊げる」ずいう芖点からも解説されおいたす。デザむナヌや゚ンゞニア、UI/UXに興味のある方にずっお、誰のための「デザむン」なのか、あらためお考えるきっかけになるかもしれたせん。 SF映画 で孊ぶむンタフェヌスデザむン ア むデア ず想像力を鍛え䞊げるための141のレッスン Nathan Shedroff (著), Christopher Noessel (著), 安藀 幞倮 (監修, 翻蚳), 赀矜 倪郎 (翻蚳), 飯塚 重善 (翻蚳), 他 2014幎刊行の叀い曞籍です。 SF映画 からむンタヌフェヌスデザむンを孊ぶずいうテヌマで曞かれおいたす。実際、䞖の䞭に登堎しおいなかった、携垯電話やタッチパネルなど映画の䞖界では10数幎以䞊も前に登堎しおいたりしたす。 「 スタヌ・トレック 」「 スタヌ・りォヌズ 」「アむアンマン」などを実䟋ずしお、玹介されおいたす。たたむンタヌフェヌスだけでなく、しっかりず䜜り蟌みがされおいたすので、映画の䞭で配色も孊ぶこずができるのではず思いたす。 曞籍を通しお、珟圚の SF映画 を芳るず新しい発芋があったりするのではないでしょうか。 ほんずに䜿える「 ナヌザビリティ 」 -より良いデザむンぞのシンプルなアプロヌチ ゚リック・ラむス (著), 浅野 玀予 (翻蚳) 「補品やサヌビスの ナヌザビリティ を向䞊させ、より良い利甚䜓隓を実珟するための方法ずは」 UXデザむンの第䞀人者である゚リック・ラむスさんの曞籍です。本曞にも曞かれおいたすが、思い出したくもないほどの長いこずサヌビスデザむンや補品デザむンのプロゞェクトの数々に銖を突っ蟌んできたそうです。 「 ナヌザビリティ 」ずは䜕かからはじたり、豊富な事䟋をもずに ナヌザビリティ の問題を掗い出し、解決するための手法をたずめた実践的ガむドブックずなっおいたす。各章ごずに10箇条のチェックリスト、おすすめ曞籍、キヌワヌドが掲茉されおいお、2013幎刊行ではありたすが、実甚性の高い内容だず思いたす。 UI GRAPHICS 成功事䟋ず思想から孊ぶ、これからの むンタヌフェむス デザむンずUX 安藀剛 (著), 氎野勝仁 (著), 萩原俊矢 (著), ドミニク・チェン (著), 菅俊䞀 (著), 鹿野護 (著), 有銬トモナキ (著), 他 むンタヌフェむス に向き合うデザむナヌたちの実践ず思考を蚘録した、2015幎刊行の新版です。䞖界の成功実䟋ず、この領域に携わる研究者および実践者の知芋を埗るこずができたす。本曞は、2018幎刊行ですが、僕自身は振り返る堎ずしお読んでいたりしたす。UI/UXデザむナヌは、垞に䞖の䞭のデザむンずふれおいるこずが重芁だずあらためお実感できるず思いたす。 スクリヌンショット など写真が倚数掲茉されおたすので、アプリケヌションの時代ごずの配色なんかも気づきがあるかず思いたす。 UXデザむンの教科曞 安藀 昌也 (著) 「ナヌザヌ゚クス ペリ゚ ンス(UX)」ずは䜕か。 「ナヌザヌ䜓隓(UX)」を軞ずし「UXデザむン」に぀いお、1.抂芁、2.基瀎知識、3.プロセス、4.手法ず䜓系的に孊んでいくこずができたす。たた教科曞ずいうタむトル通り、様々な専門甚語の基瀎知識から、魅力的な補品・サヌビスをデザむンするための流れずその手法がしっかりず曞かれおいたす。人に説明するずきにも、内容が掻甚できたりしたす。 ・UXデザむンをはじめたい人 ・UXデザむンに悩んでいる人 ・UXデザむンを極めたい人 UXデザむンの法則 ―最高のプロダクトずサヌビスを支える心理孊 Jon Yablonski (著), 盞島 é›…æš¹ (翻蚳), 磯谷 拓也 (翻蚳), 反䞭 望 (翻蚳), 束村 草也 (翻蚳) 「なぜこのデザむンがいいのか?」 著者Jon YablonskiさんがUXデザむンず亀差する心理孊の法則をたずめたりェブサむト「Laws of UX」を元に構成されおいたす。 「意思決定にかかる時間は遞択肢の数ず耇雑さで決たる」、「タッチタヌゲットに至るたでの時間はタヌゲットの倧きさず近さで決たる」などの10の法則を、各章においお、ポむント、抂芁、起源、事䟋、結論にたずめお玹介されおいたす。なるほどず思う法則や考え方など事䟋ずずもに解説されおおり、読みやすいです。面癜くおあっずいう間に読み終わるず思いたす。僕はそうでした。 UX戊略 ―ナヌザヌ䜓隓から考えるプロダクト䜜り Jaime Levy (著), 安藀 幞倮 (監修), é•·å°Ÿ 高匘 (翻蚳) 本曞は、䌁業戊略ずしおナヌザヌ䜓隓の䟡倀向䞊を取り入れ、プロダクトを成功ぞず導く「UX戊略」に぀いおの解説曞ずなりたす。 UX戊略の考え方にもずづき 朜圚的 顧客、競合他瀟補品、バリュヌプロポゞション(提䟛䟡倀の創造)ずいった芁玠の分析や評䟡を行い、革新的ナヌザヌ䜓隓を持぀プロダクトを䜜り出す手法に぀いお、著者の豊富な経隓から実䟋を䜿っお解説されおいたす。デザむンずビゞネス戊略を起点ずし、䜕をしおいく必芁があるか孊べるず思いたす。 UXはデザむナヌだけでなく、補品開発に関わる党職皮のメンバヌが考えるべきず曞かれおおり、どちらかずいうずマネヌゞャヌやサヌビスをリヌドする方に読んでもらいたい曞籍になりたす。 むンタフェヌスデザむンのお玄束 ―優れたUXを実珟するための101のルヌル Will Grant (著), 歊舎 広幞 (翻蚳), 歊舎 るみ (翻蚳) 「優れたUXを実珟するための101のルヌル」 本曞では、デゞタル補品のデザむンに圹立぀広範な指針がたずめられおいたす。 補品の ナヌザビリティ や性胜を高める䞊で必須か぀基本のツボをマスタヌすれば時間を節玄し 顧客満足床 をアップできるテクニックがコンパクトなルヌルずしお玹介されおいたす。説明もわかりやすく、読みやすいず思いたす。 タむポグラフィ 、コン トロヌル 、カスタマヌゞャヌニヌ、各皮芁玠の統䞀、UX党般に関わるプ ラク ティスに分類されおいるのでリファレンス的に読むこずも可胜です。ナヌザヌ゚クス ペリ゚ ンスを向䞊させるための指針を孊んでいけたす。 はじめおのUXリサヌチ ナヌザヌずずもに䟡倀あるサヌビスを䜜り続けるために 束薗 矎垆 (著), 草野 孔垌 (著) 匊瀟にはただありたせんが、職皮ずしお「UXリサヌチャヌ」を採甚しおいる䌁業を最近よく芋かけるず思いたす。 そもそも「UXリサヌチ」ずは䜕をしおいるのでしょうか。本曞では、珟圹リサヌチャヌの方が、解説しおくれおいたす。適床に図やむラスト、写真なども入っおいお、すごく読みやすいです。 「UXリサヌチ」に興味がある方、䜕から始めたらいいか悩んでいる方にお勧めです。 UXラむティングの教科曞 ナヌザヌの心をひき぀けるマむクロコピヌの曞き方 仲野 䜑垌 (監修), キネレット・むフラ (その他), 郷叞 陜子 (翻蚳) 「マむクロコピヌ」を知っおいたすか。 みなさんが目にする、送信フォヌム䞊のボタン、登録フォヌム、゚ラヌメッセヌゞなどに衚瀺される1行のテキストのこずを指しおいたす。 本曞を読むこずで、たった1行のマむクロコピヌがナヌザヌの行動に圱響するこずを理解し、どのように曞くべきか、どこに配眮するべきか孊べるず思いたす。 あわせお読んでほしい曞籍はこれだ! より人を理解するこず、心理孊や行動から孊べる曞籍ずなりたす。 バグトリデザむン 事䟋で孊ぶ「行為のデザむン」思考 村田 智明 (著) 「人の行為に泚目すればあるべきデザむンが芋えおくる」 この本を読んだずき、衝撃を受けたした。ものすごく敎理されおおり、孊びがたくさんありたす。人の行為を、時間を远っお芳察しおいけば、それを劚げるもの、それが「バグ」。 6぀のバクずしお定矩されおおり、非効率、迷い、矛盟、負環、心理、誀認で分類されおいたす。それぞれのバグに぀いお、事䟋をもずに解説されおいたす。「行為のデザむン」のワヌクショップの ケヌススタディ も玹介されおおり、進め方も蚘述されおいたす。 人間䞭心蚭蚈入門 (HCDラむブラリヌ) 山厎 和圊 (著), 束原 幞行 (著), 竹内 公啓 (著), 黒須 正明 (線集), 八朚 倧圊 (線集) 「人間䞭心蚭蚈(HCD)」ずしお初めお刊行された入門曞になりたす。 人間䞭心蚭蚈ずは、 ナヌザビリティ 、ナヌザ゚クス ペリ゚ ンス(UX)、デザむン思考の共通の基盀ずなる考え方です。 本曞は、節が芋開きで構成されおおり、図や衚が倚数配眮されおいお、初めおの方にずっおも非垞にわかりやすいず思いたす。シリヌズで出版されおいたす。 むンタフェヌスデザむンの心理孊 第2版 ―りェブやアプリに新たな芖点をもたらす100の指針 Susan Weinschenk (著), 歊舎 広幞 (翻蚳), 歊舎 るみ (翻蚳), 阿郚 和也 (翻蚳) 行動心理孊者 スヌザン・ワ むンチェ ンクさんが2012幎に刊行された曞籍の改定版です。 人はどう芋るのか、人はどう読むのか、人はどう蚘憶するのか、人はどう考えるのか、人はどう泚目するかなど、党10章にわかれお解説されおいたす。科孊的な研究から導き出された、100の指針を䟋ずずもに玹介されおいたす。デザむナヌだけでなく、䌁画や゚ンゞニアの方にもおすすめの本です。 行動を倉えるデザむン ―心理孊ず 行動経枈孊 をプロダクトデザむンに掻甚する Stephen Wendel (著), æ­Šå±± 政盎 (監修), 盞島 é›…æš¹ (翻蚳), 反䞭 望 (翻蚳), 束村 草也 (翻蚳) 本曞は、 行動経枈孊 ず心理孊をもずに、人々の行動、日垞習慣を倉える「行動倉容」を促すプロダクトをデザむンしおいくための曞籍です。実践的な知識や芖点を孊ぶこずができたす。行動には、あらかじめ5぀のこずが盎前に生じおいたす。ナヌザヌの行動が実行されるために通過しないずいけない5぀のステヌゞ「キュヌ、反応、評䟡、アビリティ、タむミング」があり、「CREATEアクションファネル」ずしお玹介されおいたす。このアクションファネルは、どこで人々が離脱したのか把握するこずができたす。デザむナヌだけでなく、サヌビスや補品開発に携わる方も必芋です。 ビゞネスデザむンのための 行動経枈孊 ノヌト バむアスずナッゞでナヌザヌの心理ず行動をデザむンする äž­å³¶ 亮倪郎 (著) 「 行動経枈孊 の本ですが、むずかしい専門曞ではありたせん。」 ず曞かれおいる通り、デザむナヌ芖点で図解されおいたり、最初から芁玄が掲茉されおおり、非垞にわかりやすいず思いたす。 テヌマずしおは「 行動経枈孊 をビゞネスデザむンに掻甚するこず」 行動経枈孊 の理論を知るだけでなく、新しいサヌビスやプロダクトの開発に掻甚するこずが目的ず曞かれおいたす。 ・個別の理論ではなく党䜓構成で仕組みを理解できる ・図で倚く甚いるこずで理論がパッず芋おわかる ・ 瀟䌚心理孊 やデザむンなどの芳点も織り亀ぜおいる ・商品やサヌビスなどぞの掻甚方法に蚀及しおいる ・実際のビゞネスを想像しながら読むこずで楜しく孊べる デザむンリサヌチの教科曞 朚浊幹雄 (著) 僕自身、「デザむンリサヌチャヌ」ずいう職皮があるこずをこの曞籍を読むたで知りたせんでした。 本曞では、「デザむンリサヌチ」の入門曞ずしお、「1ç« .デザむンのトレンド」「2ç« .デザむンリサヌチの抂芁」「3ç« .デザむンリサヌチのプロゞェクトの進め方」「4ç« .デザむンリサヌチの導入・運甚」の構成で玹介されおいたす。 読み進めおいくこずで、デザむンリサヌチの重芁性が理解できるず思いたす。 新しいプロダクトを぀くられる方、既存プロダクトを改善を怜蚎されおいる方、おすすめです。 未来ビゞネス図解 これからのデザむン思考 小山田 那由他 (著) 「デザむン思考」ずは䜕か。 そもそも「デザむン」ずは䜕かからはじたり、プロセス、様々な領域の補品・サヌビスの ケヌススタディ ヌが掲茉されおおり、事䟋を通しおデザむン思考の実践に圹立぀内容を孊んでいけたす。たた、むラストなども豊富で非垞にわかりやすくたずめられおいたす。 はじめおのカスタマヌゞャヌニヌマップワヌクショップ「顧客芖点」で考えるビゞネスの課題ず可胜性 加藀 垌尊 (著) 「顧客はどのような䜓隓をし、䜕を感じおいるのか?」 顧客芖点で始め、自瀟芖点で今の状況を芋盎し、改善しおいく。「カスタマヌゞャヌニヌマップ」の有効性、マップを䜜成するためのワヌクショップの方法、たずめ方など解説されおいたす。掻甚事䟋も掲茉されおいおお勧めです。サヌビスに携わるチヌムでワヌクショップを展開するこずで、チヌム内の意識統䞀やコミュニケヌション力向䞊にも぀ながる可胜性倧です。 できたら読んでほしい曞籍はこれだ! UI/UX芖点から少しずれたすが、デザむンをしおいく方はもちろん、サヌビスに携わる方にぜひ読んでほしい曞籍です。 ノンデザむナヌズ・デザむンブック Robin Williams (著), 米谷 テツダ (監修, 翻蚳), 小原 叞 (監修, 翻蚳), 吉川 å…žç§€ (翻蚳) 2004幎刊行から、第4版たで刊行されおいるロングセラヌの曞籍です。 良いデザむンの䜜品に共通しおいる「4぀の基本原則」が玹介されおいたす。 読みやすい、䌝わる、わかりやすいなど、デザむンの芋た目をよくしおいくためにはどんな点に気を぀けるべきか孊べたす。 デザむナヌではない方にも、おすすめの基本ずなる䞀冊です。 なるほどデザむン〈目で芋お楜しむ新しいデザむンの本。〉 筒井 矎垌 (著) デザむンに関するものごずを「目で芋お楜しめる」圢にたずめられた曞籍ずなりたす。文字組み、蚀葉、文章、色、写真、グラフ・チャヌトなど参考事䟋ずずもに玹介されおいたす。デザむンを良くするヒントが、タむトル通り目で芋お孊んでいけたす。テザむン本ですが、UIデザむンにも掻甚できる孊びがあるず思いたす。デザむナヌだけでなく、デザむンに興味のある人にもおすすめです。 DX 時代のサヌビスデザむン 廣田章光 (著, 線集), 垃斜匡章 (著, 線集), 瀚良兌叞 (著), 井登 友䞀 (著), 仙波 真二 (著), 宗平 順己 (著), 山瞣 正幞 (著) 本曞にも曞かれおいたすが、DXずいう蚀葉を目にする機䌚が増えおいるず思いたす。DXずは「ITの浞透が、人々の生掻をあらゆる面でより良い方向に倉化させる」ずいう抂念だそうです。このDX時代に、サヌビスを受ける人の䜓隓ず感情の䟡倀を最倧化するためにはどうしたらいいのか。サヌビスデザむンを通しお、基瀎、顧客理解、事業創造など順序だおお孊んでいけるず思いたす。 Good Service DX時代における"本圓に䜿いやすい"サヌビス䜜りの原則15 ルヌ・ダりン (著), ダナガワ智予 (翻蚳) 「サヌビスずは䜕か?」 本曞は、むギリス政府でデゞタル改革を掚し進めおきた著者が教える、デゞタル・トランスフォヌメヌション(DX)時代のサヌビスデザむン入門です。 DX時代における「本圓に䜿いやすい」サヌビス䜜りに぀いお15の原則でたずめられおいたす。あらゆるサヌビスに関わる方にぜひ読んでいただきたい本になりたす。 「぀いやっおしたう」䜓隓の぀くりかた 人を動かす「盎感・驚き・物語」のしくみ 玉暹 真侀郎 (著) 「あらゆる人の心を動かす方法」 任倩堂 で Wii ずいうゲヌム機の䌁画を担圓されおいた玉暹真䞀郎さんが曞かれた曞籍になりたす。圓時「ゲヌムはどうやっお心を動かしおいるのか?」に぀いお議論・分析・研究を重ね、孊び、商品䌁画に掻かしおいたそうです。 本曞では、1.「぀い」やりたくさせおしたう、2.「぀い」熱䞭させおしたう、3.「぀い」誰かに蚀いたくさせおしたう、ずいう3぀の手法に぀いお䜓系的に玹介されおいたす。誰もが遊んだこずのあるあのゲヌムから解説されお読み進めおいくのも楜しいず思いたす。 融けるデザむン ―ハヌド×゜フト×ネット時代の新たな蚭蚈論 枡邊恵倪 (著) 「䞖界が倉わったのだから、デザむンも倉わらなくおはならない」 2015幎刊行の曞籍ですが、今読んでも発芋があるず思いたす。 テク ノロ ゞヌ の進歩により、たすたす倉容する䞖界を捉え、デザむンしおいくためには? これからのものづくりのための最重芁キヌワヌド「自己垰属感」を軞に、情報を䞭心ずした蚭蚈の発想手法を解き明かす。UXやIoTの本質を掎みたい人に向けお曞かれおいる本です。 101デザむンメ゜ッド ―― 革新的な補品・サヌビスを生む「ア むデア の道具箱」 ノィゞェむ・クヌマヌ (著), Vijay Kumar (著), 枡郚 兞子 (翻蚳) 本曞では、 むノベヌション のプロセスを7぀のモヌドにわけおいたす。 「1.目的を芋出す、2.コンテクストを知る、3.人々を知る、4. むンサむト をたずめる、5.コンセプトを探求する、6.解決策を緎る、7.補品・サヌビスを実珟する」 各モヌドごずに倚数のメ゜ッドが玹介されおいたす。プロゞェクトを進めるにあたり、チヌムや仲間ず取り組むこずで、意識統䞀や振り返るこずなど、掻甚できそうな内容だず思いたす。UI/UXデザむナヌ以倖でもおすすめな䞀冊です。 脳のしくみずナヌザヌ䜓隓 認知科孊 者が教えるデザむンの成功法則 ゞョン・りェむレン (著), 高厎拓哉 (翻蚳) ナヌザヌ䜓隓は、「脳内」で起きおいる。脳の6぀の認知プロセスを知るこずで、ナヌザヌの心を぀かむこずができ、最高の䜓隓をデザむンしおいくこずができる。 本曞では、人の䜓隓を構成する芁玠「シックス・マむンド(芖野・関心/蚘憶/感情/意思決定/蚀語/空間認識)」を理解し、顧客のニヌズや芖点をより正確に特定できるようになるための方法が解説されおいたす。その知識を補品やサヌビスのデザむンに応甚する方法を孊ぶ実践曞ずなりたす。 「ナヌザヌフレンドリヌ」党史 䞖界ず人間を倉えおきた「䜿いやすいモノ」の法則 クリフ・クアン (著), ロバヌト・ファブ リカント (著), 尌䞁 千接子 (翻蚳) 「ナヌザヌフレンドリヌ」ずは、䜿いやすいこず、わかりやすいこず、扱いやすいこず。経隓の浅いナヌザヌにずっお䜿いやすい、わかりやすいこず。ナヌザヌのニヌズを念頭に眮いおデザむンされたもの。 コンピュヌタヌが登堎し、むンタヌネットが普及しはじめ、誰もが情報を取埗できるようになり、珟代だず、 スマヌトフォン が登堎し、人々の生掻をさらに䞀倉させたず思われたす。「ナヌザフレンドリヌ」が瀟䌚に浞透しおきた歎史から、䞖界ず人間を倉えおきた「䜿いやすいモノ」の法則を孊んでいけたす。 カむれン ・ゞャヌニヌ たった1人からはじめお、「越境」するチヌムを぀くるたで 垂谷 聡啓 (著), 新井 剛 (著) 本曞は、゜フトりェア開発に携わる人を察象ずしお曞かれおいるのですが、チヌムずしお掻動しおいこうずしおいる方、チヌムの取り組みで悩たれおいる方などにずっおも気づきのある䞀冊だず思いたす。 アゞャむル をこれから始める人などにもおすすめです。 コンノィノィアル・テク ノロ ゞヌ 人間ずテク ノロ ゞヌ が共に生きる瀟䌚ぞ 緒方壜人 (著) 「コンノィノィアリティ」 思想家むノァン・ むリむチ が提唱した抂念を足がかりに、これからの人間ずテク ノロ ゞヌ のあり方に぀いお玹介されおいたす。人間は道具を぀かっおいる぀もりで、実は道具に䜿われおいおず冒頭に曞かれおいるのですが、確かに、誰もが スマヌトフォン をも぀䞖の䞭ずなり、 スマヌトフォン をさわっおいない日はない気がしたす。第3章「人間ずデザむン」でデザむンに぀いおふれられおいたす。あらためお考えさせられるこずがあるず思いたす。 ラク スのデザむナヌにもおすすめ曞籍を聞いおみたした! 以䞋、 ラク スのデザむナヌ達が遞んだ「おすすめの曞籍」です。 前述におご玹介した曞籍も䜕冊かあるかず思いたす。 ランキング抂芁 手法任意アンケヌト ヒアリ ングシヌト ※耇数回答可 察象 ラク スのデザむン組織メンバヌ 有効回答数24名 ランキング内容投祚数2祚以䞊の技術曞 順䜍 曞籍名 投祚数 1 なるほどデザむン〈目で芋お楜しむ新しいデザむンの本。〉 8祚 2 けっきょく、よはく。 䜙癜を掻かしたデザむンレむアりトの本 6祚 3 オブゞェクト指向 UIデザむン──䜿いやすい゜フトりェアの原理 5祚 4 ノンデザむナヌズ・デザむンブック 2祚 4 あたらしい、あしらい。 あしらいに着目したデザむンレむアりトの本 2祚 4 ほんずに、フォント。 フォントを掻かしたデザむンレむアりトの本 2祚 4 誰のためのデザむン 2祚 『なるほどデザむン〈目で芋お楜しむ新しいデザむンの本。〉』ず『ノンデザむナヌズ・デザむンブック』は 私の方でも玹介させおいただきたしたので、それ以倖の曞籍を簡単にご玹介させおいただきたす。 倧人気のデザむン曞シリヌズ けっきょく、よはく。 䜙癜を掻かしたデザむンレむアりトの本 ingectar-e (著) どんなデザむンにも䜙癜があるず思いたす。䜙癜をうたく䜿いこなすこずで、情報の敎理に぀ながり、結果、掗緎されたデザむンずなる。事䟋を玹介し぀぀、色、フォントなど孊べるこずがあるず思いたす。 あたらしい、あしらい。 あしらいに着目したデザむンレむアりトの本 ingectar-e (著) 「いいデザむンはあしらいがおいねいなんだ!」人気シリヌズの第3匟です。「あしらい」ずは「装食」「ディテヌル(现郚)」のこず。NG䟋から問題点を掗い出し、OK䟋を提案し、どんな修正を行ったかに぀いお解説されおいたす。 ほんずに、フォント。 フォントを掻かしたデザむンレむアりトの本 ingectar-e (著) 人気シリヌズの第2匟です。いろんなフォントがあり、どれを遞べば、どう䜿えばいいのか。 「センス」がずわれたす。たくさんの䜿甚䟋ずずもに、センスを磚いおいけるず思いたす。 オブゞェクト指向 UIデザむン──䜿いやすい゜フトりェアの原理 ゜シオメディア株匏䌚瀟 (著), 侊野 å­Š (著, 監修), 藀井 幞倚 (著) 「 銀の匟䞞 、OOUI。」かなり むンパク トのある衚玙です。 オブゞェクト指向 ナヌザヌむンタヌフェヌス (OOUI)ずは、目圓おずなるオブゞェクトを起点ずしおUIを蚭蚈するこずになりたす。察象を遞んでから行動におこす。実践挔習も玹介されおいるので、孊びながら理解しおいけるず思いたす。 誰のためのデザむン D.A.ノヌマン (著) 初版刊行からロングセラヌずなっおいる曞籍です。冒頭にある「どんな新しいテク ノロ ゞヌ が出珟するか予枬できる人もいない、だが確実に予枬できるのは、本曞に述べるデザむンの原則は倉わらず残るずいうこずである。」デザむナヌだけでなく、補品やサヌビスに携わる方に読んでほしい䞀冊です。 さいごに いかがでしたか。気になる曞籍は芋぀かりたしたか。 少しでも興味のある本があれば、ぜひ、手にずっお読んでいただけるず幞いです。 あなたにずっお最良の本ずの出䌚いがあるこずを祈っおおりたす。 たた、 ラク スでは、珟圚、UIデザむナヌ、 Webデザむナヌ を募集䞭ずなりたす。 曞籍の賌入費補助もありたす。 ご興味ある方いたしたら、ぜひ、䞋蚘採甚サむトから、ご連絡ください。 尚、カゞュアル面談も倧歓迎です。UI/UX、デザむンに぀いおお話したしょう。お埅ちしおおりたす。 クリ゚むティブ課 朚村圭 おすすめの技術曞を玹介しおいる、以䞋関連ブログも是非ご確認ください 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