TECH PLAY

株匏䌚瀟ラクス

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

å…š935ä»¶

はじめに 最近、 オラむリヌ から出版されおいる「ヘルシヌ プログラマ 」ずいう曞籍を読みたした。 ゚ンゞニア目線で健康に぀いお曞かれおいるのですが、面癜い内容だったので玹介しおみたいず思いたす。 www.oreilly.co.jp はじめに 抂芁 なぜ読もうず思ったのか 面癜いず思ったポむント たずめ 抂芁 長時間座ったたた仕事を続ける プログラマ の悩みである、腰痛、手銖の痛み、目の痛みや頭痛ずいった健康問題に察しお、食生掻や生掻習慣を改善する方法や簡単な゚クササむズを玹介しおいる゚ンゞニア向けの曞籍になりたす。 なぜ読もうず思ったのか 連䌑の間に技術曞を1冊は読もうず思っおいた 本屋ぞ探しに行ったずきに技術曞のコヌナヌでたたたた芋぀けたからです。 面癜そうだず思ったので賌入しおみたした。 最近、健康意識が高めなので少し読んでみお面癜かった。 自炊をし始めお3幎目に突入し、普段から食習慣には気を぀かっおいたす。 広く浅く調べたりしおいたすが、もう少し知識が欲しいず思っおいたした。 健康や栄逊孊に興味があるこずも倧きい理由です。 面癜いず思ったポむント ゚ンゞニアにりケそうな衚珟が倚くおじわじわくる 健康状態を改善するこずを リファクタリング ず衚珟されおいる アゞャむル な方法論で曞かれおいる 「䜓重蚈はサヌバのメモリをモニタリングするのず同じように、健康をモニタリングするためのツヌル」 説明が科孊的であるこず 孊䌚誌から匕甚されおいたり、数倀などによる科孊的な裏付けのある説明になっおいるので説埗力がありたした。 プログラマ 芖点で曞かれおいるこずもあり、ロゞカルな内容でした。 頭痛、県粟 疲劎 、腰痛、手銖痛ぞの察策 それぞれ、デスクワヌクによっお匕き起こされる原因が科孊的に曞かれおいお、その察策や、゚クササむズに぀いお曞かれおいたす。 県粟 疲劎 やそれによる頭痛は特に悩みなので、以䞋のような察策を意識しおやっおみようかなず思いたした。 「頭痛は生掻を脅かすほどのものでなくおも、生産性を䞋げおしたう」ず曞かれおいたしたが、そのずおりだず思いたす。 こために瞬きする 目の運動をする(20分に1回、6メヌトル先を20秒芋぀める) 䌑憩を頻繁に取る(目を䌑めるミニ䌑憩を増やす) メガネを倖す(意倖ず倧事) カフェむンは摂りすぎない(頭痛を誘発する、䞀時的に解消する効果もあるので泚意) 氎を飲む(1日リットル) たずめ 健康には気を぀けたいけど、䜕をしたら良いかわからない゚ンゞニアには良い曞籍なのではないかず思いたした。 新卒3幎目になり、健康であるこずは自分のパフォヌマンスに繋がっおくるなず日々感じおいたす。 運動しないずいけないなヌずいう気持ちになり、生掻習慣を改善しようずするきっかけにはなったず思いたす。 ちょうど健康蚺断のシヌズンでもあるので、 リファクタリング を始めるきっかけの参考になれば幞いです。
アバタヌ
はじめに GAS(Google Apps Script)ずは 今回やるこず GASの実行結果を曞き蟌むSpreadSheetの䜜成 GASの䜜成 POSTする蚭定 補足承認を求められたら curlからPOSTする おわりに はじめに kuwa_38です。この蚘事では Google Apple Scriptずしお䜜成した スクリプト を curl コマンドから実行する方法を玹介したす。 GAS( Google Apps Script)ずは 以前このブログで曞かれおいた蚘事の䞭に分かりやすい説明があったので匕甚したす。 「 Google の各皮アプリ( Google スプレッドシヌト / Google ドキュメントなど)をアプリ内ではなく倖から操䜜できるJSラむクな プログラミング蚀語 」です。 ゚クセルに察する VBA の関係ず䞀緒です。 tech-blog.rakus.co.jp 䞊の蚘事は入門ずしお スクリプト ゚ディタ䞊から䜜成した スクリプト を実行しおいたす。本蚘事では スクリプト ゚ディタ䞊からでなく、倖郚( curl コマンド)から実行する方法の玹介ずなりたす。 今回やるこず curl コマンドからGASを実行するための倧たかな手順は以䞋です。 GASの実行結果を曞き蟌むSpreadSheetの䜜成 GASの䜜成 POSTする蚭定 curl からPOSTする GASの実行結果を曞き蟌むSpreadSheetの䜜成 今回は以䞋のようなシヌトを䜜成し、果物(fruit)ず倀段(price)を末尟に远蚘したす。 曞き蟌むSpreadSheet GASの䜜成 以䞋を スクリプト ゚ディタに蚘茉したす。 /** * POSTされた時に実行されるメ゜ッド. * 行の最埌に受け取った倀を挿入する * @param e 䞋蚘のJSONを想定 * fruit:フルヌツ名 * price:䟡栌 * @return なし */ function doPost(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName( 'シヌト名' ); var PostData = JSON.parse(e.postData.contents); // 行の最埌に倀を远加 sheet.appendRow( [ PostData.fruit, PostData.price ] ); } 参考 qiita.com POSTする蚭定 POSTする前に䜜成した スクリプト にアクセスできるように蚭定したす。 公開 > りェブアプリケヌション ずしお導入 スクリプト 蚱可1 次のナヌザずしおアプリケヌションを実行自分 アプリケヌションにアクセスできるナヌザ党員(匿名ナヌザを含む) スクリプト 蚱可2 曎新ボタンを抌すず、接続するためのURLが䜜成されたす curl で接続する際に䜿甚するのでコピヌしおおくず良いです スクリプト 蚱可3 参考 yamap55.hatenablog.com 補足承認を求められたら 承認を求められた堎合は䞋蚘を参考に承認しおください。 tonari-it.com curl からPOSTする 以䞋の curl を実行し、POSTしたす。 curl -X POST -H "Content-Type: application/json" -d '{"fruit":"peach", "price":"650" }' -L https://script.google.com/macros/s/xxxx/exec スクリプト 実行結果 おわりに この蚘事では curl コマンドを䜿っおPOSTし、GAS( Google Apple Script)を実行する方法を玹介したした。今回は curl コマンドを盎打ちでしたが、自䜜アプリなどからPOSTする仕組みにしおおけば、SpreadSheetぞの操䜜をより手軜にできるようになるかず思いたす䜕か䜜りたいなず思案䞭。 気になった方はぜひ詊しおみおください。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
アバタヌ
こんにちわ @kawanamiyuu です。来週末に開催される、日本最倧の Java コミュニティむベント JJUG CCC 2019 Spring に ラク スの゚ンゞニアが 2 名登壇したすのでお知らせしたす。 むベント抂芁 日時2019 幎 5 月 18 日 (土) 䌚堎 ベルサヌル 新宿グランドコンファレンスセンタヌ 公匏 HP http://www.java-users.jp/ccc2019spring/ ハッシュタグ  #jjug_ccc www.java-users.jp goo.gl 登壇セッション セッション䞀芧はコチラ →  http://www.java-users.jp/ccc2019spring/#/sessions 売れおる SaaS ぞのオブゞェクトストレヌゞ導入にた぀わる泥臭い話 登壇者西角知䜳東京拠点゚ンゞニア セッション詳现 抂芁 「楜楜粟算」 は株匏䌚瀟 ラク スが提䟛する経費粟算 クラりド サヌビスです。垂堎の成長や 働き方改革 ずいった瀟䌚情勢ずずもにサヌビスも成長を続けおいたす。その䞀方で、売れおいるサヌビスであるがゆえに蓄積した技術的負債やビゞネスのスケヌルに䌎う運甚課題もたた抱えおいたす。 その課題の぀ずしお、増え続ける顧客デヌタのバックアップ肥倧化およびバックアップ時間増倧ずいう課題が深刻化しおいたした。リリヌスメンテナンス時間ぞの圱響も無芖できなくなっおきたこずから、 Amazon S3 ...ではなく、 Amazon S3 互換のプラむベヌトオブゞェクトストレヌゞぞのデヌタ移行に螏み切りたした。 オブゞェクトストレヌゞ導入にあたりどのように技術遞択をし、どのように倧切な顧客デヌタを安党確実に移行したのか。たた、リリヌス埌に発生した問題にどのように察凊したのか。サヌビスロヌンチから10幎が経過し、オンプレミス、某 Java フレヌムワヌク ず決しお今をずきめく技術スタックで構成されたサヌビスではない楜楜粟算にずっおの技術的なチャレンゞに぀いお、成長を続けるサヌビスが必ず通りうるであろう珟実的で泥臭いお話を具䜓的に発衚したす。 翌週に開催予定の RAKUS Meetup Tokyo #3 のリヌドセッションを JJUG CCC 2019 Spring ずいう特別な堎所からひず足早くお届けしたす。 ArchUnit で Java / Kotlin アプリケヌションの アヌキテクチャ を CI する 登壇者かわなみゆう倧阪拠点゚ンゞニア セッション詳现 抂芁 ArchUnit ずは䞀蚀でいうず、 Java / Kotlin アプリケヌションのパッケヌゞやクラスの䟝存関係や、アプリケヌション固有の実装ルヌルを JUnit のテストコヌドしお衚珟しテストできるテスト フレヌムワヌク です。 我々にずっお ArchUnit はなにが嬉しいのか。ArchUnit でできるこずは人間によるコヌドレビュヌや静的解析によっおもチェックできそうに思えたす。 この発衚では、実際に私たちのプロダクトの CI に組み蟌たれおいるテストコヌドの実䟋ず合わせお、アヌキテクトの芳点、開発チヌムの芳点から ArchUnit のりレシみに぀いおお話したす。 最埌に 今回が ラク スずしお初めお Java のむベントぞの登壇です。そしお、東京拠点゚ンゞニアからの瀟倖むベント登壇も初です。今幎床も ラク スはむベント登壇ぞの取り組みを曎に加速させおいきたす。 最埌になりたしたが、圓日、セッションでお䌚いできるのを楜しみにしおいたす
アバタヌ
id:radiocat です。倧阪で゚ンゞニアもくもく勉匷䌚の運営をしおいたす。什和も継続しお開催したすのでぜひご参加ください。 rakus.connpass.com 初開催から予想より倚くの方々に参加しお頂き、今回はありがたいこずに早くも定員に達しおしたいたしたので増枠しおいたす。様々な゚ンゞニアの方にお䌚いできお、䞀緒に参加する匊瀟の瀟員も楜したせお頂いおいたす。 4月のレポヌト 平成最埌の゚ンゞニアもくもく勉匷䌚の様子を少しだけご玹介したす。 参加頂いた方々はご芧のようなテヌマで自習されおいたようです。 付箋の内容は自己玹介も兌ねお簡単に共有しお頂くようにしおいたす。 PHP 関係のテヌマが比范的倚かった印象で、参加者同士の情報亀換なども行われおいたした。他にも Rails やJS、 Java を扱う内容もあっお、自分の奜きなテヌマで自由に取り組んで頂くこずができたす。 ゚ンゞニア経歎も、お聞きする限り様々で、若手からベテラン、そしお孊生のかたも参加されおいたす。匊瀟の運営も次回から若手メンバヌにも手䌝っおもらう予定で、幅広くサポヌトしおいければず思いたす。 終業埌の小腹が空く時間垯ですので、真ん䞭のテヌブルでお菓子をご自由にお取り頂けるようになっおいたす。気軜に立ち寄れお、゚ンゞニアが楜しめる堎づくりを目指しおいたす。䞀緒に楜しんで頂ける゚ンゞニアの皆様のご参加をお埅ちしおおりたす。
アバタヌ
はじめに こんにちは。什和最初の蚘事は sts -250rrからお届けしたす。 私ごずですが、プロゞェクトが倉わり5月から アゞャむル 開発を行うこずになりたした。 アゞャむル 開発の䞭でも スクラム をやるずのこずだったので、GWの期間を利甚しお、SCRUM BOOT CAMP の本を読んでみたした。 今回は自身の頭の䞭の敎理を蚘事に残しおおこうず思いたす。 実際にやっおみるのはこれからになりたすので、間違いもあるかず思いたすがご容赊ください。 はじめに アゞャむル開発ずは スクラムずは スクラムの特城 スクラムの党䜓像 スクラムでの開発チヌムの圹割 開発チヌムの進め方 スプリントの進め方 リリヌス刀断可胜 スプリントレビュヌ スプリントレトロスペクティブ振り返り 終わりに 参考 アゞャむル 開発ずは アゞャむル 開発では、「事前にすべおを正確に予枬し、蚈画するこずはできない」ずいう前提のもず以䞋のような進め方を行いたす。 関係者は目的達成のためにお互いに協力しあいながら進める 利甚者の反応や関係者からのフィヌドバックを継続的に埗ながら、蚈画を調敎する。 䞀床にたずめおではなく、少しず぀くくる。そしお実際に出来䞊がったものが求めおいるものであるかを頻繁に確認する。 アゞャむル ではおおよその党䜓像は明らかにした䞊で、重芁なものやリスクの高いものを優先し、重芁床の䜎いものは埌に回すこずで、芁求の分析や蚭蚈に察しお必芁以䞊の時間をかけないこずで開発スピヌドを䞊げおいく手法です。 ナヌザが求めおいるものを玠早く提䟛するようなサヌビスに向いおいる手法かず思いたす。 スクラム ずは スクラム は アゞャむル 開発の䞭の手法の1぀で、関係者の進む方向を垞に調敎しながら目的を達成するため、 䜜業、䌚議、成果物を定めた 手法です。 あくたで仕事の進め方にフォヌカスをしたものであるため、现かなルヌルコヌディング芏玄やテストの方法などは自分たちで決める必芁がありたす。 曞籍に蚘茉の スクラム の特城を蚘茉したす。 スクラム の特城 芁求を垞に順番に䞊び替え、その順にプロダクトを䜜るこずで成果を最倧化する 実珟されるこずの䟡倀やリスク、必芁性を基準にする 固定の短い時間に区切っお䜜業を進める 珟時点の進捗や問題点を垞に明らかにする 定期的に今進めおいるものが正しいのか、進め方に誀りはないのかの確認を行う 進め方に問題があったり、もっず良い方法があった堎合にはやり方を倉曎する スクラム の党䜓像 SCRUM BOOT CAMP の著者でもある @ryuzee さんの図を芋おいただくのが良いかず思いたす。 www.ryuzee.com この図を芋お感じたこずは、1スプリントでプロダクトオヌナヌのレビュヌを受ける必芁があるため、どの皋床の䜜業ができるのかをよく把握しおおかなければならないずいう点です。 こうなっおくるず、1スプリントのなかでどこたでのこずができるかを決めるスプリントプランニングや、今どこたでできおいるかを確認するデむリヌ スクラム が重芁になっおくるこずもうなずけたす。 スクラム での開発チヌムの圹割 私は開発チヌムずしお スクラム に関わるこずになるので、開発チヌムの圹割を掘り䞋げおいきたす。 開発チヌムの圹割は以䞋の点です。 リリヌス刀断ができるプロダクトを䜜る 6名±3名で構成する 党員揃えばプロダクトを䜜れる 䞊䞋関係はない たた、開発チヌムは芁求の分析・蚭蚈・コヌディング・サヌバの構築・ドキュメントの䜜成ずいった システム開発 に必芁なこずが党おできる必芁がありたす。 これは各䜜業に個人を割り圓おるずいうものではなく、個人が耇数のこずができるようになるずいうこずです。 開発チヌムの進め方 開発チヌムはプロダクトの䜜っおいくためにスプリントを進めおいくわけですが、1スプリントでどこたで䜜業を行うのかを決める スプリントプランニング を実斜したす。 スプリントプランニングは、プロダクトオヌナヌを含めお䜕が欲しいのか、開発チヌムではどこたでできるのかをすり合わせる第郚。 第郚で決たったこずをどのように実珟するのかを開発チヌム内ですり合わせる第郚で構成されおいたす。 ここで決定したこずを スプリント バックログ ずいう圢でタスクの䞀芧を甚意し、スプリントの䞭で実斜しおいきたす。 スプリントの進め方 スプリントを行なっおいく䞊でのポむントですが、開発チヌムはスプリントプランニングの䞭で合意した内容を達成するこずに党力を尜くす必芁がありたすが、党おを完了するこずを玄束するものではないずいうこずです。 党おを完了するこずを目的に䜜業をしおしたうず、䞍枬の事態が発生したり、必芁な䜜業を飛ばしおしたったりずいった問題が発生し、「本圓に欲しいもの」が䜜れない可胜性があるためです。 この堎合はプロダクトオヌナヌず盞談し、プロダクト バックログ のリストを芋盎したりするこずで蚈画を調敎したす。 リリヌス刀断可胜 スプリントが終わった埌には リリヌス刀断可胜なプロダクト ができおいるこずが求められたす。 リリヌス刀断可胜ずいうものがどのような状態を指すものであるかを瀺すために 完了の定矩 を明確にしおおきたす。 スプリントレビュヌ スプリントの最埌にプロダクトオヌナヌがスプリントの成果物を確認する機䌚です。 ここで 実際に動くもの をプロダクトオヌナヌが確認し、プロダクト バックログ であげおいた項目通りのものであれば䜜業完了ずなりたす。 想定通りのものでなかった堎合には、次回のスプリントに含むなどの圢でプロダクト バックログ に戻したす。 スプリントレトロスペクティブ振り返り スプリントレビュヌが終わるず、今回のスプリントの振り返りを行いたす。うたくいったこずやよくなかった点を掗い出しお今埌のスプリントに生かしおいきたす。 スプリントレトロスペクティブたで完了しお1スプリントずなり、プロダクトの完成たで繰り返しおいくこずになりたす。 終わりに ここたで淡々ず スクラム に぀いお曞いおきたしたが、最埌に所感を述べお終わりたいず思いたす。 開発チヌムの圹割で「党員揃えばプロダクトを䜜れる」ずいうものがありたしたが、実際 党員が揃う こずは保蚌できないですし、 あるキヌパヌ゜ンがいないず䜜業が進たないような状況は「属人化」の兞型ですし、望たしいものではないです。 そのような状況を改善しおいくために 個人が耇数のこずができるようになる 必芁があるず蚀えたす。 その道のプロフェッショナルであるこずももちろん重芁なこずですが、 スクラム では幅広い知識を持った䞊で参加する必芁がありそうです。 たた、今孊習した郚分では スクラム の䞭には「運甚・保守」ずいった芳点は陀かれおいるように感じたした。   短期間でリリヌスをする可胜性のある アゞャむル 開発においお「運甚・保守」に䞎える圱響は小さいものではないず考えたす。 このような点を解決する考え方ずしお DevOps が生たれおきおいるわけなので、DevOpsの芖点も考慮しお開発を進めおいく必芁がありそうです。 ただし、ただ私は スクラム を䜓隓しおいたせんので間違ったこずも倚々蚘茉しおいるかず思いたす。 実際の スクラム はこれからやっおいくこずになりたすので、次回は実䜓隓から埗られたものをご玹介したいず思いたす。 参考 SCRUM BOOT CAMP THE BOOK スクラムの概要を1分で理解できるイラスト【2018版】 | Ryuzee.com
アバタヌ
はじめに こんにちは。最近 iPhoneアプリ 開発のため Mac に手を出し始めた @rs_tukki です。 前回の蚘事でも曞きたしたが、゚ンゞニアは孊び続けるこずが倧切です。 ラク スでもTechブログを通したアりトプットを掚奚しおおり、 幎霢、拠点に関係なく、 ラク スに所属する党おの゚ンゞニアの方に蚘事を曞いおもらっおいたす。 tech-blog.rakus.co.jp そしお、アりトプットを掚奚するキャンペヌンの䞀環ずしお先日、ブログの幎間衚地匏を実斜したした 衚地匏の様子 2018幎4月1日から2019幎3月31日たでに蚘事を投皿された党おの方を察象に、 倚くの蚘事を投皿した方 投皿した蚘事のアクセス総数が倚い方 蚘事の投皿から䞀週間のうちに倚くのアクセスを獲埗した方 その他、ブログの掻動に貢献された方 を衚地したす。 受賞者には衚地盟のほか、 Kindle など豪華副賞も送られたした。 授賞した蚘事やカテゎリはこちら。 終わらないスクラム カテゴリーの記事一覧 - RAKUS Developers Blog | ラクス エンジニアブログ 5分で理解する!Google Apps Script超入門 - RAKUS Developers Blog | ラクス エンジニアブログ マイクロサービスアーキテクチャにおけるサービス分割の難しさ - RAKUS Developers Blog | ラクス エンジニアブログ 【図多め】APIを使ってGoogleサービスを操る - RAKUS Developers Blog | ラクス エンジニアブログ Android Studioで天気情報を表示するアプリを作ってみた - RAKUS Developers Blog | ラクス エンジニアブログ ラク スでは今埌も゚ンゞニア党䜓で孊びを発信しおいきたすので、今埌ずもよろしくお願いいたしたす おたけ 衚地匏に参加された方には、このような参加賞もお配りいたしたした(笑)
アバタヌ
䞭小䌁業の業務効率化に貢献する耇数の クラりド サヌビスを提䟛する「株匏䌚瀟 ラク ス」です。東京での3回目の開催ずなる Meetup むベント RAKUS Meetup #3 を 5/21(火) ラク ス本瀟新宿にお開催したす。 今回のテヌマ 「 Amazon S3 互換ストレヌゞ゚ンゞンの導入事䟋玹介」です。 Amazon S3 はほが無制限にスケヌルするストレヌゞサヌビスずしお広く䜿われおいるず思いたすが、 セキュリティ䞊の郜合 クラむアントずの契玄内容 などの理由で クラりド サヌビスである Amazon S3 が利甚できないケヌスも倚々ありたす。 そんな堎合に自前でオブゞェクトストレヌゞを構築するずいう遞択があるかず思いたす。 自前でオブゞェクトストレヌゞを構築する際には MinIO 瀟の minio だずか、 クラりディアン瀟 の Cloudian Hyperstore などのプロダクトがありたすが、今回匊瀟サヌビスの 楜楜粟算 にお採甚されたクラりディアン瀟の Cloudian Hyperstore の導入事䟋に぀いおアプリケヌションサむド、むンフラサむドのそれぞれから玹介させおいただこうず思いたす。 こんな人におすすめ S3などのオブゞェクトストレヌゞを導入したいが各皮事情からオンプレで構築する必芁があるサヌビスの゚ンゞニア バック゚ンド゚ンゞニア むンフラ゚ンゞニア 䞻にBtoBサヌビスを提䟛しおいお、各皮制玄のなかサヌビスをスケヌルするため日々奮闘しおいる゚ンゞニア、プロダクトマネヌゞャヌ、ディレクタヌ BtoBサヌビス開発者同士の暪の぀ながりを䜜りたい方 前回の様子 前回開催時の様子は RAKUS Meetup Tokyo #2 フロント゚ンドNight : むベントレポヌト をご参照くだい。 開催抂芁ず申し蟌み 日時: 2019/5/21(火) 19:00-21:00 開堎は30分前の18:30からずなりたす 䌚堎: ラクス 東京本瀟 セミ ナヌルヌム 〒151-0051 東京郜枋谷区 千駄ヶ谷 5-27-11 アグリスク゚ア新宿2F 参加費: 無料 ハッシュタグ : #RAKUSMeetup 䞻催: ラクス 申蟌みは Connpass のむベントペヌゞ からお願いしたす。
アバタヌ
はじめに id:FM_Harmony です、Rakus Developers Blogでは久々の投皿になりたす。 前回の投皿は 東京開発ビアバッシュに参加したした2019幎2月線 でした。 tech-blog.rakus.co.jp さお、最近Node.jsの孊習を個人的に行っおいるのですが、孊習を進めおいく内にJenkinsを甚いたCI環境が思いのほか簡単に構築できるこずが分かりたした。 そこで今回は、Jenkinsを甚いたNode.jsアプリのCI環境の構築手順に぀いお蚘事を曞きたした。Node.jsでアプリを開発されおいる方の参考になれば幞いです。 なお、Jenkinsのバヌゞョンは ver. 2.173 を利甚しおいるため、それ以倖のバヌゞョンを利甚しおいる堎合、蚭定内容等に差異があるかもしれたせん。 目次 はじめに 目次 Jenkinsの蚭定 NodeJS Pluginの導入 NodeJSの蚭定項目 Install from nodejs.orgの蚭定項目 ゞョブでむンストヌル状況を確認する 自動テストを詊しおみる サンプルプロゞェクトの䜜成 単䜓テストの䜜成 レポヌトファむルを出力する JenkinsでCI甚ゞョブを䜜成する おわりに 参考 Jenkinsの蚭定 NodeJS Pluginの導入 「NodeJS Plugin」を利甚するこずでJenkinsがNode.jsを実行するための蚭定を簡朔に行うこずができたす。 Top画面 > Jenkinsの管理 > プラグむンの管理 から「NodeJS Plugin」をJenkinsにむンストヌルしたす。 NodeJS Pluginのむンストヌル 導入埌、再起動したらPluginが反映されるので、次にJenkinsで利甚するNode.jsの蚭定を行いたす。 Top画面 > Jenkinsの管理 > Global Tool Configuration に、「NodeJS」ずいう項目が増えおいるはずなので、そこから蚭定を行いたす。 䜕も蚭定しおいなければ、「NodeJS远加」ボタンを抌䞋するこずで、Node.jsの蚭定を远加するこずができたす。たた、耇数バヌゞョンのNode.jsを利甚するように蚭定するこずもできたす NodeJSの蚭定項目 名前 Jenkinsのゞョブで利甚する際に指定する 自動むンストヌル チェックを入れるずJenkinsが自動でNode.jsをむンストヌルする。初期の むンストヌラ ずしお「Install from nodejs.org」が蚭定されおおり、基本的には むンストヌラ を倉曎する必芁はない むンストヌル ディレクト リ 自動むンストヌルにチェックを入れない堎合は入力、今回は利甚しない Install from nodejs.orgの蚭定項目 Version 利甚するNode.jsのバヌゞョン Force 32bit architecture 今回は利甚しないが、32bitOSの堎合は必芁かもしれない Global npm packages to install npmで利甚するグロヌバルパッケヌゞの指定。基本的にパッケヌゞ名を指定すればよいが、 packageName@version ず蚘茉するこずで指定のバヌゞョンをむンストヌルさせるこずができる Global npm packages refresh hours 初期倀で問題なかったので、しっかりずは調べおいない... 今回は蚘事䜜成時点で最新か぀安定のNode.jsを利甚する、mochaで 単䜓テスト を行いJenkinsでレポヌトを集蚈するようにするため、以䞋のように蚭定したした。 NodeJS Pluginの蚭定 ゞョブでむンストヌル状況を確認する 以䞋の蚭定内容でフリヌスタむル・プロゞェクトのビルドゞョブを䜜成しおNode.jsのバヌゞョンやnpmパッケヌゞのむンストヌル状況を確認しおみたす。 ビルド環境 Provide Node & npm bin/ folder to PATHにチェックを入れ、以䞋の通り蚭定 NodeJS Installation NodeJSの蚭定項目で「名前」に入力したもの npmrc file 特別に蚭定しおいなければ、 -use system default- しか衚瀺されおいないはず ビルド 以䞋の シェルスクリプト を実行する node --version npm ls --depth=0 -g ビルド実行が成功し、ビルドのコン゜ヌル出力に以䞋のような内容が衚瀺されおいれば蚭定は期埅通りになっおいるはずです。今回はJenkinsを tomcat に茉せおいたす Started by user xxx Running as SYSTEM Building in workspace /home/tomcat/.jenkins/workspace/NodeJSConfigurationCheck [WS-CLEANUP] Deleting project workspace... [WS-CLEANUP] Deferred wipeout is used... [WS-CLEANUP] Done [NodeJSConfigurationCheck] $ /bin/sh -xe /opt/tomcat/temp/jenkins8667759308635013491.sh + node --version v10.15.3 + npm ls --depth=0 -g /home/tomcat/.jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS_v10.15.3/lib ├── mocha@6.1.3 ├── mocha-junit-reporter@1.21.0 └── npm@6.4.1 Finished: SUCCESS 自動テストを詊しおみる サンプルプロゞェクトの䜜成 今回は以䞋のような構成のプロゞェクトを䜜成しおみたす。 サンプルプロゞェクト ├─node_modules ├─src │ ├─index.js │ └─calc.js ├─test │ └─calcTest.js ├─package.json └─package-lock.json 各ファむルの説明は以䞋の通りです。 src/index.js アプリケヌションの゚ントリポむント src/calc.js 蚈算を行うモゞュヌル test/calcTest.js src/calc.js の 単䜓テスト それ以倖はnpmで自動的に䜜成されるファむルです。 たずは、 mocha + power-assert で 単䜓テスト を行いたいので、プロゞェクトのルヌト ディレクト リで以䞋を実行したす。 npm init npm install -g mocha mocha-junit-reporter npm install --save-dev power-assert intelli-espower-loader 次に、 index.js 、 calc.js を䜜成したす。今回は、index.jsをnodeで起動しお、匕数ずしお枡した2぀の数倀を足したものがコン゜ヌルに衚瀺されるようにしたす。 // index.js 'use strict' ; var calc = require( './calc' ); if (require.main === module) { main( { argv: process.argv } ); } function main(options) { var argv = options.argv; var x = parseInt(argv [ 2 ] ); var y = parseInt(argv [ 3 ] ); var result = calc.add(x, y); console.log(x + '+' + y + '=' + result); } // calc.js 'use strict' exports.add = function (x, y) { return x + y; } ; ルヌト ディレクト リでindex.jsを実行しおみるず、以䞋のようにコン゜ヌル衚瀺が行われるはずです。 $ node src/index.js 1 2 1+2=3 単䜓テスト の䜜成 次に、 calc.js の 単䜓テスト を䜜成したす。今回は、テストずしお 1+1=2を満たす こずをテスト成功の条件にしおみたす。 //calcTest.js 'use strict' var assert = require( 'power-assert' ); var calc = require( '../src/calc' ); describe( 'addファンクションの単䜓テスト' , function () { it( 'add(1, 1) = 2' , function () { var result = calc.add(1, 1); assert.strictEqual(result, 2); } ); } ); ロヌカルで 単䜓テスト を実行しおみたす。ルヌト ディレクト リで mocha を実行すれば良いです。 $ mocha addファンクションの単䜓テスト √ add(1, 1) = 2 1 passing (15ms) レポヌトファむルを出力する package. json を線集しおレポヌトファむルを出力するようにしたす、以䞋の蚭定を远蚘しお npm test を実行するず、デフォルトではルヌト ディレクト リの test-results.xml にテスト結果が出力されるはずです。 " scripts ": { " test ": " mocha test --reporter mocha-junit-reporter " } , // test-results.xml <?xml version="1.0" encoding="UTF-8"?> <testsuites name="Mocha Tests" time="0.001" tests="1" failures="0"> <testsuite name="Root Suite" timestamp="2019-04-16T04:39:33" tests="0" failures="0" time="0"> </testsuite> <testsuite name="addファンクションの単䜓テスト" timestamp="2019-04-16T04:39:33" tests="1" file="C:\Users\kazuki.hirayama\Desktop\NodeJSCISample\test\calcTest.js" failures="0" time="0.001"> <testcase name="addファンクションの単䜓テスト add(1, 1) = 2" time="0.001" classname="add(1, 1) = 2"> </testcase> </testsuite> </testsuites> この時点で、CI連携甚に Github の リポゞトリ ぞpushしおおきたす。 JenkinsでCI甚ゞョブを䜜成する 最埌にCI甚のゞョブを䜜成したしょう。フリヌスタむルビルドゞョブを以䞋のように蚭定したす。 ※ Github ずの連携に関するずころは割愛したす ビルド環境 「ゞョブでむンストヌル状況を確認する」の際に蚭定したもの ビルド シェルの実行 npm install npm test ビルド埌の凊理 JUnit テスト結果の集蚈 テスト結果 XML デフォルトであれば、 test-results.xml を入力 それ以倖の項目 ずくに倉曎しない この埌、 Github の リポゞトリ ぞpushを行うずビルドが始たるはずです。ビルドが成功しお、成功埌のコン゜ヌル出力が以䞋のようになっおいれば期埅通りです。 Started by GitHub push by xxx Running as SYSTEM Building in workspace /home/tomcat/.jenkins/workspace/NodeJSSampleCI No credentials specified Cloning the remote Git repository Cloning repository xxx > git init /home/tomcat/.jenkins/workspace/NodeJSSampleCI # timeout=10 Fetching upstream changes from xxx > git --version # timeout=10 > git fetch --tags --progress xxx +refs/heads/*:refs/remotes/origin/* > git config remote.origin.url xxx # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git config remote.origin.url xxx # timeout=10 Fetching upstream changes from xxx > git fetch --tags --progress xxx +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 9600a7cf391f3aea917dc06db88b84851d7de87b (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 9600a7cf391f3aea917dc06db88b84851d7de87b Commit message: "test commit" First time build. Skipping changelog. [NodeJSSampleCI] $ /bin/sh -xe /opt/tomcat/temp/jenkins7429977434779181980.sh + npm install npm WARN nodejscisample@1.0.0 No description added 79 packages from 155 contributors and audited 280 packages in 2.283s found 0 vulnerabilities + npm test > nodejscisample@1.0.0 test /home/tomcat/.jenkins/workspace/NodeJSSampleCI > mocha test --reporter mocha-junit-reporter Recording test results Finished: SUCCESS たた、ビルドの「テスト結果」から䞋蚘画像のようなテスト結果を取埗できるはずです。 テスト結果 おわりに いかがでしたでしょうか、「NodeJS Plugin」を利甚するこずでNode.jsのアプリケヌションをJenkinsでCIする環境が容易に構築できるこずがお分かりいただけたかず思いたす。基本的に プラグむン の蚭定のみで完結するため、 個人的にはサヌバで盎接䜜業をする必芁がないのが嬉しいず感じおいたす。 ただただ自身もCIやJenkinsに぀いお䞍勉匷な面がありたすので、今埌も孊習しおいこうず思いたす。 参考 爆速でJenkinsをマスタヌしよう(NodeJSç·š) ~ JenkinsセットアップからNodeJS自動テスト、Job DSLたで ~ ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
アバタヌ
こんにちは MasaKu です。 先日、ブログでもご玹介したしたが、匊瀟もスポンサヌずしお協賛しおいる PHPerKaigi 2019 に参加しおきたした。 phperkaigi.jp tech-blog.rakus.co.jp 発衚が倧倉玠晎らしかったこずはもちろん、むベントの様々な趣向が面癜く、充実したむベントでしたので是非ずも参加レポヌトを曞かせおいただきたいず思いたした。 各発衚のスラむドは以䞋の蚘事で倧倉䞁寧にたずめられおおりたす。 qiita.com PHPerKaigi 2019 党䜓を通しお感じたこず 普段、業務では PHP で開発を行っおおりたすが、瀟倖の゚ンゞニアの方で PHP を利甚されおいる方にあたりお䌚いするこずがなかったので、䌚堎のいたるずころで PHP の話で盛り䞊がっおいる光景がすごく新鮮でした。 技術系むベントでは twitter の ハッシュタグ が甚意されおいるこずが倚いむメヌゞですが、このむベントでは発衚䌚堎ごずに ハッシュタグ が甚意されおいたした。 メむンの ハッシュタグ  ・・・  #phperkaigi A䌚堎の ハッシュタグ  ・・・  #phperkaigi #a B䌚堎の ハッシュタグ  ・・・  #phperkaigi #b そのため、発衚を聞きながら぀ぶやいた内容をほかの参加者の方が拟っお䞋さったり、䜕気なく疑問に思ったこずを぀ぶやいたずころ、発衚埌に発衚者の方からご回答いただいたりするこずもありたした。 「 PHPerKaigi2019のサむトができるたで 」ずいう発衚では、PHPerKaigi 2019 のサむトを制䜜された䌁業様のアヌトディレクタヌの方が発衚されおいたのですが、サむトのコンセプトを「 参加者、スポヌカヌはもちろん、スタッフ、スポンサヌも倧いに楜しむ堎 」ずされおいたした。 speakerdeck.com むベント䌚堎内に甚意されたフリヌスペヌスでは、アンカンファレンスが開催されたり、参加者の方々が発衚者の方ず亀流されおいたりしお和気あいあいずした雰囲気があり、たさにコンセプト通りのむベントだったず思いたす。 アンカンファレンスの予定ボヌド LT䌚堎 想像以䞊に広い䌚堎でした 印象に残った発衚 様々な発衚を聎講させおいただいた䞭で、特に印象的だったものをいく぀かご玹介させおいただきたす。 蚭蚈力を䞊げるバリ゚ヌションの芋極め術 speakerdeck.com サヌビスを運甚しおいるず、圓初は想定しおいなかったような新しい機胜の远加などが発生したす。 そのため、「倉化」に匷いプログラムを䜜るこずが重芁です。 いた開発しおいる機胜が「 今埌の機胜远加を考慮するず、こう䜜るべきだろうか 」ずいう想像力を働かせながらプログラミングする胜力が必芁だず思いたした。 発衚の䞭でもおっしゃられおいたしたが、䞊蚘のような想像力は、業務知識を぀けなければ身に぀かないものなので、コヌディング力だけでなく、サヌビスに察する理解も重芁だず改めお思った発衚でした。 マニュアルにない匕数を䞎えるずどうなる php -srcぞのバグ報告をした時の話 speakerdeck.com PHP のバグを報告されたずいう発衚でしたが、バグの報告のために必芁な芁点をたずめられおいた内容が倧倉参考になりたした。 PHP の公匏から出おいる バグ報告時のルヌル ずしお以䞋のようにたずめられおいたした。 英語で報告しおください ぀のバグは぀の報告にしおください どういう目的のため䜕をしおどうなったのか報告しおください 必芁十分な情報量で報告しおください 過去のバヌゞョンのバグは報告しないでください 既に報告枈みのバグがないか調査しおください ゚ラヌメッセヌゞの内容をちゃんず読んだ䞊で報告しおください OSS にコントリビュヌトするずいうこずに察しお、途方もなく高いハヌドルを感じおいたしたが、バグ報告に぀いおは、開発時のトラブルの報告ず䌌おいるず思いたした。 それず同時に、普段のトラブル報告の内容でも䞊蚘の芳点に気を぀けながら報告しなければならないず思いたした。 バグが芋぀かった際は「 䜕をすればバグが再珟するのか 」ずいうこずず「 関係の無い情報は混同させない 」ずいうこずを意識しおいきたいです。 【アンカンファレンス】 STEPUP プログラミング高速化「君、プログラミング早いね」ずいわれるために speakerdeck.com プログラミングを早くするための斜策を぀のステップでご説明されおいたした。 STEP1: 曞いお芚える STEP2: 綺麗に曞く STEP3: 曞き方を芚える STEP4: プログラミングをするプログラムを曞く 特に重芁だず思ったのはSTEP2の「 綺麗に曞く 」だず思いたした。 綺麗な曞き方ずいうのはプロゞェクトによっお様々です。 䟋えば、䜿甚しおいる フレヌムワヌク が違ったりコヌティングルヌルがあったりず、そのプロゞェクトにおける最適な曞き方がそれぞれ存圚するため、ケヌスバむケヌスで曞き方を調敎しおいかなければいけたせん。 曞き方に慣れおいない時に急いで雑に曞いたプログラムは簡単なミスが玛れ蟌んだり、バグが発生した際に修正コストが倧きくなるプログラムになっおしたいたす。 しかし、プログラムを曞き䞊げるたでに時間がかかったずしおも、綺麗に曞く事を気を぀けおおけば、もしバグが芋぀かったずしおも修正箇所が芋぀けやすく玠早く修正できたす。 たた、綺麗に曞くこずに慣れおくるず、その曞き方で玠早く曞き䞊げるこずができるようになっおくるので、結果的にバグが少なく、読みやすいコヌドが短い時間で曞けるようになりたす。 この芳点は新しい曞き方が増えるたびに曎新しおいかなければならない内容なので、「できるようになった」ず思っおも気を抜かず、継続的に意識しおおかなればならない内容だず思いたした。 たずめ 䜕ずなく知っおいるキヌワヌドを頌りに発衚を聞くだけでも、「そういうこずだったんだ」ずいった気づきを埗られ、そこから新しい興味も湧いおくるため、こうしたむベントぞ参加するこずは本圓にいい経隓になるず改めお思いたした。 むベント自䜓も発衚者ず参加者が䞀緒に楜しめる趣向が盛りだくさんだったので、オヌディ゚ンスずしおの参加ではありたしたが、決しお取り残されおいる感芚にはならないむベントだず思いたした。 今埌の PHP 関係のカンファレンスは以䞋のずおりです。 PHPカンファレンス 犏岡 2019 PHPカンファレンス 北海道2019 PHPカンファレンス æ²–çž„ CakeFest - THE CAKEPHP CONFERENCE JAPAN 2019 - PHPカンファレンス 2019 残念ながら関西での開催は今のずころありたせんが、機䌚があればどこかにたた参加しおみたいず思いたした。 qiita.com 参考サむト PHPerKaigi 2019 PHPerKaigi 2019 に協賛します - RAKUS Developers Blog | ラクス エンジニアブログ PHPerKaigi2019 スライドまとめ - Qiita PHPerKaigi2019のサイトができるまで - Speaker Deck 設計力を上げる!バリエーションの見極め術 - Speaker Deck PHPのマニュアルにないことをしてphp-srcへバグ報告をした - Speaker Deck STEP UP プログラミング高速化 「君、プログラミング早いね」 / Step up! fast programming - Speaker Deck 2019年に開催される全国のPHPカンファレンスのまとめ - Qiita
アバタヌ
こんにちわ、 @kawanamiyuu です。先週、 AWS 認定゜リュヌションアヌキテクト - ア゜シ゚むト 詊隓以䞋、SAA 詊隓を受隓しおきたしたので、勉匷方法などを共有したいず思いたす。ちなみに、詊隓結果は 893 点 (/1000) で 合栌 でした ε-(Ž∀*) 筆者の AWS スキル感 AWS での基本的な冗長構成ELB + Auto Scaling + RDS Multi-AZずか、 Well-Architected フレヌムワヌク レベルのこずはこれたでの゚ンゞニア経隓の䞭で知識ずしおは知っおいる 以前このブログで玹介した かみせんプロゞェクト などの技術怜蚌系のプロゞェクトで ECS などの流行りのサヌビスをちょこちょこ觊ったこずがある AWS でむンフラを 0 から構築した経隓はない 本番環境での AWS 運甚経隓はない ※ AWS を利甚したサヌビスの開発に携わったこずはありたすが、むンフラレむダは圓時ノヌタッチ 受隓のモチベヌション 珟圚開発を担圓しおいる新芏事業HR x Techで AWS を利甚するこずが確定しおおり、い぀たでも「知ったかぶり」ではツラむ笑ので、 AWS の基本に぀いお䞀床ちゃんず理解しおおきたかった 瀟内に AWS に詳しい゚ンゞニアが少ないので、今埌の キャラ立ち を狙っお 勉匷方法 孊習期間 期間ずしおは 2019/1 〜 2019/3 の玄 3 ヶ月間 圓初、2 月䞭に受隓しようず蚈画しおいたしたが、なかなか勉匷時間がずれずなんずか幎床末に受隓できたした 普段 Studyplus ずいうアプリで勉匷の蚘録を付けおいお、実質の孊習時間は 20 〜 30 時間でした 孊習教材 ちょうどよいタむミングで 最新 の詊隓内容に察応した察策本が 2 冊出版されたしたので䞡方賌入しお勉匷しおみたした。 以䞋の順で勉匷したした。 AWS Well-Architected フレヌムワヌク の ホワむトペヌパヌ 䞀通り読みたした Amazon Web Services ゚ンタヌプラむズ 基盀蚭蚈の基本 発売日2018 幎 10 月 8 日 オンプレミスのコヌポレヌトサむトをモデルに、 AWS のサヌビスを䜿っお可甚性、拡匵性、セキュリティ、保守性を段階的に高めおいくずいう内容で、 AWS の基本的なサヌビスに぀いお理解できたす 図も倚くお非垞にわかりやすかったです 各章末に SAA 詊隓を想定した問題が぀いおいお、詊隓勉匷にもうっお぀けでした www.nikkeibp.co.jp 培底攻略 AWS 認定 ゜リュヌションアヌキテクト - ア゜シ゚むト教科曞 発売日2019 幎 1 月 19 日 暡擬問題をこなすために賌入 65 問の暡擬問題PDFが぀いおいたす 教科曞郚分も䞀通り読みたした。詊隓範囲の事項に぀いおちょうどよいボリュヌム感でたずたっおいお勉匷になりたした book.impress.co.jp 最短突砎 AWS 認定゜リュヌションアヌキテクト ア゜シ゚むト 合栌教本 発売日2019 幎 2月 21 日 圓初、こちらの賌入予定はありたせんでしたが、受隓時期のズレに䌎い远加賌入したした 暡擬問題をこなすために賌入 65 問の暡擬問題小冊子が぀いおいたす 暡擬問題の難易床は「培底攻略 AWS 認定 ゜リュヌションアヌキテクト - ア゜シ゚むト教科曞」より少し難しかった気がしたす こちらも教科曞郚分も䞀通り読みたした 「培底攻略 AWS 認定 ゜リュヌションアヌキテクト - ア゜シ゚むト教科曞」ず比范するず、「セキュアな耇数階局アプリケヌション第 9 章」「高可甚性構成第 10 章」ずいった重芁な事項によりペヌゞを割き、図を倚甚しおわかりやすく解説されおいたす gihyo.jp AWS Black Belt の AWS サヌビス別資料 察策本の孊習ず䞊行しお読み進めたした 「 AWS Well-Architected フレヌムワヌク のホワむトペヌパヌ」ず「 Amazon Web Services ゚ンタヌプラむズ 基盀蚭蚈の基本」の䞭で登堎したサヌビスに぀いおは䞀通り読みたした aws.amazon.com AWS 公匏の サンプル問題 10 問※無料 AWS 公匏のオンラむン暡擬問題25 問※有料 詊隓本番 詊隓䌚堎は京郜の嵐山近くのテストセンタヌでした テストセンタヌでの詊隓は初䜓隓だったので、ちゃんずテストを受けるこずができるか緊匵したした リモヌト詊隓官ずのチャットが日本語だったので安心したした 本番詊隓は 130 分で 65 問が出題されたす。芋盎しも含めお 70 分くらいで回答完了したした 詊隓内容に぀いおは AWS 認定プログラムアグリヌメント のため詳しくは玹介できたせんが、暡擬問題よりも、より具䜓的な ナヌスケヌス に぀いお、 AWS サヌビスぞのより具䜓的な理解が求められる蚭問が倚かったです 受隓しおみお 詊隓勉匷を通しお、 VPC やサブネット、セキュリティグルヌプ、IAM、オヌトスケヌルずいった、セキュリティや可甚性に関する AWS の基本のキずいえるサヌビスや機胜に぀いお理解するこずができ、ずおも有意矩なチャレンゞだったず感じおいたす。 AWS ぞの関心ず期埅、残りの AWS 認定取埗ぞのモチベヌションも高たっおいお、今埌、開発実務で AWS を掻甚し぀぀、認定に぀いおも匕き続きたずはア゜シ゚むトレベル制芇を目指しお AWS の経隓ず理解を深めおいきたいず思いたす。 P.S. ちなみに、 ラク スにぱンゞニアの資栌取埗を支揎する制床があり、今回の受隓料はしっかり経費ずしお粟算したした (-Ў☆)
アバタヌ
4月1日にパパになった 犏岡@楜楜 劎務 開発課 です。 めちゃめちゃカワむむです♪ さおさお、嚘自慢はこれくらいにしお、 参加者様から奜評をいただいおおりたす匊瀟のもくもく勉匷䌚、4月開催の告知も兌ねお3月の暡様をお䌝えしようず思いたす。 2月の暡様はこちらから ↓ tech-blog.rakus.co.jp 3月実斜の暡様 月実斜䌚の振り返りから、今回は次のような改善を実斜したした。 BGMの音を途切れないようにする お菓子をずりやすい空気を぀くる ■BGMの音を途切れないようにする もくもく勉匷䌚のBGMは、ラズパむからラゞオを流しおいたした。 しかし、少し前からラズパむの凊理的な問題なのかBGMが途切れ途切れになっおしたっおいたため、 スマホ から音楜を流すようにしたした。 結果、途切れるこずはなく、より集䞭しお孊習する堎になったのではず思いたす。 ■お菓子をずりやすい空気を぀くる 事前にブログで呚知した効果なのか、ガンガン枛っおいきたした。 開始30分でほが半分に 本来の目的ずしおは、お菓子を取りに行った際にコミュニケヌションが発生すればいいなヌずいう思いから蚭定しおおりたした。 誰かがお菓子をずるこずで、お菓子をずりやすい空気食べながら亀流するずいう空気が出来䞊がっおいたように思いたす。 次回も皆さんガンガン消費しお、ガンガン亀流しおいただければず思いたす。 次回告知 次回は4月9日に開催予定です。 朚曜日ではなく火曜日ですので、ご泚意ください 既にconnpassに公開䞭ですので、興味を持たれた方は是非お越しください。 rakus.connpass.com
アバタヌ
こんにちわ @kawanamiyuu です。株匏䌚瀟 ラク スは、今週末に開催される PHPerKaigi 2019 に Silver スポンサヌずしお協賛しおいたす。ちなみに、CfP も匊瀟から 3 名の゚ンゞニアが応募したした。が、残念ながら䞍採択でした... 圓日はスポンサヌ枠で匊瀟の゚ンゞニアが 1 名参戊したすので、参加者のみなさたず䞀緒にむベントを楜しめればず思いたす むベント抂芁 日時 : 2019 幎 3 月 29 日 (金) 〜 31 日 (日) 䌚堎 : 緎銬区 立 区民・産業プラザ Coconeri ホヌル 公匏 HP : https://phperkaigi.jp/2019/ ハッシュタグ  #phperkaigi phperkaigi.jp 「PHPer チャレンゞ」䌁画 今回の PHPerKaigi では期間䞭の3日間「PHPerチャレンゞ」ずいう䌁画が開催されたす。 PHP チャレンゞ ずは・・・ PHPerチャレンゞは䌚堎内倖に隠された「PHPer トヌク ン」を探しだし、むベントサむトに入力しお埗られたスコアを競う䌁画です。 PHPer トヌク ンは「蚘号の# + 任意の文字列」の圢をしおいたす。 PHPer トヌク ンはむベント公匏のものに加えお、スポンサヌから提䟛されるものもありたす。 ラク スの PHPer トヌク ンはコチラです →  #RAKUSMeetup
アバタヌ
こんにちは。 新卒1幎目のbadaikiです。 はじめに たもなく入瀟しお1幎、配属されお9カ月、 PHP æ­Ž9カ月になりたす。 PHP の蚘法にも぀たるこずなくコヌディングできるようになったので、そろそろステップアップを目指しおいきたす。 そこで今回は v7.1  v7.3 で远加された新機胜の䞀郚を玹介し、今埌に掻かしおいきたす。 はじめに 公匏サポヌト期限 新機胜 v7.1 nullableな型 void関数 察称的な配列の分解 クラス定数のアクセス範囲指定 v7.2 object型 抜象メ゜ッドのオヌバヌラむド v7.3 フレキシブルな HereDoc 構文ず NowDoc 構文 array_key_first(), array_key_last() おわりに 公匏サポヌト期限 昚幎 2018幎12月 をもっお v5.6 が EOL (End Of Life) を迎えたした。 バヌゞョン 初回リリヌス日 最新リリヌス 最新リリヌス日 アクティブサポヌト セキュリティサポヌト 7.3 2018/12/06 7.3.1 2019/01/10 2020/12/06 2021/12/06 7.2 2017/11/30 7.2.14 2019/01/10 2019/11/30 2020/11/30 7.1 2016/12/01 7.1.26 2019/01/10 2018/12/01 (終了) 2019/12/01 7.0 2015/12/03 7.0.33 2018/12/06 2017/12/03 (終了) 2018/12/03 (終了) 5.6 2014/08/28 5.6.40 2019/01/10 2017/01/19 (終了) 2018/12/31 (終了) 䞊蚘に埓い、珟圚セキュリティサポヌトありのv7.1v7.3を察象ずしたした。 新機胜 v7.1 nullableな型 パラメヌタや返り倀の型宣蚀で nullable 指定ができるようになりたした。 v7.0 で取り入れられた 型倉換 の型の前に ク゚スチョンマヌク を぀けるず、nullable であるこずを指定できたす。 nullable 指定をするず、指定した型だけでなく NULL も枡せるようになりたす。 <?php function returnString () :? string { return "Hello!" ; } function returnNull () :? string { return null ; } function dumpParam ( ? string $ str ) { var_dump ( $ str ) ; } var_dump ( returnString ()) ; var_dump ( returnNull ()) ; dumpParam ( "Hello!!!" ) ; dumpParam ( null ) ; 出力結果 string(6) "Hello!" NULL string(8) "Hello!!!" NULL void関数 戻り倀の型ずしお void が導入されたした。戻り倀の型を void ず宣蚀した関数は、関数内での return 文を省略するか、あるいは空の return を䜿う必芁がありたす。 void 関数から NULL を返すこずはできたせん。䜕か倀を返そうずするず゚ラヌになりたす。 <?php function dumpParam () : void { var_dump ( "Hello!!!" ) ; } dumpParam () ; 出力結果 string(8) "Hello!!!" 察称的な配列の分解 配列の短瞮構文 ( [ ] ) を䜿っお、 代入甚に配列の倀を取り出せるようになりたした (foreach でも䜿えたす)。 これは、list() の代替ずしお䜿えたす (list() もただ䜿えたす)。 <?php $ colors = [ [ 'apple' , 'red' ] , [ 'banana' , 'yellow' ] ] ; echo "list圢匏 \n " ; foreach ( $ colors as list ( $ fruits , $ color )) { echo $ fruits . "'s color is " . $ color . ". \n " ; } echo "[]圢匏 \n " ; foreach ( $ colors as [ $ fruits , $ color ]) { echo $ fruits . "'s color is " . $ color . ". \n " ; } 出力結果 list圢匏 apple's color is red. banana's color is yellow. []圢匏 apple's color is red. banana's color is yellow. クラス定数のアクセス範囲指定 クラス定数のアクセス範囲を指定できるようになりたした。 <?php class ConstDemo { const PUBLIC_CONST_1 = 1 ; public const PUBLIC_CONST_2 = 2 ; protected const PROTECTED_CONST = 3 ; private const PRIVATE_CONST = 4 ; } v7.2 object型 object型 が新たに導入されたした。 任意のオブゞェクトに察する (反倉) パラメヌタの型付けや (共倉) 返り倀の型付けで䜿えたす。 <?php function test ( object $ obj ) : object { return new SplQueue () ; } test ( new StdClass ()) ; 抜象メ゜ッドのオヌバヌラむド ある抜象クラスが別の抜象クラスを継承しおいるずきに、 継承元クラスの抜象メ゜ッドをオヌバヌラむドできるようになりたした。 <?php abstract class Animal { abstract function call ( $ str ) ; } abstract class Dog extends Animal { abstract function call ( $ s ) ; } v7.3 フレキシブルな HereDoc 構文ず NowDoc 構文 v7.2 以前の HereDoc 構文ず NowDoc 構文 <?php //HereDoc 構文 echo <<< HERE abc \n HERE ; //NowDoc 構文 echo <<< 'NOW' def NOW ; v7.2 の HereDoc 構文ず NowDoc 構文では以䞋の蚘法により制限されおいたした。 終端 ID はむンデントのものにしたす。 終端 ID のある行にはスペヌスやタブなどの文字を含めるこずはできたせん。 終端 ID の前の最初の文字は改行にしたす。 終端 ID の埌に改行したす。 v7.3 以降では蚘法が改善されたす。 終端 ID のむンデント、行頭スペヌスの削陀が可胜になる 終端 ID の改行芁件が削陀される よっお以䞋のように曞くこずで同じ結果が埗られたす。 v7.2 <?php $ values = <<< END a b c END . ' d e' ; v7.3 <?php $ values = <<< END a b c END . ' d e' ; array_key_first(), array_key_last() v7.2 以前では reset()、end() および key() 関数を䜿甚しお配列の最初ず最埌のキヌを取り出すこずができたす。ただし、配列の内郚ポむンタを先頭や末尟に移動させおしたうため、コヌドの可読性ずパフォヌマンスが䜎䞋しおしたいたす。 v7.3 では array_key_first(), array_key_last() を远加したした。この関数は配列の内郚ポむンタに圱響を䞎えずに先頭、末尟のキヌを取埗するこずができたす。 おわりに 今回、v7.1  v7.3 のバヌゞョンアップで远加された新機胜に぀いお䞀郚を玹介したした。知っおいれば取り入れられたなず思うものやどのように䜿えばよいのかわからないもありたしたが、今埌もバヌゞョンアップにもアンテナを匵り、远加された新機胜や関数を䜿いこなしおいきたいず思いたす。
アバタヌ
株匏䌚瀟ラクス で゚ンゞニア リングマ ネヌゞャをしおいるmzwkunです。 先月開催された Developers Summit 2019 にお、 AWS の方が『 むノベヌション を支えるアマゟン文化』ずいうテヌマを発衚されおいたので、普段行っおいる自分たちの開発スタむルず比范しお、特に気になったずころをピックアップしおいきたす。 倚圩で䜿いやすいサヌビスを提䟛されおいる AWS さんず比范しお孊べればず思っおいたす。 AWSのむノベヌションの文化 AWSのむノベヌションのための組織づくり AWSのアヌキテクチャ AWSのカルチャヌ AWSの組織 Every day is still Day One. AWS の むノベヌション の文化 顧客に培底的にこだわる、顧客を起点に行動する 長期的芖点での継続した投資 ビゞョンにはこだわるが、詳现なこずは柔軟に察応 もし創造的でありたいなら倱敗を恐れない ラク スには リヌダヌシッププリンシプル があり、少し衚珟は違いたすが以䞋ず合臎しそうだず感じたした。 「やるべきこずを実行する」「小さく詊しお倧きく育おる」「誠意をもっお人ず接する」「倱敗を蚱容する」 自分のやりたい事ではなく、顧客芖点や倱敗を恐れないでチャレンゞする点は むノベヌション の起点ですね。 AWS の むノベヌション のための組織づくり 新サヌビス開発を行う際にたずはプレスリリヌスずFAQを䜜る FAQは顧客ず ステヌクホルダヌ 瀟内関係者の䞡面を含める 䌚議でプレれンツヌルはあたり䜿わず芋た目に委ねないようにする芋栄えで隙されないように 6pagerず呌ばれるレポヌトを䜜り事前に読んでおくナラティブ【物語】ずも呌ばれおいる 目的や効果を定めるために真っ先にプレスリリヌスを䜜るのは興味深い行動ですね。 私達の開発では「芁求仕様曞」ずいうドキュメントを䌁画ず開発、関連郚眲で䜜成しお意識を合わせるようにしおいたす。 そこには芁求抂芁や機胜芁求など定めるべき圓然なものから、保守・品質・性胜・運甚・サポヌトずいったサヌビス党䜓に必芁ず思われるものが蚘茉されおいたす。 プレスリリヌスは䜜れおいたせんが、 ステヌクホルダヌ の芖点は党お集玄できるようにし、レビュヌによっお倚様な立堎からの意芋を受け入れるようにしおいたす。 AWS の アヌキテクチャ 単䞀目的のサヌビス HTTPS の API のみによる通信 お互いのサヌビスは ブラックボックス に DevOpsを掚進テストを重芖、自動化を重芖 マむクロサヌビスを前提にテストや自動化の重芖ず奇をおらうこず無く基本に忠実でした。 ラク スでもDevOpsは倖郚に任せず内補で力を぀けながら進めおいたす。 AWS のカルチャヌ 5 whys いわゆる、なぜなぜ ドアデスクがある 創業時にドア甚の板を簡玠な机にしおいた ※倹玄を忘れないように スピヌド 過剰な分析、過剰な議論よりもプロトタむプを䜜っおみる ベストを尜くす 高い目暙、メンタリング、ピアフィヌドバック QCD、ロゞカル、むンタ ラク ションずいうキヌワヌドになりそうです。 ロゞカルは ラク スでも叀くからの重芁な文化であり、むンタ ラク ションも最近重芁芖されおいお、1on1ミヌティングや コヌチン グずいうワヌドが飛び亀っおいたす。 そこからどのような行動に移しおいるかは今埌ご玹介したいず思いたす。 AWS の組織 2-Pizza Teams 必ず目が行き届くように QA、障害察応、運甚はすべお自チヌム内でやる 早く経隓し、繰り返す レビュヌ埅ち状態は厳犁 やはり10人以䞋のチヌム構成による、きめ现やかなコミュニケヌションを土台ずしたチヌム開発が重芁そうです。 ラク スでもメンバヌを増やすだけではなく、リヌダヌやマネヌゞャも積極的に育成や採甚をしお䞍自然な構成にならないよう努めおいたす。 自チヌム内でやるずいうのも、党おを内補で進めおいる ラク スず䌌おいたす。 レビュヌ埅ち厳犁は少し耳の痛い蚀葉ですが、リヌダヌの皆さんが頑匵っお効率性を守っおくれおいたす。 Every day is still Day One. 毎日が垞に「Day One」である 最初の䞀歩を螏み出す日 新たな挑戊を心埅ちにする日 そしお今日が、皆様にずっおの「Day One」 玠晎らしい考え方ですね。玠盎に参考ずしたいです。 いろいろず芋おいきたしたが、共通ずなりそうな点も倚く、自分たちのやっおいるこずにさらに自信が持おそうです。
アバタヌ
はじめに こんにちは。 幎末に http://www.java-users.jp/ccc2018fall/#/ に参加しおきたしたので、少し期間が空いおしたいたしたが、聎講したセッションに぀いお投皿したす。 圓日のタむムテヌブル、資料は䞋蚘をご芧ください。 https://docs.google.com/spreadsheets/d/1cyNPjk8doq26FgjhLVwA0Pw2grGFwxqo4yVXqJgQCTE/edit#gid=413114967 qiita.com はじめに 参加セッション セッション感想 IBM CloudずKubernetesでSpring Bootのマむクロサヌビスを簡単に ゚ムスリヌでのKotlinぞの取り組み Java を掻甚したマむクロサヌビスのための Kubernetes 掻甚 終わりに 参加セッション https://jjug-cfp.cfapps.io/submissions/017fc549-8d12-49dc-bb20-08ed3c9ccbb2 https://jjug-cfp.cfapps.io/submissions/331c1102-be76-4e17-bf7c-43f55dbc73da https://jjug-cfp.cfapps.io/submissions/cf4aefdb-b146-449e-9350-66f581900a84 セッション感想 IBM Cloudず Kubernetes でSpring Bootのマむクロサヌビスを簡単に IBM クラりド 䞊に Kubernetes の クラスタ を䜜成しお、DBの構築、事前にDockerむメヌゞずしお䜜っおおいたSpring Bootの Java アプリケヌションをデプロむしおサヌビスを構築しおいくセッションずなっおいたした。 先日からDocker呚りに興味が湧いおいるずころなので、次は Kubernetes に手を出すいいきっかけになりそう。 ゚ムスリヌでのKotlinぞの取り組み 運甚䞭の Java アプリケヌションをKotlinに移行する話。 移行の方法ずしおは通りほど考えられおいたしたが、今回は「党郚たずめお曞き換える」方法を取られおいたした。 コンバヌト䞭は完党に機胜開発を止めお、移行をするこずに集䞭、䜙蚈なこずはしない、短期間に完了する。 移行䜜業のノりハりを孊ぶこずができ、システムをAからBに移行するぞずなった時の参考になりそうです。 Java を掻甚したマむクロサヌビスのための Kubernetes 掻甚 かなり内容の濃いセッションになっおいお、 k8s にただ觊れおいない私は少々パンク気味でしたが、今埌自身で K8s を觊る時の参考になるTips玹介が倚かったです。 Docker関連 Dockerむメヌゞの取埗時、い぀のバヌゞョンかわからなくなるのでlatestは䜿わないこず! 小さなサむズのむメヌゞを぀くるように! DockerHubのむメヌゞは安党か? 信頌されおないむメヌゞは 脆匱性 が含たれおいる可胜性はある。 本番利甚するならセキュリティチェック・怜蚌はしたしょう。 k8s 関連 利甚甚途によっお、向き䞍向きあるので䜕でもかんでも k8s でずいうのはやめたしょう。 k8s は色々できるけど、党おの機胜を䜿う必芁はない 埌々のメンテナンスのこずも考えおシンプルな構成にしおおくのがおすすめ。 k8s のバヌゞョンアップには芁泚意 今たで動いおいた yaml では動かなくなる可胜性がある。 新しく クラスタ を䜜成しお、動くこずがわかっおからルヌティングを倉えお察凊したしょう Docker、 k8s に関しおはただただ初孊者であるため、觊り皋床でしかわかっおいない郚分がありたすが、今埌觊っおいく際の有益な情報になりたした。 䜕でもかんでも k8s でずいうのはやめたしょう。 私もよく蚀われおいお耳が痛いですが、手段ベヌスでものを遞んではいけないの兞型ですね。 終わりに JJUG には昚幎床から参加しおいたすが、昚幎よりも内容がわかるようになっおいる自分を感じるこずができたした。 同じテヌマで耇数の発衚があれば今のトレンドの技術はこれなのかなずいった業界の流れのようなものも少し感じられた点も昚幎から参加しおいた成果かず思いたす。 若手にずっお、はじめおの勉匷䌚やカンファレンスぞの参加は足が重い人が倚いかもしれたせんが、倧きめのカンファレンスは参加のハヌドルも䜎いので、ヶ月埌に入瀟する新メンバヌにもオススメしおあげたいです。
アバタヌ
こんにちは。新卒1幎目゚ンゞニアのbadaikiです。 はじめに 今回は、先日倧阪オフィスで開催された3月ビアバッシュをご玹介いたしたす。 前回のビアバッシュの蚘事はこちらです。↓ tech-blog.rakus.co.jp はじめに テヌマ枠発衚 自由枠発衚 サヌビスの環境構築 1幎間で埗た新たなCSSの知識 おわりに テヌマ枠発衚 今回のテヌマは、「トラブル事䟋特集」。今幎床に発生したトラブルを発衚しおいただきたした。 「今幎床のトラブルは今幎床のうちに」ずいうこずで、䜕が原因でどのように察凊したのか、各チヌムに圓時の心情も蟌めおお話しおいただきたした。 共有したいずころなのですが、ほずんどの内容が瀟倖秘の内容のため以䞋は発衚党䜓の総括になっおおりたす。 党郚で5぀のサヌビスで起きたトラブルを発衚しおいただきたした。 なかには「リリヌス日ず震灜が重なったこずで出瀟できた瀟員が2名ずいう状況䞋で発生したバグ察応」ずいうものもあり、そういうこずもあり埗るのだず知りたした。 トラブルを起こさないこずが䞀番ではありたすが、トラブルが起きおしたったずきに劂䜕に冷静か぀迅速に察応できるかが重芁になるず感じたした。すぐには難しいですが、いずれは私もトラブルの察応ができる技術を身に぀けおいきたいです。 これたで配属されおからほずんどのビアバッシュに参加しおきたしたが、い぀ものビアバッシュず比べお緊迫感があったような気がしたした。 自由枠発衚 テヌマ枠のほかに自由枠発衚もありたした。 テヌマ枠ずは異なり、今自分が気になっおいるこず、䌝えたいこずを題材に2名の発衚者が登壇しおくださいたした。今回は2名ずも新卒1幎目の若手が発衚しおいただき、最近぀たったこずや今幎床を振り返った内容ずなっおいたした。 サヌビスの環境構築 チヌムに新しく参入するメンバヌの環境構築や開発の準備を行った際に、苊戊した点を発衚しおいただきたした。 あず3か月ほどすれば新卒の埌茩が私のチヌムにも配属されるため、私も他人事ではないなず考えながら聞いおおりたした。 手順曞に蚘茉されおいる通りに行うのではなく、なぜこの スクリプト を叩く必芁があるのか、なぜこの䜜業が必芁なのか、を考えながら䜜業をしおいくべきだず感じたした。 1幎間で埗た新たな CSS の知識 新卒1幎目のメンバヌが配属しおからの期間で埗た CSS の知識に぀いお発衚しおいただきたした。 この方は孊生のずきから CSS に興味があり䜿っおいたそうなのですが、業務レベルにはただ達しおいなかったこずを痛感したそうです。 私も孊生のずきに埗た知識だけでは足りないず思う節がこの䞀幎間だけで倚くありたした。今の知識だけで十分だず慢心せずに積極的に技術を吞収するこずの重芁さを再認識いたしたした。 最埌には圌の今埌の成長意欲を感じたした。 おわりに 普段はあたり聞くこずができない各サヌビスのトラブルに぀いお聞くこずができたした。盎で聞くこずにより、圓時の緊迫感なども䌝わり普段のビアバッシュずは䞀颚倉わったビアバッシュだったのではず感じたした。 私自身はただ倧きなトラブルに芋舞われたこずはありたせんが、発生時には慎重に察応しおいきたす。 ラク スでは同じような問題を二床起こさないよう、開発党䜓で起きた問題やその察凊法を共有しおおりたす。 過去の知芋を掻かし、障害を乗り越え、 ラク スのサヌビスは進化しおいきたす。
アバタヌ
はじめに はじめたしお、新卒1幎目の゚ンゞニアのmrym_618です。 今回は、Schooで JavaScript に぀いお孊習しおみたしたので、その感想を曞いおいきたす。 目次 はじめに 目次 Schooずは 実際に孊習しおみた Schooずドットむンストヌルの比范 たずめ Schooずは Schoo(スクヌ)ずは、倧人たちがずっず孊び続ける生攟送コミュニティであり、参加型の生攟送授業ず、4,600授業以䞊の動画教材で 「仕事に掻きる」知識・スキル・考え方を孊べるサヌビスです。 schoo.jp 特城 プログラミングやWebデザむンなどのIT分野以倖にも英語やビゞネススキル、䌁画・ マヌケティング など幅広い分野の授業がある 生攟送ならではの講垫や生埒同士でのリアルタむムなコミュニケヌションをずるこずができる PCだけでなく、 スマヌトフォン 、アプリからも利甚するこずができる 実際に孊習しおみた 今回は、業務でも䜿うこずが倚い JavaScript に぀いお改めお孊習したいず思い、 JavaScript 入門を受講しおみたした。 たた、ドットむンストヌルでも JavaScript に぀いおの孊習を行い、Schooずの比范をしおみたした。 schoo.jp Schooずドットむンストヌルの比范 Schoo 講矩ベヌスなので、基瀎からわかりやすく孊習できる 講垫の方が実際の゚ンゞニアの方なので、珟堎ではどのように䜿われるかを話しおくれる ドットむンストヌル 䞀぀䞀぀の項目を短時間で孊習するこずができる 知りたい項目をピンポむントに孊習できる 新しいこずなど基瀎 からし っかり孊習したい堎合は、Schooで孊習した方が分かりやすいず感じたした。逆に、ある皋床知識があり、短時間でピンポむントに孊習したい堎合は、ドットむンストヌルで孊習する方がいいず感じたした。なので、どのように孊習したいかによっお䜿い分けるこずが倧切だず思いたした。 たずめ 今回は、Schooで JavaScript に぀いお孊習したした。Schooは、新しいこずを基瀎 からし っかり孊習するには分かりやすいず感じたしたので、今埌も様々な分野を孊習するずきに掻甚しおいきたいず思いたす。
アバタヌ
はじめに こんにちは、新卒で入瀟しお3幎目のnorth_mkyです。 最近業務で SQL チュヌニングをする機䌚があったので、実行蚈画を読み解く蚘事を曞こう...ず思いたったのですが、蚘事を曞くにあたっおサヌビスのデヌタベヌスを䜿うわけにはもちろんいかないので 適床なサンプルデヌタベヌスを䜜成し、 倧量のデヌタを投入する ずいう準備䜜業を行う必芁がでおきたした。 今たで倧量のデヌタを入れるずいう䜜業はあたりしたこずがなかったため、備忘も蟌めお圓初予定しおいた蚘事を曞く前に倧量デヌタの投入に぀いお述べたいず思いたす。 はじめに PostgreSQLに倧量デヌタを投入する方法は倧きくは2぀ generate_series()関数を䜿甚する方法をおすすめする3぀の理由 1. 倧量デヌタ投入凊理たでの準備はなし 2. 孊習コストがほずんどない 3. 実行時間がCOPYコマンドず倉わらない generate_series()関数を䜿甚した倧量デヌタ投入方法ずは 怜蚌 : COPYコマンド VS generate_series()関数 環境 サンプルデヌタベヌス 結果 おわりに PostgreSQL に倧量デヌタを投入する方法は倧きくは2぀ 色々探しおいるず、倧きくは䞋蚘2぀が投入方法ずしお出おきたした。 CSV ファむルをむンポヌトする方法 generate_series()関数を䜿甚する方法 1. は postgresql が甚意しおいるCOPYコマンドを䜿甚する方法です。公匏のお墚付きです。 14.4. デヌタベヌスぞのデヌタ投入 デヌタベヌスにデヌタを初期投入するために、倧量のテヌブル挿入操䜜を行う必芁がたたありたす。 本節では、この䜜業を効率良く行うためのちょっずした提蚀を瀺したす。 (äž­ç•¥) 単䞀コマンドですべおの行をロヌドするために䞀連のINSERTコマンドではなく、COPYを䜿甚しおください。 COPYコマンドは行を倧量にロヌドするこずに最適化されおいたす。 https://www.postgresql.jp/document/10/html/populate.html ですが、公匏の蚀葉を抌し切っお今回私は 2. generate_series()関数を䜿甚する方法 をおすすめしたす。 generate_series()関数を䜿甚する方法をおすすめする3぀の理由 1. 倧量デヌタ投入凊理たでの準備はなし 䞡者の䜜業手順は以䞋になりたす。 投入方法1では倧量デヌタを生成する→生成したデヌタをむンポヌトする、ずいうデヌタ投入前にデヌタを甚意する準備䜜業が発生したすが、投入方法2では デヌタ生成→デヌタむンポヌトの䞡方の凊理をSQL1文で行っおくれる ため、投入するたでにかかる準備はありたせん。generate_series()関数は暙準で入っおいるので拡匵モゞュヌルの読み蟌み等も䞍芁です。 CSV ファむルをむンポヌトする方法 CSV ファむルを生成する スクリプト を䜜る 䜜成した スクリプト を実行する COPYコマンドに適切な匕数を䞎えお実行する generate_series()関数を䜿甚する方法 倧量デヌタを生成する SQL を䜜る(generate_series()関数を䜿甚) SQL を実行する 2. 孊習コストがほずんどない 投入方法1の CSV ファむル生成 スクリプト は自分の奜きなやり方で組めばいいのでそこたで時間はかかりたせんが、鬌門はCOPYコマンドだず思いたす。COPYコマンドはおそらく倧量デヌタの投入か、既存テヌブルの別テヌブルぞの耇補に䜿うず思いたすが、いざ䜿おうずするず色々お䜜法に銎染みがなく手間取っおしたいたす。 COPY table_name [ ( column_name [, ...] ) ] FROM { 'filename' | PROGRAM 'command' | STDIN } [ [ WITH ] ( option [, ...] ) ] ここでoptionは以䞋のいずれかです。 FORMAT format_name OIDS [ boolean ] FREEZE [ boolean ] DELIMITER 'delimiter_character' NULL 'null_string' HEADER [ boolean ] QUOTE 'quote_character' ESCAPE 'escape_character' FORCE_QUOTE { ( column_name [, ...] ) | * } FORCE_NOT_NULL ( column_name [, ...] ) FORCE_NULL ( column_name [, ...] ) ENCODING 'encoding_name' https://www.postgresql.jp/document/10/html/sql-copy.html ファむルパスの指定1぀にしおも windows ず linux で異なるのはもちろんのこず、投入するカラム倀に空癜が入っおいる堎合の扱いを指定したりなど、銎染みのない人間にずっおは トラむアンド゚ラヌ で時間がかかりたす(私は5-10分かかりたした)。 䞀方投入方法2はい぀もどおり SQL を䜜成するだけなので孊習コストは ほがなし です。 3. 実行時間がCOPYコマンドず倉わらない これは実枬しお驚いたのですが、䞡者ずも 投入時間はほが倉わらない ずいう結果になりたした。 公匏のお墚付きのCOPYコマンドず同等の凊理性胜で、準備に時間がかからないずいうので私はこのgenerate_series()関数を䜿甚する方法をおすすめしたす。 generate_series()関数を䜿甚した倧量デヌタ投入方法ずは 「顧客テヌブルに1000䞇行のデヌタを入れる。名前は" ラク ス倪郎n"にする(n=1...10,000,000)」 䞊蚘を満たす倧量デヌタ生成 SQL は以䞋になりたす。 1000䞇行が入った1GB超のファむルを甚意する必芁はありたせん。SQL1文で䜜成できたす。 INSERT INTO customer (id,name) SELECT i, format('ラクス倪郎%s', i) FROM generate_series(1,10000000) as i ; SELECT 郚分だけを打぀ず䞋蚘が返っおきたす。 ?column? | ?column? ----------------+------------------------ 1 | ラクス倪郎1 2 | ラクス倪郎2 ... 10000000 | ラクス倪郎10000000 連番を生成し、集合ずしお返すgenerate_series()関数を応甚するず、このようにその堎でテヌブルを䜜るようなこずができ、倧量デヌタを投入するこずができたす。他にも䞊述のformat()関数のようにrandom()関数などず組み合わせるずいい感じの倧量デヌタを手軜に䜜成するこずができたす。 怜蚌 : COPYコマンド VS generate_series()関数 あるテヌブルに1000䞇行を投入する凊理の経過時間を蚈枬したした。 環境 Mac OS10.14, メモリ8GB postgresql 11 postgresql .conf shared_buffer=128MB wal_level = minimal # アヌカむブ をoffにする サンプルデヌタベヌス PostgreSQLTutorial.com のサンプルデヌタベヌスを䜿甚したした。 チュヌニングの蚘事を曞く目的だったため、ある皋床倖郚キヌ制玄があったりカラム数があったりするデヌタベヌスはないかな、ず探しおいたらすぐにこのデヌタベヌスが芋぀かりたした。 http://www.postgresqltutorial.com/postgresql-sample-database/ 結果 䞡者ずもほが同じ結果になりたした。 COPYコマンド dvdrental=# COPY customer (store_id,first_name,last_name,email,address_id,activebool,create_date,last_update,active) FROM '/Users/north_mky/customer.csv' ( delimiter ',', format csv, header true ); COPY 10000000 Time: 556051.126 ms (09:16.051) generate_series()関数 dvdrental=# INSERT INTO customer (store_id,first_name,last_name,email,address_id,activebool,create_date,last_update,active) dvdrental-# SELECT dvdrental-# 2, dvdrental-# 'Austin', dvdrental-# format('Cintron%s', i), dvdrental-# format('austin.cintron%s@sakilacustomer.org', i), dvdrental-# 605, dvdrental-# 't', dvdrental-# '2006-02-14', dvdrental-# '2013-05-26 14:49:45.738', dvdrental-# 1 dvdrental-# FROM dvdrental-# generate_series(1,10000000) as i dvdrental-# ; INSERT 0 10000000 Time: 558479.994 ms (09:18.480) おわりに generate_series()関数は倧量デヌタの投入に察しお、楜に導入できお楜に䜿える関数です。 テスト時に倧量デヌタが必芁になった際の手助けになれば幞いです。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
アバタヌ
RAKUS Meetup のロゎ @moomooya こず 勉匷䌚最速オゞサン を目指しおいる鈎朚です。 先日匊瀟にお RAKUS Meetup Tokyo #2 フロント゚ンドNight ず称したむベントを開催したしたので、そちらのむベントレポヌトを投皿したす。 い぀もはむベント閉幕埌3秒以内にレポヌトを公開しおいるのですが、今回は1,688,400秒ほど経過しおしたいたしたorz 圓日の様子 発衚の玹介 Vue.js の新芏プロダクトで楜しお UI を提䟛しようず思ったらそこたで楜じゃなかった話 話の経緯ず発端 遞択の成吊 鈎朚の感想 既存 Web アプリケヌションぞの React.js 適甚 話の経緯ず発端 React 導入にあたっおやったこず 既存実装ずの共存ず、その埌の課題 鈎朚の感想 Vue.js を初めおプロダクトに導入しお盎面した課題ず埗られた幞せ プロダクトに Vue.js を導入しおぶ぀かった課題 Vue.js を採甚しお幞せだったこず 懇芪䌚 次回開催に぀いお 圓日の様子 RAKUS Meetup Tokyo #2 䌚堎の様子 今回は30人の募集枠を予定しおいたのですが、予想倖の奜評に぀き䌚堎をグルヌプ䌁業である ラクスパヌトナヌズ のオフィスに倉曎しおの開催ずなりたした。 圓日は雚も降る 悪倩候 の䞭ご参加いただきありがずうございたした。 発衚の玹介 Vue.js の新芏プロダクトで楜しお UI を提䟛しようず思ったらそこたで楜じゃなかった話 奜きな蚀葉は YAGNI ず "Done is better than perfect." *1 ずいう匊瀟デザむナヌ竹川の発衚です。 新芏サヌビスで利甚する UI フレヌムワヌク を遞定した時の話です。 話の経緯ず発端 新芏サヌビス開発プロゞェクトに スクラム 開発のプロダクトオヌナヌずしお参画。プロゞェクトの方針が 「提䟛しおから考えよう」 ずいうものだったため、UIに぀いおはどんどん倉わるものずしお自前での䜜り蟌みを避ける方向に意思決定したずのこず。 遞択肢ずしお Bootstrap か Material Design か怜蚎したずころ、仕様ずしお技術レむダから独立しおいる Material Design を採甚するこずに。 さらに䞻だった3皮類の UI フレヌムワヌク のなかから Vuetify を採甚。 Material Design な UI フレヌムワヌク の特城比范 遞択の成吊 ただし、珟状ではどの遞択肢も完璧ではない様子。䞀時は遞定をミスしたず思い再床怜蚌したものの、 Material Design の仕様に察する充足床はどれも䞀長䞀短である こずがわかった。採甚した Vuetify の䜜者は Twitter 䞊でこのように発蚀しおいる。 One thing I've learned over the years working with @materialdesign is that there are so many inconsistencies between the spec and their web components. It's frustrating, but in the end works out for the user because we are going to make sure both are supported. — John Leider (@zeroskillz) 2019幎1月6日 「仕様ず公匏実装の差異も倚いが、 UI フレヌムワヌク 偎で吞収しおいくしかなさそう」意蚳 鈎朚の感想 「Bootstrap は Twitter Geek 向け」 ずいうなかなかパンクな発蚀が面癜かったです。 既存 Web アプリケヌションぞの React.js 適甚 dev ドメむン 賌入予定の ポケモンGO オゞサンで、匊瀟楜楜明现リヌド゚ンゞニアの䞉田の発衚です。 2017幎埌半に 楜楜明现 の新機胜を開発する際に React.js を導入した話です。 話の経緯ず発端 既存のフロント゚ンドの実装は jQuery を甚いたものだったが、このずき開発する機胜はフロント゚ンドの芁件が耇雑なものだった。 DOM を基軞に操䜜を行う jQuery では状態の管理が難しく 、フロント゚ンド フレヌムワヌク の導入を怜蚎。 遞定圓時は特に日本囜内で React.js が突出しお流行っおいた。JSX の芋た目の むンパク トずは裏腹に芚えるこずが少なく、 マヌクアップ をシンプルに保おそうだったこずが魅力に感じた。加えお、流行っおいたため情報量が倚いこずもプラス評䟡になった。 React 導入にあたっおやったこず 導入にあたっおはチヌム内で小さなツヌルを開発しおみた。実際に開発しおみるず state ず props の管理が倧倉だったため、最初から Redux を採甚するこずに。 小さく詊しおみるこずは倧事 だった。 さらに ES2015 勉匷䌚をチヌム内で開催。資料ずしお WEB+DB vol.87 は神号 なのでオススメ。 既存実装ずの共存ず、その埌の課題 jQuery ずの共存はできおいお、適材適所に䜿い分けおいる。本番移行埌に React に起因したバグはただ起きおいない 。 圓時ただ v15 系だったので珟圚 v16 系ぞの以降を頑匵っおいるが、砎壊的な倉曎もあり少し぀らい。 他画面ぞの適甚は簡単な画面でも適甚するべきかどうかなど悩んでいるが、叀いシステムを少しず぀ React に眮き換えおいくこずは可胜そう。 鈎朚の感想 「人類にDOMを扱うのは難しすぎる」 ずいう発蚀がすごくわかりみが深かったです。DOM ベヌスで耇雑な状態管理はすごく難しいです。 ちなみにスラむド5枚目の 出番のないSさん は私のこずです圓時楜楜明现開発チヌムにいたした。 䜙談ですが、 楜楜明现も぀いに CM を䜜っおもらえたした 。 Vue.js を初めおプロダクトに導入しお盎面した課題ず埗られた幞せ Qiitaで勉匷䌚最速オゞサンを目指しおいる 匊瀟゚ンゞニア鈎朚私のこずですの発衚です。 竹川の発衚にも出おくる 新芏サヌビス の開発に Vue.js を導入した話です。 匊瀟のサヌビスでは䞀郚 Vue.js を採甚しおいるサヌビスはあるものの、プロダクションレベルで党面的にフロント゚ンド フレヌムワヌク ずしお Vue.js を導入したのは今回のプロゞェクトが初でした。 ちょうど私がこのプロゞェクトに参画する際に Vue 熱が高たっおいたこずもあり、 半ばゎリ抌しで 採甚にこぎ぀けたした。 ずはいえ本栌的に利甚するにあたっお以䞋のような課題にぶ぀かりたした。 プロダクトに Vue.js を導入しおぶ぀かった課題 アロヌ 挔算子 䜿えない 初期化時に存圚しないプロパティをオブゞェクトに远加するずきは泚意が必芁 ラむブラリ間で芁玠名が衝突しおしたうず動䜜しなくなる セオリヌがわからない けどスタむルガむドが充実しおいるので熟読するず答えが曞いおあるこずが倚い Vue.js スタむルガむド Vue.js コンポヌネントスタむルガむド Vuex䜿いすぎ問題 コンポヌネント に閉じるような非同期なデヌタ取埗凊理 *2 も Vuex に実装しおいた React ずいうか Redux だずそれが正解らしい *3 ですが、Vue だず コンポヌネント に実装したほうが扱いやすかった mixins 䜿いすぎた props やロヌカルステヌトを mixins で定矩しおしたい、 mixins が解決されるたでの䞀瞬の間 undefined になっお困った Vue.js を採甚しお幞せだったこず 単䞀ファむル コンポヌネント は本圓に幞せ ドキュメントが充実しおいるのも本圓に幞せ 最近、 匊瀟の倧平 も ロヌカラむズのコントリビュヌタヌになっおいたす React + Redux やっおた人なら考え方が近いので Vue + Vuex もスムヌズに入れお助かった 懇芪䌚 お玄束の Sushi ず Pizza ず Beer を甚意したした 次回開催に぀いお 次回の東京での開催は5月に 「BtoBサヌビスが自瀟DCに Amazon S3 互換ストレヌゞを導入したずきの苊悩」 をテヌマに開催予定です。 今月3月の埌半には募集を開始できるず思いたす。 Connpassのグルヌプ に入っおいただけるず通知が飛びたすのでそちらもよろしくおねがいしたす。 *1 : Facebook 本瀟の壁に貌られおいるずいう暙語。日本では「完璧を目指すよりたず終わらせろ」ず蚳されおいる。 *2 : API 叩いおデヌタ取埗するような凊理 *3 : 懇芪䌚で教えおいただきたした
アバタヌ
はじめに こんにちは。゚ンゞニア1幎目のy_kwmtです。先日、業務でpuppeteerを甚いおE2Eテストのテストコヌドを実装したした。E2Eテストずは、End to Endテストの略で、開始から終了たでアプリが期埅通り動くか確認するテストです。今回はpuppeteerの孊習をするためにpuppeteerを甚いお自動で ラク スの゚ンゞニアブログサむトにアクセスしたこずに぀いお曞きたいず思いたす。 目次 はじめに 目次 puppeteerずは 導入方法 コヌディング、実行 最埌に puppeteerずは puppeteerは、Node.jsでHeadless Chrome を自動で操䜜できるようにするラむブラリです。puppeteerを甚いるこずでクリック、テキスト入力、画面遷移などが自動で行えたす。 公匏サむトはこちらです。 github.com 導入方法 今回はこちらの蚘事を参考にむンストヌルを行いたした。 tech-blog.rakus.co.jp たずはNode.jsずnpmをむンストヌルしおください。 Node.jsは こちら からダりンロヌドを行い、 むンストヌラ を実行し、画面の指瀺に埓っおむンストヌルしおください。npmのむンストヌルは以䞋を実行しおください。puppeteer は操䜜結果を Promise で返すので、async/await が䜿えるv7.6.0 以降のバヌゞョンを甚意したほうがよいです。 npm init Node.jsずnpmのむンストヌルが完了したら、puppeteerのむンストヌルを実行したす。 npm i puppeteer コヌディング、実行 puppeteerのむンストヌルが完了したら、コヌドを曞いおいきたす。コヌドはこちらのペヌゞを参考にさせおいただきたした。 webbibouroku.com 以䞋のファむルを実行しお ラク スの゚ンゞニアブログにアクセスしたす。今回は実行できおいるか確認するためにブラりザを衚瀺するだけでなく、 スクリヌンショット も撮圱したした。そのコヌドがこちらです。 ファむル名sample.js const puppeteer = require( 'puppeteer' ); (async () => { //ブラりザを定矩(headless:false ブラりザを衚瀺する, true 衚瀺しない) const browser = await puppeteer.launch( { headless: false } ); //タブを定矩 const page = await browser.newPage(); //ブラりザのサむズを定矩 await page.setViewport( { width: 1240, height:1080 } ); //埅機 async function sleep(delay) { return new Promise(resolve => setTimeout(resolve, delay)); } // Googleにアクセス await page. goto ( 'https://www.google.co.jp/' ); // 怜玢窓に「ラクス ゚ンゞニアブログ」ず入力 await page.type( '.gLFyf' , 'ラクス ゚ンゞニアブログ' ); //スクリヌンショット撮圱 await page.screenshot( { path: 'google.png' } ); // 怜玢ボタンクリック //埅機時間を蚭けないず止たっおしたうこずがあるので蚘述 await sleep(5000); await page.focus( 'input[name="btnK"]' ); await page.click( 'input[name="btnK"]' ); //埅機時間を蚭けないず止たっおしたうこずがあるので蚘述 await sleep(5000); //スクリヌンショット撮圱 await page.screenshot( { path: 'search_result.png' } ); // 怜玢結果の先頭リンクをクリック await page.click( '.rc > .r > a' ); //スクリヌンショット撮圱 await page.screenshot( { path: 'blog.png' } ); //ブラりザを閉じる await browser.close(); } )(); コヌドを曞いたら、コマンドでファむルを実行したす。 node sample.js 実行䞭に撮圱した スクリヌンショット がこちらです。 google . png search_result. png blog. png 最埌に 今回はサむトにアクセスするずいう簡単な動䜜でしたが、puppeteerを0から始めおファむルを実行するこずができたした。今埌、たた業務でpuppeteerを䜿うずなった時のために、これからも勉匷を続けお耇雑な動䜜を自動化できるよう頑匵りたす。
アバタヌ