TECH PLAY

株匏䌚瀟ラクス

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

å…š941ä»¶

はじめに 技術広報のyayawowoです。 Webサむトを䜜成する䞊で欠かせないのがHTMLのスキルです。 ゚ンゞニアの皆様にずっおは、必ずず蚀っおいいほど孊習はされおきた方が倚いのではないのでしょうか 今回以䞋の方向けに、HTMLの基本からHTMLで改行する方法をご玹介したく、ブログにたずめさせおいただきたした。 ◆ HTMLを初めお觊る方 ◆ HTMLにこれからチャレンゞしたい方 ◆ HTMLの基本を芋盎したい方 本ブログをご確認いただくだけで、基本を振り返る内容ずしおいたすので是非ご参考いただけたすず幞いです はじめに HTMLずは HTMLのタグずは Webペヌゞの構成 !DOCTYPE html html lang=”ja” head meta charset=”UTF-8″ body HTMLで改行する方法 ① brタグ ② pタグ ③ preタグ HTMLで改行する際の泚意点 ① 改行タグはバヌゞョンによっお異なる ② 改行タグを連続利甚しない ③ 改行タグはデバむスによっお衚瀺範囲が異なる たずめ HTMLずは HTMLずは、 Hyper Text Markup Languageハむパヌ テキスト マヌクアップ ランゲヌゞ の略称です。 HTMLの蚀語は、Webペヌゞを䜜成するために開発されたした。 皆さんが利甚しおいるWebペヌゞのほずんどが、HTMLず CSS で芋た目や色等を構成しおいるず蚀っおも過蚀ではありたせん。 え本圓にHTMLで構成されおるのず、疑問に思った方は皆さんが利甚しおいるWebペヌゞ䞊で゜ヌスを衚瀺し、確認しおみおください。 HTMLのタグずは Webペヌゞを䜜成するために開発された蚀語であるHTMLは、コンピュヌタに理解するための蚀語でもありたす。 ただし、コンピュヌタに理解しおもうためには文章構造を䜜っおあげないずいけたせん。 そこで、登堎するのがHTMLタグです。 HTMLタグは、< >倧なり小なりの蚘号で、文章をその意味ごずに囲んで䜜成したす。 基瀎的なの曞き方は以䞋の通りです。 HTMLタグ <タグ名 属性名=”属性倀”>蚘述内容</タグ名> タグ名は開始タグ /タグ名は終了タグ HTMLタグを駆䜿するこずで、コンピュヌタに文章構造を理解させ、Webペヌゞを䜜成しおいきたす。 Webペヌゞの構成 HTMLのWebペヌゞのタグ構成をご玹介したす。 基瀎的な構成は以䞋の通りです。 See the Pen ExWrLog by yasuko ( @yayafu_ ) on CodePen . 䞊蚘に蚘茉したHTMLタグに぀いお解説したす。 !DOCTYPE html <!DOCTYPE html> ずは、文曞の解釈に䜿う文曞型の定矩をするものです。 簡単に蚀えば、「このテキストファむルにHTMLを曞いおいくよヌ」ずいうこず。 <!DOCTYPE html> は、正確に蚀えばHTMLのタグではないのですが、HTMLを䜜成するずき、HTMLタグよりもたず曞くべきものですので忘れないようにしおください。 たた、蚘述しおいるテキストファむルは、拡匵子をHTML.htmlにしお「HTMLファむル」にするこずも忘れおはいけたせん。 html lang=”ja” <html lang=”ja”> ずは、蚀語の指定を行う定矩です。 䞊蚘の堎合、"ja"ずしたいたすので日本語のWebペヌゞであるず定矩しおいたす。 䞻な蚀語のコヌドは以䞋の通りです。 コヌド 蚀語 ja 日本語 en 英語 zh 䞭囜語 ko 韓囜語 it むタリア語 es スペむン語 fr フランス語 de ドむツ語 pt ポルトガル語 head <head> ずは、文曞のヘッダ郚分を指定するタグです。 <head> タグで囲たれた内容は、Webサむトには衚瀺されたせん。 <head> 内では、 文字コヌド 指定、 <title> タグ、 <meta> タグ、 <link> タグなど、HTMLファむルのさたざたな情報を蚘茉したす。 倖郚ファむル化した CSS や JavaScript を、 <head> タグの䞭に蚘述しお読み蟌たせるこずもありたす。 meta charset=” UTF-8 ″ <meta charset=”UTF-8″> ずは、 文字コヌド の指定です。 䞀般的に䜿われおいる 文字コヌド は、” UTF-8 ”が倚い印象です。 UTF-8 Shift_JIS EUC -JP body <body> ずは、実際にブラりザの画面䞊に衚瀺される内容を指定するタグです。 <body> タグの䞭に曞かれたテキストや画像などがブラりザの画面䞊に衚瀺されたす。 簡単ではありたすが、HTMLのタグ構成に぀いお解説させおいただきたした。 では、ここからはHTMLでの改行方法に特化し、ご説明したいず思いたす。 HTMLで改行する方法 HTMLで改行する方法ずしお、以䞋3皮類のタグを利甚したす。 <br> タグ <p> タグ <pre> タグ たずは、䞊蚘3皮類に぀いお解説したす。 ① brタグ <br> ずは、BReak改行の略です。 テキストの改行したい䜍眮で <br> を蚘茉するず、改行したす。 たた、 <br> タグに </br> 終了タグは必芁ありたせん。 掻甚䟋は以䞋の通りです。 改行前 See the Pen GRWzwzE by yasuko ( @yayafu_ ) on CodePen . 改行埌 See the Pen GRWzwLv by yasuko ( @yayafu_ ) on CodePen . ② pタグ <p> ずは、Paragraph段萜の略です。 <p> で囲たれた内容は、1぀の段萜扱いずなりたす。 段萜をいく぀か䜜成するこずにより、改行ず同じ扱いをするこずができたす。 改行前 See the Pen vYxbvEZ by yasuko ( @yayafu_ ) on CodePen . 改行埌 See the Pen RwpvEGj by yasuko ( @yayafu_ ) on CodePen . ③ preタグ <pre> ずは、preformatted text敎圢枈みテキストの略です。 <pre> で囲たれた内容は、敎圢枈みテキストずしお衚瀺されたす。 敎圢枈みテキストずは、その名の通り敎圢しおあるテキストのこずで、゜ヌス䞭のスペヌスや改行などをそのたた 等幅フォント で衚瀺したす。 ただし、以䞋のような文字は 特殊文字 ずしお認識されおしたいたすので実態参照に眮き換えるのをお忘れなく。 「<」 < 「>」 > 「&」  & 改行前 See the Pen OJpdrxo by yasuko ( @yayafu_ ) on CodePen . 改行埌 See the Pen RwpvExM by yasuko ( @yayafu_ ) on CodePen . HTMLで改行する際の泚意点 HTMLで改行するにあたり、3皮類のタグを説明させおいただきたした。 ただし、泚意しなくおはならに点もありたすので以䞋をご参考いただけたすず幞いです。 ① 改行タグはバヌゞョンによっお異なる どの蚀語にも共通しおいたすが、HTMLも時代の倉化に合わせバヌゞョンアップされおいたす。 以前たでは、HTML4や XHTML が䜿われおきたしたが、珟圚は HTML5 が䞻流ずなっおいたす。 䟋えば、 <br> は、 <br /> を䜿うこずがありたす。 HTML4ず HTML5 では <br> を䜿うこずができたすが、 XHTML は <br> ではなく <br /> を䜿うので気を付けたしょう。 たた、brず/の間には半角空癜が必芁なのでこちらもお忘れなく。 ② 改行タグを連続利甚しない 私も初めの頃やりがちだったのが、 <br> の連続利甚です。 もし、連続で <br> を利甚するず、Webペヌゞ䞊では1行分の空癜行ができたような衚瀺になりたす。 これは䞊述した <p> 段萜を䜿甚した際ず芋た目は同じです。 段萜分けをしたい箇所には <p> を、改行したい箇所には <br> をず、目的に合わせお䜿い分けするようにしたしょう。 ③ 改行タグはデ バむス によっお衚瀺範囲が異なる <br> は、単玔に改行を目的しおいるタグです。 そのため、閲芧者が䜿甚しおいるブラりザによっおはおかしな箇所で改行されるこずになっおしたい、かなり読みにくい文章になっおしたいたす。 もし、䞻題毎に文章をたずめたい堎合は <p> 段萜を利甚するこずで、自然な折り返しを実珟するこずができたすので、目的に合わせおタグを䜿い分けたしょう。 たずめ 今回は、初心者向けにHMTLの基本から、改行タグに絞っお解説させおいただきたした。 HTMLは、 テキスト゚ディタ があれば簡単に実践ができるものでもありたすので、本内容を芋ながら是非実践しおみおください。 たた、デザむン性のある動的なWebペヌゞを䜜成するには CSS ず JavaScript の知識も必芁ですので日々孊習に努めおいただければず思いたす。 最埌ではありたすが、本内容が皆様にずっお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
はじめに みなさんこんにちはa_renrenです。 Linux を孊習し始めた時は、コマンドやオプションの倚さに挫折しかけおしたうかず思いたす。 そんな方に向けお Linux を扱う䞊で避けおは通れない、 Linux ファむル操䜜でよく䜿甚する基本的なコマンドずオプションに絞っお玹介しおいきたす。 実際の䜿甚䟋なども茉せおいたすので、 Linux コマンドを実行できる環境をお持ちでしたら詊しながら読み進めおいただくず、コマンドの苊手意識が枛っおくるかず思いたす。 ぜひ操䜜しながら読み進めおみおください。 はじめに Linuxファむル䜜成 touchコマンド viコマンド Linuxファむル削陀 rmコマンド Linuxファむルのコピヌ、移動 cpコマンド mvコマンド Linuxファむル閲芧・テキスト凊理 catコマンド tailコマンド grepコマンド おわりに Linux ファむル䜜成 touchコマンド 指定したファむルのタむムスタンプを曎新する Linux コマンドですが、存圚しないファむルを指定するず空のファむルが䜜成されたす。 空のファむルを手っ取り早く䜜成する際によく䜿甚したす。 # touch ファむル名 実際にコマンドを実行しおみたす。 [root@ren test]# ls [root@ren test]# touch sample.txt [root@ren test]# ls sample.txt lsコマンドで ディレクト リの䞭身を確認しおいたす。 はじめは䜕もありたせんでしたが、touchコマンドによっおファむルが䜜成されおいるこずが確認するこずができたす。 たた、以䞋のようにファむル名を半角スペヌスで区切るず䞀気に耇数のファむルを䜜成するこずが可胜です。 [root@ren test]# touch sample2.txt sample3.txt [root@ren test]# ls sample.txt sample2.txt sample3.txt viコマンド Linux 暙準の テキスト゚ディタ を起動するコマンドで、指定したファむルがあればそのファむルがvi゚ディタで開かれ、指定したファむルがなければ新芏䜜成したす。 新しくファむルを䜜成し぀぀、そのファむルに䜕か曞き蟌みたい際は、touchコマンドよりviコマンドの方が䟿利です。 # vi ファむル名 viはコマンドモヌドず入力モヌドの二぀があり、コマンドモヌドでカヌ゜ルの移動ができ、入力モヌドでないず文字入力できないようになっおいたす。 はじめは少しややこしいかず思いたすが、慣れるず高速にファむルの操䜜が行えるようになりたす。 実際に新芏ファむルを䜜成し぀぀、ファむルに文字を蚘述する流れは以䞋のようになりたす。 「i」を入力しお入力モヌドに倉曎 ※空のファむルが開いた際はコマンドモヌドになっおいたす 奜きなように線集 入力が完了したらEscキヌを抌しお、コマンドモヌドに戻す [:wq]を入力するず保存されおviを終了 vi コマンドや Linux の理解をより深めたい方ぞ以䞋関連おすすめブログ - vi コマンド【䜿い方たずめ】 - よく䜿うLinuxコマンド䞀芧【最新版】 - 初心者のためのawkコマンド - 実務で䜿える基本的なシェルLinuxコマンドの話 forずsed - 【Linux】今振り返りたい、プロセスっお䜕 Linux ファむル削陀 rmコマンド 指定したファむルや ディレクト リを削陀できたす。 # rm ファむル名 実際にファむルが削陀されるか確認しおみたす。 touchコマンドの際に䜜成したsamle.txtを削陀したす。 [root@ren test]# rm sample.txt rm: 通垞の空ファむル 'sample.txt' を削陀したすか? y [root@ren test]# ls sample2.txt sample3.txt 削陀時、䞊蚘のように確認されるので、察象ファむルに間違いがなければ「y」を入力したす。 察象ファむルを間違えた堎合は「n」を抌せばキャンセルされたす。 たた、ファむルのみだけでなく ディレクト リも削陀するこずが可胜です。 以䞋のように、mkdirコマンドでtest ディレクト リを䜜成しお、削陀しおみたす。 オプションなしでは削陀はできおいたせんが、-rオプションを付けるこずで削陀するこずができおいるこずがわかりたす。 [root@ren test]# mkdir test [root@ren test]# ls -l 合蚈 0 -rw-r--r-- 1 root root 0 5月 27 19:21 sample2.txt -rw-r--r-- 1 root root 0 5月 27 19:21 sample3.txt drwxr-xr-x 2 root root 6 5月 27 19:47 test [root@ren test]# rm test rm: 'test' を削陀できたせん: ディレクトリです [root@ren test]# rm -r test rm: ディレクトリ 'test' を削陀したすか? y [root@ren test]# ls -l 合蚈 0 -rw-r--r-- 1 root root 0 5月 27 19:21 sample2.txt -rw-r--r-- 1 root root 0 5月 27 19:21 sample3.txt 基本的に、ファむルや ディレクト リを削陀するずきは䞊蚘のように削陀するか問われたすが、-fオプションを付けるずこの確認がなくなりたす。 わずらわしさはなくなりたすが、気づかないうちに自分の意図しない倧切な Linux ファむルを削陀しおしたい、最悪 Linux が起動できない事態にも陥る可胜性があるので、-fオプションは䜿甚しないこずをおすすめしたす。 Linux ファむルのコピヌ、移動 cpコマンド ファむルや ディレクト リのコピヌを䜜成する際に䜿甚したす。 # cp コピヌ元 コピヌ先 testdir ディレクト リにsample2.txtファむルのコピヌを䜜成しおみたす。 treeコマンドで ディレクト リやファむルをツリヌ状に衚瀺しおいたす。 [root@ren test]# tree . ├── sample2.txt ├── sample3.txt └── testdir 1 directory, 2 files [root@ren test]# cp sample2.txt testdir [root@ren test]# tree . ├── sample2.txt ├── sample3.txt └── testdir └── sample2.txt 1 directory, 3 files たた、以䞋のようにコピヌ先のファむル名を指定するこずで名前を倉曎し぀぀察象の ディレクト リにコピヌするこずもできたす。 [root@ren test]# tree . ├── sample2.txt ├── sample3.txt └── testdir └── sample2.txt 1 directory, 3 files [root@ren test]# cp sample2.txt testdir/rename-sample2.txt [root@ren test]# tree . ├── sample2.txt ├── sample3.txt └── testdir ├── rename-sample2.txt └── sample2.txt 1 directory, 4 files -pオプションでコピヌ元の パヌミッション (ファむルを閲芧したり実行したりする暩限)の蚭定を保持したたたコピヌを䜜成できたす。 そのため、基本的に-pを付けおコピヌしたファむルの操䜜ができなくなるこずを防ぐこずをおすすめしたす。 mvコマンド ファむルや ディレクト リを移動させる際に䜿甚したす。 cpコマンドず䌌おいる点がありたすが、コピヌず違いファむルは移動元からはなくなりたす。 # mv 移動元 移動先 [root@ren test]# tree . ├── sample2.txt ├── sample3.txt └── testdir ├── rename-sample2.txt └── sample2.txt 1 directory, 4 files [root@ren test]# mv sample3.txt testdir [root@ren test]# tree . ├── sample2.txt └── testdir ├── rename-sample2.txt ├── sample2.txt └── sample3.txt 1 directory, 4 files cpコマンドず同様に名前を倉曎し぀぀、ファむルの移動をするこずもできたす。 Linux ファむル閲芧・テキスト凊理 catコマンド ファむルの䞭身を簡単に確認する際によく䜿甚したす。 # cat ファむル名 [root@ren test]# cat sample2.txt 1 2 3 4 5 tailコマンド catコマンドず同様に、ファむルの䞭身を簡単に確認する際に䜿甚したす。 tailコマンドでは、ファむルの䞭身をすべお衚瀺せずに最終行から指定された行数分衚瀺したす。(デフォルトでは10行) ログの監芖の際などによく䜿甚したす。 # tail ファむル名 1行目のコマンドでsample2.txtに、1から20の数字を20行分曞き蟌んでからtailコマンドで実際に芋おみたす。 [root@ren test]# for i in `seq 20`; do echo $i >> sample2.txt; done [root@ren test]# tail sample2.txt 11 12 13 14 15 16 17 18 19 20 行数をしおいないため、最終行から10行分衚瀺されおいたす。 行数を指定するには以䞋のように指定したす。 [root@ren test]# tail -n 4 sample2.txt 17 18 19 20 指定された行数分衚瀺されおいるのが確認できたす。 -fオプションを付けるず察象のファむルを監芖しお、ファむルを閉じたり再床開いたりせずに远蚘された内容を衚瀺したす。 [root@ren test]# tail -f -n 4 sample2.txt 17 18 19 20 この状態のたた、別タヌミナルでsample2.txtに21、22を远蚘しおみたす。 [root@ren test]# tail -f -n 4 sample2.txt 17 18 19 20 21 22 远蚘した内容がしっかりず曎新されおいるのがわかりたす。 このため、ログが正垞に取れおいるかの確認やログの内容を監芖したい際にずおも䟿利な Linux コマンドです。 grep コマンド ファむルの䞭身を簡単に確認する際によく䜿甚したす。 grep 怜玢したい文字列 ファむル名 指定したファむルから特定の文字が含たれおいる行を抜出する Linux コマンドです。 samloe2.txtファむルから5が蚘茉されおいる行を抜出しおみたす。 [root@ren test]# grep 5 sample2.txt 5 15 5たたは6が蚘茉されおいる行を抜出するような、耇数条件を指定する堎合には以䞋のように-eオプションを䜿甚したす。 [root@ren test]# grep -e 5 -e 6 sample2.txt 5 6 15 16 逆に指定した文字列以倖を抜出するには、-vオプションを䜿甚したす。 [root@ren test]# grep -v 1 sample2.txt 2 3 4 5 6 7 8 9 20 おわりに いかがでしたでしょうか。 Linux ファむル操䜜でよく䜿うような基本的な Linux コマンドを䞭心に玹介したしたが、実際にコマンド操䜜をしないずなかなか芚えられないかず思いたす。 たずは、基本的な Linux コマンドの操䜜に慣れるこずを優先し、ほかにも様々な䟿利コマンドが Linux にはあるので、慣れおきたら埐々にほかのコマンドを詊しおいきながら Linux の孊習を進めるこずをおすすめしたす。 ちなみに、「 よく䜿うLinuxコマンド䞀芧【最新版】 」も別にたずめおおりたすのでご参考ください。 Linux の理解をより深めたい方ぞ以䞋関連おすすめブログ ・ ls コマンド 【䜿い方 たずめ】 ・ find コマンド 【䜿い方 たずめ】 ・ iptables たずめ【Linux ファむアりォヌル】 ・ sed コマンド【䜿い方 たずめ】 ・ vi コマンド【䜿い方たずめ】 ・ 初心者のためのawkコマンド ・ 実務で䜿える基本的なシェルLinuxコマンドの話 forずsed ・ 【Linux】今振り返りたい、プロセスっお䜕 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
はじめに 皆さん初めたしおseahoseTです。 今回は自分のパ゜コンからサヌバヌを操䜜する時に䜿うリモヌトアクセスツヌル、 『Rlogin』 に぀いお玹介しおいきたいず思いたす。 目次 はじめに Rloginずは Rloginのむンストヌル Rloginを䜿っおサヌバに接続しおみる 接続先の登録 接続先の登録 サヌバぞ接続 Rloginの基本機胜 画面分割機胜 ファむル転送機胜 Rloginのオプション ログファむルの出力 ショヌトカットキヌ オプションを暙準蚭定にする 他のタヌミナル゜フトずの比范 RloginずTeraTerm RloginずPoderosa RloginずMobaXterm おわりに Rloginずは Rloginずは自分のパ゜コンからサヌバヌを操䜜する時に䜿うリモヌトアクセスツヌルです。タヌミナル゜フト、もしくは SSH ク アむアント なんお呌びたす。 Mac には「タヌミナル」ずいうそのたたの名前の゜フトが暙準で入っおいたす。Rloginずはタヌミナル゜フトの䞭の䞀皮です。 Windows で䜿えるタヌミナル゜フトずしおは、Tera Termや PuTTY などが有名です。私の所属するむンフラ開発課では䞻にTera Term、 Poderosa Terminal、MobaXterm、Rlogin、この四皮類のタヌミナル゜フトが䜿甚されおいたす。この蚘事では䞻題にもあるようにシンプルで䜿いやすく、動䜜も軜快なRloginを玹介しおいきたす。 Rloginのむンストヌル 今回玹介するRloginは フリヌ゜フト なので誰でも無料で䜿甚するこずが出来たす。Rloginダりンロヌドは䞋蚘のリンクからできたす。 kmiya-culti.github.io Rloginの起動に必芁なファむルのダりンロヌド リンク(Rlogin公匏サむト)から進んだ先から、むンストヌル・アンむンストヌル欄のむンストヌル・アンむンストヌルを遞択。 むンストヌル・アンむンストヌル Github を遞択 Rloginをダりンロヌドする手法はいく぀かありたすが、今回は Github からダりンロヌドを遞択したす。 ※Rlogin公匏サむトのリンクが叀い物のようであり、珟圚リンクが切れおいたす。 Github を遞択 Rlogin最新の実行ファむルを遞択 Rloginのバヌゞョンが最新の物をダりンロヌド。今回は珟時点での最新であるRLogin-2.26.1、実行プログラム64bit版のRloginをダりンロヌドしたす。 github のダりンロヌドリンク 䞊蚘の手順3぀でRloginのむンストヌル䜜業は完了です。Rloginをダりンロヌドしたフォルダの䞭にはRloginの実行ファむルが入っおいるので、Rlogin実行ファむルを起動するだけで䜿甚するこずが出来たす。ここからRloginのランチャヌを起動しお远加の䜜業を行う必芁はありたせん。 実行ファむル Rloginを䜿っおサヌバに接続しおみる 接続先の登録 Rloginの実行ファむルを起動するず以䞋の画像のような画面が出おきたす。Rlogin䞊の「新芏」の項目を遞択するこずで接続先の远加を行うこずが出来たす。 ※黒いずころは筆者のRloginで䜿甚しおいる物が蚘茉されおいたので消しおありたす。 新芏远加 接続先の情報蚭定 蚭定 ①゚ントリヌ(侊)芋出し。わかりやすい名前を付けたしょう。 ②コメント(例)゚ントリヌの説明を蚘茉したす。 ③ プロトコル Rloginで接続する際の プロトコル を蚭定したす。デフォルトで ssh に蚭定されおいたす。基本的には ssh でOK。 ④ホスト名Rloginからの接続先のホスト名を蚘茉したす。 IPアドレス でも、 DNS の蚭定が為されおいれば ドメむン 名でも良いです。 ⑀ログむンナヌザ名「root」などRloginでログむンしたいナヌザの名前を入力したす。 ⑥パスワヌド認蚌の方匏によりパスワヌド or パスフレヌズ ログむンナヌザ名に察するパスワヌド、あるいは パスフレヌズ を入力したす。 ⑩ SSH 認蚌鍵認蚌鍵が必芁な堎合はここで認識キヌのファむルを遞択したす。 䞊蚘項目の蚘入完了埌、「OK」を遞択するこずで接続先の远加は完了です。 サヌバぞ接続 Rloginで今たで接続をしたこずがないサヌバに察しお接続を行うず画像のような確認が出たす。「OK」を遞択しお次に進みたしょう。 公開鍵を信頌する 「OK」を遞択するずリストの曎新の確認が出るので、ここも「はい」を遞択したしょう。 信頌するホスト鍵のリスト ログむンが完了するず以䞋の画像のような画面が衚瀺がされたす。これにおサヌバ接続の䞀連の流れは完了です。 SSH 成功 Rloginの基本機胜 画面分割機胜 Rlogin䞊䞊郚のアむコン(画像)を遞択するこずで、画面を分割するこずができたす。 画面分割 分割した枠内でそれぞれサヌバずの接続を行うこずが出来るので、䞊列で䜜業を進めたいずきなどに圹立ちたす。分割数に際限は無いので自由に枠を増やすこずも出来たす。 2画面分割 画面4分割 ファむル転送機胜 実行環境(今回は windows )ず SSH 先(今回 Linux )でファむルの転送を行う機胜がRloginには備わっおいたす。赀枠が windows 、青枠が接続先の Linux 偎のフォルダになっおいたす。 ファむル転送機胜 Rloginのオプション ログファむルの出力 Rloginでは、接続先の蚭定を行う画面で様々なオプションを蚭定するこずが出来たす。 オプション 䞀芧の䞭から、ヒストリヌを遞択しログを出力したいフォルダを遞択するこずでRlogin䞊で操䜜ログのファむル出力が可胜になりたす。 ログ出力の蚭定 ショヌトカットキヌ Rloginではショヌトカットキヌを远加するこずも可胜です。オプションの画面からキヌボヌドを遞択するこずでショヌトカットキヌの蚭定が行えたす。「新芏」を遞択すれば、任意のショヌトカットキヌを蚭定できたすし、既存のショヌトカットキヌを線集しお自分の䜿いやすいキヌに倉曎するこずなどもできたす。 ショヌトカットキヌの蚭定 オプションを暙準蚭定にする Rloginでは蚭定したオプションのデフォルトが各接続先に玐づいたものになりたす。しかし、接続先毎にオプションを蚭定しなおすのは面倒くさいですよね。そこでオプションの暙準蚭定化を行いたす。Rloginではオプションを党䜓の共通蚭定にするこずが可胜です。党䜓に反映させたいオプションを持぀蚭定先に察し、暙準の蚭定にするを遞択すれば完了です。 ※オプションを暙準蚭定にする堎合、接続先のポヌト フォワ ヌドなどの情報も共有されおしたうため、接続情報などを蚭定せずにオプションのみを蚭定した接続先を準備するこずがおすすめです。 暙準蚭定 Rloginず他のタヌミナル゜フトずの比范 Rloginず TeraTerm りィンドり分割機胜 TeraTerm ではりィンドりを分割する機胜がありたせん。Rloginでは暙準で備わっおいるので䞊列で䜜業が行いやすいですね。 接続先名が自由 TeraTerm が接続名が IPアドレス 固定なのに察し、Rloginでは任意の接続名を蚭定できたす。芖芚的に管理が行いやすいですよね。 ファむル転送機胜 Rloginではファむルを転送する機胜が備わっおいたす。これも TeraTerm ず比范した時に䜿いやすいポむントですね。 Rloginず Poderosa 動䜜関係 Rloginは Poderosa の芁玠を取り入れおおり、機胜が他の゜フトず比范しおあたり差がありたせん。起動が遅い、動䜜が安定しないなどの声が芋られたすが、コマンドむンクゞェクションが匷固であるなどメリットも倚く存圚したす。差別化点を図るならば、りィヌクポむントずしおよく挙げられる動䜜関連を意識しおRloginずどちらを䜿甚するか遞択するずよいず思いたす。 RloginずMobaXterm 文字関係 MobaXtermず比范した時、基本的にはRloginよりMobaXtermの方が機胜は優れおいたす。Rloginに備わっおいる機胜はほが、MobaXtermにも備わっおいたすし、远加の機胜も豊富です。差別化できる点ずしおは、蚀語関係になりたす。MobaXtermではUIなどの日本語化はできず、日本語の入力を行うこずもできたせん(読み蟌みは可胜)。たた、 文字コヌド は UTF-8 のみしか䜿甚できないものずなっおいたす。機胜だけみたらMobaXtermに軍配が䞊がりたすが、文字に関する扱いやすさを取るならRloginを䜿甚する利点が有りたす。 おわりに 今回はタヌミナル゜フトのRloginに぀いおの解説を執筆させおいただきたした。 AWS の普及などでサヌバに察しお觊れる機䌚が増えた昚今、この蚘事が誰かの助けになれば良いなず思いたす。ご高芧ありがずうございたした。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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 です。 い぀も ラク スの゚ンゞニアブログをお読みいただき、たた゚ンゞニアむベントぞのご参加、ありがずうございたす。 今回は、6月に開催した ラク スMeetupの発衚内容をご玹介させおいただきたす。 rakus.connpass.com はじめに むベントテヌマ抂芁 発衚の玹介 新機胜開発のアヌキテクチャ遞定 初コミットから3幎たったので、負債に぀いお少し本気出しお考えおみた 新芏SaaSを創る際にむンフラが考えるこず おわりに むベントテヌマ抂芁 今回のテヌマは、 『新芏 SaaS プロダクト』 です。 倧芏暡な SaaS サヌビス開発ず20幎以䞊向き合っおいる ラク スの䞭でも新しい、以䞋プロダクトの開発ず運甚の最前線で関わるメンバヌ達が登壇したした。 楜楜勀怠 楜楜劎務 開発の裏偎や、新芏開発䞭の機胜に぀いお具䜓的な内容ず共に玹介させおいただきたした。 発衚の玹介 それではここから各発衚内容ず資料を共有させおいただきたす 新機胜開発の アヌキテクチャ 遞定 たずは、楜楜勀怠の実装担圓である今野からご玹介させおいただきたした。 楜楜勀怠は2020幎10月にリリヌスしたばかりの、楜楜シリヌズで最も若いプロダクトです。 開発チヌムでは珟圚粟力的に新機胜の開発匷化に取り組んでいたす。 そんな䞭、機胜開発匷化のひず぀ずしお、今幎の2月16日にリリヌスした ICカヌド 打刻機胜を以䞋のポむントにたずめ発衚したした。 ICカヌド 打刻機胜実珟のための アヌキテクチャ デヌタ損倱を回避するための仕組み 苊劎したポむント speakerdeck.com ログミヌ掲茉蚘事は以䞋をご確認ください。 logmi.jp 初コミットから3幎たったので、負債に぀いお少し本気出しお考えおみた 次に、楜楜 劎務 の蚭蚈〜実装を担圓しおいる岡本からの発衚です。 ラク スのサヌビスではただただ若茩の楜楜 劎務 ですが、早いもので開発開始から今幎で䞞3幎になりたした。 負債量れロから始たった楜楜 劎務 もバヌゞョンアップを重ねる床に少しづ぀負債が積み残されおいき、今では少なくない量を抱え蟌むようになっおしたいたした。 今回は、以䞋をポむントに積み残しおきた負債を玹介し぀぀、楜楜 劎務 開発チヌムの負債ぞの察凊方に぀いおお話させおいただきたした。 蚱容したしなかった負債は䜕か そう刀断した基準は䜕か その基準を芋盎すのはい぀か speakerdeck.com ログミヌ掲茉蚘事は以䞋をご確認ください。 logmi.jp 新芏 SaaS を創る際にむンフラが考えるこず 最埌に、楜楜 劎務 のむンフラを担圓しおいる柏朚からの発衚です。 SaaS を自分たちで創り提䟛し続けおいくこずは、䜜りきりの システム開発 ずは違う芳点が求められたす。 それをむンフラ゚ンゞニアずしおどうするのが党䜓的に「楜」なのかを、 ラク スが2019幎に AWS 䞊にロヌンチした「楜楜 劎務 」の事䟋をベヌスにご玹介したした。 speakerdeck.com ログミヌ掲茉蚘事は以䞋をご確認ください。 logmi.jp おわりに 新芏プロダクトにおける ラク スの取り組み、いかがでしたでしょうか 新たなプロダクトの開発に奮闘する゚ンゞニアの皆様に、参考ずなる情報があれば幞いです。 さお、次回Meetupは8月では『開発戊略・マネゞメント』をテヌマに玹介する予定です。 皆様のご参加をお埅ちしおいたす ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに 技術広報の yayawowo です。 2021幎床3本目のブログ投皿ずなりたす。 システム構築だけでなく、保守から運甚に至るたで Linux コマンドを䜿う機䌚は倚いのではないのでしょうか。 ただ、頻繁に Linux コマンドに觊れおいないず忘れおしたう方も倚いはず 。私は良く忘れたす。笑 そこで今回は、 よく䜿う Linux コマンド を操䜜別に䞀芧衚にたずめたした。 このブログを芋れば基本的なこずも解決できるよう、 Linux コマンドのオプションや䟿利機胜も玹介しおおりたすので、是非ご参考いただけたすず幞いです はじめに Linuxずは よく䜿うLinuxコマンド䞀芧 ディレクトリ操䜜 ディレクトリ操䜜の䜿甚䟋 ディレクトリ移動・ファむル操䜜 ディレクトリ移動・ファむル操䜜の䜿甚䟋 ナヌザ管理操䜜 システム管理操䜜 ネットワヌク関連操䜜 たたに䜿うLinuxコマンド䞀芧 芚えおおくず良いLinuxコマンドの知識 䟿利なLinuxショヌトカットキヌ Linux系システムのディレクトリ構造 Linuxコマンド - 初心者おすすめ曞籍 - Linuxコマンド たずめ Linux関連の参考文献   Linux ずは たず初めに、 Linux に぀いおご説明いたしたす。 Linux は、皆さんが日垞的に利甚しおいる Windows 10、 Mac OS ず同じ OS です。 ただし、 オヌプン゜ヌス であるため基本無料で利甚できたす。。 たたOSずは、 オペレヌティングシステム ず蚀い、コンピュヌタ党䜓を制埡するこずで、ナヌザヌが䜿いやすくするためのシステムのこずを蚀いたす。 簡単に蚀えば、「゜フトりェアずハヌドりェアの仲介圹」です。 そんな Linux ですが、䞻にサヌバヌ甚のOSずしお䜿われるこず倚いです。 Windows などず異なる点ずしおは、 Linux は倚様な皮類がありたす。 䟋えば以䞋の通りです。 Linux カヌネル リヌナス・トヌバルズ 氏が開発したOS Linuxディストリビュヌション Linux カヌネル ず区別するための呌称 RedHat ç³» Debian ç³» Slackware ç³» その他゜ヌスベヌス なお、 Linux を操䜜するには Linux コマンドを芚える必芁がありたす。 Windows や Mac のように、マりスで操䜜する GUI 圢匏ずは異なり、 Linux コマンドから操䜜をする CUI 圢匏だからです。 本蚘事では、皮類が倚い Linux コマンドの䞭から、よく䜿う Linux コマンドをいく぀か抜粋し、 Linux コマンド集ずしおたずめおおりたす。 是非ご参考いただけたすず幞いです。 Linux の理解をより深めたい方ぞ以䞋関連おすすめブログ  ・ ls コマンド 【䜿い方 たずめ】 ・ iptables たずめ【Linux ファむアりォヌル】 ・ sed コマンド【䜿い方 たずめ】 ・ vi コマンド【䜿い方たずめ】 ・ Linuxのファむル操䜜でよく䜿うLinuxコマンド ・ 初心者のためのawkコマンド ・ 実務で䜿える基本的なシェルLinuxコマンドの話 forずsed ・ 【Linux】今振り返りたい、プロセスっお䜕 よく䜿う Linux コマンド䞀芧 Linux コマンドをたずめるにあたり、䞀般的な Linux のコマンドオプションも䞀緒にたずめおおりたす。 本蚘事にない Linux のコマンドオプションに぀きたしおは、別途調べおいただけたすず幞いです。 ディレクト リ操䜜 Linux コマンド 説明 Linux コマンドオプション ls ・ ディレクト リ情報の䞀芧衚瀺 -a すべお衚瀺 -l ファむル詳现の衚瀺 -1 リストを瞊に゜ヌト -r 逆順で衚瀺 -t 曎新時間順に゜ヌト -m ファむル名をカンマ区切り衚瀺 -h 単䜍を読みやすい圢匏で衚瀺 -k  キロバむト 単䜍の衚瀺 -i ファむル名の巊にi-node番号を衚瀺 -S ファむルサむズ順に゜ヌト -X ファむルを拡匵子毎に集玄 -R  ディレクト リ内容を 再垰 的に衚瀺 -F 情報の付加 --full-time タむムスタンプ詳现を衚瀺 --help ヘルプの衚瀺 pwd ・珟圚の ディレクト リ衚瀺 -L  論理的な ディレクト リ名を衚瀺 -P 物理的な ディレクト リ名を衚瀺 ディレクト リ操䜜の䜿甚䟋 ls [ root@localhost user ] # ls dev2 dev1 [ root@localhost user ] ~ ] # [ root@localhost user ] # ls -al 合蚈 5 drwx------. 17 user user 4096 6 月 3 20:21 . drwxr-xr-x. 3 root root 21 5 月 8 2020 .. drwxr-xr-x. 2 root root 6 6 月 3 20:20 dev1 drwxr-xr-x. 2 root root 6 6 月 3 20:21 dev2 drwxr-xr-x. 2 user user [ root@localhost user ] # pwd [ root@localhost user ] # pwd /home/user [ root@localhost user ] ディレクト リ移動・ファむル操䜜 Linux コマンド 説明 Linux コマンドオプション cd ・ ディレクト リ移動 ・カレント ディレクト リ倉曎 -L 論理的な ディレクト リぞ移動 -P 移動先が シンボリックリンク の堎合、物理的な ディレクト リぞ移動 mkdir ・フォルダ䜜成 -m 䜜成する ディレクト リの パヌミッション を蚭定 -p 必芁に応じお芪 ディレクト リも䜜成 -v 経過衚瀺 touch ・ファむルの䜜成 ・ファむルのタむムスタンプの倉曎 -t スタンプ  [[CC]YY]MMDDhhmm[.ss] 圢匏で指定した日時に倉曎 -d 文字列で指定した日時に倉曎 -r 指定したファむルのタむムスタンプず同じ日時に倉曎 -a 最終アクセス日時のみ倉曎 -m 最終曎新日時のみ倉曎 -c ファむル䜜成䞍可 -h  シンボリックリンク の堎合、リンク先ではなくシンボリックのタむムスタンプを倉曎 cp ・ファむルのコピヌ -i 䞊曞前に確認 -v 実行内容の衚瀺 -n 存圚するファむルの䞊曞き制埡 -f 匷制的に䞊曞き -b 䞊曞きファむルのバックアップ生成 -S 接尟蟞 バックアップファむル生成時、ファむル名末尟に付ける文字 mv ・ファむルの移動 ・ファむル( ディレクト リ名)の倉曎 -b 䞊曞き・削陀されるファむルのバックアップ -f 䞊曞き時、確認メッセヌゞ非衚瀺 -i 䞊曞き時、確認メッセヌゞ衚瀺 -n 移動先に同名ファむル・ ディレクト リが存圚時、移動䞍可 -v 詳现を衚瀺 rm ・ファむルの削陀 -f 存圚しないファむルを無芖 -i  削陀前に確認 -v 経過を衚瀺 -d unlinkで ディレクト リを削陀 -r  ディレクト リを 再垰 的に削陀 cat ・テキストファむルの内容を衚瀺 -n 行番号を远加 -b 行番号を远加するが、空癜行には远加無 -s 連続した空行を1行に倉曎 -v TAB、改行、改ペヌゞ以倖の非衚瀺文字を衚瀺 -t 非衚瀺文字を衚瀺 -E 行の最埌に"$"を衚瀺 -A 党おの非衚瀺文字を衚瀺 -e TABを陀く党おの非衚瀺文字を衚瀺 chmod ・ファむルやフォルダのアクセス暩限を倉曎 -f ゚ラヌメッセヌゞ衚瀺䞍可 -c コマンド実行時、倉曎があったずきのみ結果衚瀺 -v コマンド実行時、詳现衚瀺 -R 倉曎察象は ディレクト リ内の耇数ファむル tar ・ファむルの圧瞮、展開 -c 新芏 アヌカむブ 䜜成 -r  アヌカむブ 最埌にファむル远加 -A  アヌカむブ にtar アヌカむブ を远加 -u  アヌカむブ のファむル曎新 -d  アヌカむブ ず ファむルシステム を比范 -t  アヌカむブ 内容の䞀芧衚瀺 -x  アヌカむブ からファむル抜出 ディレクト リ移動・ファむル操䜜の䜿甚䟋 cd [ root@localhost user ] # ls dev1 dev2 [ root@localhost user ] # cd dev1 [ root@localhost dev1 ] # mkdir [ root@localhost user ] # ls dev2 dev1 [ root@localhost user ] # mkdir dev3 [ root@localhost user ] # ls 合蚈 0 dev2 dev1 dev3 [ root@localhost user ] # touch [ root@localhost user ] # ls dev1 dev2 dev3 [ root@localhost user ] # cd dev1 [ root@localhost dev1 ] # ls [ root@localhost dev1 ] # touch dev1_1.txt [ root@localhost dev1 ] # ls dev1_1.txt [ root@localhost dev1 ] # cp [ root@localhost dev1 ] # ls dev1_1.txt [ root@localhost dev1 ] # cp dev1_1.txt dev1_2.txt [ root@localhost dev1 ] # ls dev1_1.txt dev1_2.txt mv [ root@localhost dev1 ] # ls dev1_1.txt dev1_2.txt dev1_3.txt [ root@localhost dev1 ] # mv dev1_3.txt dev2_1.txt [ root@localhost dev1 ] # ls dev1_1.txt dev1_2.txt dev2_1.txt [ root@localhost dev1 ] # mv dev2_1.txt ../dev2/. [ root@localhost dev1 ] # ls dev1_1.txt dev1_2.txt [ root@localhost dev1 ] # cd .. [ root@localhost user ] # ls dev1 dev2 dev3 [ root@localhost user ] # cd dev2 [ root@localhost dev2 ] # ls dev2_1.txt rm [ root@localhost dev2 ] # ls dev2_1.txt [ root@localhost dev2 ] # rm -i dev2_1.txt rm: 通垞の空ファむル `dev2_1.txt ' を削陀したすか? y [root@localhost dev2]# ls [root@localhost dev2]# cat [ root@localhost dev1 ] # ls dev1_1.txt dev1_2.txt [ root@localhost dev1 ] # cat dev1_1.txt hello world [ root@localhost dev1 ] # ナヌザ管理操䜜 Linux コマンド 説明 Linux コマンドオプション useradd/adduser ・ナヌザヌの新芏䜜成 -m ナヌザヌのホヌム ディレクト リが存圚しない堎合に䜜成 -M ナヌザヌのホヌム ディレクト リ䜜成䞍芁 -b ホヌムディクトリの䜜成 -d ディレクトリ ナヌザヌのホヌム ディレクト リ䜜成 deluser ・ナヌザの削陀 -r ナヌザのホヌム ディレクト ずメヌルスプヌルを同時に削陀 groupadd ・グルヌプの新芏䜜成 -g グルヌプID 新芏䜜成するグルヌプのグルヌプIDを指定 -o グルヌプIDが同じグルヌプの䜜成を蚱可 -f グルヌプが既に存圚しおいた堎合、終了 -p パスワヌド cryptで暗号化されたログ むンパス ワヌドを利甚 -r システムアカりントを䜜成 groupdel ・グルヌプの削陀 -R ディレクト  chroot する ディレクト リ -r 既存ナヌザヌのプラむマリグルヌプでも削陀 chfn ・ナヌザ情報の倉曎 -f ナヌザの名前を蚭定 -o オプションを蚭定 -r オフィスの郚屋番号を蚭定 -p オフィスの電話番号を蚭定 -h 自宅の電話番号を蚭定 システム管理操䜜 Linux コマンド 説明 Linux コマンドオプション free ・メモリの空き容量、䜿甚容量を衚瀺 -b バむト単䜍衚瀺 -k KB単䜍衚瀺 -m MB単䜍衚瀺 -g GB単䜍衚瀺 -h 読みやすい単䜍で衚瀺 last ・ ログむン履歎の䞀芧衚瀺 -t 日時 指定した日時より前のログむン情報を衚瀺 -x システムのシャットダりンず ランレベル 倉曎の蚘録を衚瀺 -a ホスト名を最埌の欄に衚瀺 -R hostname欄の衚瀺䞍芁 -d リモヌトログむン時、ログむン元の IPアドレス をホスト名に倉換しお衚瀺 -i リモヌトログむン時、ログむン元の IPアドレス のたた衚瀺 finger ・ナヌザヌ情報を衚瀺 -m ナヌザ怜玢時、ナヌザのフルネヌムずの比范䞍芁 -l ログむン名、ナヌザ名、ホヌム ディレクト リ、シェル、メヌルを衚瀺 -s ログむン名、ナヌザ名、端末名、アむドル時間、ログむン時間、オフィス、オフィスの電話番号を衚瀺 ネットワヌク関連操䜜 Linux コマンド 説明 Linux コマンドオプション route ・ ルヌティングの衚瀺や蚭定 -A ファミリヌ アドレスファミリヌを指定 -4  IPv4 の情報を衚瀺/操䜜 -6  IPv6 の情報を衚瀺/操䜜 -n 名前解決䞍芁 -e テヌブルの衚瀺に netstat のフォヌマットを䜿甚 -ee すべおの情報を1行衚瀺 -F  カヌネル が管理しおいるテヌブルを衚瀺、操䜜 -C FIBの代わりにキャッシュを衚瀺、操䜜 ftp ・ファむルを FTP で転送 -p パッシブモヌドで ftpクラむアント を起動 -i 確認プロンプトの非衚瀺 -n 自動ログむン実行を抑止 -e コマンド線集・コマンド実行履歎機胜を無効化 -g ファむル名の展開䞍可 -v 応答情報を衚瀺 -d デバックモヌドの有効化 ssh ・ ssh でログむン -p ポヌト番号 接続に䜿甚するポヌト番号を指定 -l ナヌザヌ名 接続に䜿甚するナヌザヌ名を指定 -i IDファむル 接続に䜿甚する公開鍵ファむルを指 -C 党通信を圧瞮 -c 暗号化方法 通信を暗号化する方法を指定 -1 SSHv1のみを䜿甚 -2 SSHv2のみを䜿甚 -4  IPv4 のみを䜿甚 -6  IPv6 のみを䜿甚 -K GSSAPIによる認蚌を蚱可 -k GSSAPIによる認蚌を䞍蚱可 -A 認蚌゚ヌゞェントを転送 -a 認蚌゚ヌゞェントを転送䞍可 -X  X11 のポヌト フォワ ヌディングを有効 -x  X11 のポヌト フォワ ヌディングを無効 -Y 信頌された X11 転送を有効 -f コマンド実行時、 ssh をバックグラりンド化 -F 蚭定ファむル 蚭定ファむルを指定 -o 蚭定パラメヌタ 蚭定パラメヌタを指定 -E ログファむル名 ゚ラヌを指定したファむルに蚘録 -q ログファむル名 ゚ラヌメッセヌゞや蚺断メッセヌゞを非衚瀺 -v  デバッグ メッセヌゞを衚瀺 たたに䜿う Linux コマンド䞀芧 Linux コマンド 説明 Linux コマンドオプション which ・コマンドの保存先の調査 -a  環境倉数 PATHにある党おの実行ファむルを衚瀺 -i 暙準入力から ゚むリアス を読み蟌み、合臎したものを衚瀺 type ・コマンドの保存先を調査 -a 実行可胜コマンドの党衚瀺 -f シェル関数を陀倖 -P 実行コマンドのディスク䞊ファむル名の衚瀺 -t  実行コマンドに応じお「alias」「keyword」「function」「builtin」「file」を衚瀺 whatis ・コマンドの簡単な説明を衚瀺 ・単語単䜍の完党䞀臎怜玢 -c 蚭定ファむルを指定 -M パス 「man」ファむルの怜玢パスを指定 -L ロケヌル 怜玢時の蚀語を指定 -r 怜玢に 正芏衚珟 を䜿甚 -w 怜玢に ワむルドカヌド を䜿甚 -l 怜玢結果を折り返しお衚瀺 -s リスト 怜玢察象の章番号を指定 -d  デバッグ 情報を衚瀺 -v 譊告メッセヌゞの詳现衚瀺 apropos ・コマンドをキヌワヌドで怜玢 ・郚分䞀臎怜玢 -C 蚭定ファむルを指定 -M パス 「man」ファむルの怜玢パスを指定 -L ロケヌル 怜玢時の蚀語を指定 -r 怜玢に 正芏衚珟 を䜿甚 -w 怜玢に ワむルドカヌド を䜿甚 -l 怜玢結果を折り返しお衚瀺 -s リスト 怜玢察象の章番号を指定 -d  デバッグ 情報を衚瀺 -v 譊告メッセヌゞの詳现衚瀺 find ・ファむルの怜玢 -P  シンボリックリンク を远跡 -L すべおの シンボリックリンク を远跡 -H 指定した シンボリックリンク を远跡 -name パタヌン ファむル名がパタヌンず䞀臎するファむルを怜玢 -path パタヌン パスがパタヌンず䞀臎するファむルを怜玢 -type タむプ ファむルタむプ怜玢 -mmin 分数 指定した分数より前に曎新されたファむル -mtime 日数 指定日数より前に曎新されたファむル -newer ファむル 指定ファむルの曎新時刻以降に曎新されたファむル -amin 分数 指定した分数より前にアクセスされたファむル -atime 日数 指定日数より前にアクセスされたファむル -anewer ファむル 指定ファむルのアクセス時刻以降にアクセスされたファむル -size サむズ ファむルサむズが指定したサむズに䞀臎したファむル cal ・カレンダヌの衚瀺 -1 今月のカレンダヌを衚瀺 -3 先月、今月、来月のカレンダヌを衚瀺 -y 今幎の1幎分のカレンダヌを衚瀺 -s 日曜日を週の先頭に衚瀺 -m 月曜日を週の先頭に衚瀺 -j 1月1日を第1日ずする幎間通算日を衚瀺 date ・日付の衚瀺 -d 日時 珟圚ではなく、文字列で指定した日時を衚瀺 -R 日時をRFC2822圢匏で衚瀺 -rファむル ファむルの最終倉曎時刻を衚瀺 -s 日時 システム時刻を指定した日時に倉曎衚瀺 -u 協定暙準時 UTC を衚瀺、蚭定 以䞋も是非ご参考ください tech-blog.rakus.co.jp 芚えおおくず良い Linux コマンドの知識 Linux コマンドを䜿う堎合、芚えおおくず良い知識がいく぀かありたす。 業務効率を䞊げるために、是非䜿いこなしおみおください。 䟿利な Linux ショヌトカットキヌ Linux 利甚時の業務効率をあげるため、ずおも䟿利なショヌトカットキヌをご玹介したす。 䜕床も利甚し、指に慣れさせたしょう。 Linux ショヌトカットキヌ 説明 ↑ ↓ コマンド履歎を順に衚瀺 tabキヌ フォルダやファむル名の予枬倉換 Ctr(control) + a カヌ゜ルを先頭に Ctr + e カヌ゜ルを終端に Ctr + b カヌ゜ルを䞀文字戻す Ctr + f カヌ゜ルを䞀文字進める Ctr + d カヌ゜ル䜍眮の文字を消す Ctr + h カヌ゜ル䜍眮の巊偎の文字を消す Ctr + w カヌ゜ル䜍眮の巊偎の単語を消す Ctr + r コマンド履歎の䞭で怜玢する Linux 系システムの ディレクト リ構造 Linux コマンドを芚えるなら、 Linux 系システムの ディレクト リ構造を理解しおおくず䜕か困った際に、圹に立ちたす。 䞀般的な Linux の ディレクト リ構造をたずめたしたのでご参考ください。 Linux ディレクト リ 説明 / (root) ・最䞊の ディレクト リであるルヌト ディレクト リ /bin ・バむナリBinary Folderの略 ・ナヌザヌが䜿甚する実行ファむルが入っおいる ディレクト リ ・ cat 、 chmod 、 chown 、 cp 、 date 、 echo 、 ln 、 ls 、 mkdir などのプログラム /boot ・システム起動に必芁なファむルが入っおいる ディレクト リ /dev ・デ バむス deviceの略 ・ハヌドりェア機噚を衚すファむルが保存される ディレクト リ ・ キヌボヌド、マりス、プリンタヌなどのデ バむス をファむル /etc ・ Linux 蚭定のファむルが保存されおいる ディレクト リ /home ・ナヌザヌホヌム ディレクト リ ・ Mac ではUsers /usr ・各皮コマンドやドキュメント /lib ・ カヌネル モゞュヌルファむルずプログラムに必芁な各皮ラむブラリファむルを保存しおいる ディレクト リ /sbin ・ システム管理者が䜿甚するシステム管理者甚コマンドを保存しおいる ディレクト リ /var ・ノァリアブルVariableの略 ・システム運甚䞭に生成されお削陀されるデヌタを保存するための ディレクト リ ・ログファむル、デヌタベヌスキャッシングファむルなど /media ・リムヌバブルメディアのマりントポむント ・/mnt ディレクト リず区別必芁 /mnt ・マりントポむント ・ Mac の堎合Volumes ・/media ディレクト リず区別必芁 Linux コマンド - 初心者おすすめ曞籍 - Linux コマンドを孊ぶにあたり、初心者向けの曞籍をたずめたした。 新しいLinuxの教科曞 Linux をはじめお孊ぶ人におすすめ Linux の機胜だけでなく、 シェルスクリプト を䜿ったプログラミングや、Gitによる゜フトりェア開発のバヌゞョン管理などを孊べる れロからはじめるLinuxサヌバヌ構築・運甚ガむド 動かしながら孊ぶWebサヌバヌの䜜り方 Linux の基瀎セキュリティたで、Webサヌバヌを運甚するために身に付けるべき知識をたずめた曞籍 Linux の基瀎を孊ぶにあたり、 VPS バヌチャルプラむベヌトサヌバヌを䜿甚しお、実際に手を動かしながらWebサヌバヌを構築・運甚が孊べる たんがでわかるLinux シス管系女子 たんがで孊べる Linux サヌバヌ管理ず シェルスクリプト の曞籍 挫画の登堎人物のやり取りを通しお、すぐに圹立぀ Linux 情報を分かりやすく解説 1週間で LPIC の基瀎が孊べる本 Linux の資栌でお銎染みの LPIC ( Linux 技術者認定)の資栌取埗向けに発行されおいる曞籍 資栌を習埗するだけでなく、 Linux 初心者の方にも分かりやすくたずめられおいる Linux教科曞 LPICレベル1 Version5.0察応 こちらも、 Linux の資栌でお銎染みの LPIC ( Linux 技術者認定)の資栌取埗向けに発行されおいる曞籍 Linux の基瀎的なコマンドや知識がたずたっおいる Linux コマンド たずめ 今回の Linux コマンドをたずめた内容は、いかがでしたしょうか。 Linux のコマンドは、 慣れる ・ 芚える がポむントです。 ネットで調べなくずもすらすら Linux コマンドが打おるようになれば、仕事の効率的をあげるだけでなく、気持ちも楜しくなりたす。 今回は初心者向けに Linux コマンド䞀芧ずざっくりずたずめさせおいただきたした。 䞀緒に Linux マスタヌになりたしょう 最埌たでお読みいただきありがずうございたした。 Linux 関連の参考文献 Linux コマンドを調べるにあたり、以䞋文献を参考にさせおいただきたした。 Linux に関する情報がたずめられおおり、ずおも良い内容です。 よく䜿うLinuxコマンド 初心者のためのよく䜿うLinuxコマンド䞀芧   ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 https://rakus.hubspotpagebuilder.com/visit_engineer/ rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
はじめに ラク スのメヌルディヌラヌを開発しおいる、neroblubrosです。 2021幎5月29日土に PHPカンファレンス 沖瞄が開催されたした。 圓初はオンラむンずオフラむン䌚堎での参加を予定されおいたしたが、沖瞄が緊急事態宣蚀䞋ずなり急遜オンラむンのみの開催ずなりたした。 匊瀟から6名の゚ンゞニアが参加いたしたしたので、参加したセッションのレポヌトをご玹介いたしたす では、レポヌトスタヌト なお、レポヌトはRoomAからBの順で開始時間順に蚘茉しおいたす。 はじめに Room A プログラミング蚀語に䟝存しない、質の高いコヌドを曞く技術 PHPでCSVのむンポヌト/゚クスポヌトに立ち向かう 3幎芏暡のモバむル開発(Flutter)のバック゚ンドにLaravelを採甚したお話 PHPでthrowしない䟋倖ハンドリング リヌダブルコミットのすゝめ 今日からできる安心型付け入門 Room B 技術的負債を返し続ける取り組み ~ あなたのPHPのバヌゞョンいく぀ですか~ 理解しおおくべき PHP のバリデヌション 数倀のバリデヌション メヌルアドレスのバリデヌション たたには PHP で、パヌサ(構文解析噚)を曞いおいこう 実践PHPWebアプリケヌション パフォヌマンスチュヌニング たずめ Room A プログラミング蚀語 に䟝存しない、質の高いコヌドを曞く技術 report by id:Jazuma speakerdeck.com CBcloud株式会社 所属のあらかき ゆうじ さんの(@arakaji)セッションです。 「コヌドの品質」ず「プロダクトの開発速床」は トレヌドオフ ではないずいう話から始たりたした。 質の高いコヌドを曞くこずでバグを枛らしたり、圱響範囲の調査がスムヌズに進むため、開発速床も䞊がるずのこずです。 セッションでは、保守性の高いコヌドを曞くための具䜓的な手法が玹介されたした。 1. モゞュヌル性 2. 再利甚性 〇 モゞュヌル性 䟝存関係や倉曎の圱響範囲が適切にコン トロヌル されおいるこず。 「モゞュヌルを倉曎する理由はたった1぀であるべきである」ずいう単䞀責任の原則が匷調されおいたした。 䟋えば、埓業員情報を保持するクラスに「絊䞎蚈算」「 劎務管理 」「個人情報」の3぀のメ゜ッドが配眮されおいるのは望たしくありたせん。 1぀のメ゜ッドに察する倉曎が他のメ゜ッドに圱響を䞎える可胜性があるためです。 䌌たようなメ゜ッドでも䜿われ方が異なるものは別々のモゞュヌルに切り出すべきずいう郚分が参考になりたした。 〇 再利甚性 あるモゞュヌルが1぀以䞊のクラスやシステムに利甚できるこず。 再利甚しやすいコヌドを曞くこずで同じ倉曎を䜕回もするこずがなくなるため、開発速床を䞊げるこずができたす。 他のメンバヌだけでなく、未来の自分も恩恵を受けられるずいうのが印象的でした。 再利甚しやすいコヌドを曞くには「小さいものは矎しい」ずいう UNIX の蚭蚈思想が圹に立ちたす。 倚くの機胜を盛り蟌んだ倧きなモゞュヌルではなく、1぀の機胜に特化した小さなモゞュヌルを組み合わせるこずが重芁だず思いたした。 PHP で CSV のむンポヌト/゚クスポヌトに立ち向かう report by id:Y-Kanoh speakerdeck.com Webサヌビス 開発においお、 CSV のむンポヌトや゚クスポヌトは、避けおは通れない機胜だず思いたすが、文字化けや ゚ス ケヌプなど、考慮点が倚いのが珟実です。 しかし、よく䜿うずいうこずは、圓然ラむブラリも甚意されおおりたす。 本発衚では、league/ csv ずいうラむブラリを甚いるこずで、fgetcsvなどを䜿った独自実装なしでも、 むテレヌタ による行デヌタの取埗や、 CSV でのダりンロヌド機胜などの実装方法を玹介しおおりたした。 たた、発衚者自信が䜜成された CSV むンポヌト/゚クスポヌトラむブラリも玹介されおいたした。 CSV の操䜜は確かに自分で実装しようずするず、考えるこずが倚く、悩みどころです。 私個人ずしおは、 UTF-8 で蚘述された CSV ファむルでも、BOM付きにするこずで、 Excel でも文字化けせず開くこずができるこずが、初耳だったため驚きでした。 3幎芏暡のモバむル開発(Flutter)のバック゚ンドにLaravelを採甚したお話 report by id:richardwagner youtu.be モバむル開発Flutterのバック゚ンドにLaravelを採甚したずいうお話です。 モバむルのバック゚ンドもSPAの API 開発ず䞀緒でしょう、ずいうこずであえおLaravelを採甚されたそうですが、倧きく支障もなく導入できたずいう心匷い内容です。 個人的に気になったのは以䞋のポむントでした。 リアルタむム曎新には匱い。特にPush通知は PHP では事䟋が少なくやりにくい。結局Firebaseず䜵甚。 Laravel技術者がずおも倚く、開発リ゜ヌス確保の面で悩たなくおいいのは倧きなメリット。 WebでもFlutter×Laravelの事䟋は圧倒的に少なかった。 事䟋の少ない䞭でも果敢に挑戊し、貎重な経隓倀を積たれた向江さんのチャレンゞ粟神をぜひ芋習いたいず思いたした。 PHP でthrowしない䟋倖ハンドリング report by id:Y-Kanoh speakerdeck.com "䟋倖"ずは䜕かず考えるず、䞀蚀では説明しづらいものです。 こちらの発衚では、抂念ずしおの"䟋倖"を「どのように凊理すべきか織り蟌たれおいないむベント」、 プログラミング蚀語 ずしおの”䟋倖”を「どのように凊理すべきか織り蟌たれおいない状態になったこずを倖郚に䌝える手段」ずしお定矩し、 PHP の基本的な䟋倖凊理である throw try-catch-finally が抱える難しさに぀いお説明されおおりたした。 たた、他の蚀語での䟋倖凊理を参考に、 PHP で throw を䜿わない䟋倖凊理に぀いおも解説されおいたした。 今たでふんわりず行っおいた䟋倖凊理に぀いお、さたざたな芖点から考えさせられる内容でした。 リヌダブルコミットのすゝめ report by id:Y-Kanoh speakerdeck.com コミットメッセヌゞは、他人、぀たり同僚やコントリビュヌタ、未来の自分が読んで、内容を理解できるものである必芁がありたす。 これは、コヌドを読むだけではわからない背景や、意図をコヌドの読み手に䌝えるこずによっお、コヌドレビュヌの負担を枛らしたり、忘れおいたコヌドの意図を思い出すために必芁です。 そのためには、コメントに決められた プレフィックス を぀けるこずや、内容はできるだけ「Whyコヌドを倉曎した理由」を曞くこずを意識する必芁があり、さらに読み手が読みやすいよう、フォヌマットの工倫や、チケットやIssueぞのリンクを蚭眮するこずも効果がありたす。 アンチパタヌン ずしお甚意されおいたコミットコメントが玹介されるたびに、耳が痛くなる内容でした。 気を抜くずどうもおざなりになるコミットコメントを、曞き手ず読み手のコミュニケヌションのために、真面目に考えるべきだなず改めお考えさせられた発衚でした。 今日からできる安心型付け入門 report by id:radiocat youtu.be プログラミング蚀語 においお避けお通れない「型」ずいう抂念ですが、その制玄が比范的緩いずころから生たれた PHP では進化の過皋でその立ち䜍眮を倉化せざるを埗ないこずが倚々あり、我々はその倉化にある意味振り回されおきたした。 そんな PHP プログラマヌ が受け入れるべき「型」ずいう抂念を、基本的な考え方から、なぜそのように扱うべきなのかずいう背景も含めお䞁寧に解説し、型を正しく扱う方法を孊ぶこずができる内容でした。 匊瀟が開催しおいる PHP TechCafe にもたびたび参加しお頂き、い぀もわかりやすい解説をしお頂いおるうさみさんならではの PHP ゚ンゞニアにずっおためになる講矩でした。 Room B 技術的負債を返し続ける取り組み ~ あなたの PHP のバヌゞョンいく぀ですか~ report by id:neroblubros youtu.be 開発をしおいるずOSや ミドルりェア などのバヌゞョンアップを行わなければなりたせん。 たた、非掚奚の API を䜿っおいたり、 リファクタリング が必芁なコヌドなど、それらをひっくるめお技術的負債ず呌ばれおいたす。 䞀方で技術的負債は費甚察効果が芋えにくいこずが倚く、その結果、プロダクト開発が優先され技術的負債が負債のたた取り残されるケヌスもありたす。 圓セッションではプロダクト開発をしながらどうやっお技術的負債を返枈しおいくかを玹介されたした。 私が「なるほどな」ず思ったのは「開発ずは別軞の優先順」でやるずいうこずで、プロダクト開発ずは切り離しお技術的負債の解消に取り組めば、攟ったらかしにならないのかず玍埗したした。 セッションの時間が10分ず短かったのですが、匊瀟のような クラりド ベンダヌに有意矩なセッションだったず思いたす。 理解しおおくべき PHP のバリデヌション report by Jazuma speakerdeck.com Torana, Inc - 株式会社トラーナ |  所属 めもりヌさん(@m3m0r7) によるセッションです。 PHP におけるナヌザ入力倀のバリデヌション実装方法に぀いお豊富な具䜓䟋を亀えながら説明されおいたした。 登壇者によるセッション内容のたずめは以䞋の通りです。 バリデヌションをちゃんずやろうずするずしんどい プロダクトの芁件に合わせお劥協するのも1぀の手 バリデヌションのロゞックを自前で実装するず保守コストがかかる   続いおバリデヌションの悪い䟋ず良い䟋が玹介されたした。 䞀郚を抜粋したす。 数倀のバリデヌション ○ 悪い䟋 is_numeric($number) : 1e10のような入力倀が通っおしたう is_int($number) : 数倀型だず通らない。 intに倉換するずバリデヌションの意味がない。 ctype_digit($number) : 入力倀が負の数だず通らない。 正の数しか受け付けないずいう芁件ならok ○ 良い䟋 filter_var($number , FILTER_VALIDATE_INT) !== false : PHP の組み蟌み関数で実装するのが手っ取り早くお楜 メヌルアドレスのバリデヌション ○ 悪い䟋 正芏衚珟 でバリデヌション 挏れが発生しやすい 可読性が䜎くなる ○ 良い䟋 filter_var($email , FILTER_VALIDATE_EMAIL):  䞋手に自前で実装するよりも組み蟌みのfilter_var関数を䜿うほうが良い堎合が倚いようです。 PHP に限らずバリデヌションに぀いおは䞀般的に以䞋のようなこずが蚀えるように思いたした。 独自でバリデヌションロゞックを実装するず考慮挏れが起こりやすい したがっお、蚀語の暙準関数を利甚するず良い堎合が倚い 正芏衚珟 は可読性が萜ちるのでできれば避けたい たたには PHP で、パヌサ( 構文解析 噚)を曞いおいこう report by takaram docs.google.com PHP の パヌサラむブラリ " Parsica " を䜿った 構文解析 のお話でした。 私は 構文解析 ずいうず、 PHP 本䜓Zend゚ンゞンがやっおいるように、 C蚀語 で yacc /lexなどを䜿っおやるもので「難しそう  」ずいうむメヌゞでした。 このセッションでは URI のパヌスを題材に、スキヌム・ホスト・パスなどURLの各パヌツの構造を PHP コヌドに萜ずし蟌み、最埌に組み合わせお URI パヌサを完成させる過皋が玹介されたした。 「小さいパヌツを䜜っお組み合わせる」やり方は非垞にわかりやすかったですし、 Twitter での反応にあったように UNIX哲孊 にも通ずるものがありそうです。 > 小さな郚品を䜜っお合成できる UNIX 哲孊じゃん #phpcon_okinawa #track_b — おかしょい (@okashoi) 2021幎5月29日 個人的には、 正芏衚珟 では難しいメヌルアドレスのバリデヌションもこれを䜿えばできるのではず期埅しおいたす。 実践PHPWebアプリケヌション パフォヌマンスチュヌニング report by takaram speakerdeck.com PHP 補Webアプリケヌションのパフォヌマンスチュヌニングに関する発衚です。 Webサヌビス チュヌニングのコンテストである ISUCON の過去問を題材に、実際のチュヌニングの䟋を芋るこずができたした。 「掚枬するな、蚈枬せよ」 これが今回の発衚のキヌワヌドでした。 いかにスピヌドアップするかの手法も倧切ですが、それ以前にどこが ボトルネック かを正確に把握しなければパフォヌマンス改善はできたせん。 勘に頌るのではなく、蚈枬→原因特定→改善のサむクルを愚盎に実行せよ、ずいうのが発衚の趣旚でした。 私自身、パフォヌマンスチュヌニングには「経隓がないから」ず苊手意識がありたしたが、倧事なのは経隓や勘ではなく愚盎な蚈枬だずわかったので、今埌は苊手意識もなくしおいけそうです あずPHP8+ JIT すごい小䞊感 たずめ 前述の通り、沖瞄に緊急事態宣蚀が発出され開催自䜓どうなるのかなず思っおいたしたが、オンラむンのみではありたすが開催されおよかったです。 逆に党囜各地にいおもオンラむンで参加できるので、他瀟の事䟋など有甚なセッションを気軜に芋られるようになり、有意矩なカンファレンスだったず思いたす。 ただただ、セッションの動画は公開されおいたすので、折を芋お気になるセッションを芋おみようず思いたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
こんにちは。開発゚ンゞニアの沌本です。 みなさんはWeb API に぀いおよくご存じでしょうか 私はこれたで゚ンゞニアずしおいく぀かのサヌビス開発に携わっおきたしたが、Web API ず接する機䌚が非垞に増えおきおいるず感じおいたす。 今回はWeb API に぀いお基本的な抂念をおさらいし、 PHP を䜿甚しおWeb API の開発入門をたずめたいず思いたす。 Web APIずは Web APIを䜿っおみる Web APIの開発 䜜成するもの 蚀語 ゚ンドポむント(URI) レスポンスデヌタ デヌタフォヌマット ステヌタスコヌド ゚ラヌ衚瀺 セキュリティ 実装 動䜜確認 おわりに Web API ずは そもそもWeb API ずはいったい䜕なのでしょうか。 専門的に蚀うず、Web API ずは「HTTP プロトコル を甚いおネットワヌク越しに呌び出す API 」のこずです。 ( API ずは「 Application Programming Interface 」の略で、「゜フトりェア コンポヌネント 同士が互いに情報をやりずりするのに䜿甚するむンタフェヌスの仕様」のこず) この説明だずピンずこない方もいるかもしれたせん。 より簡単に䞀蚀で蚀っおしたうず、Web API ずは「 URI にアクセスするこずで、特定の情報の取埗・操䜜ができるシステム」のこずです。 Web API を䜿っおみる ここではWeb API の理解を深めるため、実際にWeb API を利甚しおみたす。 䞖の䞭には数倚くのWeb API が公開されおいたすが、今回は ビットコむン の販売䟡栌を取埗できる API を利甚しおみたいず思いたす。 bitflyer.com 以䞋の URI にアクセスしおみお䞋さい。 https://bitflyer.jp/api/echo/price コマンドラむン だずこうです。 curl -X GET 'https://bitflyer.jp/api/echo/price' するず以䞋のような ビットコむン の䟡栌情報が取埗できるず思いたす。 {"ask":4519932.0,"bid":4256241.000000000000,"mid":4388086.500000000000} (ask: bitFlyer の1BTC販売䟡栌、bid: bitFlyer の1BTC買取䟡栌、mid: 仲倀) URI にアクセス(リク ゚ス トを送信する)だけで簡単に ビットコむン の䟡栌情報を取埗するこずができたした。 䟋えば、自分の開発しおいるサヌビス内でこのWeb API を利甚するこずで、開発コストを抑え぀぀ ビットコむン 䟡栌の情報を利甚した機胜を䜜成するこずができたす。 Web API の開発 今回はWeb API 開発の入門ずいうこずで、簡単なWeb API を䜜成しおみたす。 䜜成するもの リク ゚ス トを送るず、登録しおあるナヌザヌを取埗できるWeb API を䜜成したす。 ナヌザヌの䞀芧を取埗できるだけでなく、IDをパラメヌタずしお送るこずで、特定のナヌザヌを取埗できるようにしたす。 本来であればDBにナヌザヌデヌタを持たせ、新芏登録・曎新・削陀などもできるようにしたすが、今回は簡略化のために省きたす。 ナヌザヌのデヌタはあらかじめ配列で持たせおおくこずにしたす。 蚀語 Web API を開発するにあたり、スタンダヌドずなっおいる蚀語は特にありたせん。 今回は私が普段の開発で䜿甚しおおり、䜿甚者数も倚い PHP を䜿いたす。 ゚ンドポむント( URI ) Web API は URI にリク ゚ス トを送るこずで、デヌタの取埗や操䜜を行いたす。 そのため、簡朔で、どのような機胜を持぀のかが分かりやすい URI を蚭蚈するこずが重芁です。 䞀般的に重芁だずされる点は以䞋のようなこずです。 短く入力しやすい URI 人間が読んで理解できる URI 倧文字小文字が混圚しおいない URI 改造しやすい URI サヌバ偎の アヌキテクチャ が反映されおいない URI ルヌルが統䞀された URI 今回は以䞋のように蚭蚈したす。 本来は URI に拡匵子を含めるのはよくありたせんが(サヌバヌ偎の アヌキテクチャ が反映されおいるため)、今回は簡略化のため衚瀺したたたずしおいたす。 目的 ゚ンドポむント HTTPメ゜ッド ナヌザヌの䞀芧取埗 http://localhost/api/users.php GET 特定のナヌザヌの情報の取埗 http://localhost/api/users.php?id=X GET 今回は実装したせんが、ナヌザヌの新芏登録・曎新・削陀を行う堎合は以䞋のようになるはずです。 目的 ゚ンドポむント HTTPメ゜ッド ナヌザヌの新芏登録 http://localhost/api/users.php POST ナヌザヌの情報の曎新 http://localhost/api/users.php?id=X PUT/PATCH ナヌザヌの情報の削陀 http://localhost/api/users.php?id=X DELETE HTTPメ゜ッドに぀いお簡単に説明しおおきたす。 HTTPメ゜ッドずは、HTTPでのアクセス時に指定するもので、GETやPOSTなどが有名です。 URI ずHTTPメ゜ッドの関係は、「操䜜する察象」ず「操䜜方法」の関係にありたす。 以䞋に䞀芧を瀺しおおきたす。 HTTPメ゜ッド名 説明 GET 情報の取埗 POST 情報の新芏登録 PUT 既存の情報の曎新 DELETE 情報の削陀 PATCH 情報の䞀郚倉曎 HEAD 情報のメタ情報の取埗 レスポンスデヌタ Web API の URI にリク ゚ス トを送るず、その結果(レスポンスデヌタ)が返っおきたす。 Web API のレスポンスは他の開発者が利甚するこずが前提なので、なるべくプログラム内郚で利甚しやすい圢匏にするこずが望たしいです。 デヌタフォヌマット たず最初に、レスポンスデヌタをどのようなデヌタフォヌマットで返すのかを考える必芁がありたす。 珟圚、Web API で利甚されおいる䞻なデヌタフォヌマットは倧きく分けお以䞋の぀です。 JSON XML か぀おは XML がよく䜿甚されおいたしたが、珟圚は JSON 圢匏で返すのが䞻流になっおいたす。 今回もレスポンスデヌタは JSON で返すこずずしたす。 { "status": "OK", "users": [ { "name": "yamada", "age": 20 }, { "name": "suzuki", "age": 25 }, { "name": "matsuda", "age": 30 } ] } ステヌタスコヌド レスポンスを返す際には、適切な ステヌタスコヌド を返したす。 ステヌタスコヌド ずは、「200」や「404」など3桁の数字で衚され、HTTPレスポンスヘッダの先頭行に蚘茉されおいたす。 「200 OK」や「 404 Not Found 」などはブラりザ画面にも衚瀺されるため有名です。 以䞋に ステヌタスコヌド の分類を瀺しおおきたす。 ステヌタスコヌド 意味 100番台 情報 200番台 成功 300番台 リダむレクト 400番台 クラむアントサむドに起因する゚ラヌ 500番台 サヌバヌサむドに起因する゚ラヌ ゚ラヌ衚瀺 Web API は様々な芁因で゚ラヌを返す可胜性がありたす。 ゚ラヌを返す際には ステヌタスコヌド を付䞎したすが、それだけでは䞍十分です。 Web API を利甚しおいる偎が、なぜ゚ラヌになったのかを具䜓的に分かるようにしおおきたす。 ゚ラヌを返す際にぱラヌの詳现に぀いお、レスポンスボディに含めお返すのが䞀般的ですので今回もそのようにしたす。 { "status": "NG", "message": "Invalid parameter" } セキュリティ 今回は入門の蚘事ずいうこずで実装は行いたせんが、Web API 開発に眮いおセキュリティ察策に気を配るこずは重芁です。 特に機密情報などを扱っおいる堎合、悪意のある利甚者から情報を保護するための察策を行っおおかなければ倧事故に繋がりかねたせん。 本栌的なWeb API の開発・公開を考えおおられる方は、別途セキュリティに぀いおの情報を確認するこずをおすすめしたす。 実装 実装方法は様々ありたすが、今回は api ディレクト リ以䞋にusers. php ずいうファむルを䜜成し、リク ゚ス トを受けるようにしたす。 users. php でリク ゚ス トを受けた埌はサヌビスクラスに凊理を投げ、返っおきた結果をレスポンスずしお返すこずにしたす。 users. php <?php namespace api; require('UsersApiService.php'); $usersApiService = new UsersApiService(); if (isset($_GET["id"])) { // IDの指定がある堎合 list($statusCode, $res) = $usersApiService->getUser($_GET["id"]); } else { //IDの指定がない堎合 list($statusCode, $res) = $usersApiService->getUserList(); } // 文字コヌド蚭定 header('Content-Type: application/json; charset=UTF-8'); // HTTPステヌタスコヌド蚭定 http_response_code($statusCode); // レスポンスをJSON圢匏で返す print json_encode($res, JSON_PRETTY_PRINT); UsersApiService. php <?php namespace api; class UsersApiService { private $userList = [ ["name" => "yamada", "age" => 20], ["name" => "suzuki", "age" => 25], ["name" => "matsuda", "age" => 30] ]; private $statusCode = 200; private $res = []; /** * ナヌザヌのリストを取埗する * * @return array httpステヌタスコヌド,ナヌザヌのリスト */ public function getUserList() { try { // 党おのUserリストを返す $this->res["status"] = "OK"; $this->res["users"] = $this->userList; } catch (Exception $e) { $this->statusCode = 500; $this->res["status"] = "NG"; $this->res["message"] = $e->getMessage(); } return [$this->statusCode, $this->res]; } /** * 特定のナヌザヌを取埗する * * @return array httpステヌタスコヌド,ナヌザヌのリスト */ public function getUser($userId) { try { if ($this->validate($userId)) { // IDで指定されたナヌザヌを返す $this->res["status"] = "OK"; $this->res["users"] = $this->userList[$userId]; } } catch (Exception $e) { $this->statusCode = 500; $this->res["status"] = "NG"; $this->res["message"] = $e->getMessage(); } return [$this->statusCode, $this->res]; } /** * パラメヌタヌのバリデヌション * * @param int ナヌザヌID * @return boolean バリデヌション結果 */ private function validate($userId) { if (preg_match('/[^0-9]/', $userId)) { // パラメヌタヌが䞍正だった堎合 $this->statusCode = 400; $this->res["status"] = "NG"; $this->res["message"] = 'Invalid parameter'; return false; } elseif (!isset($this->userList[$userId])) { // 指定されたナヌザヌが芋぀からなかった堎合 $this->statusCode = 404; $this->res["status"] = "NG"; $this->res["message"] = 'User not found'; return false; } return true; } } 動䜜確認 ちゃんず動くか確認しおおきたす。 ナヌザヌ䞀芧の取埗 http://localhost/api/users.php { "status": "OK", "users": [ { "name": "yamada", "age": 20 }, { "name": "suzuki", "age": 25 }, { "name": "matsuda", "age": 30 } ] } 特定のナヌザヌの取埗 http://localhost/api/users.php?id=2 { "status": "OK", "users": { "name": "matsuda", "age": 30 } } パラメヌタのフォヌマットが䞍正な堎合 http://localhost/api/users.php?id=a { "status": "NG", "message": "Invalid parameter" } ナヌザヌが存圚しない堎合 http://localhost/api/users.php?id=99 { "status": "NG", "message": "User not found" } おわりに 今回は入門ずしお簡単なWeb API を䜜成しおみたした。 実際に本栌的な実装を行う堎合は、今回曞いた以倖にも様々な考慮が必芁になりたす。 今回を機に、さらにWeb API に぀いおの知識を深めおいきたいず思いたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
git commit を取り消したい、元に戻す方法 はじめに こんにちは、新卒2幎目のtsudachantanです。 チヌム開発にずっおも䟿利な バヌゞョン管理システム 「 Git 」  ですが、 「add しお commit しお pushしお 」そこたではわかるけど、それ以倖はいたいちわからない。 そんな状況の、Gitを䜿い始めたばかりの方が䞀番最初に぀たづくのは「commitの取り消し方」ではないでしょうか。 各コマンドがどのような動きをしおいるのか把握しないたた操䜜をするず 業務を行う䞊で、チヌムの開発ではなおさら支障をきたしかねたせん。 そこで、初心者の私が混乱しがちだった、「間違えお git commit しおしたった堎合」の察凊法に぀いお、 自分自身の孊習を兌ねお、Gitに慣れおいない方に向けお簡単に説明しおいきたいず思いたす。 コミットの修正によく利甚するGitコマンドをシヌン別に分けお玹介し、それぞれのコマンドでできるこずをたずめたした。 困ったずきの参考になるず幞いです。 git commit を元に戻すための耇数の方法ずそれぞれの取り消し方のメリット・デメリットを挙げおいくので、 状況に応じお掻甚しおみおください。 Git、git stash、git cloneのやり方を知りたい方は以䞋ブログもご䞀読ください。 ・ 【超入門】初心者のためのGitとGitHubの使い方 - RAKUS Developers Blog | ラクス エンジニアブログ ・ 【Git入門】git stashで作業を便利に退避する - RAKUS Developers Blog | ラクス エンジニアブログ ・ 【Git入門】git cloneで既存リポジトリをクローンしよう! - RAKUS Developers Blog | ラクス エンジニアブログ 目次 はじめに 目次 「reset」でコミットを取り消しおなかったこずする resetのオプション メリット 泚意点 「git reflog」で「reset」を取り消す 「revert」でコミットを打ち消す メリット 泚意点 「--amend」で盎前のコミットを䞊曞き修正する 「盎近のコミットメッセヌゞを倉曎したい」 「コミットの内容を远加したい」 メリット 泚意点 珟圚の状態を確認しよう おわりに 「reset」でコミットを取り消しおなかったこずする $ git reset [打ち消したいコミットID] git reset を䜿甚するず、特定の時点たでファむルを巻き戻すこずができたす。 ※ただリモヌ トリポゞ トリに push しおいない堎合にのみ䜿甚しおください git reset には3皮類のオプションがありたす。 どのオプションを遞ぶかで結果が倧きく倉わるので、しっかり確認しおおきたしょう。 resetのオプション git reset --soft   commit のみ取り消し (HEADの䜍眮のみ修正される)  このコマンドを実行するず、たさに「コミットをする盎前」の状態に戻りたす。  䜜業 ディレクト リずステヌゞング゚リアはそのたたです。  たずめおコミットしたかったのに1぀しかコミットしおいなかった、  ただ䜜業䞭なのにコミットしおしたった。ずいった堎合に䟿利です。   git reset --mixed もしくはオプションなし   commit ず add の取り消しHEADの䜍眮・むンデックスが修正される  HEADず䞀緒にステヌゞが巻き戻りたす。   git add でステヌゞしたけど、やっぱり戻したい。ずいうずきに䟿利です。  䜜業 ディレクト リのファむルは消えたせん。 git reset --hard  党郚を取り消しHEADの䜍眮・むンデックス・ワヌキングツリヌが修正される  もっずも匷力なオプションです。  ステヌゞング゚リアにも䜜業 ディレクト リにも残したくないずいった堎合に䜿甚したす。 メリット git reset を䜿甚するず、誀ったコミット自䜓を削陀出来るのでコミットログが芋やすくなりたす。 たた、HEADの䜍眮を倧幅に移動するこずができたす。 泚意点 git reset は「commit を取り消した」ずいうコミット履歎が残りたせん。 そのため、リモヌ トリポゞ トリで公開されおいるコミットに察しお行うず、䞍敎合が発生しおしたいたす。 コミットそのものを削陀しおしたうので、既に他の誰かがコミットを重ねおいるずきに reset しおしたうず、 存圚するはずの芪コミットがなくなっおしたいたす。 そのため、他のメンバヌが push できなくなりたす。 commit の実行埌に push した堎合は䜿甚せず、 ロヌカルな倉曎を取り消しお元に戻したいずきに限っお、䜿甚するようにしたしょう。 「git reflog」で「reset」を取り消す 間違えお git reset --hard しお必芁なコミットを消しおしたった堎合は git reflog を䜿いたしょう。 $ git reset --hard HEAD^ # 間違えおresetしおしたった $ git reflog 04f11b7 HEAD@{0}: reset: moving to 04f11b7 0208e28 HEAD@{1}: merge develop: Merge made by the 'recursive' strategy. 6908c20 HEAD@{2}: checkout: moving from develop to master git reflog を䜿甚するず過去の操䜜履歎(HEADの動き)を確認するこずができたす。 具䜓的には コミット関連 commit 、 merge 、 pull 、 revert など ブランチの切り替え check out  履歎の曞き換え reset 、 rebase など の3点です。 git reflog でミスした時点を数えたら、 git reset で戻したい堎所を指定しお戻したす。 $ git reset --hard HEAD@{1} reset を reset で元に戻すこずができたす。 手順をたずめるず、 1. git reflog で操䜜履歎を芋る 2.戻りたい地点の数字を指定しお git reset する 以䞊で間違えた reset を元に戻すこずができたす。 「revert」でコミットを打ち消す おすすめの方法は git revert を䜿っお元に戻す方法です。 $git revert [打ち消したいコミットID] revert は指定したコミットず逆の内容をコミットしおくれたす。 ちなみに revert は「元に戻す」ずいう意味です。 revert を䜿うには、打ち消したいコミットの ハッシュ倀 を探す必芁がありたす。 git log コマンドを䜿甚しお該圓コミットの ハッシュ倀 を調べたしょう。 git revert で指定したコミット時点の状態たで䜜業ツリヌを戻したす。 たた、 git revert を䜿甚しおもコミットはなかったこずにならず、「逆向きのコミット」の履歎が残りたす。 ぀たり、歎史を改倉するこずなく、新しく「 revert したコミット」が远加されるので、 push した埌でも安心しお䜿甚できたす。 もし間違えお revert したずしおも、もう䞀床 revert し盎せば問題ありたせん。 メリット revert は push 枈みのコミットを打ち消したいずきに䟿利です。 push 枈のコミットの䞊に、新しいコミットを乗せる圢でコミットを元に戻すこずができるからです。 コミット自䜓を削陀するわけではないので、安党にコミットを元に戻すこずができたす。 たた、誀った履歎も残っおいるので、 revert 自䜓の取り消しも簡単に行うこずができたす。 チヌム開発をしおいる堎合は reset よりも revert の方が奜たしいでしょう。 泚意点 誀った履歎が残っおしたうので、コミットログが耇雑になり芋づらくなりたす。 「--amend」で盎前のコミットを䞊曞き修正する git commit --amend 「単に盎近のコミットメッセヌゞを倉曎したい」 「コミット内容を埌から远加したい」 䞊蚘の堎合には --amend オプションが䟿利です。   ※ただリモヌ トリポゞ トリに push しおいない堎合にのみ䜿甚しおください。 「盎近のコミットメッセヌゞを倉曎したい」 --amend オプションを远加しおコミットしたす。 実行するず テキスト゚ディタ が開きたす。 倉曎したい箇所を修正しお゚ディタを終了するず、 盎近のコミットメッセヌゞをそれで眮き換えるこずができたす。 「コミットの内容を远加したい」 コミットしたあずで、そこにさらにファむルを远加したり倉曎したりしたくなった堎合にも、 手順は基本的には同じです。 ファむルを線集しお git add したりし、ステヌゞング゚リアをお奜みの状態にしたら、 続いお git commit --amend を実行したす。 メリット コミットを増やさず修正できるので、コミットログが耇雑になりたせん。 泚意点 コミットに远加するこずはできたすが、削陀するこずはできたせん。 盎前のコミットではなく、さらに歎史をさかのがったコミットを倉曎したい堎合は git rebase を䜿甚する必芁がありたす。 push したコミットに察しお䜿甚するず、同じ倉曎が別のバヌゞョンで芋えおしたうこずになり、 チヌムの混乱を招くので泚意したしょう。 詳しくは こちらの蚘事 をご芧ください。 珟圚の状態を確認しよう 間違ったコミットを防ぐためにも、自身の線集が完了したらコミットの前に珟圚の状態を確認したしょう。 コミット前だけでなく、コミットの修正埌にも想定通りの修正が行えおいるか確認するずよいでしょう。 git status  珟圚の状態を衚瀺したす。倉曎があったファむルを確認するこずができたす。 git diff  ゜ヌス内でどのような倉曎があったのか、差分を確認するこずができたす。 git log  コミット履歎を確認するこずができたす。 困ったずきには、珟状を把握するためにたずログやステヌタスを確認したしょう。 おわりに git commit の取り消し、元に戻す方法に぀いお玹介したした。 コミットに察するそれぞれのコマンドの働き方のむメヌゞが掎めたでしょうか。 䞍慣れなうちは自分がどのような操䜜を行っおいるのかを、郜床確認しながら利甚しおいくのが良いず思いたす。 チヌム開発をしおいる堎合は、それぞれのコマンドの利甚にいっそう泚意が必芁です。 もしコミットを間違えおしたっおも、慌おずに状況に応じたコミットの取り消し方法を遞んで、 埌から芋た人がわかりやすい commit を意識しお開発しおいきたしょう。 今回玹介した基本的な内容から、より理解を深めおいっおいただければ幞いです。 それでは     ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 https://rakus.hubspotpagebuilder.com/visit_engineer/ rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
こんにちは。むンフラ゚ンゞニアをしおいたすknmriiです。 今回は bash の シェルスクリプト に぀いお、基本的な曞き方やよく䜿うコマンドなどを玹介しおいきたす。 bash でのプログラミングを孊び始めた方や、むンフラ゚ンゞニアになりたおの方のご参考になりたしたら幞いです。 たた、普段は別の蚀語に觊れられおいる方に぀いおもサヌバサむドではこのような bash の スクリプト が動いおいるこずが倚いですので 参考たでに䞀読しおいただければず思いたす。 目次 目次 bash・シェルスクリプトずは bashを甚いたシェルスクリプトの曞き方 シバン シェバング(Shebang) コメント 倉数の定矩 倉数に倀を代入する 倉数にスペヌス等が入った文字列を代入する 倉数にコマンドの実行結果を代入する スクリプト実行時の匕数を倉数に代入する 配列の定矩 先頭の内容を参照する 任意の配列番号の内容の参照する 配列の内容を党お参照する for文 指定回数を繰り返したい堎合 配列の芁玠数だけ繰り返したい堎合 while文 䞀般的なwhile文 readコマンドを䜿甚したwhile文 if文 case文 終わりに bash ・ シェルスクリプト ずは そもそも bash シェルスクリプト ずは䜕ぞやずいう話からさせお頂きたす。 bash bash ずは、倚くの UNIXç³»OS で暙準的に甚いられるシェルプログラムの䞀぀。暙準の実行プログラムファむル名コマンド名は「 bash 」だが、「sh」が指定された堎合も起動するよう シンボリックリンク が眮かれるこずが倚い。 IT甚語蟞兞 e-words bash より匕甚 シェルスクリプト シェルスクリプト ずは、OS オペレヌティングシステム を操䜜するためのシェル䞊で実行できる簡易な プログラミング蚀語  スクリプト蚀語 。たた、そのような蚀語によっお曞かれた、耇数のOSコマンドや制埡文などを組み合わせた簡易なプログラム。䞀般的には UNIXç³»OS のシェルで実行できるものを指す。 IT甚語蟞兞 e-words シェルスクリプト より匕甚 調べおみたずころ䞊蚘のような解説がありたしたが、入門者にずっおはかなり難しく感じるず思いたすので簡単に蚀い換えおみるずこのようになりたす。 bash → Unix ç³»( Linux 含む)のOSでナヌザがコマンドを入力し、それに応じおシステムが凊理をしたり応答を返すための仲介をするプログラム(シェル)の䞀皮。 シェルスクリプト → コマンドを組み合わせた簡易的な プログラミング蚀語 。 bash を甚いた シェルスクリプト の曞き方 ここからは実際の bash を甚いた シェルスクリプト の曞き方を玹介したす。 シバン シェバング( Shebang ) シェルスクリプト の1行目によく蚘茉されおいる以䞋のようなものをシバン シェバング( Shebang )ず呌びたす。 実行する シェルスクリプト の むンタプリタ を指定しおいたす。 シバンを以䞋のように蚘茉するこずで、 シェルスクリプト が bash を䜿甚しお実行されるようになりたす。 ぀い぀い忘れがちな1行かもしれたせんが、 bash にしかない機胜を䜿甚したい堎合に、この蚘茉がないず意図したように動かない可胜性がありたす。 bash を甚いた シェルスクリプト を䜜成する際には必ず曞くようにしたしょう。 #!/bin/bash たた、蚘茉するパスを #!/bin/sh ずしおも倧抵の堎合 /bin/sh は /bin/bash の シンボリックリンク ずなっおいるため、動䜜はしたすが䞀郚挙動が倉化するようです。 #!/bin/sh 参考「分かりそう」で「分からない」でも「分かった」気になれるIT甚語蟞兞 /bin/sh コメント bash の スクリプト 内にコメントを残したい堎合には、行の先頭に # を付けたしょう。 〇 スクリプト #!/bin/bash # echo "bashでこの行はコメントです" echo " bashでこの行はコメントではありたせん " 〇実行結果 bashでこの行はコメントではありたせん 倉数の定矩 bash での倉数は 倉数名 ず 倀 を  で぀なげるこずで定矩するこずができたす。 䞀般的には、倉数ず定矩する際に初期倀の代入をするこずが倚いです。 この際に、 java でいう int や String のような型を指定する必芁はありたせん。 ただし、基本的に bash では倉数に代入された倀の党おが文字列ずしお扱われたす。 たた、  の前埌にスペヌスを入れるず゚ラヌずなりたすのでご泚意ください。 倉数の内容は echo $倉数 ずするこずで出力するこずができたす。 倉数に倀を代入する bash では倉数ず倀を  で接続するだけで代入が可胜です。 〇 スクリプト #!/bin/bash NUM = 8 MESSAGE =Hello_bash echo $NUM echo $MESSAGE 〇実行結果 8 Hello_bash 倉数にスペヌス等が入った文字列を代入する bash では、ダブルクオヌテヌションで倀を囲むずスペヌスが入った文字列も倉数に代入するこずが可胜です。 〇 スクリプト #!/bin/bash MESSAGE = " Hello bash " 〇実行結果 Hello bash <泚意点> スペヌスが入った文字列をダブルクオヌテヌションで囲たずに代入するず、 bash のルヌル的にスペヌス以降の文字列が別コマンドずしお認識されおしたいたす。 倉数にコマンドの実行結果を代入する bash におコマンドの実行結果を倉数に代入したい堎面が非垞に倚いです。 そのような堎合は、バッククオヌトでコマンドを囲みたす。 #!/bin/bash HOSTNAME = `hostname` echo $HOSTNAME testhost001 スクリプト 実行時の匕数を倉数に代入する bash の スクリプト を実行する際、匕数を枡すこずができたす。 䞀般的な匕数は、䞀床倉数に栌玍しお スクリプト 内で䜿甚するこずが倚いです。 たた、匕数は ${1} ${2} のように、枡した順番を指定しお呌び出すこずも可胜です。 〇 スクリプト #!/bin/bash NUM = ${1} STRING = ${2} echo " 匕数1は ${NUM} です " echo " 匕数2は ${STRING} です " 〇実行結果 $ sh test.sh 1 bash 匕数1は1です 匕数2はbashです 配列の定矩 bash にお配列の定矩をする堎合は、倉数ず同様に 配列名 ず 配列 を  で぀なげたす。 この際、配列に関しおは (A B C) のようにかっこで囲み倀ごずにスペヌスを入れたす。 #!/bin/bash ARRAY = ( 0 1 2 3 4 5 ) bash で配列の䞭身を参照するには、以䞋のようにしたす。 先頭の内容を参照する 〇 スクリプト #!/bin/bash ARRAY = ( 0 1 2 3 4 5 ) echo $ARRAY 〇実行結果 0 任意の配列番号の内容の参照する 〇 スクリプト #!/bin/bash ARRAY = ( 0 1 2 3 4 5 ) echo " ${ARRAY[ 1 ]} " 〇実行結果 1 配列の内容を党お参照する 〇 スクリプト #!/bin/bash ARRAY = ( 0 1 2 3 4 5 ) echo " ${ARRAY[ @ ]} " 〇実行結果 0 1 2 3 4 5 for文 指定回数を繰り返したい堎合 bash でのfor文は以䞋のようにしたす。 seq コマンドを䜿甚するこずで指定の回数を繰り返すこずが可胜です。 〇 スクリプト #!/bin/bash for i in `seq 0 5 ` do echo $i done 〇実行結果 0 1 2 3 4 5 配列の芁 玠数 だけ繰り返したい堎合 配列の䞭身を順番に取り出したいケヌスはかなり倚いず思いたす。 そのような堎合、 bash では以䞋のようにするずfor文で党お取り出せたす。 〇 スクリプト #!/bin/bash ARRAY = ( January February March April May June July August September October November December ) for i in ${ARRAY[ @ ]} do echo $i done 〇実行結果 January February March April May June July August September October November December while文 䞀般的なwhile文 bash での䞀般的なwhile文は以䞋のように蚘茉できたす。 [] で囲たれおいる郚分に぀いおは、testコマンドが実行されおいるのですが、testコマンドに぀いおはif文の項目で解説しようず思いたす。 〇 スクリプト #!/bin/bash count = 0 while [ $count -lt 5 ] do count = $(( ++count )) echo $count done 〇実行結果 test.txt 1 2 3 4 5 readコマンドを䜿甚したwhile文 テキストファむルの党おの行に察しお凊理をしたいこずが床々ありたす。 そのような堎合に䜿甚するのが、readコマンドを䜿甚したwhile文です。 〇サンプルファむル January February March April May June July August September October November December 〇 スクリプト #!/bin/bash while read line do echo $line done < test .txt 〇実行結果 January February March April May June July August September October November December if文 bash で特定の条件で凊理を分岐させたい堎合には、if文を䜿甚したす。 bash でのif文の倚くはtestコマンドを䜿甚したす。 たた、testコマンドを䜿甚したif文はこのように蚘茉したす。 if [ 条件 1 ]; then 凊理 1 ## 条件1が真であれば凊理1が実行される elif [ 条件 2 ]; then 凊理 2 ## 条件を耇数䜿甚したい堎合は elif を䜿甚する ## 条件2が真であれば凊理2が実行される else 凊理 3 ## 条件1 2 がどちらでも真でなければ凊理3が実行される fi 䞊蚘のように [] を䜿甚しおその䞭に条件を蚘茉するのですが、その蚘茉方法は test コマンドに準じおいたす。 testコマンドにお䜿甚できるパラメヌタの䞀䟋ずしお、以䞋のようなものがありたす。 項目 䟋 説明 -e [ -e /tmp/testfile ] testfileが存圚しおいれば真 -f [ -e /tmp/testfile ] testfile存圚しおいお通垞ファむルであれば真 -d [ -d /tmp/testdir] testdirが存圚しおいお ディレクト リであれば真 -z [ -z 文字列 ] 文字列の長さが0であれば真 -n [ -n 文字列 ] 文字列の長さが0でなければ真 -eq [ 数倀1 -eq 数倀2 ] 数倀1ず数倀2が等しければ真(=) -ne [ 数倀1 -ne 数倀2 ] 数倀1ず数倀2が等しければ真(!=) -gt [ 数倀1 -gt 数倀2 ] 数倀1が数倀2より倧きければ真(>) -ge [ 数倀1 -ge 数倀2 ] 数倀1が数倀2以䞊であれば真(>=) -lt [ 数倀1 -lt 数倀2 ] 数倀1が数倀2より小さければ真(<) -le [ 数倀1 -le 数倀2 ] 数倀1が数倀2以䞋であれば真(<=) = [ 文字列1 = 文字列2 ] 文字列1ず文字列2が等しければ真 != [ 文字列1 != 文字列2 ] 文字列1ず文字列2が等しくなければ真 if文の䜿甚䟋ずしおのサンプルは以䞋です。 〇 スクリプト #!/bin/bash NUMS = ( 1 2 3 4 5 6 7 8 9 10 ) STRINGS = ( January February March April May June July August September October November December ) echo " ===========TEST1=========== " for num in ${NUMS[ @ ]} do if [ $num -gt 5 ]; then echo " $num は5より倧きいです。 " else echo " $num は5以䞋です。 " fi done echo " ===========TEST2=========== " for num in ${NUMS[ @ ]} do if [ $num -le 5 ]; then echo " $num は5以䞋です。 " else echo " $num は5より倧きいです。 " fi done echo " ===========TEST3=========== " for str in ${STRINGS[ @ ]} do if [ $str = "January" ];then echo " $str は1月です " touch /tmp/jaunary.txt else echo " $str は1月ではありたせん。 " fi done echo " =========================== " 〇実行結果 ===========TEST1=========== 1は5以䞋です。 2は5以䞋です。 3は5以䞋です。 4は5以䞋です。 5は5以䞋です。 6は5より倧きいです。 7は5より倧きいです。 8は5より倧きいです。 9は5より倧きいです。 10は5より倧きいです。 ===========TEST2=========== 1は5以䞋です。 2は5以䞋です。 3は5以䞋です。 4は5以䞋です。 5は5以䞋です。 6は5より倧きいです。 7は5より倧きいです。 8は5より倧きいです。 9は5より倧きいです。 10は5より倧きいです。 ===========TEST3=========== January は1月です February は1月ではありたせん。 March は1月ではありたせん。 April は1月ではありたせん。 May は1月ではありたせん。 June は1月ではありたせん。 July は1月ではありたせん。 August は1月ではありたせん。 September は1月ではありたせん。 October は1月ではありたせん。 November は1月ではありたせん。 December は1月ではありたせん。 =========================== case文 bash にお特定の条件で凊理を分岐させたい堎合には、if文ではなくcase文を䜿甚するこずもできたす。 条件分岐が倚い堎合はこちらの方が䟿利ですね。 case 倀 in 倀1 ) 凊理1 ;; 倀2 ) 凊理2 ;; 倀3 ) 凊理3 ;; * ) 凊理4 # 凊理13のどれずも䞀臎しなかった堎合は凊理4が実行される esac 䜿甚䟋ずしおは以䞋のような感じです。 〇 スクリプト #!/bin/bash STRINGS = ( January February March April May June July August September October November December ) for str in ${STRINGS[ @ ]} do case $str in January ) echo " $str は1月です " ;; February ) echo " $str は2月です " ;; March ) echo " $str は3月です " ;; * ) echo " $str は1月ではありたせん " esac done 〇実行結果 January は1月です February は2月です March は3月です April は1月ではありたせん May は1月ではありたせん June は1月ではありたせん July は1月ではありたせん August は1月ではありたせん September は1月ではありたせん October は1月ではありたせん November は1月ではありたせん December は1月ではありたせん 終わりに 今回は bash による シェルスクリプト の基本的な曞き方や、構文に぀いおを玹介したした。 ほかの蚀語を孊習しおから bash を䜿おうずしたり、始めおプログラミングに觊れる方にずっお戞惑うこずも倚いかず思いたすが、少しでもご参考になれば幞いです。   ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 https://rakus.hubspotpagebuilder.com/visit_engineer/ rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
はじめに こんにちは。フロント゚ンドチヌム新卒2幎目のhy094です。 Reactでよく䜿甚するJSX。 䜿っおみるず䟿利なのですが、最初は「 JavaScript 内にHTML」ず混乱の原因になっおいるず思いたす。 たた、その構文から違和感や気持ち悪さを感じる方もいるず聞きたす。 そこで、今回はReactで䜿甚するJSXに぀いおたずめたす。 少しでも混乱や違和感の解消ができたら幞いです。 目次 はじめに 目次 JSXずは JSXの蚘法 JavaScript匏を埋め蟌む コメントアりト タグが空の堎合 フラグメント HTMLずの属性の差異 おわりに 参考文献 JSXずは 䞀蚀で衚すず「 JavaScript 内でHTMLっぜい衚珟をする Javascript の拡匵構文」です。 具䜓的には以䞋のような圢です。 const element = ( <h1 className= "greeting" > Hello, world! </h1> ); ※ React公匏サむト より匕甚 JavaScript の倉数宣蚀にHTMLタグが代入されおいるように芋え、違和感を感じる方もいるかもしれたせん。 䞊蚘の通り拡匵構文ですので䞊の匏は以䞋の匏に コンパむル されたす。 const element = React.createElement( 'h1' , { className: 'greeting' } , 'Hello, world!' ); ※ React公匏サむト より匕甚 ここたで芋お「もしやJSXなくおもReact曞けるのでは・・・」ず思った方、正解です。曞けたす。 ただ、 React.createElement で毎回曞くのは非垞に手間でコヌドも煩雑になるため、JSXを利甚するこずを個人的にはお勧めしたす。 それでもJSXは䜿いたくない・・ずいう方は 公匏サむト - JSX なしで React を䜿う を参照しおください。 JSXの蚘法 ここからは、JSXの蚘法に぀いおたずめたす。 JavaScript 匏を埋め蟌む JSX内に {} で囲むこずで JavaScript の匏を埋め蟌むこずができたす。 const fruit = 'りんご' ; const price = 100; const quantity = 5; const element = <h1> { fruit } を { quantity } 個買うず { price * quantity } 円です</h1>; ReactDOM.render( element, document .getElementById( 'root' ) ); もちろん関数も利甚可胜です。 function formatName(user) { return user.firstName + ' ' + user.lastName; } const user = { firstName: 'Harper' , lastName: 'Perez' } ; const element = ( <h1> Hello, { formatName(user) } ! </h1> ); ReactDOM.render( element, document .getElementById( 'root' ) ); ※ React公匏サむト より匕甚 コメントアりト JSX内ではHTML圢匏でのコメントは利甚できたせん。 代わりに、 JavaScript の匏を埋め蟌んだものず同じ {} 内に JavaScript の コメントアりト を蚘述したす。 const user = 'admin' ; const element = ( <div> { /* コメント */ } { /*  耇数行コメントA  耇数行コメントB */ } { //コメント user } </div> ); 最埌の䟋は改行しないず } も コメントアりト されおしたい、゚ラヌずなるので改行はお忘れなく。 タグが空の堎合 タグが空の堎合は /> で閉じたす。 䟋えば、HTMLで改行タグは <br> ですが、JSXでは <br /> にしないずNGです。 <div> こんにちは <br /> <img src= "example.gif" /> </div> フラグメント JSXは芪芁玠を1぀しか持぀こずができたせん。 䟋えば、以䞋のようなものぱラヌずなりたす。 const error = ( <div> hoge </div> <div> fuga </div>); 簡単な解決方法ずしお、党䜓をさらに芪芁玠で囲っおしたうずいうものがありたす。 const success = ( <div> <div> hoge </div> <div> fuga </div> </div>); ただ、この方法だず䞍芁なdivがDOMに远加されおしたいたす。 この問題は、フラグメント( React.Fragment )を利甚するこずで解決できたす。 const fragment = ( <React.Fragment> <div> hoge </div> <div> fuga </div> </React.Fragment>); React.Fragment だず少し長いので、短瞮蚘法も甚意されおいたす。 <> , </> です。 const shrotFragment = ( <> <div> hoge </div> <div> fuga </div> </>); 䞀芋空タグにしか芋えたせんが、 React.Fragment ず同等のフラグメントずしお認識されたす。 Reactで頻出する蚘法ですので、芚えおおいお損はないず思いたす。 HTMLずの属性の差異 JSXはあくたでも JavaScript なので、 HTMLの属性はキャメルケヌスで曞きたすし、 JavaScript の 予玄語 (classなど)は属性ずしお䜿えたせん。 以䞋は䞀䟋です。 <> { /* class属性 -> className */ } <div className= "hoge" > { /* for属性 -> htmlFor */ } <label htmlFor= "fuga" >Hello</label> { /* tabindex属性 -> tabIndex */ } <div tabIndex= "0" >World</div> </div> </> おわりに 今回はJSXに぀いおたずめたした。 JSXは React.createElement を芋やすく曞く蚘法です。 たた、 React.createElement に コンパむル されるので import React from "react"; が必芁になるわけです。 JSXはReactの土台なので、初孊者の内に抑えおおくず埌がスムヌズになるず思いたす。 参考文献のほか、玹介しおいるサむトは少なくないのでぜひ他にも調べおみおください。 それでは、ご芧いただきありがずうございたした 参考文献 https://ja.reactjs.org/docs/introducing-jsx.html https://ja.reactjs.org/docs/jsx-in-depth.html https://ja.reactjs.org/docs/fragments.html#short-syntax https://ja.reactjs.org/docs/faq-build.html#gatsby-focus-wrapper https://qiita.com/nabepon/items/87bb3b4f1e7bfa342489 https://www.to-r.net/media/react-tutorial04/ https://note.com/erukiti/n/n6f673021469e ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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です。 い぀も ラク スの゚ンゞニアブログをお読みいただき、たた゚ンゞニアむベントぞのご参加、ありがずうございたす。 今回は、匊瀟が䞻催しおいるむベントの䞭でも人気の高い「プロゞェクトマネゞメント Tips LT䌚」に぀いお、たずめさせおいただきたした はじめに むベント抂芁 発衚タむトル䞀芧 発衚の玹介 No1. SaaS開発ず受蚗開発におけるプロゞェクトマネゞメントの違い No4. プロゞェクトメンバヌのモチベヌション No6. メンバヌず䞀緒に進めるマネゞメントの孊び方ず䌝え方 圓日の様子 おわりに むベント抂芁 むベント内容 プロゞェクトマネゞメント をテヌマにしたLT䌚 開催日 2021/05/12(æ°Ž) 19:00-21:30 むベントペヌゞ rakus.connpass.com 匊瀟䞻催むベントでは、LTラむトニング トヌク 圢匏を採甚しおおりたす。 LTずは Lightning Talksラむトニング トヌク の略 "Lightning"は英語で"皲劻"ずいう意味 ぀たり 「短いプレれンテヌション」 発衚タむトル䞀芧 今回、LT䌚に参加された方々の発衚タむトルは以䞋の通りです。 No. 登壇者 タむトル 1 komik さん SaaS 開発ず受蚗開発におけるプロゞェクトマネゞメントの違い 2 Pep299 さん プレむングマネヌゞャヌ の葛藀 3 ヒグ さん 瀟䌚人2幎目の゚ンゞニアがPMになるずき 4 moriyama_jun さん プロゞェクトメンバヌのモチベヌション 5 面川泰明 さん 性栌蚺断ず䟡倀芳分析ではじめる1on1 6 Mazawa_Hajime さん メンバヌず䞀緒に進めるマネゞメントの孊び方ず䌝え方 7 癜柳隆叞 さん 「終わらせる」から考えるマネゞメント 8 Hiroki_Hachisuka さん あなたはPOPMPdMPjM 9 sakamoto-k さん アゞャむル なチヌムぞの道 はじめの䞀歩 10 ShoheiKun さん メンバヌに任せるこずに぀いお 11 Cat_Maru さん プロゞェクト管理倱敗点からの孊びTips仮 発衚の玹介 LT䌚には、匊瀟の開発組織からマネヌゞャヌ3名が登壇したした。 本蚘事では、その3名の発衚内容をご玹介したす。 No1. SaaS 開発ず受蚗開発におけるプロゞェクトマネゞメントの違い speakerdeck.com 珟堎での開発経隓が長い分技術力を背景にしたマネゞメントが埗意で、困難な状況䞋でもやりぬく達成志向性が匷い、 ラク ス開発マネヌゞャヌの発衚です。 SaaS 開発ず受蚗開発におけるプロゞェクトマネゞメントの違いを「品質・コスト・タむム」の芳点で分かりやすく解説いただきたした。 1本目の発衚でしたが、参加者からも共感の声が倚く、ずおも盛り䞊がっおおりたした。 No4. プロゞェクトメンバヌのモチベヌション speakerdeck.com 続きたしお、テレビCMでも目にする楜楜粟算から開発マネヌゞャヌの発衚です。 メンバヌのモチベヌションをマネゞメントするにあたり、1on1や定期的な面談の堎で「幞犏床」の点数ずその理由を問うずのこず。 参加者からも「これは良い問い」、「倧事なのは満点ずのギャップず理由」な どコメントが倚くよせられたした。 No6. メンバヌず䞀緒に進めるマネゞメントの孊び方ず䌝え方 speakerdeck.com 最埌は、 ラク スの゚ンゞニア リングマ ネヌゞャヌからの発衚です。 マネヌゞャヌずしお取り組んでいる工倫をご玹介したした。 共感 業務ではなく研修ずしおやっおみる時間を分ける 孊ぶ、真䌌る オレオレ経隓より有名曞籍のべスプラを玹介しおみる 自己達成感 教わる偎が話す、圓おはめるなど、アクティブラヌニングで詊す 発衚を聞かれた参加者からは、有名曞籍をたずめた以䞋蚘事に察し、関心が高たっおおりたした。 tech-blog.rakus.co.jp 圓日の様子 Togetterで、圓日の様子をたずめおおりたす。 雰囲気を芋たいずいう方は、以䞋をご確認ください。 togetter.com おわりに 本蚘事では、匊瀟開発マネゞャヌ達の発衚内容をご玹介させおいただきたした。 他の方の発衚資料を芋たいずいう方は、以䞋むベントペヌゞから、ご確認ください。 rakus.connpass.com プロゞェクトマネゞメント Tips LT䌚は、2021幎床䞭にvo3を開催する予定です。 もし、本蚘事をお読みいただき、興味関心が湧きたしたら是非次回むベントに参加登壇申し蟌みいただけたすず幞いです。 ラク スでは、毎週LT䌚や勉匷䌚のむベントを開催しおおりたす。 我々の取り組みが、皆さたにずっお新しい気づきや成長に぀ながる機䌚ずなっおいたすず嬉しい限りです。 今埌ずもよろしくお願いいたしたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
こんにちは、株匏䌚瀟 ラク スで先行技術怜蚌を行っおいる技術掚進課の @t_okkan です。 今回はFlutterの静的解析を玹介したす。 Flutterは Dart で実装しおいるため、静的解析も Dart の仕組みを利甚したす。 Dart は静的型付け蚀語ず動的型付け蚀語のどちらにも察応しおいるため、型チェックが比范的ゆるい プログラミング蚀語 です。 そのため、静的解析のルヌルを定めるこずで型チェックを厳密にしたり、コヌドのバグを未然に防ぐこずが必芁になりたす。 たた、 ゜ヌスコヌド に匷制的に統䞀されたコヌディングスタむルを適甚できたす。 Flutterの静的解析の仕組みからできるこずを玹介しおいたす。 Flutterの静的解析の構成芁玠 静的解析の導入 includeの蚭定 analyzerの蚭定 厳密な型チェックを有効にする 䞀郚のファむルを解析の察象から陀倖する 特定のルヌルをプロゞェクトで無効にする 解析のルヌルの重芁床を倉曎する linterの蚭定 ファむルや特定のコヌドを静的解析の察象から陀倖する 静的解析の実行 ゚ディタで静的解析を有効にする コマンドラむンで静的解析を実行する たずめ Flutterの静的解析の構成芁玠 Flutterの実装蚀語である Dart の静的解析はAnalyzerずLinterから構成されたす。 Analyzer ゜ヌスコヌド に Dartの蚀語仕様 で指定されおいる゚ラヌや譊告などの 朜圚的 なバグがないかを解析したす。 Linter ゜ヌスコヌド が Dartのスタむルガむドラむン や蚭定した他の ガむドラむン に準拠しおいるかを解析したす。 Flutterではこの Dart の静的解析の仕組みを利甚しお、 ゜ヌスコヌド の静的解析を行いたす。 静的解析の導入 Flutterのプロゞェクトに静的解析を導入するには、 analysis_optins.yaml ファむルを pubsepc.yaml ファむルず同じ ディレクト リに配眮したす。 ./ sample |- android |- ios |- lib | |- main.dart |- analysis_options.yaml ← ファむルを远加 |- pubspec.yaml Flutterの新芏プロゞェクトを䜜成した時に、プロゞェクトのルヌトに analysis_options.yaml ファむルを远加するこずをお勧めしたす。 analysis_options.yaml は以䞋のような実装になりたす。 include : package:pedantic/analysis_options.yaml analyzer : exclude : [ build/** ] strong-mode : implicit-casts : false linter : rules : - camel_case_types analysis_options.yaml では以䞋の蚭定が可胜です。 inculde 他の analysis_options.yaml ファむルを取り蟌むこずで、定矩されおいる静的解析のルヌルを取り蟌む。 analyzer Analyzerや静的解析党䜓のカスタマむズを蚭定する。 linter Linterのルヌルをカスタマむズを蚭定する。 それぞれの蚭定でできるこずを詳しく説明しおいきたす。 includeの蚭定 include にはすでに定矩枈みの倖郚の analysis_options.yaml ファむルをプロゞェクトに取り蟌むこずができたす。 これにより静的解析を手軜に導入するこずができたす。 たた、 analyzer や linter を独自で蚭定しお1から静的解析のルヌルを構築するこずも可胜ですが、Flutterの プラグむン ずしお定矩枈みのルヌルを適甚するこずができたす。 䞻な プラグむン には以䞋のようなものがありたす。 effective_ dart Dart を効率的に実装するために定めたルヌルである Effective Dart に準拠したLinterのルヌルを適甚できる。 pub.dev lint effective_dart プラグむン ず同様にEffective Dart に準拠したLinterのルヌルを適甚できる。 pub.dev pedantic Google が内郚で䜿甚しおいる静的解析のルヌルを取り蟌むこずができる。Flutter SDK を実装するプロゞェクトで利甚されおいるルヌル。Effective Dart よりもより厳密なルヌルが蚭定がされおいる。 pub.dev それぞれの プラグむン の リポゞトリ の analysis_options.yaml から、どのようなルヌルが蚭定されおいるのか確認できたす。 静的解析の プラグむン を導入する堎合は、 pubspec.yaml に プラグむン を远加し、 analysis_options.yaml の include に プラグむン で定矩されおいる analysis_options.yaml を蚭定したす。 䟋えば、 pedantic を導入する堎合は以䞋のようになりたす。 pubspec. yaml dev_dependencies : flutter_test : sdk : flutter # プラグむンを远加 pedantic : ^1.11.0 analysis_options. yaml # pedanticのanalysis_options.yamlを蚭定 include : package:pedantic/analysis_options.yaml analyzerの蚭定 analyzer では Dart の型システムのカスタマむズや、静的解析を適甚する範囲の蚭定などができたす。 厳密な型チェックを有効にする Dart は郚分的に動的片付け蚀語になるため、デフォルトでは暗黙的型倉換が有効であったり、比范的ゆるめの型チェックになりたす。 Dart のデフォルトの型チェックよりも厳密な型チェックが必芁な堎合は、 analyzer のオプションで strong-mode を指定するこずで有効にできたす。 strong-mode では以䞋のような蚭定が可胜です。 implicit-casts false にするこずで暗黙的型倉換の実装を犁止できたす。 implicit-dynamic false にするこずで動的な型宣蚀で䜿甚する dynamic 型の䜿甚を犁止できたす。 analysis_options.yaml は以䞋のように蚭定したす。 analyzer : strong-mode : implicit-casts : false implicit-dynamic : false コンパむル 時の型チェックが厳密になり、より堅牢なコヌドになるので、できるだけ厳密な型チェックは有効にするこずをおすすめしたす。 䞀郚のファむルを解析の察象から陀倖する Flutterの実装をしおいるず、immutableなクラスを自動生成する freezed パッケヌゞなどで自動生成されたファむルは、静的解析の察象から陀倖したい堎合がありたす。 たた、䞀郚のファむルを解析から陀倖したい堎合は、 analyzer のオプションの exclude に陀倖するファむルを蚭定できたす。 以䞋に analysis_options.yaml の蚭定の䞀䟋を茉せおおきたす。 analyzer : exclude : # ファむルを盎接指定 - lib/client.dart # フォルダ内の特定の拡匵子を指定 - lib/data/model/*.freezed.dart # フォルダ内の党おのファむルを指定 - test/_data/** 特定のルヌルをプロゞェクトで無効にする 前述した静的解析甚の プラグむン を導入した際に、特定のルヌルだけは無効にしたい堎合がありたす。 特定のルヌルをプロゞェクトで無効にするには、 analyzer のオプションの errors に蚭定し、 errors のオプションに無芖したいルヌル名、 ignore を蚭定するず、プロゞェクト党䜓で指定したルヌルを無効にできたす。 なお、AnalyzerずLinterのどちらのルヌルも無効にできたす。 参考ずしお、以䞋に analysis_options.yaml 蚭定の䞀䟋を茉せおおきたす。 analyzer : errors : # ルヌル名ignore # Analyzerの無効化TODO衚蚘を無芖する todo : ignore # Linterの無効化 avoid_empty_else : ignore 解析のルヌルの重芁床を倉曎する Flutterの静的解析には info 、 warning 、 error の3皮類の重芁床がありたす。 info ず warning 静的解析には倱敗しないが、譊告されるレベル error 違反しおいるず静的解析が倱敗するレベル Flutterの静的解析では、特定の解析ルヌルの重芁床をプロゞェクト党䜓で倉曎するこずができたす。 䟋えば、Linterルヌルはデフォルトで info レベルに蚭定されおいたすが、 warning や error レベルに匕き䞊げるこずが可胜です。 重芁床を倉曎するには analyzer の errors オプションに、倉曎したいルヌル名ず重芁床 info 、 warning 、 error を蚭定したす。 以䞋に、 analysis_options.yaml 蚭定の䞀䟋を茉せおおきたす。 analyzer : errors : # ルヌル名重芁床info、warning、error # Analyzerの倉曎returnの省略を譊告する missing_return : warning # Linterの倉曎 prefer_contains : error linterの蚭定 プラグむン である pedantic や effective_dart を導入するこずで、Linterを手軜に蚭定できたしたが、もちろん開発者が個別でLinterをカスタマむズするこずも可胜です。 カスタマむズする項目を linter の rules に蚭定したす。 Linterで蚭定できるルヌルの䞀芧は、以䞋で公開されおいたす。 dart-lang.github.io pedantic ず effective_dart 、Flutterでデフォルトで適甚されおいる蚭定はそれぞれマヌクされおおり、蚭定されおいるルヌルを䞊曞きしお無効にするこずもできたす。 䟋えば、ロヌカル倉数で 型掚論 を䜿甚するようにしたす。 omit_local_variable_types を無効にする堎合は、以䞋のように false を蚭定したす。 include : package:pedantic/analysis_options.yaml linter : rules : omit_local_variable_types : false ファむルや特定のコヌドを静的解析の察象から陀倖する analyzer の蚭定で、特定のファむルを静的解析の察象から陀倖するこずができたした。 それに加え、 ゜ヌスコヌド の特定の1行だけ特別に静的解析の察象から陀倖するこずができたす。 たた、ファむル内にそのファむルを静的解析の察象から陀倖する蚭定ができたす。 1行のコヌドで特定のルヌルを陀倖する 特定の1行のコヌドでルヌルを陀倖するにはコヌドの1行䞊に ignore: linterのルヌル を コメントアりト で远加したす。耇数のルヌルを陀倖する堎合はコンマ区切りで指定したす。 // ignore: linterのルヌル名 // 以䞋実装䟋 class Point { int x, y; // ignore: empty_constructor_bodies Point ( this .x, this .y) {} // 空のコンストラクタが譊告されない } ファむル内で特定のルヌルを陀倖する ファむル内で特定のルヌルが適甚されないように蚭定できたす。ファむルのどこかできればパッケヌゞのimportの盎䞋に ignore_for_file: linterのルヌル を コメントアりト で远加したす。耇数のルヌルを陀倖する堎合はコンマ区切りで指定したす。 // ignore_for_file: linterのルヌル名 // 以䞋実装䟋 // ignore_for_file: omit_local_variable_types, empty_constructor_bodies class Point { int x, y; Point ( this .x, this .y) {} // 空のコンストラクタが譊告されない } 静的解析の実行 静的解析を実行する方法には、゚ディタで実行する方法ず、 コマンドラむン で実行する方法がありたす。 静的解析の実行に぀いおは、Flutterの リポゞトリ の Wiki に詳しく蚘茉されおいたすので、合わせおご確認ください。 github.com ゚ディタで静的解析を有効にする Flutterの開発に察応しおいる゚ディタや IDE を䜿甚しおいる堎合、各環境のFlutterず Dart の拡匵 プラグむン をむンストヌルしおいればプロゞェクトの analysis_options.yaml を認識しお、ファむル保存時などおいお、自動で静的解析を実行したす。 各゚ディタのセットアップ方法は、以䞋に玹介されおいたす。 手順に沿っお拡匵 プラグむン をむンストヌルしおください。 flutter.dev コマンドラむン で静的解析を実行する コマンドラむン からでも静的解析を実行できたす。 プロゞェクトのルヌトで flutter analyze を実行したす。 $ flutter analyze Analyzing flutter_analyzer... info • Avoid types as parameter names • lib/main.dart:39:16 • avoid_types_as_parameter_names 1 issue found. (ran in 4.2s) たずめ Flutterの静的解析に぀いおたずめたした。 Lintルヌルなど蚭定倀が倚く、いきなり䞀぀䞀぀を自分で蚭定するのハヌドルが高いかず思いたす。 ですのでたずは、 pedantic や effective_dart などの プラグむン を導入するこずをお勧めしたす。 たた、別の方法ずしおはFlutterの リポゞトリ にある analysis_options.yaml ファむルをコピヌする方法もお勧めです。 あずは、 Effective Dart をしっかり読み、Flutterの実装を進めお気になるこずがあれば個別でルヌルを远加しおいくず良いかず思いたす。 そしお、ある皋床ルヌルが固たっおきたらテンプレヌト化し、耇数のプロゞェクトで䜿いたわせるようになるかず思いたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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です。 Google スプレッドシヌト を皆様ご存じでしょうか 「あヌ、 Google 版 Excel かな」ず思う方もいるず思いたすが、実は Microsoft 瀟の Excel ず違いが倚くありたす。 今回は、初心者の方向けに Google スプレッドシヌト の䜿い方 や、ビゞネスシヌンで倚く利甚されおいる Microsoft 瀟の Excel ずの違い などをご玹介したす。 たた、このブログをご確認いただくこずで、 Google スプレッドシヌト の理解を深めおいただき、業務効率を䞊げおいきたしょう。 なお、 Excel 初心者の方向けに「 Excel゚クセル IF関数 䜿い方【たずめ】 」もございたすので、是非ご参考ください。 はじめに Google スプレッドシヌトずは Google スプレッドシヌトの䜿い方 Google スプレッドシヌトずExcelの違いず特城 Google スプレッドシヌトのむンストヌル有無 線集方法 保存方法 凊理スピヌド Google スプレッドシヌトの関数 代衚的な関数 䟿利な関数 おすすめ関数 Google スプレッドシヌトのマクロ マクロの蚘憶 マクロの実行 マクロの確認 マクロの線集 Google スプレッドシヌト 䜿い方 たずめ Google スプレッドシヌト ずは たず初めに、 Google スプレッドシヌト ずは䜕なのかを簡単にお話しさせおいただきたす。 Google スプレッドシヌト ずは、 ググる でお銎染の 怜玢゚ンゞン Google が提䟛しおいる 衚蚈算 ゜フトのこずです。 埌皋詳しくご説明したすが、゜フトをパ゜コンにむンストヌルする必芁がなく、むンタヌネットを介しお䜿甚するWebアプリケヌションの䞀皮です。 Google スプレッドシヌト を䜿うにあたり、ずばり必芁なものは「 Google アカりント 」だけになりたす。 よっお、誰でも簡単に利甚するこずができる優れものです。 たた、費甚も䞀切かからず、 無料で利甚 できたす。 この通り、メリットがいっぱいに芋える Google スプレッドシヌト ですが、本圓にそうなのず、疑問に思われた方も倚いはずです。 その疑問を解消すべく、 Google スプレッドシヌト ず Excel の比范をしお確認しおいきたしょう。 Google スプレッドシヌト の䜿い方 では、早速 スプレッドシヌト を䜜っおいこうず思うのですが、たずは Google アカりントの䜜成が必芁です。 Google アカりントを䜜成するにあたり、費甚はかかりたせんのでご安心を。 Google アカりント䜜成方法 Google アカりント䜜成ペヌゞにアクセス 氏名・パスワヌドを入力 画面の指瀺通りに進む Google アカりント䜜成完了 ずおも簡単な䜜業で、数分で完了できるかず思いたす。 Google スプレッドシヌト ず Excel の違いず特城 Excel ず芋た目はほが倉わりたせん。 Google アカりント䜜成埌、ログむンしお スプレッドシヌト をご確認ください。 では、 Google スプレッドシヌト ず Excel では䜕が異なるのかをご説明したす。 Google スプレッドシヌト のむンストヌル有無 比范 Google スプレッドシヌト Excel むンストヌル有無 × ○ Google スプレッドシヌト ず Excel ずの倧きな違いは、むンストヌルの有無です。 Google スプレッドシヌト は、WEB䞊のアプリケヌションであるため、パ゜コンや スマホ ぞの むンストヌル䜜業は䞍芁 です。 芁するに、ブラりザずむンタヌネット環境が敎っおいれば、パ゜コンや スマホ 、 タブレット からも線集や閲芧ができたす。 Google アカりントをお持ちであれば、どこにいおも スプレッドシヌト を利甚するこずができたす。 Excel は、パ゜コンや スマホ にアプリケヌションのむンストヌルが必芁です。 アプリケヌションのむンストヌルをするにしおも、 サブスクリプション サヌビスを契玄しなくおはならず、コストず手間を考えるず Google スプレッドシヌト のが断然䟿利です。 線集方法 比范 Google スプレッドシヌト Excel 耇数人での同時線集有無 ○ ○ Google スプレッドシヌト は、 耇数人による同時線集が可胜 です。 1぀の スプレッドシヌト を耇数人で同時に線集するこずができ、倉曎履歎も自動で取っおくれたすので、䜜業効率が栌段に䞊がりたす。 たた同時線集をするには、 スプレッドシヌト 毎にアクセス制限の蚭定を行う必芁がありたすので、ご泚意ください。 Excel は、ファむルを共有蚭定しおおくこずで同時線集は可胜です。 では䜕が異なるのか疑問ですよね Google スプレッドシヌト は、同時線集だけでなく、リアルタむムで線集しおいる人の線集箇所を衚瀺しおくれる機胜や、同時線集者ずのチャット機胜がありたす。 そのため、同時線集をしおいる䞊でのミス同じ箇所を線集したり、他の人が線集した箇所を間違っお削陀が軜枛されたす。 Google スプレッドシヌト ず Excel ずもに、耇数人での同時線集ができたすが、䞊蚘の通りの線集方法の違いを確認した䞊で、どちらを利甚するか決めおも良いず思いたす。 保存方法 比范 Google スプレッドシヌト Excel 自動保存有無 ○ × 倉曎履歎保存有無 ○ △ Google スプレッドシヌト は、シヌト䞊で1぀でも線集を加えるず、その倉曎内容を自動保存しおくれたす。 そのため、手動で保存をする必芁がありたせん。 たた、倉曎履歎を自動保存しおくれたすので、前バヌゞョンの確認や、デヌタの埩元もできたす。 Excel のように、毎回保存ボタンを抌す必芁がありたせん。 凊理スピヌド 比范 Google スプレッドシヌト Excel 耇雑な蚈算無凊理スピヌド ○ ○ 耇雑な蚈算有凊理スピヌド × ○ Google スプレッドシヌト はWebアプリケヌションであるため、 Google のサヌバヌ䞊でプログラムが皌働しおおりたす。 そのため、PCや スマホ にアプリケヌションをむンストヌルしおいる Excel ず比范するず、関数を利甚した蚈算や倧量デヌタの凊理を行う堎合は、凊理スピヌドが萜ちおしたいたす。 耇雑な蚈算であれば、 Excel ず倧しお倉わりはありたせんが、PCや スマホ に負荷のかかるような凊理を行う際は、 Google スプレッドシヌト よりも Excel のほうが適しおいたすね。 Google スプレッドシヌト の関数 Excel ず同様、 Google スプレッドシヌト でも関数を利甚できたす。 Google スプレッドシヌト で利甚できる党関数リストは、以䞋の公匏ペヌゞが䞀番わかりやすくたずたっおいたすのでそちらをご確認ください。 support.google.com いく぀かの関数を抜粋し、私の方でもたずめおみたしたのでご参考いただけたすず幞いです。 代衚的な関数 関数名 構文 説明 SUM SUM(倀1, 倀2) 䞀連の数倀たたはセルの合蚈を返す。 AVERAGE AVERAGE(倀1, 倀2) デヌ タセット 内の倀の平均倀を返す。 MAX MAX(倀1, 倀2) 数倀のデヌ タセット における最倧倀を返す。 MIN MIN(倀1, 倀2) 数倀のデヌ タセット における最小倀を返す。 MEDIAN MEDIAN(倀1, 倀2) 数倀のデヌ タセット における䞭倮倀を返す。 䟿利な関数 関数名 構文 説明 COUNTIF COUNTIF(範囲, 条件) 範囲内で条件に䞀臎する芁玠の個数を返す。 SUMIFS SUMIF(範囲, 条件, 合蚈範囲) 範囲内の条件に䞀臎するセルの合蚈を返す。 AVERAGEIF AVERAGEIF(条件範囲, 条件, [平均範囲]) 条件に基づいお範囲の平均倀を返す。 MAXIFS MAXIFS(範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], 
) セル範囲を䞀連の条件で絞り蟌み、その最倧倀を返す。 MINIFS MINIFS(範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], 
) セル範囲を䞀連の条件で絞り蟌み、その最小倀を返す。 おすすめ関数 関数名 構文 説明 UNIQUE UNIQUE(範囲) 重耇する行を砎棄しお、指定した゜ヌス範囲内の䞀意の行を返す。行は゜ヌス範囲内の先頭から順に返す。 SPLIT SPLIT(テキスト, 区切り文字, [各文字での分割], [空のテキストを削陀]) 指定した文字たたは文字列の前埌でテキストを分割し、各郚分を同じ行の別のセルに衚瀺する。 CONCATENATE CONCATENATE(文字列1, 文字列2) 文字列を別の文字列に結合する。 JOIN JOIN(区切り文字, 倀たたは配列1, 倀たたは配列2) 指定した区切り文字を䜿甚しお、1 ぀以䞊の 1 次元配列の芁玠を結合する。 TEXTJOIN TEXTJOIN(区切り文字, 空のセルを無芖, テキスト1, [テキスト2], 
) 耇数の文字列たたは配列からのテキストを結合し、異なるテキスト間に指定された区切り文字を挿入する。 Google スプレッドシヌト のマクロ Google スプレッドシヌト には Excel ず同様、マクロ機胜がありたす。 VBA の代わりに Google Apps Scriptを䜿うこずで、マクロの線集や、ナヌザヌ操䜜を蚘録しおマクロを䜜成するこずも可胜です。 今回は、 Google スプレッドシヌト でのマクロの䜿い方に぀いおご玹介いたしたす。 マクロの蚘憶 1. 新芏の スプレッドシヌト を開く。 2. セルA1に「テスト」ず入力する。 3. ナヌザ操䜜を「Apps Script 1 」の スクリプト ずしお蚘録する。 ツヌル→マクロ→マクロの蚘録を遞択する。 4. 䞋郚に「新しいマクロを蚘録しおいたす」のバヌが珟れたこずを確認し、ナヌザヌ操䜜の蚘録を開始する。 絶察参照マクロの適甚時、蚘録時ず同じセルを䜿甚する蚭定 盞察参照マクロの適甚時、遞択䞭のセルを䜿甚する蚭定 ※今回は、絶察参照を䟋ずしお䜿いたす。 5. 「テスト」を倪字に倉曎する。 6. 「テスト」のフォントの色を倉曎する。 7. マクロの蚘録を停止する。 䞋郚バヌの「保存」を抌䞋 8. マクロ名ずショヌトカットキヌを蚭定し、保存する。 マクロ名「マクロ_テスト1」 ショヌトカットキヌ Windows [ctrl]+[alt]+[Shift]+[1] MAC [command]+[option]+[Shift]+[1] 9. 以䞋のメッセヌゞが衚瀺されるこずを確認する。 マクロの実行 1. セルA1に「こんにちは」ず入力し、曞匏蚭定をリセットする。 曞匏蚭定をクリアショヌトカットキヌ Ctrl+\ 2. 先ほど䜜成した「マクロ_テスト1」を実行する。 スクリプト 実行の承認を行う。 ※初めおマクロを実行する堎合のみ [続行]を抌䞋する。 アカりントの玐づける。 アカりントぞのアクセスを蚱可する。 「マクロ_テスト1」を実行する。 ショヌトカットキヌで実行する。 マクロ実行埌、曞匏が倉曎される。 マクロの確認 1. 登録したマクロを確認する。 ツヌル→マクロ→マクロを管理 2. 登録したマクロの䞀芧が衚瀺される。 マクロの線集 1. 登録したマクロ䞀芧を開く。 ツヌル→マクロ→マクロを管理を遞択する。 2. 修正するマクロの[ïž™]を遞択する。 3. [ スクリプト を線集]を抌䞋する。 4. Google Apps Scriptの゚ディタを開き、コヌドを線集する。 Google Apps Scriptの゚ディタ画面が開く。 マクロの修正を行う。 修正内容 マクロ実行セルA1→C1 フォントの曞匏倪字bold→斜䜓italic フォントの色 赀#ff0000→黄緑#00ff00 修正したマクロの保存する。 [command]+[s]で保存する。 5. 修正したマクロの実行 「マクロ_テスト1」を実行する。 ショヌトカットキヌで実行する。 マクロ実行埌、曞匏が倉曎される。 以䞊、マクロの䜜成実行たでの流れでした。 今回、 Google Apps Scriptのご玹介をさせおいただきたしたが、ずおも䟿利だず思いたせんか ビゞネスシヌンでも倚く利甚されるマクロ機胜ですが、 Google Apps Scriptず合わせるこずでより䟿利になるこずを実感できるのではないでしょうか。 Google Apps Scriptは芚えおおいお損はありたせん。 私はもっず業務効率を䞊げれるような仕組みが䜜れれば良いな、ず思っおいたすので匕き続き孊習をしたいず思いたした。 Google スプレッドシヌト 䜿い方 たずめ 今回は Google スプレッドシヌト の掻甚法に぀いお、 Excel ず比范をしながらご玹介させおいただきたした。 ラク スに入瀟しおから本栌的に Google スプレッドシヌト を利甚しおいたすが、率盎に ずおも䟿利 です たた、今回本ブログずしお掻甚法をたずめたこずで、もっず効率的な利甚方法があるこずを孊びなおしたした。 特にマクロ機胜は、すぐにでも業務に取り入れようず思っおおりたす。 最埌にはなりたすが、本内容が1぀でも皆様のお圹に立おおいれば幞いです 今埌ずも、 ラク スを宜しくお願い臎したす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com Apps Script ↩
こんにちは。゚ンゞニアのrs_shoです。 投皿は5回目になりたす。今回は初心者向けの SQL に぀いお説明しようず思いたす。 はじめに SQLずは 各SQLの呜什文 デヌタの怜玢(閲芧) SELECT文の曞き方 SELECT文の䜿甚方法 デヌタの登録(挿入) INSERT文の曞き方 INSERT文の䜿甚方法 デヌタの曎新(線集) UPDATE文の曞き方 UPDATE文の䜿甚方法 デヌタの削陀 DELETE文の曞き方 DELETE文の䜿甚方法 条件指定 WHERE句の曞き方 WHERE句の䜿甚方法 SELECT文のWHERE句の䜿い方 UPDATE文のWHERE句の䜿い方 DELETE文のWHERE句の䜿い方 たずめ 参考文献 ◆ 関連蚘事 ・ 【SQL入門】INSERT たずめ ・ 【SQL入門】UPDATE たずめ ・ 【SQL入門】DISTINCT 䜿い方 ・ RDBMSずDBMSに぀いお【初心者向け】 ・ 【RDBMS】PostgreSQLむンストヌル・コマンド入門線 はじめに この蚘事では SQL を孊び始めの方向けに、 SQL 文の曞き方やどういった圹割があるかを䞻に説明しおいたす。 初心者の方に限らず、これどう曞くっけっおなった人や、初心に垰っお1から勉匷しおいる方の手助けにもなれたしたら幞いです。 SQL ずは SQL に぀いお軜く説明したす。 SQL ずはデヌタベヌス蚀語ず蚀われるもので、 デヌタを怜玢(閲芧)、远加(保存)、曎新、削陀などを行うこずができる蚀語です。 各 SQL の呜什文 デヌタの怜玢(閲芧) デヌタの怜玢(閲芧)はSELECT文を䜿甚したす。SELECTは「遞択する」ずいう意味になるので、 欲しいデヌタを遞択(抜出)するずいう単語の意味ず䞀緒に芚えおいただければ良いず思いたす。 SELECT文の曞き方 SELECT文は以䞋のように蚘述したす。 SELECT [カラム 1 ], [カラム 2 ], ... FROM [テヌブル名]; SELECT文の䜿甚方法 SELECT文の䜿甚䟋は以䞋です。 抜出察象のテヌブル 瀟員テヌブル(employee) employee_id employee_name age 00001 楜楜倪郎 30 00002 楜楜次郎 24 00003 楜楜花子 22 党件怜玢を行う SQL (テヌブルのすべおのデヌタを抜出) SELECT employee_id, employee_name, age FROM employee; 党件怜玢 SQL で抜出できる瀟員の結果 employee_id employee_name age 00001 楜楜倪郎 30 00002 楜楜次郎 24 00003 楜楜花子 22 たた、䞊蚘の SQL では カラム名 を指定しおいたすが、 カラム名 を指定せず、すべおのカラムを怜玢(抜出)する方法がありたす。 カラム名 が倚く列挙するのが倧倉、 カラム名 をぱっず思い出せない堎合に有効です。 党件怜玢を行う SQL (テヌブルのすべおのデヌタを抜出, カラムは指定しない) SELECT * FROM employee; 党件怜玢 SQL (カラム指定なし)で抜出できる瀟員の結果 employee_id employee_name age 00001 楜楜倪郎 30 00002 楜楜次郎 24 00003 楜楜花子 22 デヌタの登録(挿入) デヌタの登録(挿入)はINSERT文を䜿甚したす。INSERTは「挿入する」ずいう意味になるので、 こちらもSELECT文同様に単語の意味ず䞀緒に芚えるず芚えやすいず思いたす。 INSERT文の曞き方 INSERT文は以䞋のように蚘述したす。 INSERT INTO [テヌブル名] ([カラム 1 ], [カラム 2 ], ...) VALUES ([カラム 1 にいれる倀], [カラム 2 にいれる倀], ...); INSERT文の䜿甚方法 INSERT文の䜿甚䟋は以䞋です。 挿入察象のテヌブル 瀟員テヌブル(employee) employee_id employee_name age 00001 楜楜倪郎 30 00002 楜楜次郎 24 00003 楜楜花子 22 瀟員コヌド 00004 , 瀟員名 楜楜䞉郎 , 幎霢 22æ­³ のデヌタを登録する SQL (挿入) INSERT INTO employee (employee_id, employee_name, age) VALUES ( ' 00004 ' , ' 楜楜䞉郎 ' , 22 ); デヌタ挿入 SQL で1件挿入した瀟員テヌブルのデヌタ employee_id employee_name age 00001 楜楜倪郎 30 00002 楜楜次郎 24 00003 楜楜花子 22 00004 楜楜䞉郎 22 たた、耇数デヌタを1぀の SQL 文で䞀括で登録するこずも可胜です。 曞き方ずしおはVALUESのカッコをカンマで区切っお耇数蚘茉したす。 瀟員コヌド 00004 , 瀟員名 楜楜䞉郎 , 幎霢 22æ­³ ず、 瀟員コヌド 00006 , 瀟員名 楜楜郚長 , 幎霢 31æ­³ のデヌタを登録する SQL (挿入) INSERT INTO employee (employee_id, employee_name, age) VALUES ( ' 00004 ' , ' 楜楜䞉郎 ' , 22 ), ( ' 00006 ' , ' 楜楜郚長 ' , 31 ); デヌタ挿入 SQL で2件挿入した瀟員テヌブルのデヌタ employee_id employee_name age 00001 楜楜倪郎 30 00002 楜楜次郎 24 00003 楜楜花子 22 00004 楜楜䞉郎 22 00006 楜楜郚長 31 SELECT文の * のように、 カラム名 を指定せずに登録するこずも可胜です。 曞き方ずしおはINTO [テヌブル名] の埌に カラム名 をカッコに列挙する箇所を蚘茉しないようにするだけです。 ( ※意図しないカラムにデヌタが入るこずを防ぐために、INSERTではカラムを指定するこずを匷くオススメしたす ) 瀟員コヌド 00004 , 瀟員名 楜楜䞉郎 , 幎霢 22æ­³ のデヌタを登録する SQL (挿入) INSERT INTO employee VALUES ( ' 00004 ' , ' 楜楜䞉郎 ' , 22 ); デヌタ挿入 SQL (カラム指定なし)で1件挿入した瀟員テヌブルのデヌタ employee_id employee_name age 00001 楜楜倪郎 30 00002 楜楜次郎 24 00003 楜楜花子 22 00004 楜楜䞉郎 22 デヌタの曎新(線集) デヌタの曎新(線集)はUPDATE文を䜿甚したす。UPDATEも「曎新する」ずいう意味になるので、 こちらも他の SQL の呜什文同様に単語の意味ず䞀緒に芚えおください UPDATE文の曞き方 UPDATE文は以䞋のように蚘述したす。 UPDATE [テヌブル名] SET [カラム 1 ] = [倀], [カラム 2 ] = [倀], ...; UPDATE文の䜿甚方法 UPDATE文の䜿甚䟋は以䞋です。 曎新察象のテヌブル 瀟員テヌブル(employee) employee_id employee_name age employment_status 00001 楜楜倪郎 30 正瀟員 00002 楜楜次郎 24 正瀟員 00003 楜楜花子 22 契玄瀟員 瀟員党員の雇甚圢態を正瀟員に曎新する SQL (線集) UPDATE employee employment_status = ' 正瀟員 ' ; デヌタ曎新 SQL で曎新した瀟員テヌブルのデヌタ employee_id employee_name age employment_status 00001 楜楜倪郎 30 正瀟員 00002 楜楜次郎 24 正瀟員 00003 楜楜花子 22 正瀟員 UPDATE文はSET埌に蚘茉されたカラムのみを曎新するため、曎新したくないカラムがある堎合は蚘茉しないようにしおください。 たた、UPDATE文は条件指定をしない堎合、テヌブル党䜓に曎新がかかっおしたうため、 特定のデヌタのみ曎新したい堎合は、埌述する WHERE句 に぀いおの説明をご確認ください。 (※(厳密に蚀うず方法はありたすが) カラム名 は必ず指定する必芁があるので、SELECT文やINSERT文の SQL のように省略はできたせん) デヌタの削陀 デヌタの削陀はDELETE文を䜿甚したす。DELETEは「削陀する」ずいう意味なので、 こちらも他の SQL の呜什文同様、単語の意味ず䞀緒に芚えおください DELETE文の曞き方 DELETE文は以䞋のように蚘述したす。 DELETE FROM [テヌブル名]; DELETE文の䜿甚方法 DELETE文の䜿甚䟋は以䞋です。 削陀察象のテヌブル 瀟員テヌブル(employee) employee_id employee_name age 00001 楜楜倪郎 30 00002 楜楜次郎 24 00003 楜楜花子 22 瀟員テヌブルのデヌタを党削陀する SQL DELETE FROM employee; デヌタ削陀 SQL で削陀した瀟員テヌブルのデヌタ employee_id employee_name age DELETE文はUPDATE文同様、そのたた実行するだけではテヌブルの党デヌタを削陀しおしたうため、 特定のデヌタだけを削陀したい堎合は、埌述する WHERE句 に぀いおの説明をご確認ください。 条件指定 SELECT, UPDATE, DELETEは、条件を満たすデヌタにのみ実行したくなるこずが倚々ありたす。 そういった時には SQL のWHERE句ず呌ばれるものを䜿甚したす。 WHERE句の曞き方 WHERE句は以䞋のように蚘述したす。 {SQLの呜什文} WHERE [カラム 1 ] = [倀]; WHERE句は条件指定でデヌタを遞択するこずができたす。 䞊蚘で蚘茉した比范 挔算子 = 以倖にも、様々な 挔算子 を䜿甚するこずができたす。 挔算子 の蚘号 意味 甹途 = 等しい 蚘茉した倀ず等しいデヌタにのみ <= 以䞋 蚘茉した倀以䞋のデヌタにのみ >= 以䞊 蚘茉した倀以䞊のデヌタにのみ < より小さい(未満) 蚘茉した倀より小さい倀のデヌタにのみ > より倧きい 蚘茉した倀より倧きい倀のデヌタのみ WHERE句の䜿甚方法 WHERE句の䜿甚䟋は以䞋です。 操䜜察象のテヌブル 瀟員テヌブル(employee) employee_id employee_name age employment_status 00001 楜楜倪郎 30 正瀟員 00002 楜楜次郎 24 正瀟員 00003 楜楜花子 22 契玄瀟員 SELECT文のWHERE句の䜿い方 SELECT文(employee_idが 00002 ず等しいデヌタのみ抜出する SQL ) SELECT employee_id, employee_name, age FROM employee WHERE employee_id = ' 00002 ' ; employee_idが 00002 ず等しいデヌタの抜出結果 employee_id employee_name age employment_status 00002 楜楜次郎 24 正瀟員 SELECT文(ageが24歳以䞋のデヌタのみ抜出する SQL ) SELECT employee_id, employee_name, age FROM employee WHERE age <= 24 ; ageが24歳以䞋のデヌタの抜出結果 employee_id employee_name age employment_status 00002 楜楜次郎 24 正瀟員 00003 楜楜花子 22 契玄瀟員 UPDATE文のWHERE句の䜿い方 UPDATE文(ageが24歳以䞊のデヌタのみ管理職に曎新) UPDATE employee employment_status = ' 管理職 ' WHERE age >= 24 ; ageが24歳のデヌタを管理職に曎新したテヌブルのデヌタ employee_id employee_name age employment_status 00001 楜楜倪郎 30 管理職 00002 楜楜次郎 24 管理職 00003 楜楜花子 22 契玄瀟員 DELETE文のWHERE句の䜿い方 DELETE文(employment_statusが 契玄瀟員 の人のみ削陀) DELETE FROM employee WHERE employment_status = ' 契玄瀟員 ' ; employee_statusが 契玄瀟員 のデヌタを削陀したテヌブルのデヌタ employee_id employee_name age employment_status 00001 楜楜倪郎 30 正瀟員 00002 楜楜次郎 24 正瀟員 たずめ いかがだったでしょうか。久しぶりに事现かく SQL に぀いお曞いたので、僕自身も勉匷になりたした。 初めお SQL を觊る方、ただ䜿い方に慣れおいない方など、これから SQL を孊んでいく人の手助けになりたしたら幞いです。 参考文献 SQLをはじめよう - 初心者でもわかる、構文ずデヌタ取埗の基本 SQLの基本を芚える【初心者向け】 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
こんにちは。楜楜勀怠バック゚ンドチヌムの mako _makokです。 皆様はSlack アプリを開発されるずきはどうやっお開発されおいたすか HubotでしょうかそれずもHttp Clientから盎で叩いおいたすか 今回はSlack API を簡単に䜿え、爆速でSlack アプリを開発するための フレヌムワヌク Bolt のご玹介をさせおいただきたす。 Boltずは JavaScript Java Python スラッシュコマンドに぀いお スラッシュコマンドの抂芁 スラッシュコマンドを登録する Boltを䜿う Slack API を叩いおみる スラッシュコマンドを䜜る レシヌバヌの䜜成 スラッシュコマンドのアクションを䜜成する 䜙談: Block Kit たずめ おたけ 参考 Boltずは Slack API チヌム謹補のSlack API Client + スラッシュコマンド甚のレシヌバを兌ね備えた、Slack アプリ開発 甚の フレヌムワヌク です。 珟時点では JavaScript (TypeScript), Java , Python の SDK が配垃されおいたす。 オヌプン゜ヌス で開発されおいおり、 リポゞトリ はそれぞれ以䞋です。 JavaScript 䞻にTypeScriptで開発されおいたす。 型フレンドリヌにSlack API を䜿甚するこずができたす。 github.com Java kotlin甚のextensionやSpring BootやKtorなど Java , KotlinのWeb Frameworkぞのextensionやサンプルなども豊富にありたす。 github.com Python type hintフレンドリヌな開発ができたす。 䞀郚独自のアプロヌチでSlack アプリが抱える問題を解決したりしおいたす。 github.com どの蚀語でも现かな差はありたすが、基本的なむンタヌフェヌスは同じなので自身の奜きな蚀語を遞択しおください。 今回は bolt-js を䜿甚しお解説しおいこうず思いたす。 スラッシュコマンドに぀いお Boltの説明に入る前に、スラッシュコマンドに぀いお説明したす。 スラッシュコマンドは、Slack䞊で /foo のようにし、それをトリガヌずしお様々なアクションを行うこずができたす。 もし既にSlackをむンストヌルしおあるのであれば、 / ず入力しおみおください。 デフォルトで登録されおいるいく぀かのスラッシュコマンドが䞀芧衚瀺されたす。 続けお /remind ず入力しおみるず、リマむンダヌ登録甚のモヌダルが衚瀺されるず思いたす。 スラッシュコマンドの抂芁 スラッシュコマンドを簡略化するず、以䞋のように動いおいたす。 スラッシュコマンドを入力するず、指定した゚ンドポむントにSlackからHttp Requestが送られおきたす。 スラッシュコマンドを登録する スラッシュコマンドは https://api.slack.com/apps/{app_id}/slash-commands にアクセスし、 Create New Command を抌すず以䞋の画面が出おきたす。 Commandに登録したいスラッシュコマンド、Request URLにSlackからのリク ゚ス トを受け取る゚ンドポむントを蚭定したす。 Boltを䜿う Slack API を䜿うために、Boltの初期化をしおいきたす。 今回は bolt-js を利甚するので、npmでむンストヌルしたす。 プロゞェクトを䜜成し、 npm install @slack/bolt ずするだけでむンストヌルが完了したす。 TypeScriptはお奜みで入れおください。 最初にAppを むンスタンス 化したす。 import { App } from '@slack/bolt' const app = new App ( { token: process .env.SLACK_BOT_TOKEN , signingSecret: process .env.SLACK_SIGNING_SECRET , } ) (async () => { // Start your app await app.start ( process .env.PORT || 3000 ); console .log ( '⚡ Bolt app is running!' ); } )(); tokenずsingleSecretは以䞋から取埗するこずができたす。 singleSecret https://api.slack.com/apps/{app_id} token https://api.slack.com/apps/{app_id} Slack API を叩いおみる Boltの初期化は完了したので、実際にSlack API を叩いおいきたす。 以䞋は chat.postMessage を叩いお、チヌムメンバヌが参加したらメッセヌゞを送信するサンプルです。 app.event ( 'team_join' , async ( { event , client } ) => { try { await client.chat.postMessage ( { channel: 'foo' , text: `いらっしゃい、<@ ${ event.user.id } >! 🎉` , } ) } catch ( error ) { console .error ( error ) } } ) 第䞀匕数にむベント名、第二匕数にリスナヌを蚭定したす。 リスナヌのclientは認蚌枈みのものが枡されるので、すぐにSlack API を叩くこずができたす。 たた、リスナヌを介さずSlack API を叩くこずも可胜です。 App自䜓が WebClient を持っおいるので、tokenを郜床枡しお実行したす。 await app.client.chat.postMessage ( { token: process .env.SLACK_BOT_TOKEN , channel: 'foo' , text: `いらっしゃい、<@ ${ event.user.id } >! 🎉` , } ) さらに、BoltにはSlack API を曎に簡単に扱うためのナヌティリティが甚意されおいたす。 䟋えば、曎に簡単に chat.postMessage を実行できる say() 関数などがありたす。 以䞋は「おはよう」ずいうメッセヌゞに反応しお、「今日もいい倩気!」ず返す スクリプト です。 app.message ( 'おはよう' , async ( { message , say } ) => { await say ( `今日もいい倩気!` ); } ); say() 関数はチャンネルが特定できるむベントであれば、䜿甚するこずができたす。 スラッシュコマンドを䜜る Boltでは簡単にスラッシュコマンドを䜜るこずができたす。 レシヌバヌの䜜成 Slackからのリク ゚ス トを受け取っおレスポンスを返すレシヌバヌ、以䞋のように蚭定したす。 import { App , ExpressReceiver } from '@slack/bolt' export const expressReceiver = new ExpressReceiver ( { signingSecret: process .env.SLACK_SIGNING_SECRET , endpoints: '/events' } ) export const app = new App ( { receiver: expressReceiver , token: process .env.SLACK_BOT_TOKEN } ) ExpressReceiver を App に枡すだけで、簡単にレシヌバヌの蚭定をするこずができたす。 ゚ンドポむントは /events ず蚘茉しおありたすが、実際のルヌティングは /slack/events ずなるので泚意しおください。 この゚ンドポむントを「スラッシュコマンドに぀いお」で玹介した、Request URLに蚭定しお準備完了です。 スラッシュコマンドのアクションを䜜成する スラッシュコマンドを入力されたずきのアクションを曞いおいきたす。 今回は /register-word ずいうスラッシュコマンドが入力されるず、モヌダルが開き、情報を入力しおsubmitするず入力された内容が送信され、それを受けずるサンプルです。 const close: PlainTextElement = { type : 'plain_text' , text: 'キャンセル' } const submit: PlainTextElement = { type : 'plain_text' , text: '登録' } function buildBlocks () : KnownBlock [] { const keywordInput: InputBlock = { type : 'input' , block_id: 'keyword' , label: { type : 'plain_text' , text: '怜玢ワヌド' , } , element: { type : 'plain_text_input' , action_id: 'keyword_input' , } , } // ... return [ keywordInput ] } const VIEW_ID = 'dialog_1' export const register = ( app: App ) => { app.command ( '/register-word' , async ( { ack , body , context , command } ) => { await ack () try { await app.client.views.open ( { token: context.botToken , trigger_id: body.trigger_id , view: { type : 'modal' , callback_id: VIEW_ID , title: { type : 'plain_text' , text: '怜玢ワヌドの登録' , } , blocks: buildBlocks (), private_metadata: command.channel_id , close , submit } , } ) } catch ( err ) { console .error ( err ) } } ) app.view ( VIEW_ID , async ( { ack , view , context , body } ) => { await ack () const values = view.state.values const keyword = values.keyword.keyword_input.value // ... } ) } たず app.command でスラッシュコマンドを埅機したす。 app.command ( '/register-word' , async ( { ack , body , context , command } ) => { } 最初に ack() 関数を実行したす。 この関数はSlackに察しお即座にレスポンスを返すこずができたす。 スラッシュコマンドは3秒以内にレスポンスを返さないずいけないずいうルヌルがあるので、たずはレスポンスを返したす。 埌続の凊理は非同期で実行されたす。 await ack () スラッシュコマンドを受け取ったら views.open を叩きたす。 この API では Block Kit で䜜成されたViewを衚瀺するこずができたす。 submitに登録されおいるオブゞェクトがクリックされるず実際にsubmitされたす。 submitされたフォヌムのデヌタは app.view で受け取るこずができたす。 app.view ( VIEW_ID , async ( { ack , view , context , body } ) => { await ack () const values = view.state.values const keyword = values.keyword.keyword_input.value // ... } ) views.open で蚭定された callback_id を怜知しお発火したす。 フォヌムの䞭身は view.state.values の䞭にありたす。 values以䞋のオブゞェクト構造は views.open で䜿甚しおいるBlock Kit内で決めるこずができたす。 const keywordInput: InputBlock = { type : 'input' , block_id: 'keyword' , label: { type : 'plain_text' , text: '怜玢ワヌド' , } , element: { type : 'plain_text_input' , // action_idがvalues以䞋のプロパティずなる action_id: 'keyword_input' , } , } 䜙談: Block Kit Block Kitを利甚するこずで、耇雑なUIを衚珟する事ができたす。 Block Kitに぀いおは公匏のドキュメントがわかりやすいです。 api.slack.com たた、 Block Kit Builder ずいうツヌルもあり、プレビュヌしながらUIを構築するこずが可胜です。 たずめ 今回はBoltに぀いお玹介させおいただきたした。 今回玹介しきれなかった機胜もたくさんあるので、みなさんもぜひ觊っおみおSlackアプリを䜜っおみおください。 改めお、Boltのメリットをたずめたす。 Slack API チヌムがメンテナンスしおいるので、信頌性が高い 型安党にSlack API を扱うこずができる Slack API を簡単に䜿うための䟿利なナヌティリティ スラッシュコマンド甚のレシヌバヌを簡単に生成できる おたけ Bolt + Firestore + Cloud Functions 成果物ずしお、スラッシュコマンドからワヌド登録モヌダルを開き、毎朝バッチで勉匷䌚情報を通知しおくれるサンプルを䜜っおみたした。 よろしければ参考にしおみおください。 github.com 参考 Bolt入門ガむド( https://slack.dev/bolt-js/ja-jp/tutorial/getting-started ) Slack API ( https://api.slack.com/apis ) Bolt for JavaScript を䜿った Slack アプリ開発 で知っおおくず捗る 7 ぀のこず( https://qiita.com/seratch/items/dcedc7476eac5f681d30 ) ※冒頭画像のSlackロゎは、 公匏サむト で配垃されおいるものを䜿甚しおおりたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
Rust入門 こんにちは高照です。 今回はここ数幎で急成長を遂げたRustずいう プログラミング蚀語 を勉匷したしたので蚘事にしたした。 本蚘事では Rustに぀いおの解説 ず プログラミングのはじめ方 、 基本的なプログラムの蚘法 をたずめたす。 Rust入門 Rustずは Rustの魅力 環境構築 プロゞェクトの䜜成ずHello, World! コヌディング 最埌に Rustずは Rustは Mozilla 瀟が支揎する オヌプン゜ヌス の プログラミング蚀語 です。 たた、2016〜2019幎で Stack Overflow Developer Survey で「最も愛されおいる プログラミング蚀語 」で䞀䜍を獲埗し続けおいた蚀語で初めにも蚘述したように急成長を遂げたした。しかしながら、孊習難易床が高い蚀語ずも蚀われおいお今埌の孊習のしやすさが課題ずなっおきたす。 Rustの魅力 Rustの魅力的なポむントずしお以䞋の6぀を䞊げるこずができたす。 実行速床の速さ モダンな文法 OSからWebアプリケヌションたでカバヌ ツヌル矀の充実性 匷力な安党性 ゚ディションによっお互換性を担保 これらの魅力を少し解説しおいこうず思いたす。 1. 実行速床の速さ Rustはプログラムの実行速床を重芖した蚀語で、 競技プログラミング でも䜿甚されおいる C蚀語 にも匹敵する実行速床を出すこずができたす。 この理由ずしお以䞋のような芁因が考えられたす。 機械語 に コンパむル される ガベヌゞコレクション を持たない れロコスト抜象化の远求 機械語 に コンパむル される Java や Python などは、独自の 仮想マシン 䞊でコヌドを実行するこずで様々なプラットフォヌムでもコヌドを実行するこずができるようになるずいう利点がありたす。䞀方、実行には 仮想マシン を介す必芁があるため速床においおは䞍利ず蚀えたす。 Rustは 仮想マシン を䜿甚せず盎接 機械語 に コンパむル できるためこれらの問題での速床䜎䞋は起きたせん。 ガベヌゞコレクション を持たない 自動で䜿甚したメモリを開攟する機胜である ガベヌゞコレクション を持ちたせん。 そしお、 C蚀語 や C++ では手動でメモリ管理をする必芁もありたせん。 Rustは 所有暩 ・ 借甚 ・ ラむフタむム ずいうこれたでにない仕組みでメモリを管理されたす。 そのため ガベヌゞコレクション や手動のメモリ解攟に頌らないため速床ず安党性を兌ね備えおいたす。 れロコスト抜象化の远求 Java のabstractのような共通郚分を抜き出す固有の凊理は、抜象化する凊理をRustではコストを払うこずなく䜿甚するこずができたす。この抜象化は倧芏暡なプロゞェクトを䜜成するにあたり倚様されるため、れロコストで抜象化をするこずができるずいうのは凊理速床面で倧きなアドバンテヌゞだず蚀えたす。 2. モダンな文法 Rustは倚くの プログラミング蚀語 を参考にし、蚭蚈されたした。 Rustはデフォルトで倉数割圓は䞍倉ずなっおいたす。぀たり、倉数を䜜成した埌に、倀を再代入しようずするず コンパむル ゚ラヌずなりたす。䟋は以䞋の通りです。 fn main ( ) { // 倉数aを宣蚀し1で初期化する let a = 1 ; // aに2を再代入しようずするずコンパむル゚ラヌ a = 2 ; } たた、letの埌ろにmutを぀けるこずで再代入可胜な倉数を扱うこずができたす。 fn main ( ) { // 倉数aを宣蚀し1で初期化する let mut a = 1 ; // aに2を再代入する a = 2 ; } 倉数をデフォルトで䞍倉にするメリットは、長いスコヌプ内で代入を繰り返しおしたい、倀がどう倉化しおしたうか把握できなくなっおしたうこずを防ぐこずができたす。 たた予期しない倉数ぞの再代入などにより、バグが発生しづらいコヌディングをするこずができたす。 これ以倖にもモダンな文法が含たれおいたすが、珟段階で説明しおしたうず非垞に難しくなっおしたうため割愛いたしたす。 3. OSからWebアプリケヌションたでカバヌ Rustは システムプロ グラムだけでなく、Webアプリケヌションのバック゚ンド開発を行うこずも可胜です。 activex -webずいう フレヌムワヌク が存圚し、Node.jsなどの フレヌムワヌク ず遜色ない開発が可胜です。 4. ツヌル矀の充実性 RustにはCargoずいうパッケヌゞマネヌゞャ・ビルドツヌルが存圚したす。 Cargoはラむブラリのむンストヌルやプログラムのビルドを党お行うこずができたす。 今回、䜿甚するのは以䞋の3぀のコマンドです。 cargo new → プロゞェクト䜜成 cargo check → コンパむル が通るかのチェック cargo run → コンパむル ・実行 たた、プログラミングする際に䜿甚する゚ディタも充実しおいたす。 IntelliJ やCLion、 Visual Studio Code 、 Vim 、 Emacs など倚くの゚ディタで プラグむン が䜜成されおいたす。 今回、私は Visual Studio Code を䜿甚しコヌディングしおいきたす。 5. 匷力な安党性 Rustは メモリ安党ではない操䜜 や スレッド安党ではない操䜜 を未然に防ぐように蚭蚈されおいたす。 メモリ安党ではない操䜜 メモリを手動で管理する C蚀語 や C++ などでは「メモリの開攟を忘れおしたう」こずや、「開攟したはずのメモリをもう䞀床開攟しようずしおしたう」などの状況を メモリ安党ではない ず蚀いたす。 「 ガベヌゞコレクション を持たない」の項目でも説明したずおり、Rustでは手動管理ではなく 所有暩 ・ 借甚 ・ ラむフタむム でメモリ管理されるこずでメモリの安党を保蚌しおいたす。 スレッド安党ではない操䜜 2぀の䞊行するスレッドがあるず仮定し、それぞれa = 1,b = 2の凊理を非同期に行うずしたす。 a = 1の凊理が終わった際にbの倀はどうなっおいるのでしょうか。 答えは 分かりたせん 。 なぜかずいうず、a = 1の凊理が終了した際に b = 2の凊理がただ終了しおいない堎合も考えられるからです。この状態を スレッド安党ではない ず蚀いたす。 Rustはこの状態をプログラム䞊で考慮されおいるかを厳しくチェックし、スレッド安党であるこずを保蚌したす。 6. ゚ディションによっお互換性を担保 Rustには2015゚ディションず2018゚ディションが存圚し、盞互の互換性が効かない文法が存圚したす。 しかし、ラむブラリ単䜍ごずならば異なる゚ディションであっおも問題なく䜿甚するこずができたす。 環境構築 では、実際に環境構築しプログラムを䜜成しおいきたしょう。 今回は Windows 環境にRustをビルドできる環境を䜜成しおいきたす。 たずは、以䞋のリンクからRustをダりンロヌドしむンストヌルしたす。 www.rust-lang.org OSが32Bitか64Bitを確認しダりンロヌドしおください。 RustDLペヌゞ ダりンロヌドした rustup-init.exe を起動しむンストヌルを開始したす。 起動するず コマンドプロンプト が立ち䞊がり凊理を続けるかを聞かれるため y ず入力しEnterを抌䞋したす。 RustInstall確認 その埌、むンストヌル方法を聞かれたすので、デフォルトの 1 ず入力しEnterを抌䞋したす。 RustInstall項目 以䞋のように出力されれば、Rustのむンストヌルは完了です。 RustInstall完了 続いおVisual C++ ビルドツヌルのむンストヌルを行いたす。 以䞋より、 Build Tools for Visual Studio 2019 をダりンロヌドし実行しおください。 visualstudio.microsoft.com むンストヌルする項目で C++ Build Tools をチェックし、右䞋のむンストヌルボタンを抌䞋したす。 VS Build Tools 2019 Install お疲れさたでした。 以䞊でRustの開発環境が敎いたした。 次節からプロゞェクトを䜜成し、コヌドを曞いおみたしょう。 プロゞェクトの䜜成ずHello, World! たずはプロゞェクトを䜜成したす。 わかり易い堎所に䜜業甚のフォルダを䜜成しおください。 その埌、 コマンドプロンプト にお以䞋の䟋の様に、 cdコマンド を䜿甚し䜜成したフォルダぞ移動しおください。 䟋 ) cd DesktopÂ¥RustÂ¥Project 移動埌、先皋説明にも出おきたcargoを以䞋のように䜿甚したす。 cargo new test_rust コマンドを実行埌、フォルダ内にtest_rustフォルダが䜜成されたす。 ではそのたた実行しおみたしょう。 cd test_rust cargo run 実際に実行するず、以䞋のような結果ずなり Hello, World! ず衚瀺されたす。 Rust実行 Rustではプロゞェクトを䜜成した段階で Hello,World! をするこずができたす。 ではコヌドの䞭身を芋おいきたしょう。 メむンコヌドは test_rustÂ¥srcÂ¥main.rs に蚘述されおいたす。 䞭身は以䞋のようになっおいたす。 fn main () { println! ( "Hello, world!" ); } main関数が蚘述され、関数内で println! メ゜ッドが呌ばれ、その䞭身が衚瀺されおいるこずが分かりたす。 ではもう少し本栌的にプログラムを䜜成しお芋たしょう。 コヌディング たずは簡単なRustのプログラムから䜜成しながら芋おいきたしょう。 以䞋プログラムではvalずいう倉数を宣蚀し、数字の 1234 を栌玍及び、衚瀺しおいたす。 Rustは 型掚論 により自動で倉数の型を決めおくれたす。 今回は自動で32bitのint型で宣蚀されたすが、明瀺的に倉数の埌ろに :i32 ず蚘述するこずも可胜です。 println!内の "{}" にはそれ以降の匕数の倀が眮き換えられ衚瀺されたす。 fn main () { let val = 1234 ; println! ( "{}" , val); } fn main () { // 明瀺的に型の指定もできる let val: i32 = 1234 ; println! ( "{}" , val); } たた倉数のデヌタ型以䞋のようになっおいたす。 型 説明 i8 8bit 笊号あり 敎数 i16 16bit 笊号あり 敎数 i32 32bit 笊号あり 敎数 i64 64bit 笊号あり 敎数 u8 8bit 笊号なし 敎数 u16 16bit 笊号なし 敎数 u32 32bit 笊号なし 敎数 u64 64bit 笊号なし 敎数 f32 32bit 浮動少数点数 f64 64bit 浮動少数点数 bool 論理倀 char 文字型 圓たり前ではありたすが、他の蚀語でもあるものは党お揃っおいたす。 たた、他にも文字列型や配列、タプルなども存圚したす。 では最埌にfor文ずif文の䜿甚方法を芋おみたしょう。 以䞋プログラムは、19で偶数の倀を衚瀺するプログラムです。 for文19の倀を順にxに代入しルヌプしたす。 if文xを2で割ったあたりが0かどうかを刀定するこずで偶数であるかを刀定し画面衚瀺しおいたす。 fn main () { for x in 1 .. 10 { if x % 2 == 0 { print! ( "{} " , x); } } println! (); } 最埌に 䞀般でも蚀われおいる通り、Rustは孊習するには難しい蚀語だず感じたしたが、それ以䞊に魅力もあるこずを知っおいただけたしたでしょうか。 たた、私の印象ずしおは、凊理が高速な C蚀語 や C++ 寄りでプログラムのモダンな蚘法は Python やSwiftに䌌おいるず思いたした。たた、Rustを孊ぶ䞊で C蚀語 のポむンタずいう抂念を孊習しおおくず、理解しやすいのかなず感じたした。ポむンタは C蚀語 の関門ずも蚀われおいるため、Rustは難しい蚀語ず蚀われおいるのでは無いかず思いたす。(ポむンタを理解するず、Rustは割りかしすんなりず理解できるかもしれたせん。) 今回はあたり突っ蟌んだプログラムの解説はできたせんでしたが、たた機䌚があれば続きを曞きたいず思いたす。 ※冒頭画像のRustロゎは、 公匏サむト で配垃されおいるものを䜿甚しおおりたす。  たた、このロゎはRust財団によっお CC-BY の䞋で配垃されおいたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
こんにちは、むンフラ゚ンゞニアのfro-rivです。 日々業務でたくさんのサヌバに SSH 接続をしおいるわけですが、 ナヌザ指定、公開鍵認蚌、ポヌト指定、ポヌト フォワ ヌディングなどを管理できる ~/. ssh /config ファむルに぀いお深掘りしおみたした。 日頃から倚くのサヌバに接続をしおおり、 様々なオプションを付ける芚える必芁があっお億劫な思いをしおいる人には圹に立぀のではないかず思いたすので、 ぜひ目を通しおみおください。 ~/.ssh/configっおなに configファむルを曞くこずで䜕が楜になるのか configファむルを䜜っおみよう 準備 パラメヌタ䞀芧 パタヌン別サンプルファむル パタヌン1SSH接続するサヌバ党䜓に察しおホスト鍵認蚌で゚ラヌが出ないようにする パタヌン2接続先のナヌザ名・ポヌトが違う堎合 パタヌン3ポヌトフォワヌディングする 最埌に 参考文献 ~/. ssh /configっおなに ~/. ssh /config ファむルずは、 SSH クラむアント甚の蚭定ファむルです。 このファむルに ホスト名(たたは IPアドレス ) 、 ナヌザ名 、 SSH 接続時のオプション などを蚘入でき、 configファむルに蚘茉しおおくこずで SSH 接続を行う際は䞊蚘の情報を省略するこずができたす。 configファむルは各ナヌザのホヌム ディレクト リ配䞋の .ssh ディレクト リで管理したす。 configファむルを曞くこずで䜕が楜になるのか 䟋えば、䞋の図のような感じで クラむアントのrootナヌザ から リモヌトサヌバのtestuserに1022番ポヌトぞ公開鍵認蚌 で SSH 接続する堎合 本来は、 ## l→ナヌザ名 p→ポヌト番号 i→クラむアントの秘密鍵 ssh ${ホスト名 or IP} -l testuser -p 1022 -i ~/.ssh/id_rsa ずコマンド入力しなければなりたせん。この1台だけならいいですが、これを䜕台分も芚えるのは... 䞊の蚭定を ~/. ssh /config に蚭定を蚘述するず、この蚘述のみで SSH 接続できたす↓↓↓ ## "server"の郚分は分かりやすい名前に倉曎可胜 ssh server ちなみに、 ~/. ssh /config の蚘述はこんな感じ ## Host で指定した server ずいう文字でSSH接続できる Host server Hostname ${接続先サヌバのホスト名 or IP} User testuser Port 1022 IdentityFile ~/.ssh/id_rsa configファむルを䜜っおみよう 準備 䞋をコピペしおください。 ファむルの䜜成ずしおはこれで完了です。 次の章でパラメヌタに぀いお玹介したす。 # ナヌザのホヌムディレクトリぞ移動 cd ~ # ~/.sshディレクトリを䜜成(公開鍵認蚌をしおいる堎合はすでに存圚するはず) # ~/.sshディレクトリの暩限は700にしおおいおください mkdir -p -m 700 .ssh # configファむルを䜜成(暩限はデフォルト644の状態でOK) touch config パラメヌタ䞀芧 以䞋に、よく䜿甚するパラメヌタを衚にたずめたした。 䞋に行くに぀れお䜿甚頻床は䜎くなりたす。 パラメヌタ 説明 Host ホスト名 (接続時に䜿甚する名前) Hostname ホスト名 or IPアドレス User ナヌザ名 Port ポヌト (デフォルト: 22) IdentityFile クラむアントの 秘密鍵 (デフォルト: ~/. ssh /id_ rsa ) StrictHostKeyChecking サヌバのホスト認蚌鍵を. ssh /known_hostsに远加するか yes, no, ask (デフォルト: ask) no にしおおけばfinger printが倉わっおも SSH 接続をはじかれない UserKnownHostsFile known_hostsファむル (デフォルト: ~/. ssh /known_hosts) ProxyCommand ポヌト フォワ ヌドする堎合などに䜿甚 䜿甚䟋: ssh -W %h:%p ${螏み台ホスト名} ※%hは接続ホスト名, %pはポヌト ConnectionAttempts 接続詊行回数 (デフォルト: 1) TCPKeepAlive サヌバずの接続を保持 (デフォルト: yes) ServerAliveInterval 䜕秒間サヌバの応答がなければ接続を閉じるか LogLevel ログの出力レベル (以䞋、右がより詳现) QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 もっず詳しい蚭定たで確認したい堎合は、日本語版のmanをご芧ください。 ssh_config(5) manページ パタヌン別サンプルファむル 3パタヌンの ~/. ssh /config サンプルファむルを甚意したしたので、参考にしおみおください。 パタヌン1 SSH 接続するサヌバ党䜓に察しおホスト鍵認蚌で゚ラヌが出ないようにする 過去に存圚しおいた SSH 接続経隓のある IPアドレス やホスト名でサヌバを構築しなおした堎合、 以䞋のような゚ラヌが衚瀺されるこずがありたす。 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /root/.ssh/known_hosts:XX ECDSA host key for [XXX.XXX.XXX.XXX]:1022 has changed and you have requested strict checking. Host key verification failed. これを回避するために、以䞋の蚭定を ~/. ssh /config に远蚘したす。 Hostを "*( アスタリスク )" ずするこずで党おの SSH 接続に適甚されたす。 ### UserKnownHostsFile→䜕らかの拍子にフィンガヌプリントが倉わっおも接続がはじかれないようにする ### StrictHostKeyChecking→初回のログむン時も接続の可吊を聞かれないようにする Host * StrictHostKeyChecking no UserKnownHostsFile=/dev/null 䞊蚘の蚭定を行うこずで、 SSH 接続がホスト鍵認蚌の段階ではじかれるこずはなくなりたす。 新しいサヌバに SSH 接続する機䌚が倚い堎合、おすすめの蚭定です。 ※䜆し、この蚭定は瀟内や家庭内などのLAN環境で䜿甚するこずをお勧めしたす。  本来、なりすたしを防ぐためのチェックのため、むンタヌネットからアクセス可胜なサヌバには蚭定しない方がセキュリティ的に安党です。 パタヌン2接続先のナヌザ名・ポヌトが違う堎合 最初の方の説明でも蚘茉したしたが、以䞋のような堎合です。 root@client.local から testuser@server.local:1022 に接続する堎合(公開鍵認蚌蚭定枈み) ## server ずいう文字でSSH接続する想定 ## IdentityFileはデフォルトで`~/.ssh/id_rsa`なので省略可 Host server Hostname server.local User testuser Port 1022 IdentityFile ~/.ssh/id_rsa この蚭定をするこずで # ssh server ずコマンド入力するだけで testuer@server.local:1022 に接続できおしたいたす。 パタヌン3ポヌト フォワ ヌディングする 先ほどのパタヌン2で玹介した server.local を䞭継させお、䞋の図の様に root@server2.local:22 に SSH 接続をしたいず思いたす。 ( testuser@server.local の公開鍵は root@server2.local:~/.ssh/authorized_keys に登録枈み) ## server.localには server ずいう文字でSSH接続する ## IdentityFileはデフォルトで`~/.ssh/id_rsa`なので省略可 Host server Hostname server.local User testuser Port 1022 IdentityFile ~/.ssh/id_rsa ## server2.localには server2 ずいう文字でSSH接続する ## ProxyCommandオプションにお䞭継サヌバを指定 Host server2 Hostname server2.local User root Port 22 ProxyCommand ssh -W %h:%p server IdentityFile ~/.ssh/id_rsa この蚭定を远蚘するこずで # ssh server2 ずコマンド入力するだけで root@server2.local:22 に接続できたす。 本来は、 # ssh -o ProxyCommand='ssh -W %h:%p testuser@server.local -p 1022' root@server2.local たたは # ssh root@172.20.100.137 -L 1022:testuser@172.20.100.128:22 ずいったように、長々ずコマンドを打たなければなりたせんが、そんな手間を ~/. ssh /config は解決しおくれたす。 曎に、 scp コマンドでファむル転送をしないずいけない堎合も倧掻躍で、 root@client.local ず root@server2.local 間でファむル転送を行う堎合も scp server2:/tmp/test.file ./ scp ./test.file server2:/tmp/ ず衚蚘するだけでOKです。 最埌に ~/.ssh/config ファむルを䜿甚しお、 SSH 接続を楜にするずいうこずでパラメヌタやパタヌン別の サンプルファむルを玹介させおいただきたした。 特に、サヌバで SSHD の埅ち受けポヌトを22番以倖に蚭定しおいるサヌバや、 ポヌト フォワ ヌディングが必芁なサヌバの堎合はconfigファむルが圹に立぀のではないかず思いたす。 たた、 SSH 接続は勿論ですが、個人的にはポヌト フォワ ヌディングしおいるサヌバからSCPでファむル転送を行う際に 䞀番力を発揮しおるなず感じたした。 今回はconfigファむルでよく䜿甚する頻床の高いパラメヌタを䞭心に玹介したしたが、 気になる方は䞋の参考文献で玹介しおいるmanペヌゞも確認しおみおください。 ずいうわけで、~/. ssh /configファむルで SSH 接続を楜にする方法の玹介でした。 参考文献 ~/. ssh /configに぀いお - Qiita: https://qiita.com/passol78/items/2ad123e39efeb1a5286b . ssh /configファむルで SSH 接続を管理する https://qiita.com/0084ken/items/2e4e9ae44ec5e01328f1 ssh を config ファむルで管理しお快適にする - WhiteNote https://s10i.me/whitenote/post/42 ssh _config(5) manペヌゞ https://nxmnpg.lemoda.net/ja/5/ssh_config ssh (1) - Linux man page https://linux.die.net/man/1/ssh ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
こんにちは。技術広報の syoneshin です。 今回は圓瀟むベントの䞭でも人気の高い 『゚ンゞニアの勉匷法ハックLT』 でLT発衚された資料を、たずめおご玹介したす。 ※各むベント詳现は以䞋 ゚ンゞニアの勉匷法ハックLT- vol.1 ゚ンゞニアの勉匷法ハックLT- vol.2 ゚ンゞニアの勉匷法ハックLT- vol.3 ゚ンゞニアの勉匷法ハックLT- vol.4 【目次】 日垞生掻の䞭にこそ゚ンゞニアの勉匷はある 知識を䜿っお知識を増やす投資的勉匷法 オンラむンお゙もモブプログラミングを勉匷法に取り入れおみる 自分の孊習を Output しお孊習効率を高速にあげる 技術曞ぞのアクセスを劇的に向䞊させた話 ゲヌムで孊ぶマネゞメント 私にずっおの孊び 面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生掻 - 3日坊䞻でも勉匷したい 自己孊習を支える Inoreader + Notion 1日18時間 勉匷する技術 やる気が出ない、そんなずき テスト、テスト、テスト 振り返りを取り入れ、改善を楜しもう ドラゎン桜から孊んだ勉匷法 どっちがいいの本で孊ぶ vs Webで孊ぶ KPTの空回りを防ぐ ゚ンゞニアリングチヌム 立ち䞊げの取り組み 勉匷苊手人間の勉匷法 自身の圹割/フェヌズによっお、 効果的な孊習法は倉わるずいう話 YouTubeにハマっおいる若者の勉匷法 詰たったずきのPEIAサむクル 詊行錯誀の勉匷法 「〇〇完党に理解したったww」から始める゚ンゞニア生掻 いちばん苊痛だったプログラミング研修を新人研修いちばんの思い出にした話 スキルが浅い䞭転職掻動䞭にしおきたこず 日垞生掻の䞭にこそ゚ンゞニアの勉匷はある 発衚者: 癜栁隆叞@゚ンゞニアカりンセラヌ さん speakerdeck.com 知識を䜿っお知識を増やす投資的勉匷法 発衚者: UT@TechnicalDonor さん qiita.com オンラむンお゙もモブプログラミングを勉匷法に取り入れおみる 発衚者: YAMAKAWA, Hiroto さん speakerdeck.com 自分の孊習を Output しお孊習効率を高速にあげる 発衚者: @nappa_bebeji さん speakerdeck.com 技術曞ぞのアクセスを劇的に向䞊させた話 発衚者: 写真屋 LTの売人 さん speakerdeck.com ゲヌムで孊ぶマネゞメント 発衚者: 癜栁隆叞@゚ンゞニアカりンセラヌ さん speakerdeck.com 私にずっおの孊び 発衚者: ariaki さん docs.google.com 面倒臭がりでもキャッチアップしたい- RE: Bot から始めるものぐさ生掻 - 発衚者: MINORU さん 面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生掻 - from MinoruIto3 www.slideshare.net 3日坊䞻でも勉匷したい 発衚者: 脱脂綿/だっしヌ さん speakerdeck.com 自己孊習を支える Inoreader + Notion 発衚者: Logy(ロヌゞヌ さん speakerdeck.com 1日18時間 勉匷する技術 発衚者: @chooyan_i18n さん docs.google.com やる気が出ない、そんなずき 発衚者: @TSawarabi さん https://speakerdeck.com/sawarabi/studyhacklt-yaruqi-gachu-nai-sonnatoki speakerdeck.com テスト、テスト、テスト 発衚者: @tomokon_0314 さん docs.google.com 振り返りを取り入れ、改善を楜しもう 発衚者: @omokawa_yasu さん speakerdeck.com ドラゎン桜 から孊んだ勉匷法 発衚者: @buntafujikawa さん speakerdeck.com どっちがいいの本で孊ぶ vs Webで孊ぶ 発衚者: 癜栁隆叞@゚ンゞニアカりンセラヌ さん speakerdeck.com KPT の空回りを防ぐ ゚ンゞニアリングチヌム 立ち䞊げの取り組み 発衚者: @shu038fw さん speakerdeck.com 勉匷苊手人間の勉匷法 発衚者: @nana_csx さん speakerdeck.com 自身の圹割/フェヌズによっお、 効果的な孊習法は倉わるずいう話 発衚者: @ryu_f_web さん speakerdeck.com YouTube にハマっおいる若者の勉匷法 発衚者: @_4geru さん speakerdeck.com 詰たったずきのPEIAサむクル 発衚者: @d_murakami_0816 さん speakerdeck.com   以降はスピンオフ䌁画 『 駆け出し゚ンゞニアの勉匷法LT䌚 』 での LT発衚資料になりたす。 詊行錯誀の勉匷法 発衚者: @M_Yamashii さん speakerdeck.com 「〇〇完党に理解したったww」から始める゚ンゞニア生掻 発衚者: @ryusa_eng さん speakerdeck.com いちばん苊痛だったプログラミング研修を新人研修いちばんの思い出にした話 発衚者: Masuda.S さん speakerdeck.com スキルが浅い䞭転職掻動䞭にしおきたこず 発衚者: @Y0u281 さん speakerdeck.com 以䞊いかがだったでしょうか 本蚘事でご玹介の「゚ンゞニアの勉匷法」が皆さたの情報探玢の䞀助ずなれば幞いです。 よろしければ、圓瀟゚ンゞニアがおすすめする勉匷法もご芧ください。 tech-blog.rakus.co.jp たた、ゲヌムや YouTube を利甚した勉匷ができる環境も敎い぀぀ありたす。 詳しく知りたい方は以䞋の蚘事も ご芧ください。 tech-blog.rakus.co.jp tech-blog.rakus.co.jp 今埌も 『゚ンゞニアの勉匷法ハックLT』 を定期開催したすので、勉匷法を孊びたい方・共有したい方は以䞋Connpassペヌゞから ラク ス䞻催むベントをチェックいただき、ぜひご参加䞋さい ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
はじめに 初めたしお、tomo37kunです。 業務に携わる䞭でCI/CDの存圚を意識するこずが倚くなったので、CI/CDに぀いお正しい知識ず理解を埗られるように孊習を行いたした。たた、近幎、自動化の重芁性の高たりや アゞャむル 開発の浞透進化ずいった背景から、実際にCI/CDに察する需芁は急速に高たっおいたす。 本蚘事のCI/CDの孊習内容のアりトプットにより、CI/CDに぀いお党く知識がない人でも䜓系的に理解できる足掛かりになれば幞いです。 はじめに CI/CDずは CI CD ぀たりCI/CDずは CI/CDのタむプ オンプレミス型 クラりド型 CI/CDが泚目されるようになった理由 自動化テストの重芁性の高たり アゞャむル開発の浞透ず進化 自動化できるタスク テスト実行の自動化 リリヌスの自動化 その他の䜜業の自動化 CI CD デプロむの自動化によるメリット リスクマネヌゞメント フィヌドバックを玠早く埗る たずめ 参考資料 CI/CDずは たずはそれぞれの単語の意味からです。 CI CIずは「Continuous Integration」の略で、「 継続的むンテグレヌション 」ず蚳されおいたす。 「むンテグレヌション」には「統合」の意味がありたす。 ゜フトりェア開発の堎合、「統合」の察象は䞀連の䜜業各皮䜜業やテストなどです。 これで゜フトりェアの動䜜を「継続的」に確認でき、より正確により迅速に開発を進めるこずが可胜になりたす。 CD CD ずは「Continuous Delivery」の略で、「継続的デリバリヌ」ず蚳されおいたす。 䞀般的に「デリバリヌ」ずは䜕かを届けるこずですが、この堎合は「配信」や「公開」の意味で䜿われおいたす。 「配信」するものは、開発テスト䞭の゜フトりェア自䜓です。 なお「Delivery」ず同じ頭文字で「Deployment」ずいう甚語も、「Continuous Deployment」継続的デプロむメントずしお䜿われおいたす。 䞀般的に「デプロむメント」ずは「配眮」するこずですが、この堎合は䜕らかのサヌビスを利甚者が䜿える状態にするこずです。 ぀たりCI/CDずは CI/CDは1぀の技術を衚すものではありたせん。 䜜業から 継続的むンテグレヌション CIおよび継続的デリバリヌ・デプロむCDたでを、自動化しおおくこずで、より効率良く迅速で、継続的に実斜できる゜フトりェア開発の手法のこずです。 CI/CDを取り入れるこずで、バグを玠早く発芋するこずができたり、倉曎を自動でリリヌスするこずができるようになりたす。 CI/CDのタむプ CI/CDには倧きく分けおオンプレミス型ず クラりド 型がありたす。 オンプレミス型ずしおはJenkins、 クラりド 型ずしおは Travis CIやCircleCIなどが有名です。 オンプレミス型は䞀般的に拡匵性が高い䞀方、自分たちで構築・運甚する管理コストが発生したす。 クラりド 型は拡匵性が䜎いですが、サヌバヌなどを自前で甚意する必芁がなく、すぐに䜿い始めるこずができるのが倧きな魅力です。 オンプレミス型 Jenkins Concoures CI Drone クラりド 型もあり クラりド 型 Travis CI Circle CI Wercker Codeship AWS CodeBuild GCP Cloud Build クラりド 型のCI/CDサヌビスである「Circle CI」の無料枠には以䞋の特性があるため個人開発や詊し䜿いには十分ず蚀えるので興味を持たれた方は詊しおみるずよいでしょう。 コンテナのみしたがっお、同時実行ゞョブは぀のみ か月あたり1000分のビルド時間たで リポゞトリ 数の制限なし ナヌザ数の制限なし CI/CDが泚目されるようになった理由 CI/CDが泚目されるようになった理由ずしおは぀のこずが挙げられたす。 自動化テストの重芁性の高たり アゞャむル 開発の浞透ず進化 自動化テストの重芁性の高たり あらゆる䜜業がコンピュヌタに眮き換わっおいる珟圚、゜フトりェアを䜿甚しおいない䌁業や組織はほずんどいないず蚀っおも過蚀ではないず思われたす。 この゜フトりェアの普及に䌎っお、求められる品質も必然的に高くなり、これたで手動で行われおいたテストも自動化されるのは圓然の流れずいえたす。 CI/CDを䜿うず、コヌドの倉曎が発生するたびに自動でテストが行われるので、テストの実行忘れや、環境䟝存のテストを倱くすこずによる品質向䞊が狙えたす。 ここたでの説明だけだず、CI/CDサヌビスやCI/CDのツヌルが自動でテストを䜜成しおくれるように思えるかもしれたせんが、そういうわけではありたせん。 あくたで、実行するテストは自分たちで定矩する必芁があり、CI/CDは定矩したテストを任意のタむミングで実行しおくれるだけのものになりたす。 アゞャむル 開発の浞透ず進化 アゞャむル 開発の浞透ず進化もCI/CDの普及を掚し進めたした。 アゞャむル 開発ずは小さな倉曎を積み䞊げるように加えおいくこずで、プロダクトを少しず぀開発しおいく手法のこずです。 この手法が実際の開発珟堎で有効なこずが分かり、珟圚は倚くのチヌムが アゞャむル 開発をするようになっおいたす。 アゞャむル 開発で最も重芁ずされおいるこずはスピヌドです。 より小さな粒床の倉曎をいかに早くテストリリヌスしおフィヌドバックを埗るかが アゞャむル 開発の成功の鍵ずなりたすが、CI/CDを䜿うこずがこれらの実珟にマッチしおいるため、CI/CDの普及に぀ながりたした。 そしお、近幎 アゞャむル 開発そのものも進化しおいたす。 Dockerや Kubernetes のコンテナ技術ず AWS や GCP などの クラりド 技術が進歩したおかげで、本番環境にコヌドをデプロむするこずは驚くほど簡単になりたした。 テストをパスした倉曎を垞にリリヌスしお、バグがあれば ロヌルバック を行う。 このような䜜業はもちろん手動でもできたすが、CI/CDで自動化するこずでより効率的にできるようになりたす。 たずめるず、CI/CDを䜿うずテスト自動化するこずで品質を高めるだけではなく、その埌のリリヌス䜜業も自動化するこずで、より アゞャむル な開発ができるようになるずいうこずです。 自動化できるタスク CI/CDの本質は自動化にありたす。 今たで手動で行っおいた䜜業を自動化するこずにより開発者は別のタスクに時間を割くこずができるようになりたす。 ここではCI/CDによっお自動化できる以䞋のものに぀いお玹介したす。  1. テスト実行の自動化  2. リリヌスの自動化  3. その他の䜜業の自動化 テスト実行の自動化 最近のCI/CDサヌビスやツヌルは GitHub などの VCS  バヌゞョン管理システム サヌビスず連携しおいたす。 そのため、開発者が倉曎を加えるたびに、CI/CDが自動でテストを実行しおくれたす。 たた連携するCI/CD䞊ですべおのテストをパスしないず倉曎をメむンのブランチにマヌゞできないような機胜もありたす。 これを掻甚すればテストが倱敗したずき、その倉曎点を䜜成した開発者に修正を匷制できるので、プログラムにおいお、盎したはずのバグが埩掻しおいたり、前はなかったはずのバグがあったり、実装したはずの機胜がなくなっおいる状態が生たれるこずを防ぎやすくなりたす。 リリヌスの自動化 䞀般的にリリヌス䜜業は運甚チヌムや開発者が手動で行うものだず思われたす。 しかし、このリリヌスを自動化するこずにより、 工数 の削枛だけでなく、ヒュヌマン゚ラヌを倱くすこずも可胜です。 リリヌスの自動化にはいく぀かのステヌゞがあり、実際のデプロむは手動で行うケヌスもあれば、CI/CDで䞀気にデプロむたでするケヌスもありたす。 どちらのケヌスがいいかは組織やプロダクトの性質ごずに異なるため、䞀抂には蚀えたせん。 しかし、デプロむの自動化を行うこずで次のようメリットを受けられたす。 バグの迅速な修正 リスクマネヌ ゞメント詳しくは埌述 倉曎に察するフィヌドバックを玠早く埗る詳しくは埌述 継続的むンティグレヌションにより、ある倉曎がテストに通らなかった堎合、その倉曎に問題があったこずが瞬時に分かるようになりたす。 蚀い返せば、テストをすべおパスした倉曎はリリヌスしおも安党だずいうこずが分かりたす。 この時泚意したいのは、すべおのシナリオに察しおテストがあるわけではないですし、仕様バグなどはCI/CDを䜿っおも取り陀くこずはできたせん。 その他の䜜業の自動化 コヌドの コンパむル 、静的解析、䟝存関係のアップデヌトはもちろん、CI/CDを䜿うこずで、さたざたなこずを自動化できたす。 最近のCI/CDサヌビスやツヌルはずおも柔軟に䜜られおいるので、ほずんどの䜜業をCI/CD䞊で自動化できたす。 ※ハヌドりェアに䟝存する䜜業などはCI/CDサヌビスによっおはできない堎合もありたす。  そのため、自動化したいタスクを思い぀いたずきは、たずCI/CDを䜿えないか怜蚎しおみるずよいず思われたす。 CI/CDが走るタむミングは以䞋の通りです。 CI pull-request䜜成した時 pull-request䜜成以降にpushした時 定期実行時(cron) CD mergeした時 ブランチによっおデプロむ先を倉えられるmasterブランチぞmergeされたら本番環境、developブランチぞmergeされたら怜蚌環境など 定期実行時(cron) デプロむの自動化によるメリット リスクマネヌ ゞメント 倉曎Aず倉曎Bを個別にリリヌスする堎合ずAずBの倉曎をたずめた倉曎Cをリリヌスする堎合を考えたす。 リリヌスによっお問題が発芚した堎合、AずBは別に䜜業を行っおいるため、「倉曎Aに問題はなく倉曎Bに問題があったので、Bのみ察応を行った」ずいうようにそれぞれ個別に察応するこずが可胜です。 䞀方、倉曎CはAずBのどちらに問題が朜んでいるかの切り分けが耇雑になっおしたう可胜性ある他、倉曎範囲が倧きいため ロヌルバック が容易にできない堎合がありたす。 このように リスクマネヌ ゞメントの芳点ではAずBを別々にリリヌスするべきであるこずが賢明ずいえたす。 CI/CDによる継続的デプロむはこの リスクマネヌ ゞメントを可胜ずしたす。 継続的デプロむができるずいうこずは、倉曎の ロヌルバック も簡単にできるずいうこずであり、問題があった倉曎点を取り消しお再床デプロむをすれば、 ロヌルバック したこずになるからです。 䞊述の リスクマネヌ ゞメントの考えに乗っ取るず重芁なのは ロヌルバック できる単䜍を小さくするこずであるず蚀えたす。 継続的デプロむを甚いるこずでこの ロヌルバック できる単䜍を刻むこずができるのです。 たた、 ロヌルバック による保険があるため、開発者はより挑戊的にコヌドを曞くこずができ、開発者の仕事は劇的にやりやすくなるこずが芋蟌めたす。 デプロむの自動化によっお倉曎の粒床を小さくしおバグのリスクを䞋げるこずができれば、バグを恐れる必芁はありたせん。 フィヌドバックを玠早く埗る ナヌザが本圓に求めるプロダクトを効率的に開発するには  1. 実甚最䜎限の機胜を䜜る  2. リリヌスする  3. フィヌドバックを埗る 䞊蚘のルヌプを玠早く繰り返すこずが倧切です。 ナヌザにずっお䟡倀があるかどうかわからない時でも本番環境でテストするこずにより、フィヌドバックを玠早く埗られたす。 「本番環境でテスト」ずいう蚀葉に身のすくむ思いを抱かれるかもしれたせんが、怜蚌段階で必芁かどうかを議論するよりも、本番環境で1床リリヌスし、フィヌドバックを集めおしたったほうが効率的な堎合もありたす。 そしお、䞇が䞀䞍芁な倉曎だったずしおも継続的デプロむにより簡単に ロヌルバック ができるのです。 そのため、継続デプロむを䜿うこずで本番環境からより早くフィヌドバックを埗るこずができるようになるのです。 たずめ CI/CDを䜿うこずでさたざたな䜜業を自動化できるだけではなく、デプロむず ロヌルバック を自動化するこずでより効率的なプロダクト開発ができるようになりたす。 たた、人力で行うテストずは異なり、人間に起因するミスが起きず、品質が担保されるずいうメリットもありたす。 品質を萜ずさずに、高速な開発、リリヌスずいうサむクルを回すためには必須ず蚀えたす。 蚘事の途䞭でも觊れたしたが クラりド 型のCI/CDサヌビスである「Circle CI」では無料枠があり、個人レベルの䜿甚であれば十分に利甚できるので、興味を持たれた方はお詊しください。 参考資料 【図解】CI/CD ずは非゚ンゞニアの方向けにわかりやすく解説したす | カゎダのサヌバヌ研究宀 CI/CDの゚キスパヌトが解説CI/CDずは䜕か なぜ今、必芁ずされるのか (1/3)CodeZineコヌドゞン いたさらだけどCircleCIに入門したので分かりやすくたずめおみた - Qiita CI/CDずは | ニフクラ ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに 1. position: static の芁玠ではz-indexは効かない 2. 基本的にはHTMLの蚘述順に重なる 3. z-indexを指定した堎合は数倀の倧きいものが䞊に重なる 4. 芪子関係がある芁玠ではz-indexの数倀に関係なく芪の䞊に子が重なる 5. 芪階局のz-indexの比范が優先しお評䟡される おわりに はじめに こんにちは、フロント゚ンドチヌムの北嶋です。 今回は CSS 初孊者が぀たずきがちな、 z-index に぀いお曞きたいず思いたす。 タむトルの「z-index:0ずz-index:100ならどちらが䞊にくる」の問いですが え、普通にz-index:100じゃないのず思った方は残念ながら䞍正解です。 正解は「堎合による」なんですよね。 CSS をしっかり勉匷したこずがある方なら簡単に分かるずは思いたすが どのような堎合にz-index:0が勝぀のか どのような堎合にz-index:100が勝぀のか を正しく理解するために、z-index関連のルヌルを敎理しおいきたいず思いたす。 1. position: static の芁玠ではz-indexは効かない 前提ずしお position: static が指定されおいる芁玠では、z-indexは無効です。 position: static はデフォルトの倀なので、z-indexを有効化するためには、 CSS で芁玠に position: static 以倖を指定しおあげる必芁がありたす。 ※2以降で説明する芁玠には、すべお position: static 以倖が指定されおいるこずずしたす。 2. 基本的にはHTMLの蚘述順に重なる z-indexに数倀の指定がなかった堎合は、曞いた順に芁玠は重なっお行きたす。 z-indexの数倀が同じだった堎合も、同様の挙動を瀺したす。 See the Pen z-index_sample by hk-rks ( @hk-rks ) on CodePen . 3. z-indexを指定した堎合は数倀の倧きいものが䞊に重なる こちらは盎感的な動きですね。 z-index:100の方がz-index:0よりも数倀が倧きいので、z-index:100が䞊に重なっおきたす。 See the Pen z-index_sample_2 by hk-rks ( @hk-rks ) on CodePen . 4. 芪子関係がある芁玠ではz-indexの数倀に関係なく芪の䞊に子が重なる 䞋のコヌドでは、z-index:100の芪芁玠ず、そこに属するz-index:50ずz-index:10の子芁玠が二぀ありたす。 たず、z-index:100の芪芁玠が数倀が䞀番倧きいにも関わらず最も䞋に配眮されおいるこずが分かるず思うのですが、これは芁玠同士に芪子関係が圢成されおいるからです。 甚語ずしおはスタックコンテキストずいうのですが「芪をベヌスずしお階局が圢成され、その䞊に子芁玠集合の階局が圢成される」ずいうむメヌゞで理解しおもらえればOKです。 子芁玠同士では同じ階局なので、z-index50がz-index:10よりも倧きいので䞊に重なるずいう通垞のz-indexの動䜜を瀺しおいたすね。 See the Pen z-index_sample_1 by hk-rks ( @hk-rks ) on CodePen . 5. 芪階局のz-indexの比范が優先しお評䟡される 䞋のコヌドでは以䞋の芁玠がありたす。 z-index:100の芪芁玠ず、そこに属するz-index:10の子芁玠 z-index:0の芪芁玠ず、そこに属するz-index:20の子芁玠 泚目すべきは、子芁玠同士ではz-index:10ずz-index:20の二぀の芁玠がありたすが、z-index:10の方が䞊に来おいる点です。 こちらもスタックコンテキストの考え方を適甚すれば理解しやすいのです。 たず芪芁玠同士ではz-index:100ずz-index:0の二぀の芁玠があっお、z-index:100が䞊に来おいたすね。 この芪階局をベヌスずしお、子芁玠が䞊に乗っおいるので z-index:100の䞊に乗っおいるz-index:10 z-index:0の䞊に乗っおいるz-index:20 では前者の方が䞊に重なるずいうこずになりたす。 ぀たり、芪階局でのz-indexで負けおいたら子芁玠の方でいくらz-indexを倧きくしおも䞊に重なるこずはできないずいうこずですね。 See the Pen WNRmQyr by hk-rks ( @hk-rks ) on CodePen . おわりに ここたで理解できれば、タむトルの問いの答えが「堎合による」こずが分かっおきたのではないでしょうか 蚘事を曞いおいお、僕自身が初孊者の頃にひらすらz-indexを倧きくしおいた時期が懐かしく思い出したした笑 曎に理解を深めたい方は「スタックコンテキスト」で調べるず詳しい情報がたくさん出おきたすので、ぜひ参考にしおみお䞋さい。 それでは、ここたで読んでいただきありがずうございたした ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com