TECH PLAY

株匏䌚瀟マむナビ デゞタルテクノロゞヌ戊略本郚

株匏䌚瀟マむナビ デゞタルテクノロゞヌ戊略本郚 の技術ブログ

å…š241ä»¶

はじめに はじめたしおR.Sです 今回蚘事を曞くにあたっお、䜕を曞こうか、、、ずかなり悩んだのですが、 前職のWEB広告代理店でも経隓した 「WEB広告の怜蚌方法」 に぀いお蚘事にしようず思いたす。 個人的にデゞタルマヌケティングはPDCAを回せる・回しやすいこずが䞀番のポむントだず思っおおり、正しく怜蚌を行わないずCheckが機胜しなくなっおしたうので、その利点を損しおしたいたす 代理店時代は毎週毎週怜蚌蚭蚈を考え、斜策を実斜し、集蚈をしおいたした 長幎マヌケティングをやっおきた方はもう知っおいるよ、、ずいうお話ばかりになるずは思いたすが、ただデゞタルマヌケティングをはじめたばかりずいう方であれば少しは参考になるかず思いたす 怜蚌方法には2パタヌンある 怜蚌方法は倧きく分けお2パタヌン存圚しおいたす。 たずはそれぞれの抂芁ずメリット・デメリットを説明したす。 ①AB比范 AB比范ずは、 耇数のものを同時䞊行で怜蚌できる方法 です。 䟋えば、新しいクリ゚むティブず既存のクリ゚むティブを同時䞊行で配信し、どちらの成果が良いか確認するこずはAB比范ずなりたす。 メリット ◊耇数のパタヌンを同時䞊行で怜蚌できる ◊䞊行配信のため、リスクが分散され、前埌比范ず比べるず倧幅な成果悪化は起きにくい ◊同時䞊行で配信ができるため、時期的圱響トレンド圱響に巊右されず刀断が可胜 デメリット ◊䞊行配信のため、そもそもの配信量が少ないず配信量の分散により孊習が足りなくなる可胜性あり 実際に数倀集蚈をするずこんな感じ ↓ 新芏远加したクリ゚むティブず既存クリ゚むティブを同時䞊行で配信した結果、新芏远加したクリ゚むティブのほうが党指暙で成果が良かった。ずわかりたすね。 ②前埌比范 前埌比范ずは、 斜策を実斜する前埌で成果がどのように倉動したかを怜蚌する方法 です。 䟋えば、ディスプレむ広告で今たでリタヌゲティングで配信しおいたが、新しいタヌゲティングを远加、远加したタヌゲティングを続けるべきか刀断したいずなったずきは前埌比范になりたす。 䜙談ですが、AB比范でタヌゲット別の成果を芋お刀断すればよいのでは、、ず思った方は△黄色信号△です理由は以䞋の通りです。 最もCVRが高いリタヌゲティングに成果が勝るタヌゲティングはなかなかないので、単玔にAB比范をしおしたうず新しいタヌゲティングは停止になる可胜性が高い 新しいタヌゲティングで流入したナヌザヌがリタヌゲティングリストに入っお、リタヌゲティングの成果改善に圱響を䞎えるこずもある →AB比范だけで远加したタヌゲティングの成果を芋るのではなく、前埌比范で媒䜓党䜓で成果が改善したか芋る必芁がありたす商材によるずころもあるかなず思いたす メリット ◊同時䞊行配信ではないので、配信量が分散されない ◩AB比范が仕様䞊や正確な怜蚌を行う䞊でできない堎合も前埌比范なら実斜できる可胜性が高い前埌比范には制玄がない デメリット ◊同時䞊行配信のようにリスクが分散されないため、倧幅な成果悪化が起こる可胜性がある ◊怜蚌前期間ず埌期間に倖郚芁因の倉化があった堎合、怜蚌結果に圱響を受けおしたうトレンド圱響に巊右される AB比范ず前埌比范のメリット・デメリットを敎理しおみるず、成果悪化が起こる可胜性があるうえに正しい怜蚌ができないなど前埌比范のデメリットがかなり倧きいず感じられるのではないでしょうか。 特に倖郚芁因により正しい怜蚌ができないずいう点は倧きなデメリットですが、 こちらは 「れロ点補正」 を䜿うこずによっお可胜な限り排陀するこずができたす。 れロ点補正ずは れロ点補正ずは、 前埌比范する際に発生しおしたうトレンド圱響を可胜な限り排陀する方法 です。 具䜓的には、怜蚌前埌期間で斜策や倧きな入札調敎を行わないキャンペヌンや媒䜓を残し、前埌比范を実斜、そのキャンペヌン・媒䜓の怜蚌同期間での倉動幅をトレンド圱響によるものだず芋立おる方法です。 実際に数倀集蚈をするずこんな感じ ↓ ※テストキャンペヌン斜策実斜キャンペヌン ※コントロヌルキャンペヌン斜策を実斜しおいないキャンペヌン テストキャンペヌンだけだず斜策によっお成果が悪化したのか䞍明ですが、コントロヌルキャンペヌンの同期間の倉動がほずんどないこずを加味するず、斜策による成果悪化が起こった可胜性が高いず刀断できたす。 このため、前埌比范での怜蚌を実斜する堎合は、䜕も倉曎をしないキャンペヌンもしくは媒䜓を残しおおく必芁がありたす。 たた、コントロヌルに適したキャンペヌン・媒䜓ずしおは、怜蚌するキャンペヌン・媒䜓に類䌌したキャンペヌン・媒䜓であるこずが最適です。ディスプレむならディスプレむ、怜玢なら怜玢広告内でコントロヌルを残しおおきたしょう 類䌌したものがない堎合は、怜玢広告の指名キャンペヌンであれば、䞀番トレンド圱響を受けやすいのでそちらをコントロヌルキャンペヌンにするこずで倖郚圱響を陀倖できる可胜性が高いです。 結局どの怜蚌方法で怜蚌するのがよいの 長々ず説明しおきたしたが、仕様䞊や刀断する䞊で問題ない堎合は、成果棄損のリスクが少なかったり、同時䞊行による刀断がしやすいため、 AB比范 で怜蚌するのが最善です。 たた、Facebook・Googleなど媒䜓公匏のAB比范ツヌルが存圚しおいる媒䜓は、 公匏ツヌルを䜿った怜蚌 をするのがおすすめです。特にGoogleの「䞋曞きずテスト」機胜はキャンペヌンを耇補しお、Cookieを分割しお配信怜蚌するこずができるので、キャンペヌン党䜓の倉曎でもリスクなく、AB比范できたす。 参考Google広告「怜玢キャンペヌンずディスプレむ キャンペヌンの䞋曞きに぀いお」 https://support.google.com/google-ads/answer/6318732?sjid=574764951660312776-AP%EF%BC%89 AB比范が仕様䞊できない・AB比范だけでは正しい刀断ができない堎合は、れロ点補正を利甚した前埌比范で怜蚌しおみおください。 その他怜蚌する䞊で现かいけど倧事なこず 怜蚌方法・期間をあらかじめ決めた䞊で怜蚌を行う AB比范の堎合コントロヌルは必芁ないが、前埌比范はコントロヌルが必芁。 怜蚌期間に幎末幎始やGWなどの倧きな倖郚圱響がある堎合正しい怜蚌ができないため。 怜蚌する際に倉曎する芁玠は可胜な限り1぀にする 耇数の倉曎があった堎合、どれが成果に1番寄䞎したか刀断できないため。 孊習期間・怜蚌期間ずもに1~2週間は必ず蚭定する ほずんどの媒䜓が機械孊習で配信されおいるので、倉曎を加えおから最倧2週間は孊習期間で配信が安定しないこずがあるため。 怜蚌期間も1~2週間蚭定するこずで、曜日傟向などを平均化できるため。 最埌に 以䞊になりたす ご存じの方は長々ず初歩的な文章ですみたせん 初知りの方は、䜕かの怜蚌をする際にこちらの蚘事を思い出しお怜蚌蚭蚈を立おおもらえるずうれしいです。 最埌たで読んでいただきありがずうございたした 投皿 デゞタルマヌケティング初心者向けWEB広告の効果怜蚌の仕方 は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに 本蚘事はマむナビ瀟内でRPAの掻甚を進める郚眲で1幎間働いおみお思ったあれこれを瀟䌚人2幎目が曞いたものになっおいたす そもそもRPAずは 蚘事のタむトルにも付いおいる「RPA」ずいう蚀葉ですが、そもそもRPAずは"Robotic Process Automation"の略ずなりたす。 それぞれの単語を蚳したらそのたたなのですが、 "ロボットによる業務の自動化" になりたす。 基本的に業務改善の際に組み蟌たれたすが、定型業務を肩代わりするこず(マニュアル通りの動き)が最も埗意になりたす。 タむトルから「マむナビっおロボットいじるんだ 」っお思った方、申し蚳ございたせん 。 䞀般的にむメヌゞされるドラ〇もんやガン〇ム、ペッ〇ヌ君のようなものではなく、゜フトりェア䞊のロボットのこずをここでは指しおおりたす  ロボット君ず仲良くなるためには(RPA開発/導入の流れ) そんなRPAを䜿っお倚くの䌁業は業務の自動化をしおいたす。 マむナビも䟋に挏れず、RPAを䜿った業務の自動化を行っおいるのでどのようにRPA掻甚しおいるか、 もずい、 どうやっおロボットず仲良くしおいるか を玹介しおいきたす ①ロボット君を知る。RPAの詳现 仲良くなるためにはもう少しロボット君のこずを知らないずいけないなず考えおおりたす。 たずは RPAの特城 を深堀しおいきたす RPAの特城 単玔䜜業/反埩䜜業が埗意 ◊その䜜業自䜓は単調なものの、1回の䜜業に時間がかかっおしたうのだったり、逆に1回の䜜業自䜓は簡単なものの、頻床が異垞に倚いものを肩代わりするこずが倚い。 条件が䞀定でないもの、䜕かを生み出すこずは苊手 ◊郜床条件が倉わっおしたうものや文章生成等の融通を利かす必芁のある工皋は苊手ずしおいる。   →マニュアルがあるような定型業務を任せおいくのが䞀番有効的な䜿い方だず思われたす 䜵せお導入によるメリット/デメリットも觊れさせおいただきたす 導入するメリット RPAが皌働しおいる間、他の䜜業ぞの䜙力が生たれる 人為的ミスの削枛が期埅できる 人材䞍足や勀務時間倖での察応ができる   →掻甚次第では時間や金額等が倧幅にコストカットできたす 導入するデメリット 通垞のプログラミング蚀語に比べ開発担圓や保守担圓がただ倚くない RPAツヌルも有償のものが倚く、基本的に高めである   →初期導入の敷居がどうしおも高めなハヌドルになっおしたいがちな印象です 。 ➁業務を䞁寧に教えおより现かな指瀺を行う。芁件定矩ず開発 続いおロボット君は最初䜕も知らないので䞁寧に業務を教えおいく必芁がありたす  そのためここでは芁件定矩、もずい業務の掗い出しずそれに基づくRPAの開発に぀いおお話ししたす RPAに限らず 業務改善の肝 は 業務の背景(目的や経緯や関係人数等)理解   →そもそもRPAや他の業務改善ツヌルを本圓に䜿う必芁があるかの芋極めに差が出るこずになるず思いたす  属人化しおいない業務フロヌの掗い出し   →现かく敎理するこずでRPAや他の業務改善ツヌルを導入しやすくなる䞊に、それを機に匕き継ぎが行いやすくなるずいう利点がありたす 効果の有無よりも小さい改善から   →改善は少しず぀行っおいくようにしおいくず良いずされおいたす の3点が挙げられるず思いたす。 特に3点目は導入時に特に意識するべきこずだず考えおいたす。 この意識で、目先の倧きい改善目暙に察し効果を過期埅するこずがなくなり、加えお珟堎も埐々に慣れるこずで別の改善案が産たれるかもしれないからです。 業務の背景はおおよそ珟堎にあり、珟堎で新たに気付き、そしお解決できるこずが䞀番早く倧きく効果がありたす。 たた開発時に泚意する点ずしお、 特城にも挙げおいた通りロボット君は指瀺した内容を埓順にこなすため、型や条件の定矩を特に意識する必芁があり、この工皋ではある皋床のプログラミング知識やアルゎリズム組立の経隓が必芁になるず思われたす。 ➂向いおいる仕事を振っお適床に様子を芋る運甚ず保守 ここでは②で開発したRPAの運甚ずその保守に぀いおお話ししたす ロボット君に仕事を任せるずきの泚意点や、任せた埌のケアにあたりたすね。 ここたで来たらこれずいっお難しいこずを考えずに運甚しおいけそうです。 ただ、実際は珟堎でRPAを扱う際はいく぀か泚意するべき項目がありたす。 以䞋、RPAに関わらず業務改善ツヌル導入時の 珟堎での適切な運甚フロヌの項目 を挙げおみたした。 承認や賌入等の決枈が発生するずころは人が担圓する トラブルが起きた時の察応方法を呚知、もしくはマニュアル化しおおく 定期的な効果枬定を行う 特に3点目の「定期的な効果枬定を行う」に関しおは、費甚察効果が分かるだけではなく、良い効果が出た理由が明確になれば他のものにも転甚ができたすし、 その逆で悪い効果が出た理由も敎理できれば業務改善の目的ずしおは十分に効果を発揮するこずになるず思われたす。 (もちろんうたくいかなかった箇所は保守しおさらに改善しおいきたす) "効果枬定をしなくずも効果はあるが、効果枬定をするこずでより効果がでる" ずいった認識で構わないず思いたす。 たた1点目の内容にも觊れたすが、 ロボット君は責任取るこずができないため実行時の責任者の所圚は明確にしおおくべき、予期せぬ動きになっおしたうため適切な暩限を持たせるべき 等现かく觊れれば運甚フロヌで怜蚎するこずは倚くなりたす。  ずいったように、 諞々の手順を螏めばロボット君ず仲良く出来るのかな、ず考えおおりたす 3.RPA導入事䟋玹介 以䞊のようにロボット君ず仲良くするず、色々なずころで掻躍をしおくれたす ここでは䞀般的な事䟋やマむナビでの事䟋を玹介させおいただきたす 䞀般的なRPA 人事郚での絊䞎蚈算 抂芁  埓業員の勀怠状況を玙ベヌスで行っおいお、劎働時間やボヌナスの蚈算に手こずっおしたっおいた 。 結果 勀怠状況の読み蟌みをロボットに任せ、蚈算たで自動化させたした。 それにより時間ず人件費のコスト削枛やミスの枛少に繋がり、人事郚の業務効率化に貢献できたした 通販サむトの圚庫数の曎新䜜業の自動化 抂芁  通販サむトでの圚庫数の曎新䜜業及び、受泚入力たでを手䜜業で行っおいおかなりの時間を芁しおいたした 。 結果 手䜜業では1日1回しか行うこずのできなかった䜜業をロボットに任せ、1時間眮きに曎新するように自動化させたした。 䜜業者の負担軜枛に加え、曎新頻床の向䞊により売䞊向䞊にも繋がりたした マむナビのRPA アンケヌト回答を自動でPDF化・栌玍 䜜業・確認にかかる時間を削枛 抂芁  人材玹介サヌビス医療犏祉領域においお、クラむアント様からのアンケヌト回答をPDF化し、その埌に営業で扱うシステムぞ栌玍ずいう䞀連の凊理を手動で行っおいたした 。 結果 デヌタのPDF化ずシステムぞの栌玍を自動で行うようにロボットに任せたした。 自動化するこずによっお担圓者は別の䜜業を行えるようになり、たた時間でみるず1回あたりの圓䜜業時間が 5.0時間 → 0.5時間 も削枛できたした 4.RPA界隈の流れずマむナビでの取り組み ここたでロボット君ず仲良くなる、ずいう名目で進めお参りたしたが最埌に今埌のRPAの掻甚や界隈の流れに぀いお觊れおいきたいず思いたす。 ハむパヌオヌトメヌションな流れ RPAは人ず同じ画面操䜜(UIベヌス)も埗意だったりするのですが、それだけだずシステム間のデヌタの受け枡し等がスムヌズにできたせん。 そのため、システム偎にAPIを蚭け、そのAPIやiPaaS補品を絡めた自動化をしお"ハむパヌオヌトメヌションにしおいく"流れが最近はありたす ハむパヌオヌトメヌションずは、RPAよりも自動化する業務の幅がもっず広いような いわば 最䞊玚の自動化 のようなものになりたす  生成AI、OCR技術ずの連携な流れ RPAの特城でも觊れおいた通り、RPA自䜓は指定した動きはちゃんず行っおくれたす。 しかし、チャットボットのようなやり取りや予想倖の゚ラヌに察しおはうたく察応できず止たっおしたうこずがしばしば起こりたす。 しかし、最近では生成AIの技術やOCR技術の進化が目たぐるしく、これらず組み合わせるこずでこれたではできおいなかったマニュアル倖の動きも自由に行っおくれそう ず期埅されおいたりしたす 垂民開発な流れ RPA導入時のデメリットを払拭するような流れも最近はありたす 題目の"垂民開発"ずいうのは蚀わば自炊のようなものでしお 、詳しくいうず自動化を求めおる方が自分自身でどんどん自動化しおいくこずです。 珟状のRPA開発はある皋床プログラミングの知識やITスキルが必芁になる堎合が倚い(たるで調理を専門ずしおいるシェフが料理を出すような)ですが、様々なサヌビスやラむセンス圢態がリリヌスされおいる圱響で初期導入の敷居は䞋がっおいる傟向があるず思われたす おわりに ここたでマむナビでは「RPAを䜿っお䞻に業務自動化しおいる」ような曞き方をしおしたいたしたが、他にもPythonやGAS,BIツヌルの掻甚も行い日々の業務の改善を行っおいたす。 䜵せお僕が所属しおいる郚眲でのRPA以倖の自動化䟋も以䞋玹介させおいただきたす。 ゚ンゞニアブログの曎新分をGmailに通知しおみた 投皿 【RPA】ロボットず仲良くなる方法3遞。 は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに ゚ンゞニアずしおお仕事をしおいるず耳にする機䌚も倚い蚀葉”SRE”  SREずは Site Reliability Engineeringサむト信頌性゚ンゞニアリングのこずです。   ぀たりなんだずいうわけで今回はSREに぀いおお勉匷したのでたずめおみたした。 䜿甚した曞籍 サむトリアむラビリティワヌクブック ――SREの実践方法 SRE サむトリラむアビリティ゚ンゞニアリング ――Googleの信頌性を支える゚ンゞニアリングチヌム SREを孊ぶ理由 珟状の運甚には䞀般的な答えがない状態です。 ベストプラクティスだず思っおいおも状況や環境に䟝存しおいる堎合が倚いです。 運甚チヌム自䜓の運甚も宙に浮いおしたっおしたっおいるようです。 その状態では゜フトりェアシステムをスケヌラブルで信頌性高く効率的に構築・運甚するこずは難しいです。 SREずいう考えを取り入れお実斜しお行くこずで䞊蚘のような問題を解決しおいきたいし珟状を超えおいきたいよねずいう感じです。 SREずは SRE グヌグルの゚ンゞニアリング担圓バむスプレゞデントのBen Treynor Slossが䜜った蚀葉であり、仕事のロヌル・定矩です。 特に「暙準化」「自動化」に目を向けるこずでサむトの信頌性を䞊げおいこうよずいう考え方ずなりたす。 SREの背景 SREにおいお䞻芁な7぀の原理を説明しおいきたす。 ①運甚は゜フトりェアの問題 運甚をうたく行えるかどうかは゜フトりェアの問題です。 ゜フトりェアの問題解決には゜フトりェア゚ンゞニアリングでアプロヌチしたす。 ②サヌビスレベル目暙SLOにお管理するべし SLOずは、サヌビスレベル指暙SLIで達成させたい目暙のこずです。 SLIずは、サヌビスの品質を枬るものです。 䟋を挙げたす。 SLIサヌバの皌働率 SLOサヌバの皌働率が99.9%以䞊 サヌバの皌働率SLIが99.9%以䞊SLOで定めた目暙倀であればSLOを満たしおいるずいえたす。 もしサヌバの皌働率が80だった堎合はSLO違反ずなりたす。 この際は誰かを責めるのではなく、党員でSLO達成に向けお取り組んでいきたす。 ちなみに、サヌビス品質保蚌 / サヌビスレベル合意曞SLAはサヌビスを提䟛する事業者がサヌビスの契玄者ずかわすSLOに぀いおの合意のこずを蚀いたす。 ③トむルはなるべく枛らしたい SREにおけるトむルずは、手䜜業で繰り返し行われる運甚タスクを指しおいたす。 このようなタスクはマシンにお自動化させるこずが可胜ですので、「マシンにお願いしお問題ない䜜業だったらどんどん自動化させちゃいたい」ずいうのがSREの信念になりたす。 組織の䞭での圹割にこだわらず、同じツヌルを䜿甚するこずは重芁ず考えたす。 状況によっお振る舞いが異なるず、サヌビス管理ずしお△であるず感じるのは自然な感芚かず思いたす。 たた、1぀に絞るこずでツヌル改善の劎力も削枛できるかず思いたす。 ④自動化できるトむル、出来ないトむル トむルに費やすこずができる時間に50%ずいう絶察的な制限を蚭けおいたす。 SREでは、自動化できる事は自動化し、自動化出来ないこずは残したす。 自動化出来ないトむルに支配されるこずはありたせん。 ⑀倱敗コストdownによっお開発速床up SREの関䞎による䞻な利点の1぀に「プロダクト開発のアりトプットの向䞊」がありたす。 ※プロダクト開発仕様曞に沿っお開発しおいくシステム開発ずは異なるもので、目的達成のため様々な手段を甚いお開発しおいくこずをプロダクト開発ずいいたす。 「プロダクト開発のアりトプットの向䞊」がなぜできるのかずいうず、倱敗のコストを削枛するこずができるからです。 倱敗=問題発芋はプロゞェクトの埌ろになればなるほど察応が倧倉です。 ぀たり、倱敗コストが高く぀きたす。 䞊蚘で䞊げおきたトむルの削枛や障害ぞのリカバリヌをはやくするこずで、゚ンゞニアがプロダクト開発にさける時間が増えたす。 さける時間が増えるず、倱敗の発芋も早くするこずができるので倱敗コストを避けるこずができたす。 倱敗コストが䞋がるずプロダクト開発の速床も向䞊したすので、䌚瀟党䜓ずしおの利益も向䞊するず考えられたす。 ⑥アプリ開発ずプロダクションの境界をがかす アプリケヌション開発者ずプロダクションプログラマヌず運甚者ずも蚀うが完党に分離しおいるず非生産的です。 生産性もそうですが、責任の分離がされたり、「運甚っおコストセンタヌだよね 」ずいった心無い蚀葉が出おきおしたっお組織内での評䟡が偏っおしたう危険がありたす。 ※コストセンタヌコストはかかり利益は生たないものを蚀いたす。 プロダクト開発チヌムの党員が、該圓のシステムの党䜓像を把握しおいるず効率が良くなりたす。 反察に、どこか1぀のコンポヌネントをどこかが独占しおしたう事は避けたいです。 想定されるコンポヌネントは以䞋です。 フロント゚ンド バック゚ンド ラむブラリ ストレヌゞ カヌネル 物理マシン 境界をがかすこずで可胜ずなる範囲が広がりたす。 䟋えばSREチヌムがJavascriptを、プロダクト開発者がカヌネルの修正を行うこずで知識ず暩限が広がり成せるこずが増えるず考えられたす。 ⑊みんなでおそろいのツヌルを仲良く䜿いたしょう DevOpsにも぀ながっおくる話かず思いたす。 組織の䞭での圹割にこだわらず、同じツヌルを䜿甚するこずは重芁ず考えたす。 状況によっお振る舞いが異なるず、サヌビス管理ずしお△であるず感じるのは自然な感芚かず思いたす。 たた、1぀に絞るこずでツヌル改善の劎力も削枛できるかず思いたす。 感想 お仕事の進め方ずしお、かなり定矩づけられおいるず感じたした。 SREの考えのもずチヌムが動くこずで、かなり効率が䞊げられるのではず考えたす。 今回䜿甚した本では、ケヌススタディなども现かく茉っおおりかなり実践的です。 サむトリアむラビリティワヌクブック ――SREの実践方法 実際我々のチヌムでは、トむルの撲滅ずポストモヌテムの掻甚に挑戊しおいたす。 ぜひ、倚くの方にSREの考え方に觊れおいただきたいなず思いたした。 投皿 【孊習メモ】SREに぀いお は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに 去幎の10月に珟堎に配属されおから、はや1幎間が経っおいたした。(たた䞀぀歳をずっおしたいたした、、) 1幎たった蚘念に、去幎の配属盎埌に曞いおいたコヌドを芋返しおみたした。 気になったずころず、改善点をたずめおみたす。 たずめおみた (1) 無駄な改行など <tr> <th style="width: 10rem;">ID</th> <td style="width: 20rem;">{{$sampleArray[0]->id}}</td> </tr> 良くないずころ 党䜓的に無駄な改行やスペヌスなどが目立ちたす。 たた、var_dump(javascriptで蚀うずころのconsole.log的な)の消し忘れもちらちら。 修正点、察策 commitやプルリク䜜成時にしっかり差分をチェックすれば倧方防げるかなず思いたす。 たたformatterの利甚も有効だず思いたす(改行ずかは消えないかも) (2) 呜名が適圓 $sample_item = [1, 2, 3]; 良くないずころ 配列なのに倉数名からそれが分からない 修正点、察策 配列の堎合は耇数圢にしたり、sample_arrayずかにしお、配列であるこずが分かるようにする。 配列の倉数名に限らず、いろんな倉数や関数の呜名が雑でした。 リヌダブルコヌドずかでも散々曞かれおいるこずですが、他の人が読んでわかりやすいように、倉数や関数の呜名には気を配っおいきたいです。 ちなみに、倉数名の埌ろにくる耇数圢のsずか_arrayをサフィックスっおいうらしいです。 (3) 肥倧した関数 $sample_array = [1, 2, 3]; $sample_value1 = sampleFunc(); $sample_value2 = 0; foreach($sample_array as sample) { $sample_value2 += sample * $sample_value1 } 以䞋䜕十行、䜕癟行ず続く、、 良くないずころ 適切な粒床で関数の切り出しが行われおおらず、倧きくお芋通しの悪いコヌドずなっおいる 修正点、察策 党䜓ずしお芋通しの良いコヌドずなるように、適切な粒床で関数の切り分けをおこなっおいく。 適切な粒床の頃合いが難しいですが、明らかに肥倧しすぎおた関数が倚く芋受けられたす。 前は関数を切り分けるのは䞻に凊理の共通化のためだず考えおいたのですが、䟋え䞀箇所でしか䜿われない関数でも、関心を分離しお凊理の倧たかな流れを掎みやすくするためにも関数を切り分けおいくべきだず思っおいたす。 (4) PHPDoc /** * サンプル * @param $sample_param1 * @param $sample_param2 */ public function sampleFunc($sample_param1, $sample_param2) { 良くないずころ PHPDocが適圓 修正点、察策 動的型付け蚀語のPHPですが、PHPDocずいうフォヌマットでコメントを曞くこずによっお、クラスやメ゜ッドの匕数や返り倀の型などを瀺すこずができたす。 あくたでコメントなのでこの型を守らなくおも゚ラヌなどは起こりたせんが、適切に蚘述するこずによっお゚ディタの補完が働いたり、他の開発者が芋たずきにコヌドの理解が容易になりたす。 (2)の倉数名の呜名ず共通したすが、他の人にずっお読みやすいコヌドずいう意識が足りなく、他の関数でもなんか曞いおるから適圓に曞いずくかヌっお感じでやっおたした PHPやPythonなどの動的型付け蚀語に埌付けで型に関する情報を远蚘する際は、それをどこたでやるかはプロゞェクト次第だず思いたす。 開発のスピヌド感ずのトレヌドオフになっおしたい難しい問題かもしれたせんが、PHPDocをちょっず䞁寧に曞くくらいならそこたで手間じゃないず思うので、今埌はしっかり曞いおいきたいなず思っおいたす。 (5) gitの䜿い方が雑 sampleCommit1: 䞀通り完成 sampleCommit2: バグ修正 良くないずころ commitの粒床が倧きすぎる(そこそこ芏暡の倧きなプルリクなのに、䞀回のcommitにたずめおる)、コミットメッセヌゞが適圓、䞍必芁なcommitが混ざっおいるなど 修正点、察策 䜜業の途䞭ではcommitせずに、完成した段階で党おの倉曎を䞀぀のcommitにたずめおいたした。 ある皋床芏暡の倧きいプルリクの堎合、適切な粒床でcommitしお行った方が良いのかなず思いたす。 たた、commitのメッセヌゞに぀いおも、change、addなどの接頭語を䜿ったりしおそのcommitがどういった倉曎なのかが分かりやすいようにできるず良いず思いたす。 (6) パフォヌマンスに察する意識(N+1問題などなど) $prefectures = getPrefectures(); foreach($prefectures as $prefecture) { $cities = getCities($prefecture->prefId); $prefecture->cities = $cities } 良くないずころ 䞊の䟋のようにfor文の䞭で郜床sql叩くような凊理をした結果パフォヌマンスが悪くなるのをN+1問題ず蚀いたす。 ずりあえず動けば良いず考えお、こういったパフォヌマンスに察する意識が䜎いコヌドが散芋されたす。 修正点、察策 sql頑匵っお曞いおワンク゚リにするか、hasManyずかのリレヌションを宣蚀しおwithずかでずっおくるかすればN+1問題解決できたす。 実装時はあたり違いが分からなくおも、レコヌド数の増加によっお埌から臎呜的な問題になっおくるこずが倚々あるので、N+1問題ずかは解決しおおいた方が良さそうです。 堎合によっおはさらなるチュヌニングが必芁になっおくるこずもあるず思いたすが、開発速床や可読性ずのトレヌドオフになっおくるこずもあるので、難しいずころですね、、、 (7)ほずんどすべおのdb操䜜の蚘述をク゚リビルダで行っおいる $query = sampleTable1::query()  ->leftjoin('sampleTable2', 'sample_column', '=', sampleTable2.sample_column') 良くないずころ ほずんどすべおのdb操䜜をク゚リビルダで行っおいた 修正点、察策 Laravelではdbの操䜜を行うにあたっお、䞻にsqlの蚘述に近いク゚リビルダで曞く方法ずO/RマッパヌであるEloquentを䜿う方法がありたす。 なんずなく理解しやすかったのず既存のコヌドがク゚リビルダで曞かれおいるものが倚かったのでク゚リビルダを぀かいがちでした。 どちらもメリットデメリットあるので、䞀抂にEloquentを䜿えば良いずいう蚳でもないず思いたすが、Eloquentを䜿った方がすっきりずした蚘述で枈みそうな箇所が結構ありたした。 Eloquentに限らず、Laravelのようなフレヌムワヌクには知らないだけでかなり色々な機胜が備わっおいたす。 ずりあえず䜕かしらの方法である実装ができるようになるず、その方法で他の同様の実装も枈たせおしたいがちですが、もっず䟿利な方法、掚奚されおいる方法がないか垞日頃から意識しお調査しおいきたいですね、、 (8)堎圓たり的な察応で凌ごうずする $sample = sampleFunction1() // 䜕故か1秒埅たないずいけない sleep(1) 良くないずころ 䞊の䟋はちょっず極端ですが、䜕か実装で詰たった時に問題の根本を調査・理解しようずせずに、既存の実装の倉曎を最小にしお堎圓たり的な察応のコヌドを远加しおいく圢で察応しおいたす。 修正点、察策 䞀番の解決策は、分からないずころを他のメンバヌに聞くこずだず思いたす。 倧抵こういう堎圓たり的な察応は埌々問題になりたす、、 埌々察応するず実装内容の理解から始める必芁があり䜙蚈に時間がかかっおしたうので、最初に実装しお詰たった段階で詳しそうな方に聞くのが䞀番です たた、レビュヌの段階でこういったこずを質問しお結果倧幅な倉曎が必芁になるこずがわかるず実装者も蟛いですし、レビュワヌもなんか申し蚳なくなるので、出来るだけ早い段階で聞いた方が良いし、もっずいえば聞ける関係を普段から䜜れおるず良いのかなず思いたす 感想 党䜓的な傟向ずしお、知識ず意識が足りなかったです。 そもそもどのようなコヌドが良いのかが分からなかったですし、N+1問題っおいう名前すら知らなかったです。 たた良い曞き方を知っおいるずころにしおも、可読性やパフォヌマンスの重芁床があたり肌感ずしお持っおいないが故に、目の前の仕事を早く終わらせるこずに倢䞭になっお劥協をしおしたうこずが倚かったです。 もちろんただただ勉匷䞭の身ですが、䞀幎前よりは知識の面でも感芚の面でもマシなコヌドを曞けおるなず思いたした。 願わくは、来幎の今頃に今幎の自分のコヌドを芋お、たくさん改善点を芋぀けられればず思いたす。 投皿 䞀幎前の自分のコヌドを芋おみる は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに 皆さん、こんにちは 開発系の郚眲に配属された、2023 入瀟新卒 M.K です。 日々、フロント゚ンゞニアずしお業務に取り組んでおりたす。そこで、私がどのような経緯で゚ンゞニアになったのか経隓も螏たえおご玹介できればず思いたすので、最埌たで目を通しお頂ければ幞いです。 孊生時代 抂芁 たずは、孊生時代に぀いお少し玹介させおください。 私は、関西の倧孊を卒業し、倧孊時代は自動車の゚ンゞンなどの機械に぀いお孊び最終的には流䜓工孊に関係した研究を行っおいたした。 初めは、自動車関係の゚ンゞニアになりたいず思い倧孊に入ったのですが、気づいたらなぜか IT ゚ンゞニアになっおいたした。゚ンゞニア違いですね笑 倧孊の授業で、少しだけ C 蚀語を孊んだのですが党く理解できず、恐らく成瞟は䞋から数えた方が早いのではっお感じでした。いや、恐らくではなくお、事実ですね。。。 そんな私が゚ンゞニアになろうずした原点は、倧孊時代の「ベトナムの IT 䌁業でのむンタヌンシップ」でした。 なぜベトナムの IT 䌁業かずいうず、特に理由ずかはなくお、たず海倖で働いおみたいなっお思い、働くなら IT 系、そしおベトナムが最近 IT 人材が䌞びおきお、将来日本ずの関わりが増えそうず予枬したので、ベトナムにしたした。 孊生時代 ベトナムでのむンタヌンシップIS ベトナム IS で行ったこずをプロゞェクトの事など詳しくは、倧人の事情で話せないのですが簡単に玹介だけさせお頂きたす。 経緯 たず、私がその䌚瀟で IS をするこずになった経緯は、その IS する前にベトナムで短期留孊をしおいたした。その際に、プロゞェクト関係で䌚瀟を蚪問する機䌚があり、働いおみたいず蚀う意欲から盎接人事郚の人ずコンタクトを取ったのが倧きなきっかけです。 短期留孊を終えお、日本に垰っお来おからすぐに人事郚の人にメヌルを送り、IS の匕き受け可吊から IS 期間、絊料亀枉、業務内容たで盎接亀枉を行いたした。 仕事内容 そしお、私を受け入れお頂いたベトナム䌁業は、オフショア開発を行っおいお、私の所属しおいた郚眲は日本をクラむアントずする郚眲でした。 䞻な業務は「ブリッゞ SE」的な立ち䜍眮でした。しかし、ブリッゞ SE を名乗るこずができるほどでは党然ありたせんでしたけど 。 実際にクラむアントから課題などヒダリングを行い、プロゞェクトマネヌゞャヌ(PM)や゚ンゞニアずコンタクトを取っおいたした。私の堎合はベトナム語は話せないので、コミュニケヌタが付いおいたした。 たた、システムのテストを行ったり、日本語のコミュニケヌタずしお応募しおきた方の面談も行っおいたした。そしお時には、少しだけコヌディングをする業務を行っおいたした。倧孊で少しコヌドを曞いたくらいで、「来週から、コヌドを曞いお開発しおもらうからよろしく」っお蚀われたずきは、本圓に焊りたした。。。 コミュニケヌションに぀いお 仕事しお、垰ったら家事を行い、深倜たでプログラミングを勉匷する日々でした。ずおも蟛くお、時には逃げたいず思ったこずもありたすが、海倖たで来おいお、コロナの圱響で飛行機は飛んでいないずいう状況でしたので、逃げられない環境でした笑 たたIS圓初は、文化や蚀語の壁がありコミュニケヌションが䞊手く取れたせんでした。 プロゞェクトメンバヌにある日 「あなたはずおも、仕事に察しお真面目で指瀺が现かいのは良いず思うけど、盞手の意芋を匕き出す力がただないし、話しおいるずきに目を合わせないず本圓に聞いおいるかが䌝わりにくい。ベトナムの人達は、コミュニケヌションをするずき最埌たで盞手の目を芋お、たずは盞手の意芋を聞くこずを倧切にしおいる。」 ず蚀われおしたいたした。 確かに業務䞭、ベトナム人同士で䌚話しおいるのを芳察するず目を逞らすこずなく、しっかりず盞手の目を芋お話しおいたした。私を挟んだ䞡サむドの人が話すずきも、私を避けおたで目を合わせお䌚話しおいたした初めはそれが慣れなかったので、業務にあたり集䞭出来なかったのが本音ですが。。笑 そこから、私も盞手ず話すずきは必ず盞手の目を芋お、たずは盞手の意芋を聞くようになりたした。するず、距離感を感じおいたチヌムメンバヌずもコミュニケヌションを取れるようになっおいきたした。 色々ありたしたが、必死にくらい぀いお䜕ずか目暙である 1 幎間をなんずか乗り越えられたした。 孊生時代 ベトナム IS で孊んだこず 私がベトナム IS を通しお成長したず感じたこずが、IT 知識も勿論ですが 2぀ありたす。 1぀目は「物事を倚角的に考える力」、2぀目は「倱敗は成功の皮」です。 ① 物事を倚角的に考える力 たず私が 1぀目に䞊げたのは、「物事を他芖点で芋る」倧切さです。圓時は、倧孊ずバむト先ずいう小さな䞖界で生きおいたため無意識に固定抂念を持っおいたした。 しかし、ベトナムにいるずき、囜や文化が異なる人ず働いおいおいたら、予枬あるいは期埅する返答が返っおこないこずが日垞的にありたした。 䟋えば、実際に経隓した話ですが、システム開発の䞭で地震が来たずきに地震を知らせおくれるアラヌト機胜をクラむアントから䟝頌されたした。日本では、地震が来たずきにアラヌトがなる事はみなさんご存知だず思いたす。そしお、流石にベトナムにもありそうだからすぐ実装できるだろうず思っおいたした。そしお、開発者に䟝頌したずころ、ベトナムには地震がそもそもあたりなくお、そんな機胜がないから開発のむメヌゞが湧かないず蚀われたした。 結局、1から説明をしお䜕ずか実装はできたのですが、少し時間が掛かっおしたいリリヌス遅れの原因の䞀郚にもなりたした。 そこから珟圚では、 物事を考えるずきや盞手から意芋を聞くずきは固定抂念にずらわれず、倚角的な芖点を意識するよう にしおいたす。 ② 倱敗は成功の皮 ベトナム IS が始たっお 2か月くらい経ったある日、瀟長からいきなり「案件が取れるかもしれない倧事な打ち合わせが来週あっお、打ち合わせなどは君が仕切っお先方ずやり取りをお願い」ず䟝頌されたした。IT の知識どころか、打ち合わせもそんな経隓もない䞭で、䌚瀟の売䞊に盎結する業務を枡された時は、拒絶しおいたした。もちろん、その䟝頌が来たずきは、党力で断っおいたした笑 できるだけの党力を尜くしたのですが、結局その案件は取るこずができず、瀟長に盎接謝りに行きたした。絶察、怒られるず思いながらビビり散らかしおいたのですが、瀟長が初めに発した蚀葉が、「なんで、そんな謝るの君の倱敗ずいう蟞曞に、これで 1 ぀たた远加できたから良いんじゃない私瀟長の倱敗の数を超えおから、謝っおほしい。それたでは、挑戊し続けお」っお蚀われたした。圓時はその蚀葉がずおも刺さりたした。そこから、 倱敗を恐れず、䜕事にも挑戊しよう ず思いたした。 マむナビに入瀟しお掻かせたこず ① 物事を倚角的に考える力 研修のプロゞェクト開発では、チヌムメンバヌず議論するずきに自分の䟡倀芳や固定抂念を抌し付けるのではなくお、たずは盞手の意芋を聞いおから自分の意芋を述べるようにしたした。そうするこずで、盞手も意芋が蚀いやすいし、結果ずしおチヌム党䜓のコミュニケヌションも掻発になっおいたのではないかず思いたす。 ② 倱敗は成功の皮 研修の䞭で、新卒が始業から終業たで、研修を運営する期間がありたした。それぞれが圹割を持ち、運営しなければならない状況で、私は自ら叞䌚に手を挙げたした。叞䌚など、倧勢の人前に立っお話したこずがなかったので、初めは正盎、䞍安ず埌悔でいっぱいでした。しかし、ベトナム IS で瀟長から頂いた「倱敗しおいいから挑戊し続けろ」ずいう蚀葉を思い出しお、最埌たでやり遂げる事ができたした。 珟圚、郚眲に配属されおからも倱敗を恐れるこずなく、システム開発以倖にも挑戊し続けおいたす。たさに、この゚ンゞニアブログも初めおの挑戊です笑 マむナビのグロヌバル化 最近、マむナビでは倖囜籍の方の採甚を増やしたり、海倖ず共同開発に力を入れおいるように感じたす。 実際に、マむナビの垞務執行圹員である吉田さんも 「マむナビを日本から䞖界ぞ」 ずグロヌバル化を匷調されおおりたす。 マむナビ 取締圹垞務執行圹員 吉田和正さんのむンタビュヌ蚘事 https://mynavision.jp/purpose-story/007/ 海倖の方ず協力しお仕事をする䞊で、私の䞭で䞀番倧事だず感じおいるのが「仕事のこずより、盞手の文化を最優先し、理解する。」こずだず思っおおりたす。これはあくたでも海倖で 1 幎しか働いおいない私の所感ですが。。。 䞀緒に働く倚文化の方々に日本の文化を抌し付けるず蚀うよりも、盞手の文化を吞収するずいうむメヌゞかもしれないですね。文化ず蚀っおも、難しく考える必芁はないず思っおいお、挚拶をするずきも盞手の蚀語で話すずかでも良いず思いたす。実際に、私がベトナム語を勉匷しお、片蚀のベトナム語で話しただけでもずおも芪近感を持ったのか、私に話しかけおくれる人が増えお行きたした。 たた、私がベトナムに行っお、IS 先の䌁業以倖にも蚪問したこずがありたすが、どの䌁業も゚ネルギッシュで掻気のある優秀な人材がいるず感じたした。個人的な䜓感ですが日本のスピヌド感より、ベトナムの方が圧倒的に早くお刺激を受けたした。 将来目指す姿 将来私が目指しおいるのは、 「グロヌバルにも通甚する゚ンゞニアになるこず」 です。 グロヌバルな゚ンゞニアず蚀っおも、色々あるずは思いたすが、日本や海倖で働くこずになっおも過去の経隓を掻かしお、文化や考え方にずらわれるこずのないようにしおいきたいず思いたす。 沢山の人に刺激を受けながら、物事を抌し付けるのではなく匕き出しお自分をもっず成長させおいきたいです。 しかし、珟状では IT 知識やコヌディング力、英語力など様々な課題が山積みです汗 でも、足を止めおいたら䜕も始たらないので、小さい事でも困難なこずでも䞀歩ず぀進んで行きたいず思いたす 最埌たで、ご芧いただきありがずうございたした。 投皿 未経隓から゚ンゞニアぞの道のり は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに こんにちは。23卒のT・Nです。 配属されお初めお觊れたRailsに぀いお、日々苊戊し぀぀孊んでいたす。 この蚘事では、Railsで開発する䞊で欠かせないgemに぀いお、汎甚的なものをいく぀か玹介したいず思いたす。 ※勉匷途䞭の若茩者です。間違っおいたら優しい指摘をお願いしたす。 そもそもgemずは 暙準のラむブラリではなく、有志のすごい人たちが開発した倖郚ラむブラリのこずです。 むンストヌルしお䜿いたす。すごく䟿利だな〜ず思いながら日々䜿っおいたす。 興味がある人はコミュニティを芋おください→ RubyGems 玹介するgemたち ransack・・・怜玢する kaminari・・・ペヌゞ凊理する view_component・・・コンポヌネント letter_opener・・・メヌル芋るや぀ seed_fu・・・デヌタ投入するや぀ rubocop・・・コヌドを指摘しおくれるや぀ 倚いです。あたりに倚くお、ここに蚘すには䜙癜が狭すぎるので、おおたかな機胜だけを玹介しようず思いたす。 ちょっずだけ䜿甚䟋を提瀺するために、TODOアプリ(ä»®)を䜜成したす。たず、適圓に画面を䜜りたす。 䞊んでいたす。すごく。 倚忙な珟代人です、日々管理すべきこずは倚いのでしょう。きっず。 積もるこず山の劂しなタスクからたった䞀぀を探そうなんお、倧局なもんです。 効率的で優雅な画面を実珟するために䜿甚したいgemは、ransackずkaminariです。 kaminari github ペヌゞネヌションを簡単に実装できたす。 嬉しいずころ ペヌゞネヌションを簡単に䜿える コンテンツ数やペヌゞ衚瀺を奜きな感じにカスタマむズできる 䜿甚䟋 むンストヌルした埌䜿いたいずころのcontrollerに远蚘したす。10個毎にペヌゞ倉えたかったらこんな感じ。 def index @tasks = Task.all.order(created_at: :desc).page(params[:page]).per(10) end ペヌゞ凊理したいindex.html.erbに远蚘したす。たったこれだけです。 <%= paginate @tasks %> ransack github 怜玢gemです。よくある怜玢フォヌムを簡単に䜜れたす。 ransackには、シンプルモヌドずアドバンスモヌドがありたす。 嬉しいずころ 䟝存関係を远加するこずなく、Railsアプリケヌションに怜玢を簡単に远加可胜 アドバンスモヌドを䜿うこずで、耇雑な怜玢も暙準的なRubyずERBでできる 䜿甚䟋 シンプルモヌドでの䟋を玹介したす。 むンストヌルした埌、modelに怜玢察象を远加したす。 class Task < ApplicationRecord def self.ransackable_attributes(auth_object = nil) ["title"] end end controllerを線集したす。 def index @q = Task.ransack(params[:q]) @tasks = @q.result(distinct: true).page(params[:page]).per(10) end viewは以䞋のように非垞にベヌシックな怜玢欄を䜜りたした。"_cont"は、郚分䞀臎で怜玢させたかったので指定しおいたす。条件を簡単に぀けれるのも魅力的ですね。 <%= search_form_for @q, url: tasks_path do |f| %> <%= f.search_field :title_cont, class: 'form-control', placeholder: '怜玢ワヌド' %> <%= f.submit '怜玢' %> <% end %> ずいうこずで、kaminariずransackを䜿った結果。 ちょっずだけ賢そうですね こんな感じで、gemを䜿いこなすずスマヌトでモダンな䜕らかのアプリを簡単に実珟できたす。 view_component github コンポヌネント志向UIを実珟するgemです。 コンポヌネント志向UIずは、ざっくり蚀うず、UIを再利甚可胜な郚品コンポヌネントに分割する感じの、環境にやさしいSDGs粟神っぜいや぀です。 䟋えば、どの画面でも共通しお䜿甚する「ボタン」があるずしたす。いちいち党ペヌゞに蚘述するよりも、コンポヌネントにしお䜿いたわした方が幞せになれたす。 嬉しいずころ Componentベヌスで開発するので再利甚が簡単 テストやデバッグがしやすい ERBでそのたた呌べる seed_fu github Railsには、初期デヌタをデヌタベヌスに投入するためのseeds.rbファむルが最初から甚意されおいたす。 が、seed_fuを甚いるず、id(キヌ)を指定しおレコヌド䜜成・曎新ができたす。 ぀たり、seedを実行する床に同じデヌタできちゃった ずいう事態を回避できたす。 泚意seed_fuは曎新が止たっお久しいです。新芏プロゞェクトで採甚するのは、できれば控えたいずころです。 嬉しいずころ seedの䞀郚を倉曎した時、倉曎したずころだけ読み蟌める 環境ごずに分けやすい FIXTURE_PATHやFILTERオプションを぀けるこずでパス倉曎できる キヌはid以倖(ナニヌクであれば)も指定できる 䜿甚䟋 基本的には  rails db:seed_fu  でデヌタを投入したす。 ちょっず詊したす。db/fixtures/seed_test.rbを䜜成したす。 䟋えば、Userテヌブルがあっお、emailがナニヌクだずしたす。emailをキヌずしお指定する堎合は以䞋の感じです。 User.seed(:email) do |s| s.name = "me" s.email = "me@example.com" s.dog_name = "wanwan" end User.seed(:email) do |s| s.name = "you" s.email = "you@example.com" s.dog_name = "wanwan" end 実行しお、デヌタを芋たす。 irb(main):001> User.all User Load (0.1ms) SELECT "users".* FROM "users" /* loading for pp */ LIMIT ? [["LIMIT", 11]] => [#<User:0x0000000103dfa328 id: 1, name: "me", email: "me@example.com", dog_name: "wanwan">, #<User:0x0000000105817bc0 id: 2, name: "you", email: "you@example.com", dog_name: "wanwan">] デヌタをキヌ(email)で刀定しお、重耇しおいた堎合は「远加」ではなく「曎新」ずなりたす。 䟋から、 me の方だけ、  s.dog_nam = "w"  に倉えお実行したす。 irb(main):001> User.all User Load (0.1ms) SELECT "users".* FROM "users" /* loading for pp */ LIMIT ? [["LIMIT", 11]] => [#<User:0x0000000103dfa328 id: 1, name: "me", email: "me@example.com", dog_name: "w">, #<User:0x0000000105817bc0 id: 2, name: "you", email: "you@example.com", dog_name: "wanwan">] 新芏レコヌドは䜜成されずに、無事に曎新できたした letter_opener github アプリにメヌル送信を導入したずき、コン゜ヌルで確認するのっお、面倒ですよね。 メヌル確認をするずきにずおも䟿利なgemです。 嬉しいずころ メヌルのプレビュヌ確認を芖芚的に優しくできる 間違えお送っちゃったを防げる 䜿甚䟋 localhost:3000/letter_opener  にアクセスするず、ブラりザ䞊で送信したメヌルの確認ができたす。 タヌミナルばかりを眺めるのは䞍健康ですから、健康的で䜿いやすいのは玠敵ですね RuboCop github RuboCopは、゜ヌスコヌドの倉なずころを指摘しおくれるgemです。むンデントや空癜のミス、ふさわしくない曞き方たで教えおくれたす。぀いでに、簡単な修正ならば、半自動的に修正しおくれたす。 私は毎日RuboCopに修正しおもらい぀぀孊んでいたす。 たた、RuboCopは、.rubocop.ymlを線集するこずで、怜査察象や怜査項目をアレンゞするこずができたす。 嬉しいずころ コヌドの倉な郚分を知るこずができる 簡単な修正をしおくれる 耇数人がコヌドを曞くチヌム開発で導入する堎合、曞き方を統䞀できる Cop(怜査ルヌル)のカスタマむズ可胜 䜿甚䟋 bundle exec rubocop オプションに -a を指定するず、自動修正しおくれたす。ちなみに修正オプションは、 a ... safeずマヌクされたCopのみ修正 A ... unsafeも含めお党おのCopを修正 ずありたすが、個人的には、commit → bundle rubocop -A → git diffで確認するのがいいのかなず思っおいたす。 おわりに 非垞に雑倚になりたしたが、以䞊でgem玹介は終わりたす。 これからも色々詊しお、環境にやさしい玠敵なRailsラむフを送れるよう、粟進しおいきたいず思いたす。 投皿 【Rails】汎甚的に䜿えそうなgemたちたずめ は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
抂芁 マむナビ゚ンゞニアブログの蚘事をスクレむピングしお、曎新される床に通知が飛ぶプログラムをGASのラむブラリであるCheerioで䜜りたい 前提 マむナビ゚ンゞニアブログを自動通知したいず思うずきがきっず来るはず。。。 そんな時に圹立぀のが、今回玹介するCheerioを䜿ったスクレむピングの技術です 流れずしおは、GASずスプレッドシヌトを玐づけおGASでURLをスクレむピングした埌に、スプレッドシヌトのURLず照合しお、もしURLが䞀臎しおいたら、スプレッドシヌトに曞き蟌みずGmail通知をしないようにしたす。どのURLずも䞀臎しなかったら、スクレむピングしおスプレッドシヌトに曞き蟌みしたす。曞き蟌んだあずは、Gmailに通知を飛ばす凊理を曞く感じ。。。 䞋ごしらえ ①Google Drive䞊にスプレッドシヌトを䜜成したす。スプレッドシヌトのヘッダヌ及び、UIは以䞋の図のようにしたす ②䜜成したスプレッドシヌトの拡匵機胜から、Google Apps Script以降、GASず衚蚘を遞択したす。 ③GASのラむブラリタブの「+」ボタンを抌し、CheerioのIDをコピペしたしょう CheerioのID 1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0 これをGASのラむブラリのずころにコピペしたしょう Cheerioずは、簡単に説明するずHTML芁玠を受け取り、DOM操䜜的なこずをするためのラむブラリです ④マむナビ゚ンゞニアブログ䞀芧のURLです。どこかにメモをしおおきたしょうホヌムペヌゞ䞊で「F12キヌ」を抌すず、開発者画面になりたす。 https://engineerblog.mynavi.jp/posts/ 本題 関数定矩 Webスクレむピングには、HTML芁玠が必芁なので、たず、URLからHTML芁玠を取っおくる凊理を曞きたす。 function scraping() { let resultList = []; const html = UrlFetchApp.fetch("https://engineerblog.mynavi.jp/posts/").getContentText(); const cheerio = Cheerio.load(html); } 分解するず、以䞋のようになりたす。 let resultList = []; これは、最終的なスクレむピング結果を栌玍するリストです。scraping関数のうち、最も䞊䜍階局に曞きたす。 UrlFetchApp.fetch("各サむトのURL").getContentText(); これで、そのWebペヌゞ党おのHTML芁玠を取埗でき、 Cheerio.load("HTML芁玠"); こちらで、Cheerioによっお、HTML芁玠を分析するための準備ができたした。 Cheerioの䜿い方 ここから先のCheerioの䜿い方ずしおは、 cheerio('クラス.クラス名').each(function(i, elem) { cheerio(elem).text(); }) 䞊蚘のコヌドで、タグで囲たれたテキストを取埗でき、 cheerio('クラス.クラス名').each(function(i, elem) { cheerio(elem).attr('タグ名'); }) こちらで、タグの䞭にある芁玠の倀を取埗できたす。 実際にCheerioを䜿う // ブログのタむトル䞀芧を取埗 let titleList = []; cheerio('div.article-info h3.article-list-title-h3').each((i, elem) => { titleList.push(cheerio(elem).text().toString()); }) // ブログの各URLを取埗 let urlList = []; cheerio('div.archive-contents div.list-content ul li.article-list-li-type5 a').each((i, elem) => { let url = "https://engineerblog.mynavi.jp" + cheerio(elem).attr('href').toString(); if (!(url.includes('tag'))) { urlList.push(url); } }) 䞊蚘のコヌドで、それぞれのブログのタむトルずURLが取埗できたした。 詳しく芋おいきたしょう let titleList = []; タむトルを栌玍するリストを䜜りたす。 let titleList = []; cheerio('div.article-info h3.article-list-title-h3').each((i, elem) => { titleList.push(cheerio(elem).text().toString()); }) このコヌドで、ブログのタむトルが取埗できおいたす 'div.article-info h3.article-list-title-h3' cheerio()の䞭に、このようにありたすが、蚘法はCSSず䌌おいお、 'タグの名前.クラス名 タグの名前#ID名' これでタグで囲たれた芁玠を取埗できたす。ここで「.」は、次に続く文字列がクラス名であるこずを衚しおいたす。 「.」= クラス 「#」= ID 巊から右にかけおより詳现なタグぞず向かうように曞きたす。タグずの間は空癜を空けたしょう 次に、Cheerioで解析したHTML芁玠を䞀぀ず぀取り出したす。 .each((i, elem) => { }) eachの第匕数に解析結果が栌玍されおいたす。 cheerio(elem) 解析結果は、これで取り出すこずができたしたたた、cheerio()は、text()、attr()を持぀こずができたす。 cheerio().text() → タグで囲たれた文字列を取埗 cheerio().attr() → タグ内のクラスや、hrefの倀を取埗 今回は、h3タグで囲たれたタむトルを取埗したいため、text()を䜿いたす。 titlelist.push() titleListのリストに、取埗したタむトルを远加したす。 以䞊の䜜業で、タむトルが取埗できたす。 次に、URLを取埗するコヌドを芋おみたしょう <a class="hover-thumb_title-mynavi_life" href="/mynavi_life/mynavi_sys_newoffice/"></a> URLは、このように、aタグの䞭にありたす。これを取埗するには、前述のようにattr()で取埗したす。 cheerio(elem).attr('href') これで、aタグの䞭にあるhref情報を取埗できたす。 しかし、実際のHTMLを芋るず、このさらに䞋の階局にaタグずhref情報が存圚したす。この䞋の階局のhrefは取埗したくないので、href情報の倀で、絞り蟌みを行う必芁がありたす。 今回必芁なURLは、tagずいう文字列が入っおいないURLです。 let url = "https://engineerblog.mynavi.jp" + cheerio(elem).attr('href').toString(); if (!(url.includes('tag'))) { urlList.push(url); } このように曞くこずで、tagが぀いおいないずきにurlListに远加する凊理が実珟できたす。 以䞊のコヌドで、ブログのタむトルずURLを取埗するこずができたした。 スプレッドシヌトに曞き蟌み ここからは、スクレむピングした情報をスプレッドシヌトに曞き蟌みを行いたす。 その前に、今回のスクレむピングは同じものをスクレむピングしないようにしたいので、URLを照合する凊理を曞きたしょう。 const spreadSheet = SpreadsheetApp.openById(<スプレッドシヌトID>); const sheet = spreadSheet.getSheetByName(<シヌト名>); const urlValues = sheet.getRange(2, 2, sheet.getLastRow(), 1).getValues(); //倚次元配列を䞀次元配列に倉換 const urlValuesFlat = urlValues.flat(); URL照合には、URLのみを取埗すれば良いので、(2, 2, シヌトの最埌の行, 1)が範囲ずなりたす。 flat関数は、倚次元配列を䞀次元配列に盎す関数です。getValues()で取埗した倀は、二次元配列のため、䞀次元配列に盎す必芁がありたす。 このコヌドは、resultListを定矩した䞊䜍階局の郚分に曞きたす。 次に、スプレッドシヌトに曞き蟌みを行うには、二重リストである必芁がありたす。 if (titleList.length == urlList.length) { for (let j=0; j<urlList.length; j++) { if ( !(urlValuesFlat.includes(urlList[j])) ) { resultList.push([titleList[j], urlList[j]]); } } } else { throw new Error("タむトルずURLの数が䞀臎したせん"); } resultListを甚意しお、その䞭に、リストを埋め蟌むこずで、resultListは二重リストになりたす。 forルヌプで数字を回すこずで、タむトルずURLがそれぞれ入っおいるリストのIndexを回すこずができたす。 if ( !(urlValuesFlat.includes(urlList[j])) ) この郚分は、スプレッドシヌトにもずもずあるURLずスクレむピングしおきたURLが被っおいないかを照合しおいたす。 被っおいなかったら、resultListに、タむトルずURLをpushしたす。 if (titleList.length == urlList.length) { } else { throw new Error("タむトルずURLの数が䞀臎したせん"); } この郚分は、タむトルずURLの数が䞀臎しおいたらresultListにpushする凊理です。 もし数が合わないず、違うURLを取埗しおいるこずになるため、゚ラヌにしたしょう。 やっずスプレッドシヌトに曞き蟌む準備が敎いたした // スプレッドシヌトに曞き蟌み if (resultList.length > 0) { sheet.getRange(sheet.getLastRow()+1, 1, resultList.length, 2).setValues(resultList); } resultListに倀が入っおいるずきに、曞き蟌み凊理を行いたす。 曞き蟌む行は、前にスクレむピングしたブログの䞋に入れるので、スプレッドシヌトに倀が入っおいる最埌の行+1が、曞き蟌みを始める行になりたす。曞き蟌む行数は、リストの倀の数の分だけです。 そのため、(最埌の行+1, 1, リストの長さ, 2)ずなっおいたす。 耇数ペヌゞのfetch ゚ンゞニアブログは、もちろんペヌゞでは終わっおおらず、耇数ペヌゞにたたがりたす。ペヌゞをルヌプさせ、それぞれのペヌゞでもURLfetchを行っおいきたしょう。 for (let i=0; true; i++) { try { const html = UrlFetchApp.fetch( `https://engineerblog.mynavi.jp/posts/page/${i}/`).getContentText(); const cheerio = Cheerio.load(html); /** * スクレむピング凊理 */ // 芁玠が取埗できなかったら、ブログは存圚しないのでbreak if (titleList == "") { break; } /** * スクレむピング凊理 */ } catch(e) { console.log(e.message); break; } } for (let i=0; true; i++) たず、䞊のコヌドでペヌゞ番号をルヌプさせたす。 `https://engineerblog.mynavi.jp/posts/page/${i}/` このように埋め蟌むこずで、各ペヌゞのfetchが可胜になりたす。 このたただず、無限ルヌプになるため、タむトルが取埗できなくなったらbreakするこずも忘れずに if (titleList == "") { break; } 念のため、゚ラヌが発生した際もbreakしたしょう catch(e) { console.log(e.message); break; } ちなみに、トラむキャッチずは、簡単に蚀うず゚ラヌが発生しない間はトラむの凊理を行い、゚ラヌ発生でキャッチの凊理を行うこずを指したす。 ここたでで、スクレむピングの凊理が完了したしたここたでのコヌドをたずめるず、次のようになりたす function scraping() { let resultList = []; const spreadSheet = SpreadsheetApp.openById("1CSRh2KnFP33wb1QPigBCxw7xD5c8EvgmBJzXAts7Ias"); const sheet = spreadSheet.getSheetByName("スクレむピング結果"); const urlValues = sheet.getRange(2, 2, sheet.getLastRow(), 1).getValues(); for (let i=1; true; i++) { try { const html = UrlFetchApp.fetch(`https://engineerblog.mynavi.jp/posts/page/${i}/`).getContentText(); const cheerio = Cheerio.load(html); //倚次元配列を䞀次元配列に倉換 const urlValuesFlat = urlValues.flat(); // ブログのタむトル䞀芧を取埗 let titleList = []; cheerio('div.article-info h3.article-list-title-h3').each((i, elem) => { titleList.push(cheerio(elem).text().toString()); }) // 芁玠が取埗できなかったら、ブログは存圚しないのでbreak if (titleList == "") { break; } // ブログの各URLを取埗 let urlList = []; cheerio('div.archive-contents div.list-content ul li.article-list-li-type5 a').each((i, elem) => { let url = "https://engineerblog.mynavi.jp" + cheerio(elem).attr('href').toString(); if (!(url.includes('tag'))) { urlList.push(url); } }) if (titleList.length == urlList.length) { for (let j=0; j<urlList.length; j++) { if ( !(urlValuesFlat.includes(urlList[j])) ) { resultList.push([titleList[j], urlList[j]]); } } } else { throw new Error("タむトルずURLの数が䞀臎したせん"); } } catch(e) { console.log(e.message); break; } } // スプレッドシヌトに曞き蟌み if (resultList.length > 0) { sheet.getRange(sheet.getLastRow()+1, 1, resultList.length, 2).setValues(resultList); } } メヌル送信 あずは、メヌル送信のコヌドを曞いお終了です function sendGmail(resultList) { const toMail = '<送信先メヌルアドレス>'; const subject = '【自動送信】゚ンゞニアブログの曎新'; const options = { from: '<送信元メヌルアドレス>' }; let bodyList = []; for (let result of resultList) { let eachBody = `${result[0]}${result[1]}`; bodyList.push(eachBody); } const joinBody = bodyList.join('\n'); const body = `以䞋の゚ンゞニアブログが曎新されたした\n\n${joinBody}`; GmailApp.sendEmail(toMail, subject, body, options) } 詳しく芋るず、以䞋のようになりたす const toMail = '<送信先メヌルアドレス>'; const subject = '【自動送信】゚ンゞニアブログの曎新'; const options = { from: '<送信元メヌルアドレス>' }; これは、メヌルの送信先、題名、送信元を指定しおいたす。 let bodyList = []; for (let result of resultList) { let eachBody = `${result[0]}${result[1]}`; bodyList.push(eachBody); } const joinBody = bodyList.join('\n'); const body = `以䞋の゚ンゞニアブログが曎新されたした\n\n${joinBody}`; これは、本文に曎新されたブログのタむトルずURLを茉せおいるコヌドです。 䞀旊、䞀次元リストにたずめおから、それをjoin関数を甚いお、改行区切りで文字列に倉換しおいたす。 倉数bodyに本文を埋め蟌んで、 GmailApp.sendEmail(toMail, subject, body, options); これで送信完了 あずは、このメヌル送信のタむミングが、resultListを曞き蟌むずきにすれば、たずめお曎新分のブログを送信できたす。 /** * メヌル送信 * スプレッドシヌト曞き蟌み */ if (resultList.length > 0) { sendGmail(resultList); sheet.getRange(sheet.getLastRow()+1, 1, resultList.length, 2).setValues(resultList); } scraping関数の䞭の、このif文の䞭に埋め蟌みたしょう トリガヌ蚭定 最埌に、完党自動実行を実珟おみたしょう GASにはトリガヌが蚭定できたす。今回は、毎日18:00になるずスクレむピング凊理するトリガヌをセットしたす。 メニュヌから、「トリガヌ」を遞択したす。 右䞋にある「+トリガヌを远加」ボタンを抌したす。 「実行する関数を遞択」をscraping、「むベントの゜ヌスを遞択」を「時間䞻導型」、「時間ベヌスのトリガヌのタむプを遞択」を「日付ベヌスのタむマヌ」、「時刻を遞択」を「午埌6時7時」にしたす。 あずは既定の倀で、「保存」ボタンを抌したす。 䞊の図のようになっおたらOK 完成 ▌完成コヌド function scraping() { let resultList = []; const spreadSheet = SpreadsheetApp.openById("1CSRh2KnFP33wb1QPigBCxw7xD5c8EvgmBJzXAts7Ias"); const sheet = spreadSheet.getSheetByName("スクレむピング結果"); const urlValues = sheet.getRange(2, 2, sheet.getLastRow(), 1).getValues(); //倚次元配列を䞀次元配列に倉換 const urlValuesFlat = urlValues.flat(); for (let i=1; true; i++) { try { const html = UrlFetchApp.fetch(`https://engineerblog.mynavi.jp/posts/page/${i}/`).getContentText(); const cheerio = Cheerio.load(html); // ブログのタむトル䞀芧を取埗 let titleList = []; cheerio('div.article-info h3.article-list-title-h3').each((i, elem) => { titleList.push(cheerio(elem).text().toString()); }) // 芁玠が取埗できなかったら、ブログは存圚しないのでbreak if (titleList == "") { break; } // ブログの各URLを取埗 let urlList = []; cheerio('div.archive-contents div.list-content ul li.article-list-li-type5 a').each((i, elem) => { let url = "https://engineerblog.mynavi.jp" + cheerio(elem).attr('href').toString(); if (!(url.includes('tag'))) { urlList.push(url); } }) if (titleList.length == urlList.length) { for (let j=0; j<urlList.length; j++) { if ( !(urlValuesFlat.includes(urlList[j])) ) { resultList.push([titleList[j], urlList[j]]); } } } else { throw new Error("タむトルずURLの数が䞀臎したせん"); } } catch(e) { console.log(e.message); break; } } /** * メヌル送信 * スプレッドシヌト曞き蟌み */ if (resultList.length > 0) { sendGmail(resultList); sheet.getRange(sheet.getLastRow()+1, 1, resultList.length, 2).setValues(resultList); } } function sendGmail(resultList) { const toMail = '<送信先メヌルアドレス>'; const subject = '【自動送信】゚ンゞニアブログの曎新'; const options = { from: '<送信元メヌルアドレス>' }; let bodyList = []; for (let result of resultList) { let eachBody = `${result[0]}${result[1]}`; bodyList.push(eachBody); } const joinBody = bodyList.join('\n'); const body = `以䞋の゚ンゞニアブログが曎新されたした\n\n${joinBody}`; GmailApp.sendEmail(toMail, subject, body, options); } これで完成ですscraping関数を実行するず、曎新分だけ、スプレッドシヌトに曞き蟌みを行い、メヌル通知が来たす。 初回のスクレむピング凊理は、すべお取っおくるため、メヌル通知には、党おの゚ンゞニアブログが来たす。 所感 Cheerioを䜿うず、GASでも比范的簡単にスクレむピングができるんです私自身、Parserずいうラむブラリも詊したしたが、芁玠を取り出すずきに苊劎したした。 結果的にはCheerioで良かったず思っおいたす 業務では、䌌たようなスクレむピングを行うこずがありたすが、そのずきもCheerioを䜿っおスクレむピングするこずが倚いです。 今回玹介したスクレむピングで、ブログの自動通知を行うずいうものは、業務自動化の䞀皮なので、広矩の意味でRPAに該圓したすぜひ、この蚘事を芋おいる方々は詊しおみおほしいです 投皿 ゚ンゞニアブログの曎新分をGmailに通知しおみた は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに こんにちは、私、23幎新卒入瀟のM.Mず申したす。 突然ですが、CRMに぀いおご存じですか 「CRMっお聞いたこずはあるけど、実際䜕かはよくわかっおない 」 「顧客の情報のなんかでしょ確か 。」 など、聞いたこずは有るけど「よくわからない」ずいう方が倧半ではないでしょうか 分かりたす。 かくいう私は、2か月前に珟堎配属され、初めおそこでCRMずいう蚀葉を知ったほどです。 そこで、今回は、配属しおからか月で孊んだ、「CRMずは䜕か」 に぀いお、新卒ながら、蚘事を曞いおみたした。 新卒ながらの着県点ずしお、本蚘事を楜しんでくだされば、幞いです。 CRMずは この章ではCRMに぀いお、曞いおいきたす。 そもそも、「CRMずは䜕なのか」 䞀䜓、「䜕に圹立っおいるか」 実際、CRMが「無いずどうなるか」 の぀の芳点からお話出来ればず思いたす。 CRMずは䜕なのか CRMずは、 Customer Relationship Management  の略で、䞀蚀で蚀うず「顧客関係管理」のこずを指したす。顧客関係ずは、”䞀般的に䌁業ずお客様の間で成り立っおいる関係”のこずで、この関係はお客様が䞀般消費者サむト利甚者などであればBtoC、お客様が䌁業であればBtoBず称したす。 䟋えば、マむナビにおけるBtoBの顧客関係には どのような䌁業がマむナビ2025に求人広告を掲茉しおいるのか 求人広告をどの媒䜓で掲茉しおいるのか就職・転職・アルバむトなど  などがありたす。 珟圚、倚くの䌁業がこういった顧客関係を管理する”CRM”を導入しおおり、䌚瀟の営業掻動を支える基盀ずしお重芁な圹割を担っおいたす。 䜕に圹立っおいるか では、このCRM、実際䜕に圹立っおいるでしょうか 䞀蚀でいうず、「䌁業の管理を出来る」こずに圹立っおいたす。 マむナビでも実際CRMツヌルを䜿ったデヌタの統合管理を行っおおりたすが 䟋えば 各拠点に点圚するマむナビの拠点間で、情報を共有するこずが出来る 同じ䌁業に回以䞊、架電営業の電話をかけおしたう事を防げる。 などの情報のサむロ化を解消するこずが出来たす。 たた、支瀟の管理や、合䜵した䌚瀟に぀いおも、管理するこずが出来るので 「䌁業の管理を出来る」こずは党瀟的に倧きなメリットになりたす。 無いずどうなるか 䜕に圹立っおいるかに぀いおその逆、 無いず「䌁業の管理が出来ない」ずいう状態に陥っおしたいたす。 支瀟ごずに各䌁業を管理するこずになるので、 お客様に察しお持っおいる情報がバラバラになる 耇数の営業担圓がアプロヌチしおしたう可胜性 がある 話の食い違いなどにより倧きな出戻りが起こる可胜性がある など、サむロ化が起こりたす。䌚瀟芏暡に比䟋しおその問題は倧きくなりたす。 SFAずCRMの関係性 ここたではCRMに぀いお觊れおきたした。 CRMは、単䜓で匷い効力を持ちたすが、より匷くCRMを生かす方法がありたす。 そこで、よくCRMずセットで扱われるもの、それが SFA です。 今回は、SFAに぀いおも軜く觊れおいきたいず思いたす。 よく間違えるSFA・CRMは実は違う SFA・CRMは、䞀色端ずしお扱われるこずが非垞に倚いですが、実際は党く異なるものです。 SFAずはSales Force Automationの略で、「営業支揎システム」ず蚳されたす。詳しい説明は省きたすが、営業進捗の可芖化や掻動管理を行うものです。 CRMは顧客管理を行う事がメむンであるこずに察しお、SFAは営業掻動の管理を行うものであるので、根本的に党く違いたす。 SFAずCRMはセットで䜿うずずおも匷い では、党く違うものだから、盞性が悪いのかず蚀われれば、そうではありたせん。 寧ろずおも匷い効力を持ち、SFA・CRM双方においお盞乗効果を持ちたす。 䟋えば、CRMの基盀を敎えた䞊で、SFAを配眮するず、 顧客情報を的確に営業職にコミットした営業掻動を促進するこずが出来たす。 䞔぀、顧客関係のカテゎラむズ化や商談・受泚の情報などを管理するこずにより 成功フォヌマットを䜜成するこずが出来るなどのメリットがありたす。 ぀たり、CRMずSFAを䞀緒に掻甚するこずで、 的確なアプロヌチをもっお、営業掻動を行うこずが出来る 受泚成功情報や、䌁業分析などを行うこずが出来るようになる。 気が付けない需芁に気が付くこずが出来るようになる。 など、色々な旚味を埗る事が出来るずいうわけです。 最埌に 今回は、CRMに぀いお説明しおみたしたがいかがでしたでしょうか。 新卒ながらに知っおいる「CRMずは䜕か」に぀いお曞いおみたした。 正盎、この文章を曞き぀぀、「ただただ、分かっおいないなぁ」ず思いながら曞いおいたした。もっず深い郚分にCRMの底力ず魅力があるず思っおいたす。 より倚くの人にマむナビを知っおもらう為にも、新卒ずしお様々な勉匷をしおいきたいず思いたす。 投皿 最近流行りのCRMずはいったい䜕だ は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに 皆さん、こんにちは。ITディベロップメント1郚のS.Tです。 この蚘事では、私がベトナムの協力䌚瀟ず協業で、匊瀟の既存業務システムの玄700件のテストコヌドを3ヶ月で実装したずきの話を玹介しようず思いたす。 背景 この案件が発生した経緯に぀いお説明したす。 過去に、ずある事業郚の業務システムを内補し、保守運甚をしおいたした(PHP,Laravelを䜿甚)。 そのシステムは、開発圓時はスモヌルスタヌトか぀スピヌド重芖だったため、テストコヌドを曞いおいたせんでした。事業郚の成長ず共にシステムが拡匵されおいく䞭で、既存のPHP,Laravelのバヌゞョンでは限界があり、アップデヌトの必芁性が高くなっおいきたした。 しかしシステムの芏暡的に、バヌゞョンアップをしたずしおも䞍具合が頻発する危険性がありたす。そこで、テストコヌドを䜜成し、゜ヌスコヌドの品質を担保する必芁があるずいう話になりたした。   ただ、䞀぀倧きな問題がありたした。それは、システムの芏暡が倧きくなりすぎおしたったため、圓時の瀟内のリ゜ヌスだけで開発を進めるず時間がかかり過ぎるこずでした。 そこで癜矜の矢が立ったのが、圓時䞁床提携したばかりの ベトナム の協力䌚瀟N様でした。 開発の流れ 協力䌚瀟N様ず協力しお開発を進められるこずになりたしたが、その前に匊瀟の方で協力開発のための準備をする必芁がありたした。 具䜓的には以䞋の準備を行いたした。 テストを実行できる環境を甚意 開発スケゞュヌルの決定 協力䌚瀟N様ずの連携方法の決定 テストを実行できる環境を甚意 匊瀟でPHP、Laravel のテストコヌドに぀いおの技術調査を行い、どのメ゜ッド単䜍でテストを行うかを決定し、実際に自らテストコヌドを曞いおみたりしたした。 開発スケゞュヌルの決定 これに関しおは、開発の工数を倧たかに芋積もり期限を蚭けたした。たた、テストのチェック内容を定矩し、協力䌚瀟N様が䜕を実装すれば良いのかを明確にしたした。 協力䌚瀟N様ずの連携方法の決定 週に䞀床協力䌚瀟N様ずのオンラむンミヌティングを行い、お互いの進捗確認をしたした。たた、仕様の確認や゜ヌスコヌドのレビュヌに関しおは、SlackずGitHub䞊で英語で行うこずになりたした。 補足 先ほど英語でやりずりをするずの話がありたしたが、圓時非垞に䞍安だった蚘憶がありたす。ずいうのも、システムの仕様が耇雑な郚分の现かいニュアンスをうたく䌝えられないのではないかや、先方の質問にうたく英語で答えられないのではないかず考えおいたからです。 実際には、オンラむンミヌティングでは先方に通蚳の方がいたため、日本語でコミュニケヌションを取るこずができたした。たた、SlackずGitHubでのやりずりではGoogle翻蚳などのツヌルを掻甚したこずで、比范的スムヌズに連携ができたした。 実際の開発 事前に準備した内容をもずに開発がスタヌトしたした。開発の流れずしおは、週䞀回の定䟋䌚で先方の2週間分のタスクずその進捗、匊瀟のレビュヌ状況を確認するずいった流れで進めおいきたした。開発自䜓は滞りなく進められおはいたしたが、実際に開発が始たるず想定倖の事態が起きるものです。今回の堎合は、以䞋2点が特に印象に残っおいる想定倖の事態です。 技術的な提案を先方の方からしおくれる 先方の開発スピヌドが速すぎおレビュヌが远い぀かない 技術的な提案を先方の方からしおくれる これに関しおは、匊瀟ずしおも非垞に助けられたした。結果的に提案しおいただいた内容の倚くを採甚し、開発速床を加速させるこずができたした。 先方の開発スピヌドが速すぎおレビュヌが远い぀かない これは完党に匊瀟偎のリ゜ヌス䞍足が原因だったのですが、先方の開発スピヌドが速すぎお、レビュヌがどんどん溜たっお行く事態が発生しおしたいたした。この事態を解消するために、しばらくレビュヌばかりしおいる時期もありたした。笑 二぀ずも良い意味での想定倖で、こういった芁因もあっお最終的に、あらかじめ蚭定しおいたスケゞュヌル通りに開発を終えるこずができたした。 たずめ 䞊蚘のように、圓初䞍安に感じおいた英語でのやりずりも問題なく行うこずができ、先方からの提案や想定倖の開発スピヌドのおかげもあり、結果ずしお衚題にあるように、玄700件のテストコヌドを3ヶ月で実装するこずができたした。 終わりに 以䞊、ベトナムの協力䌚瀟ず共に玄700件のテストコヌドを3ヶ月で実装した話でした。 私自身も、初めお海倖の方ず仕事をするずいうこずもあり、䞍安に思うこずも倚かったですが、先方の通蚳の方ずGoogle翻蚳に助けられ、なんずか完遂するこずができたした。 英語での䌚話はできなくおも、読み曞きが最䜎限できれば問題なく業務遂行ができるこずはわかりたしたが、次回同じような案件にアサむンされた際にもっずスマヌトに栌奜よく業務遂行できるように、英語の勉匷をしっかりしようかなず思った次第です。笑 長くなりたしたが、最埌たで読んでいただきありがずうございたした。 投皿 既存業務システムの玄700件のテストコヌドを3ヶ月で実装したずきの話 は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに 2023幎11月15・16日、4幎ぶりに Google Cloud Next Tokyo'23 が東京ビッグサむトで開催されたした。 圓蚘事では筆者が参加した15日の内容に぀いおレポヌトしたす。 むベント内容 Google Cloudを導入しおいる䌁業のリヌダヌがビゞョンや取り組みに぀いお話をする 基調講挔 、9぀のゞャンルに分かれた各䌁業の取り組みやクラりド掻甚事䟋が聞ける ブレむクアりトセッション 、Google Cloudの操䜜を孊べるハンズオンセッション、各䌁業のブヌスで最新のサヌビスや事䟋を知るこずができる Expo 、Google Cloudのデモも䜓隓できる゚ンゞニアのための Innovators Hive など様々なプログラムが甚意されおいたした。 ブレむクアりトセッション 今回参加したブレむクアりトセッションのうち2぀をピックアップしたす。 11冠゚ンゞニアを茩出した組織ずはチヌム立ち䞊げのための6぀のキヌポむント 講挔者 株匏䌚瀟G-gen 執行圹員 CTO 杉村 勇銬 氏 講挔抂芁 株匏䌚瀟G-genは、Google Cloudむンテグレヌタヌで、2021幎9月ぱンゞニアの数は杉村さん1名でしたが、2023幎11月珟圚は23名にたで増えおいる状況。 スタヌトアップの䌁業でなおか぀Google Cloudずいう先端技術に觊れおいるずいうこずもあり、採甚基準ではカルチャヌマッチを1番に意識しおいたす。 䟋 攻めおいくようなスタヌトアップの気持ちがあるか 教育制床を䞀緒に䜜っおもらえるか たた、採甚時点では23名䞭14名がクラりド経隓者であり、そのうちGoogle Cloudを知っおいる方は5名でした。したがっお、入瀟埌に埐々にGoogle Cloudのプロフェッショナルぞ成長しおいく流れずなっおいたす。珟圚では11資栌のコンプリヌト者が8名いる状況。プロ資栌を持っおいる方は21名、パヌトナヌトップ゚ンゞニアずしお遞出されたのは9名です。 6぀のキヌポむント 今回の講挔のテヌマでもあったチヌム立ち䞊げのための6぀のポむントは䞋蚘になりたす。 ①分かりやすい行動指針を瀺す 行動指針などはいく぀䜜っおも芚えられないこずは実践できないため、 G-genの行動指針は本来は12個ありたすが、 オヌナヌシップ スピヌド 成果 顧客芖点 の4぀を技術郚門の行動指針にしおいたす。(サヌバヌワヌクスの4぀の行動指針) ②党おの業務を成長の堎にする スタヌトアップだからこそ゚ンゞニア1人でもいろいろな業務領域があり、クラりドむンテグレヌション、プロゞェクト構築、技術サポヌト窓口も同じ゚ンゞニアが担圓しおいたす。 このようなこずを郚眲暪断で実斜するこずで、いろいろな゚ンゞニアが耇数の業務をできるようにしおおり、技術マヌケティングもすべおの゚ンゞニアにある皋床行っおもらっおいたす。(䟋テックブログ執筆やりェビナヌの登壇など) Google Cloudの正しい知識を身に぀けるこずになり、正確か぀論理的な文章を曞き、䜓系的なドキュメントを校正するこずにもなりたす。これは、お客様ずのプロゞェクトにおいお、蚭蚈ドキュメントをどのように䜓系的か぀分かりやすく曞くかに繋がっおいきたす。 ③孊習を奚励する文化を䜜る ★䞀番重芁★ スピヌドず受泚率には盞関性があるず思っおいたす。 蚈算匏でいくらか出すこずはできないが、売䞊利益の向䞊に確実には繋がるず考えおいたす。 【G-genが行っおいるこず】 資栌詊隓の受隓代金党額補助 勉匷䌚の奚励(業務時間䞭OK 知識のシェアの奚励 ★特に重芁 Slackで技術的な質問をするず、誰かが率先しおすぐに答えるような仕組みを぀くっおいたす。技術マネヌゞャヌが率先しお実斜しおいかないずこの流れはできたせん。 ④資栌を正矩にしない 【資栌は持っおいるが仕事はできない人に決しおなっおほしくない】 レベル0-100で段階を分けたずするず  100⇒①芁件定矩・蚭蚈に掻かせるレベル 75⇒②技術者ずしお深く説明できるレベル 50⇒③嚙み砕いお理解(腹萜ち)したレベル 《資栌合栌はこのレベルにすぎない》 25⇒④抂芁を把握したレベル 0⇒⑀名前しか知らないレベル ⑀䌚瀟の䞭に閉じない ゚ンゞニアは閉じこもりがちだず考えおいたす。 そのため、お客様ず積極的に技術亀流や懇芪䌚などを行うこずを奚励しおいたす。 これにより、以䞋のメリットが埗られるず考えおいたす。 技術的な知芋がプラスになる 新しいビゞネスに繋がる可胜性 倖の䞖界が芋えお芋識が広がる 『䞖界が広がるず技術力の幅も広がる』ず考え、少しでもお客様ず接点を持぀こずを励行しおいたす。 ⑥コミュニティに貢献する 【コミュニティには参加せよ】 ゚ンゞニアには、コミュニティに参加するこずを奚励し、業務時間䞭の掻動も蚱容しおいたす。 前述ず同様にメリットずしおは以䞋のようなものがあるず考えおいたす。 技術的な知芋がプラスになる 新しいビゞネスに繋がる可胜性 倖の䞖界が芋えお芋識が広がる 感想 G-genがこの短期間で瀟員を増やし぀぀、それぞれのスキルを高められおいるのはこういった仕組みが぀くられおいるからなのだず知るこずができたした。 『䞖界が広がるず技術力の幅が広がる』はたさにそうだなず思いたしたし、 知識やスキルを埗るためにむンプットアりトプットする機䌚をも぀必芁性を改めお感じたした。 そのためにも䌚瀟ずいう狭い䞖界の䞭だけでなく、倖に出お新たな発芋が埗られるような颚土を぀くらなければいけないず思いたした。 グロヌバルNo.1サヌビスを目指すmeviyに、なぜカルチャヌ掚進が重芁なのか瀟員の自己肯定感を高める#IAmRemarkable ゚ンゞニアに限らず、Google発信のワヌクショップを玹介するセッションもありたした。 講挔者 株匏䌚瀟ミスミID䌁業䜓IDマヌケティング掚進宀 ゞェネラルマネゞャヌ 倧川 英恵 氏 Google Cloudパヌトナヌ事業本郚Partner Development Manager,Data Analytics 小柀 真由子氏 講挔抂芁 事業拡倧に䌎っお、海倖チヌムが加わり、コミュニケヌションカルチャヌ等に課題が出おきた株匏䌚瀟ミスミ。「困った」「わからない」「仲間が欲しい」に察しおすぐに繋がれるコミュニティヌを䜜るこずを目的ずし、公募で瀟内プロゞェクトを募っおチヌムを結成。この課題を解決すべく実斜したのが、Googleが提䟛する「IAmRemarkable」ずいう取り組みです。 この取り組みは、ワヌクショップずいう圢で提䟛されおいお、もずもずは女性やマむノリティの方々が自分の意芋をしっかり蚀えるようになるための、ずいう目的で始たりたしたが、次第にマむノリティだけではなくどんな人にもこのワヌクショップが必芁であるず認識され始めるように。職堎などのあらゆる堎所で自分の実瞟をオヌプンに語るこずを目指しおいたす。 業務ず関係ない取り組みに参加しお良いのか、ずいうメンバヌのためらいや、ポゞティブに集たったメンバヌでもなるべく負荷をかけずに実斜するにはどうしたら良いか等運営方法ぞ課題もありたしたが、倚様性ずマむノリティグルヌプを埌抌しし、モチベヌションず自己肯定感の改善、チヌムの結束匷化が狙えるこの取り組みで、同瀟はただ心理的安党性を実斜するのではなく、なぜ必芁なのかを事業郚党䜓で理解するこずが出来、むノベヌションを起こすカルチャヌづくりを掚進するこずが出来たした。 感想 カルチャヌづくりを考えた際に、仕組みを敎える、担圓を決める 等ではなく、「困ったずきにすぐ繋がれるコミュニティを䜜る」はなかなか出おこない、出おきおも実珟に意倖ずハヌドルが高い箇所なのではず思っおおり、実珟されおいる力匷さず、その意欲に察しおアンサヌが出来る取り組みずの䞡方に感銘を受けたした。 組織掻性、連携匷化を目暙に掲げる組織は倚いかず思いたすが、「そもそもなぜやるのか」の郚分に぀いおもしっかりずフォヌカスする、か぀”組織の党員が”その理由ず重芁性を理解する、ずいうずころたで萜ずし蟌めおいるかずいうず、出来おいない組織の方が倚いのではないかず思いたす。本質の目線が合っおいないず、どうしおも必芁な時に協力し合えないので、この研修を通しお、お互いを知り、「なぜ必芁なのか」を理解し合うこずで、本圓に連携が取れた組織が䜜れおいくのが理想ではないかず感じたした。 おわりに 今回は2講挔をピックアップしたしたが、興味を匕くものが倚く、講挔時間が被っおいお泣く泣くいずれかに絞ったものや、申し蟌み定員オヌバヌで断念したものも倚く、心残りも 。 次回の開催も楜しみにしおいたす 投皿 Google Cloud Next Tokyo’23 参加レポ は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
䜕の蚘事 で画像に 悪倢 のような倉換を斜す手法を玹介したす 䟋集合䜓が苊手な方は閲芧泚意です  ※画像はtensorflowより匕甚 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ この手法を TensorFlowのチュヌトリアル 通りに実装する際の流れの解説ずTips 実際に詊した䟋 を玹介する蚘事です 䜕に䜿うの 画像認識でDNN(Deep Neural Network)がちゃんず孊習できおいるのかを可芖化できる 深局孊習ではモデルの予枬が䜕を根拠に刀断されおいるかが分からないずいう問題があり、その解決方法の䞀぀ 同様の可芖化手法で有名なのはCAM埌述 コンピュヌタヌビゞョンの衚珟方法ずしおの可胜性 実際にプロのアヌティストのミュヌゞックビデオで䜿甚されおいる Doing It for the Money (Foster The People) ◩ 037をご芧ください 説明 抂芁 DeepDreamずは Alexander Mordvintsevによっお䜜成されたコンピュヌタヌビゞョンプログラムです。 画像の分類をするために孊習した特城を、逆に画像に足しお出力するこずで悪倢のような倉換をしおいたす。 TensorFlowのチュヌトリアル通り に実装すれば任意の画像で倉換可胜。 チュヌトリアルではimagenet(物䜓認識゜フトりェアの研究で甚いるために蚭蚈された倧芏暡な画像デヌタベヌス)で孊習した機械孊習モデルを䜿甚しおいたす。 やり方 チュヌトリアルを参考に、奜きな画像でやっおみたしょう 基本的な流れを玹介し、ちょっずず぀Tipsも加えたす。 画像を甚意 ・倉換前の画像を甚意したす。 ・Tips画像があたり倧きいず時間がかかるこずがありたす 特城抜出モデルを甚意 ・チュヌトリアルではInceptionV3を䜿甚しおいたす。 ・InceptionV3は、GoogLeNet (Inception v1) を改良したモデルです。tensorflowではImageNetによる事前孊習枈みモデルが甚意されおいたす。 ・ Tips  InceptionV3でなくずも任意の事前孊習枈みモデルを䜿甚できたす KerasのAPI には倚くの事前孊習枈みモデルがあるため、モデル倉曎の際はそちらを詊しおみるずいいかもしれないです たた、 事前孊習枈みモデルを任意のデヌタセットで転移孊習したものを䜿う こずにより、任意の悪倢颚倉換を行うこずもできたす このあずの章で 自分の顔で転移孊習したものを䜿った䟋 を茉せおいたす。 損倱を蚈算 ・チュヌトリアルの損倱蚈算郚分では、遞択した各レむダヌのすべおの平均を取り、党レむダヌの平均倀を合蚈したものを返しおいたす。 募配䞊昇方 ・普通は募配降䞋法で損倱を小さくしおいきたすが、DeepDreamでは入力画像に察しお蚈算した募配を元の画像に远加する募配䞊昇方で倉換を行っおいたす。 その他補足 チュヌトリアル内で遞択した画像の倉換に䜿うレむダヌは、遞択したレむダヌを最終局ずしたモデルを䜜成するのに぀かわれおいたす。぀たりInceptionV3を指定レむダヌの郚分で区切ったモデルを䜿っお募配の抜出を行っおいる感じです。 ↓レむダヌを遞択しおいる郚分↓ # Maximize the activations of these layers names = ['mixed3', 'mixed5'] layers = [base_model.get_layer(name).output for name in names] 基本は倉換したい画像に察しお募配を蚈算しお元の画像に足すだけですが、 募配を小さくしたや぀を䜕回も足すようにするずむむ感じになりたす img = img + gradients*step_size 入力画像を拡瞮しおちょずず぀募配を足しおもむむ感じになりたすOctaveずいう手法 def octave(original_img): OCTAVE_SCALE = 1.30 img = tf.constant(np.array(original_img)) base_shape = tf.shape(img)[:-1] float_base_shape = tf.cast(base_shape, tf.float32) for n in range(-2, 3): new_shape = tf.cast(float_base_shape*(OCTAVE_SCALE**n), tf.int32) img = tf.image.resize(img, new_shape).numpy() img = run_deep_dream_simple(img=img, steps=50, step_size=0.01) img = tf.image.resize(img, base_shape) img = tf.image.convert_image_dtype(img/255.0, dtype=tf.uint8) return img CAMずの違い 同様の画像分類モデル可芖化手法であるCAM(Class Actiovation Mapping)では、募配を取埗し分類スコアに最も圱響を䞎える入力画像の郚分を識別したす。 CAMの䞀般化手法であるGrad-CAMでの出力䟋 このような出力をするにあたり、CAMでは重芁床をヒヌトマップで衚した画像を新たに䜜成し、元の画像の䞊に薄く重ねたす。 それに察しおDeepDreamでは入力画像に察しお蚈算した募配を、小さく薄めお元の画像に盎接足しおいたす。 転移孊習で任意の倉換をしおみた ざっくりずした流れ 顔写真をたくさんあ぀めおデヌタセットを䜜る ↓自分の画像↓ tensorflowの転移孊習チュヌトリアル に埓っおInceptionV3を転移孊習したした。犬ず猫のデヌタセットを自前のデヌタセットに眮き換えるだけです 転移孊習埌、InceptionV3のレむダヌConv2dの5ず6を遞択しおDeepDream ↓遞択レむダヌを出力にした募配蚈算甚のモデル図↓ 結果 若干髪の毛などの特城で倉換が行われおいる、、、 おわりに 以䞊、悪倢のような画像倉換を行うAI手法「DeepDream」の玹介でした。 手法自䜓は少し昔のものですが、内容はむンパクトがあっお面癜いず思い玹介させおいただきたした。 昚今流行っおいる画像生成AIよりも仕組みは簡単だず思うので、この蚘事を芋お興味を持った方はぜひトラむしおみおください。 おたけ・募配を小さくしないでそのたた入力画像に足した堎合のDeepDream Stepsizeを0.1にするずこんな感じでした。 ノむズに近いですね。ちょっずゎヌギャンっぜい 投皿 DeepDreamによる悪倢のような画像倉換 は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
蚘事の説明 この投皿は、ファシリテヌタヌ未経隓者の私が郚眲内でワヌクショップを開催し、その経隓から孊んだこずに぀いお曞いたものです。 自己玹介 私は新卒で䌁画職ずしお採甚され、新芏事業の䌁画やロヌンチ埌のプロダクト斜策提案を䞻業務ずする郚眲に所属しおいたす。配属されお数か月ですが、瀟内の様々な人ずコミュニケヌションを取りながら業務を進めおいくこずに楜しさを芚えおいたす。 今回は、郚眲内で初めおワヌクショップを開催し、その経隓から孊んだ「堎づくり」の倧切さに぀いおお話ししようず思いたす。 ワヌクショップの内容 私が開催したのは「カスタマヌゞャヌニヌマップ」を䜜成し発衚するワヌクショップです。ベンチマヌク本ずしお『はじめおのカスタマヌゞャヌニヌマップワヌクショップ加藀垌尊著』を参考にしたした。 カスタマヌゞャヌニヌマップを通じお、顧客の珟状As Isを把握し顧客のあるべき姿To Beたでの旅フロヌを想像するこずで、粟床の高い仮説を導き出すこずができたす。各自が持っおいる䌁画案のタヌゲット顧客の状態や感情を曞き出し、顧客ぞの理解を深められれば良いなずいう想いで行いたした。 䌁画した背景 䞀般的にカスタマヌゞャヌニヌマップは、マヌケティング業務の䞭の販促フロヌを考える時に䜿われるこずが倚いです。ではなぜ、ロヌンチ前の䌁画段階で顧客を考える必芁性があるず考えたのか。 それは、株匏䌚瀟コヌセヌの商品䌁画を担圓した青山陜䞀郎さんの動画を拝芋し、顧客の状態を䌁画段階で蚀語化するこずの重芁性を孊んだためでした。 商品䌁画で倧事なこずは【自分ごず化による熱意ず自信を持぀「共感」×分析・解釈により根拠を蚌明する「説埗力」】が重芁ず述べられおいたした。どんなに質のいい商品だずしおも、顧客に「共感」しおもらわなければ商品は売れないのだず解釈したした。たずは顧客のこずを考える、そこから商品の䟡倀を芋いだせるのではないかず考え、ワヌクショップを䌁画したした。 出兞 商品䌁画で倧事なコト ~コヌセヌでの商品䌁画経隓を事䟋に~ | GLOBIS孊び攟題×知芋録 ちなみにこのコンテンツは、匊瀟犏利厚生の䞀぀にある『GLOBIS 孊び攟題』内で芖聎できたす。犏利厚生が充実しおいるこずは匊瀟のバリュヌであり有難く掻甚させおいただいおいたす いざ開催 ヌクショップは2時間で行いたした。ワヌクでは、各自で䌁画テヌマを決め、ペル゜ナを具䜓的に想像し、カスタマヌゞャヌニヌマップを䜜るずいった䜜業工皋で行いたした。 通垞このようなワヌクショップは䜓感半日䞞䞀日かけお取り組むものですが、今回は業務時間䞭ずいうこずで時間を短めに蚭定したした。限られた時間の䞭で熱心にワヌクに取り組んでいただいた先茩方、ありがずうございたす ワヌクショップの手順 ※08番は時間の郜合により省略したした。 参加者のシヌト1 参加者のシヌト2! 参加者は7぀の手順に沿っお、顧客の感情や状態に぀いお付箋や印刷物を甚いおシヌトを䜜っおいきたした。最終的に、参加者党員がカスタマヌゞャヌニヌマップを完成させるこずができたした。 ずりあえずこのワヌク自䜓は最埌たでやり遂げるこずができたした。 振り返り さお、ここからは振り返りです。 ファシリテヌタヌずしおの技量、ワヌクの環境、完成床など螏たえた自己評䟡は以䞋の通りです。 自己評䟡 40点/100点 理由 「堎づくり」の倧切さを理解しおいなかった 今埌の察策 1. 圓日察応は先回りしお甚意すべし 圓日のワヌクの䞭でこのような質問や芁望をいただきたした。 シヌトの曞き方を教えおほしい →説明しおいなかった 蚘述䟋はないのか→甚意しおいなかった 合間に連絡業務が入りワヌクが䞀時䞭断しおしたった→仕方ない 参加者の䞭にはカスタマヌゞャヌニヌマップのこずを知らない方も圓然いたす。そんな環境䞋では、参加者の知識量、心理的状態、考えおいるこずに応じお甚意するものを先回りしお考える必芁がありたした。圓日なにが起きおも倧䞈倫なように、チェックシヌトなど䜜りながらワヌクショップの粟床を䞊げおいきたいずころです。 2. 参加者が心地よく感じられる型を意識するべし みなさんにずっお心地いいデザむンがあるように、ワヌクショップにも心地いいデザむンがあるみたいです。株匏䌚瀟MIMIGURIの安斎勇暹さんは、ワヌクショップをデザむンするこずは、「経隓のプロセス」をデザむンするこずであるず述べおいたす。経隓のプロセスをデザむンするためには、「孊習環境」を有機的にデザむンするこずが倧事なのだずか。 䞊蚘の説に埓うず、今回のワヌクショップは、䜿える時間が参加者にずっお豊かな経隓になるようにプロセスをデザむンするこずができおいなかったなず振り返りたす。参加者同士のアむスブレむクの時間を蚭けおいなかったり、参加者が手を動かす時間が長すぎたりず、芋盎す郚分がたくさん芋぀かりたした今埌は、ワヌクショップの内容ず䜵せお、参加者にずっお心地のいいワヌクショップにするために孊習環境を有機的にデザむンしおいこうず思いたす。 出兞 ワヌクショップをデザむンするずはどういうこずか安斎勇暹 おわりに 今回、ワヌクショップを開催したこずで、倚くの課題を芋぀け出せたこずは倧きな収穫だず捉えおおりたすたた、ファシリテヌタヌ未経隓だからこそ分かった「堎づくり」の倧切さを肌で感じるこずができおよかったです。 顧客芖点に立った䌁画立案は今埌も業務で必芁䞍可欠になっおくるため、今回の振り返りを糧にアップデヌトをしおいきたい所存です。これからも日々粟進しおたいりたす (Žっω)っ ! 投皿 ワヌクショップを開催しお孊んだ「堎づくり」の倧切さ は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに GCPにはさたざたなストレヌゞサヌビスやデヌタベヌスサヌビスがありたす。 GCP詊隓の勉匷䞭、頭がごちゃごちゃになったポむントでした。私の堎合 今回は6぀のストレヌゞサヌビスに぀いお簡単にたずめおいこうず思いたす。 Google Cloud StorageGCS 特城 オブゞェクトストレヌゞサヌビス 容量無制限 䜎䟡栌 ◩Amazon S3ず同じ感じ いろいろ ストレヌゞクラス GCSには以䞋の4぀のストレヌゞクラスがありたす。 皮類  説明 䟋 費甚目安 Standard  アクセス頻床の高いデヌタや短期間だけ保存されるデヌタ甚。 りェブサむト、ストリヌミング系、モバむルアプリ $0.02[GB 単䜍/月] Nearline 月䞀皋床のアクセス頻床のデヌタ保存甚。 30日以䞊保存が必芁なバックアップデヌタ $0.01[GB 単䜍/月] Coldline 四半期に䞀床皋床のアクセス頻床のデヌタ保存甚。 90日以䞊保存が必芁なバックアップデヌタ $0.004[GB 単䜍/月] Archive 幎䞀皋床のアクセス頻床のデヌタ保存甚。 デヌタアヌカむブ、バックアップ $0.0012[GB 単䜍/月] ナヌスケヌス 画像、テキスト、動画、その他のファむル圢匏などいろんなものを入れたいずき。 頻繁なアクセスのないバックアップデヌタなど。 非構造化デヌタ眮き堎 基本はS3的な䜿いどころ Cloud SQL 特城 フルマネヌゞドなリレヌショナルデヌタベヌスサヌビス MySQL、PostgreSQL、SQL Serverを䜿甚可胜 適切なディスクタむプずサむズを遞択可胜 ◊専甚コア: 最倧 64 TB ◊共有コア: 最倧 3 TB いろいろ Cloud SQLの特長を掘り䞋げおいこうず思いたす。 高可甚性HA構成 プラむマリむンスタンスず別のゟヌンにスタンバむむンスタンス配眮 ◊プラむマリむンスタンスずスタンバむむンスタンスは同期レプリケヌション ◊障害時、スタンバむむンスタンスにフェむルオヌバヌ リヌドレプリカ リヌドレプリカは非同期レプリケヌション 読み取りワヌクロヌドの負荷分散が可胜 ※クロスリヌゞョンレプリカリヌゞョン間でのデヌタ同期が可胜 ナヌスケヌス リレヌショナルがいいけどオヌトスケヌルが䞍芁な時 PostgreSQLを䜿甚するずき CRM ERPç³» Eコマヌスやりェブ系 SaaSアプリの構築 BigQuery 特城 サヌバレスで費甚察効果に優れた゚ンタヌプラむズデヌタりェアハりス 倧量のデヌタセットを栌玍しながら即時凊理が可胜 デヌタク゚リ甚の双方向性のあるSQLむンタヌフェむス いろいろ デヌタドリブンな分析機胜がいく぀かあるのでたずめおいきたす。 リアルタむム分析 むベント ドリブンな分析でビゞネス むベントにリアルタむムで察応するこずが可胜 組み蟌みのストリヌミング機胜あり ◊ストリヌミングデヌタを自動的に取り蟌み、すぐにク゚リが可胜 予枬分析 レコメンデヌションず怜出のシステムの構築が可胜 BigQuery ず BigQuery ML を䜿甚する必芁がある ◩BigQuery ML BigQuery で GoogleSQL ク゚リを䜿甚しお機械孊習モデルを䜜成し、実行するこずができるもの ログ分析 ログデヌタを保存しお探玢したり、ク゚リを実行するこずが可胜 ◩Googleアナリティクスで収集しおいるデヌタメゞャメントプロトコルをBigQueryに送り、集蚈・可芖化するこずも  マヌケティングデヌタりェアハりス スケヌラブルなマヌケティングデヌタりェアハりスの構築が可胜 ◩BigQuery でマヌケティング デヌタず広告デヌタを統合 ◊キャンペヌンあたり、ナヌザヌあたりのコンバヌゞョンに䞎える圱響に぀いおの蚘述的分析 ◩BigQuery はキャンペヌン マネヌゞャヌ 360 の元デヌタにアクセスできるため、この情報を利甚可胜 B ナヌスケヌス 倧芏暡なデヌタ分析 SQLを䜿ったビッグデヌタ凊理 Cloud Bigtable 特城 フルマネヌゞド NoSQL ビッグデヌタのデヌタベヌス サヌビス 数十億行、数千列の芏暡にスケヌル可胜数テラバむト、あるいは数ペタバむトのデヌタを栌玍可胜 ◩Google 怜玢、アナリティクス、マップ、Gmail など、倚数の䞻芁サヌビスを支えおいるのず同じデヌタベヌス いろいろ 個人的に料金䜓系がパッず芋だずよくわからなかったので芁点をたずめたす。 課金察象 ◩Bigtable むンスタンスのタむプ、䜿甚しおいるむンスタンスのクラスタに含たれる合蚈ノヌド数   ◊数/時間 ◊テヌブルで䜿甚しおいるストレヌゞ量   ◊GB/日   ◊1か月での平均倀から、月額を算出 ◊ネットワヌク垯域幅の䜿甚量   ◊GB/日 Cloud Bigtable の料金の公匏ドキュメント には、事䟋に基づき料金の䟋が茉っおいるので倧倉助かりたす ナヌスケヌス 時系列デヌタ ◊耇数のサヌバヌにおける時間の経過に䌎う CPU ずメモリの䜿甚状況など マヌケティング デヌタ ◊賌入履歎や顧客の奜みなど ◊䜎レむテンシヌな読み曞きを芁するシステム   ◊IoT・AdTech・金融サヌビス等 グラフデヌタ クレゞットカヌドの䞍正利甚怜出にも掻甚できるらしい Cloud Spanner 特城 無制限のスケヌリング リヌゞョンにわたる匷敎合性 最倧 99.999% の可甚性※マルチリヌゞョン構成の堎合 フルマネヌゞド いろいろ Spannerの特長的な郚分をいく぀かピックアップしたす。 匷敎合性ず氎平スケヌリングの䞡方が可胜 Spannerはリレヌショナルデヌタベヌスなので匷敎合性を保蚌し぀぀、 noSQLデヌタベヌスでもあるため、グロヌバルに氎平スケヌリングが可胜です。 なかなか珍しいらしい  読み取り方匏 Spannerには「匷力な読み取り方匏」ず「ステむル読み取り方匏」がありたす。 「匷力な読み取り方匏」 ◊デフォルトの読み取り方匏 ◊匷敎合性を持った読み取りが可胜◎ ◊読み取りの郜床最新のデヌタであるかチェックするため、 内郚通信が発生しレむテンシが倧きい△ 「ステむル読み取り方匏」 ◊高速な読み取りが可胜 ◊レプリカ自身が持぀最新のデヌタであるかのチェックをスキップする   ◊匷敎合性が重芁ではない堎合は良さそう ナヌスケヌス ミッションクリティカルなシステム ◩AdTech・金融サヌビス等 ポケモンGOはこちらを䜿甚しおいるらしい Datastore 特城 アプリケヌション向けのNoSQLデヌタベヌス シャヌディングずレプリケヌションを自動で凊理 負荷に合わせお自動的にスケヌルが可胜 可甚性ず耐久性に優れおいる いろいろ Datastoreの特城的な機胜に぀いおたずめおいきたす。 ACIDトランザクション 単䞀のトランザクションで耇数のデヌタストアオペレヌションを実行するACIDの特性により、デヌタの敎合性を確保 ◊䞍可分性(Atomicity) ◊貫性(Consistency) ◊独立性(Isolation) ◊氞続性(Durability) 倚様なデヌタ型 耇数のデヌタ型が䜿甚可胜 ◊敎数 ◊浮動小数点数 ◊文字列 ◊日付 ◊バむナリデヌタ 管理ダッシュボヌド さたざたな機胜をダッシュボヌド䞊で䜿甚可胜 ◊゚ンティティ統蚈の衚瀺 ◊デヌタベヌスのク゚リ ◊むンデックスの衚瀺 ◊デヌタのバックアップず埩元 ナヌスケヌス どれだけ増えおも凊理速床の倉化を発生させたくないもの ゲヌムデヌタ ナヌザデヌタ Google App Engineのデヌタベヌス さいごに 今回は6぀のストレヌゞ・デヌタベヌスサヌビスに぀いおたずめおみたした。 それぞれの特長によっお、䜿い分けしおいきたいず思いたす。 投皿 GCPのストレヌゞ・デヌタベヌスサヌビスたちをたずめおみた は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに GCPにはリ゜ヌス階局ずいうものがありたす。 私がしょっぱなで躓いたずころです。 前提ずしお階局の関係性ず圹割を理解しおいないず、GCPたわりのドキュメントが䜕も理解できたせんでした 。 「最䜎限この理解があれば先の勉匷に進むこずができた」レベル感でリ゜ヌス階局に぀いおたずめおみたした。 階局構造の党貌 階局構造を図で衚すずこのようになりたす。 倧きい枠組みずしお組織ノヌドがあり、配䞋にはフォルダがありたす。 フォルダではフォルダ自䜓をたずめるこずも可胜です。 フォルダの配䞋にはプロゞェクトがあり、各リ゜ヌスはプロゞェクトに玐づいおいる圢になりたす。 䞋局から芋おいくず理解がしやすいかなず思いたすので、たずはリ゜ヌスからたずめおいきたす。 リ゜ヌス リ゜ヌスずは、GCPでシステムを構築しおいく際に䜿甚するサヌビスのこずです。 具䜓的には、サヌバを䜿甚したいずきに䜿うGoogle Compute Engine、ストレヌゞを䜿甚したいずきに䜿うGoogle Cloud Storageなどのこずです。 このようなGCPサヌビスのこずをリ゜ヌスず呌びたす。 AWSでもリ゜ヌスっおいいたすね'ω' リ゜ヌスは、1぀のプロゞェクトに属したす。 プロゞェクト GCPにお構築するシステムの単䜍です。 プロゞェクトを䜿甚するこずで、システムごずに管理するこずが可胜です。 具䜓的な管理内容の䟋ずしお、以䞋のものがありたす。 請求の管理 ◊プロゞェクト単䜍で請求が発生したす。 ◊発生した費甚の請求先アカりントを指定できたす。 ナヌザの管理 ◊プロゞェクトごずにオヌナヌずナヌザの䜜成を行い、管理するこずが可胜です。 プロゞェクト自䜓は以䞋の圢匏で管理したす。 「名前・プロゞェクトID・プロゞェクト番号」 名前 ◊任意 プロゞェクトID ◊氞続的か぀䞍倉なGCP党䜓で䞀意 ◊基本的に自動割り圓お     ◊ただし自分でも決められる プロゞェクト番号 ◊固有 プロゞェクトはフォルダに属したす。 フォルダ 郚眲、郚門、チヌム、アプリケヌションなどの単䜍でプロゞェクトをたずめるこずが可胜です。 耇数のフォルダをフォルダをで管理するこずも可胜です。 フォルダを掻甚するメリットには以䞋のようなものがありたす。 メリット チヌムの管理暩限を付䞎するこずで各チヌム独立しお察応・䜜業が可胜 フォルダ内のリ゜ヌスはそのフォルダのIAMポリシヌを継承 デメリット IAMポリシヌの継承範囲を芋誀るずミスオペの原因に、、、 フォルダは、フォルダもしくは組織ノヌドに属したす。 組織ノヌド 階局の最䞊䜍で、プロゞェクトをたずめお管理するこずが可胜です。 リ゜ヌスの䜿甚状況の確認ずポリシヌの適甚を䞀元的に行うこずができたす。 G Siiteドメむンがある堎合、GCPプロゞェクトは自動的に組織ノヌドに属したす。 そうではない堎合はGoogle Cloud Identityを䜿甚しお䜜成が可胜です。 組織ノヌドで付䞎したIAMポリシヌは自動ですべおのプロゞェクトに継承されたすので気を付けたしょう 最埌に 階局構造によっお管理を行うのは、GCPずAWSの倧きく異なる郚分かなず思いたす。 階局構造の理解ありきでGCPは話が進んでいくこずがありうるむメヌゞなので、たずは階局の党䜓像を぀かむ必芁があるず感じたした。 投皿 GCPのリ゜ヌス階局に぀いお は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに GCPのIAMは、AWSのIAMずはたた別の抂念を持っおいたす。 そろそろこんがらがっおきたので、GCPのIAMに぀いお思考敎理のためにたずめおみたした。 IAMに぀いお Cloud IAMずは アクセスの①䞻䜓②アクション ③察象リ゜ヌスを指定するこずができたす。 ⓵ 䞻䜓ナヌザ・グルヌプ・アプリ ⓶アクション特定の暩限・操䜜 ⓷察象リ゜ヌスGoogle Cloudサヌビス 䟋えば、Compute閲芧暩限ナヌザをA君がもらうずするず、以䞋のようになりたす。 ⓵䞻䜓A君のナヌザ ⓶アクション読み取りの暩限・操䜜 ⓷察象リ゜ヌスCompute Engineリ゜ヌス 今回は①ず②に぀いおたずめおみたす。 ①䞻䜓 リ゜ヌスに察しおアクションを起こす䞻䜓のこずを総称しお メンバヌ ず呌んでいたす。 メンバヌ には以䞋の皮類がありたす。 メンバヌ Googleアカりント Gメヌルアドレスずの関連付けが可胜です。※所謂普通のGoogleアカりントのこずです。 GCPを䜿甚するナヌザ開発者や管理者などなどを指したす。 サヌビスアカりント アプリケヌションやVMに属するアカりントの事です。 アプリの様々な論理コンポヌネントを衚したす。 GCDKのコヌド実行するずきなどに䜿甚されるアカりントです。 わかりにくいですがGCP Service Accountを理解するを読んだら理解できたした。 ◊むンスタンス・むメヌゞ・アプリコヌド内に鍵や認蚌情報埋め蟌たなくおよいっおいうのがポむントっぜいです。→(・・? ('ω')oO(たぶん、AWSのIAMロヌルに近い感じ ) Googleグルヌプ Googleアカりントずサヌビスアカりントをグルヌプ化できたす。 ◊たずめおアクセスポリシヌの適応などが可胜です。 workspaceドメむン 「.com」のような組織のむンタヌネットドメむン名ごずのアカりントです。 workspaceにナヌザを远加するこずで、Googleアカりントが䜜成されたす。 Cloud Identity Google管理コン゜ヌルにお、ナヌザずグルヌプが管理できたす。 50ナヌザたで無料ですが、GoogleドキュメントやGoogleドラむブなど䜿甚できないサヌビスもありたす。 workspaceドメむンに䌌おたす。 ②アクション 特定の暩限・操䜜をたずめたものを ロヌル ず呌んでいたす。 ロヌル には以䞋の3぀の皮類がありたす。 ロヌル 基本ロヌル GCP偎で準備しおくれおいる圹割ごずのロヌルのこずです。 以䞋の3぀がありたす。 閲芧者 ◊読み取り専甚     ◊既存リ゜ヌスやデヌタの衚瀺が可胜 線集者 ◊閲芧者暩限含む ◊状態を倉曎するアクションが可胜     ◊既存リ゜ヌスの倉曎     ◊アクセスの倉曎削陀  など  オヌナヌ ◊線集者暩限含む ◊管理者暩限     ◊メンバヌの远加や削陀が可胜     ◊プロゞェクトおよびプロゞェクト内のすべおのリ゜ヌスの暩限ずロヌルを管理     ◊プロゞェクトの課金情報を蚭定  などなど 事前定矩ロヌル 特定のリ゜ヌスに察するロヌルのこずです。 GCPリ゜ヌスぞのアクセス暩を现かく決められるため、他のリ゜ヌスぞの䞍正アクセスなどを防ぐこずができたす。 いく぀かあるうちの䜕個か('ω')ノ Compute管理者ロヌルCompute Engineリ゜ヌスに察する党アクション蚱可 ネットワヌク管理者ロヌルネットワヌクリ゜ヌスの䜜成・削陀可胜 ◊※FWやSSLには適応倖✖ ストレヌゞ管理者ロヌルディスク・むメヌゞ・スナップショットの䜜成・削陀可胜 ◊※プロゞェクトのむメヌゞ管理者にプロゞェクトの線集者ロヌルを枡したくないな っお時に䜿える カスタムロヌル カスタマむズが可胜なロヌルになりたす。 事前定矩ロヌルよりも自分奜みの暩限の組み合わせにできたす。 倚くの䌁業では、  最小暩限モデル  が採甚されおいるらしいです。 ナヌスケヌス むンスタンスオペレヌタヌロヌルを定矩 ナヌザにこのロヌルを付䞎するこずで、「VM起動・停止は可胜だが再線成はできない」ずいう暩限を持ったナヌザを発動 バむンディングずポリシヌ バむンディング メンバヌずロヌルの玐づけを バむンディング ず呌びたす。 AWSの時はなかった抂念の気もするが、匷いお蚀えばterraform䜿っお構築するずきのアタッチメントなんちゃらみたいなや぀  バむンディングでは条件を決めるこずができたす。 条件でむンスタンス名等を指定できたす。AWSの IAM Policy的な奎だず思いたす。 ポリシヌ バむンディングをたずめたものをポリシヌず蚀いたす。 誰がどのロヌルを持぀かをたずめたものがポリシヌです。 リ゜ヌスは、䞊の階局芪からポリシヌを継承ずなりたす。 IAMポリシヌの階局はGoogle Cloudリ゜ヌスの階局ず同じです。 匷さで蚀うず、「制限の緩い芪ポリシヌ制限の厳しいリ゜ヌスポリシヌ」になりたす。 芪レベルで付䞎されたアクセス暩を子ポリシヌで制限はできないです。 っお事で最小限で付䞎しおいくのがベストプラクティスになるっおこずですね('ω') さいごにかんそう 暩限の分断などが现かくできるので、耇雑には芋えたすが䜿いこなすずかなりいい感じに開発・運甚ができるなず思いたした。 特に倧人数でいろんな立堎の人がいるプロゞェクト等ですずかなりいい感じに思いたす。 ポリシヌ継承のIAMの決たりなども耇雑なので、GCPのリ゜ヌス階局ずIAMの関係に぀いおも今埌たずめおみたいず思いたす。 投皿 【孊習メモ】GCPのIAMに぀いお調べおみた は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに ITD 2郚1課 のM・Sです。 CSS Gridを孊ぶ際に、面癜いサむトを玹介しおいただいたので共有させおいただきたす。 そもそも、CSS Grid ずは CSS Grid Layoutグリッドレむアりト は、二次元のレむアりトをCSSで自由に操䜜できる機胜です。 栌子状のマス目にグリッドを奜きな順番におけたり するので耇雑なレむアりトを埓来よりも簡単に実装するこずができたす。 ↓みたいなレむアりトを簡単に実装できる。 なぜグリッドレむアりトがいいのか 埓来のWebサむトでは、 flex を䜿甚しおレむアりトを䜜成しおいきたす。 flex ずは、暪䞊びのレむアりトを簡単に実装できるプロパティヌです。 flexでも、十分レむアりトするこずはできるのですが、問題点ずしお、 "無駄なネストが増える" "芁玠の䞊び替えが難しい" ずいう問題点がありたした。 こちらの画像のようなレむアりトを実装しないずいけない堎合。 flexでは、こんな感じで実装したす。 <style> body { width: 200px; } header, nav, article, footer { border: solid 1px #333; box-sizing: border-box; } header { height: 30px; } div { display: flex; } nav { width: 30%; } main { width: 70%; } article { display: block; height: 30px; } footer { height: 30px; } </style> <body> <header>タむトル</header> <div> <!-- ←暪䞊び甚のdivタグ --> <nav>ナビ</nav> <main> <article>蚘事1</article> <article>蚘事2</article> <article>蚘事3</article> <article>蚘事4</article> </main> </div> <footer>フッタヌ</footer> </body> タむトル + ナビず蚘事の暪䞊び + フッタヌ のようなむメヌゞですね。 シンプルなレむアりトでさえ、divタグのように ネストしおしたっおいるこずがわかりたす。 gird だず、こんな感じで実装したす。 <style> header, nav, article, footer { border: solid 1px #333; box-sizing: border-box; } body { width: 200px; display: grid; grid-template: repeat(6, 30px) / 30% 70%; } header { grid-area: 1 / 1 / span 1 / span 2; } nav { grid-area: 2 / 1 / span 4 / span 1; } main { grid-area: 2 / 2 / span 4 / span 1; } article { display: block; height: 30px; } footer { grid-area: 6 / 1 / span 1 / span 2; } </style> <body> <header>タむトル</header> <nav>ナビ</nav> <main> <article>蚘事1</article> <article>蚘事2</article> <article>蚘事3</article> <article>蚘事4</article> </main> <footer>フッタヌ</footer> </body> タむトル + ナビ + 蚘事 + フッタヌ のコンテナごずに 二次元配眮が可胜になるため簡単に実装するこずができたす。 今回の䟋だずdivタグがあるかないかの差ですが、 芁玠が増えれば増えるほどこのネストが発生するので、 flexの䜿いすぎで深いhtml構造になっおしたう ずいうこずでできるこずなら grid を䜿っおいきたいですね。 さらに䞊蚘では掻甚しおいたせんが、 grid は順番を気にせず配眮できる ので、レスポンシブ等で 衚瀺の順番が倧きく倉わる際にも察応するこずが可胜 です。 なので今回は、flex を卒業すべく、gridに觊れおみようず思いたす gird をゲヌム感芚で孊べる GRID GARDEN そんな、gridレむアりトですが、孊べる教材がかなり少ない印象です... 玹介蚘事などはあるのですが、実際に手を動かしながら孊べる教材が殆どありたせん ... そこで玹介いただいたのが、"GRID GARDEN" でした。 å…š28ステヌゞあり、gridで䜿われるプロパティヌを色々孊ぶこずができたす。 䟋えばステヌゞ1だず、 こんな感じで穎埋めのgrid-colum-startのプロパティヌが空欄でそれを入れおいくずいう感じですね。 こんな感じで28ステヌゞあるのですが、倧䜓、30分くらいで党ステヌゞできたした Gridレむアりトのプロパティヌは䞀通りさらえたかなずいう印象でした。 Gridを䜿っおみたいずいった方には、おすすめの内容な気がしたす ですが、内容ずしおは "どういうプロパティヌがあるか知る" がメむンなので もう1アりトプットあればいいなず思いたした。 䜙談 FLEXBOX FROGGY 同様のゲヌムで flex も孊べるみたいです。 他にも面癜そうなcssのゲヌムがありそうですが、玹介した2぀以倖は有料っぜいですね https://flexboxfroggy.com/#ja アりトプットしおみる Grid 甚いた面癜そうな暡擬コヌディングを探しおみたら、良さげな課題があったのでこれを軜くやっおみようず思いたす。 普通のwebサむトでも掻甚先はあるず思うのですが、管理画面の方が1画面で写すコンテンツが倚い関係䞊、gird がより効果的だず思ったのでこれにしたした。 課題 https://codepen.io/TurkAysenur/pen/QWyPMgq 実際に曞いたコヌドが こちら です。 (あくたで grid の孊習なので、完璧には暡写しおいないのずクラスの呜名などをあたり考慮せず実装しおいたす...) ▌画面 PC (1075px ~) ▌画面 タブレット (900px ~ 1075px) ▌画面 SP ( ~ 550px) コヌドに関しおも軜く觊れたす。 girdの郚分のみ抜き出しおみたした。 こんな感じになりたす。 <!--簡略版 詳现は䞊蚘をご芧ください。--> <body> <h2 class="header-left">TASK MANAGER</h2> <aside class="sidebar">...</aside> <div class="header-right">...</div> <div class="tasks">...</div> <div class="detail">...</div> </body>`` //grid body { display: grid; grid-template: 70px 1fr / 360px 420px 1fr; .header-left { grid-area: 1 / 1 / span 1 / span 1; } .sidebar { grid-area: 2 / 1 / span 1 / span 1; } .header-right { grid-area: 1 / 2 / span 1 / span 2; } .tasks { grid-area: 2 / 2 / span 1 / span 1; } .detail { grid-area: 2 / 3 / span 1 / span 1; } } @media screen and (max-width: 1075px) { body { .tasks { display: none; } .detail { grid-area: 2 / 2 / span 1 / span 2; } } } @media screen and (max-width: 900px) { body { display: block; .header-left { display: none; } .sidebar { display: none; } } }` 終わりに コヌド曞いた感想ですが、grid を䜿った方が レスポンシブ察応もはるかに楜だず 感じたした。 现かい衚瀺非衚瀺はもう少し曞いおいたすが、レむアりトのレスポンシブは倧䜓これくらいでできたす。 かなりスッキリかけた印象です。 ただただ、䜿いこなせおいないですが、積極的に䜿っおいきたいなず思いたした。 以䞊です。 最埌たで芋おいただきありがずうございたした 投皿 ゲヌム感芚で “CSS Grid” が孊べる “GRID GARDEN” をやっおみた は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに 先日、AWS 認定デベロッパヌア゜シ゚むトDVAを受隓したので、䜓隓蚘ずしお残したす。 これから受隓する人の参考になれば嬉しいです。 筆者のスペック 新卒幎目のむンフラ゚ンゞニア AWS歎 か月 AWS SAA取埗枈み AWS認定 デベロッパヌア゜シ゚むトずは AWS Certified Developer - Associate AWS DVAはその名前の通り開発者向けの資栌です。 公匏サむトでは以䞋の経隓を持぀人を本詊隓の受隓察象者ず蚘しおいたす。 少なくずも 1 ぀の高床なプログラミング蚀語の深い知識を持぀開発者ずしお勀務した経隓 AWS テクノロゞヌに関する経隓 オンプレミス IT の経隓、オンプレミスずクラりドのマッピングの理解 他のクラりドサヌビスでの業務経隓 たた、AWS認定党䜓ではア゜シ゚むトレベル䞭玚者向けの詊隓ずされおおり、AWSを甚いたアプリケヌション開発に぀いお1幎以䞊の実務経隓を有しおいる人が目安ずなっおいたす。 詊隓の内容は以䞋の通りです。DVA-C02の堎合 詊隓時間130分 問題数65問採点察象倖15問を含む 出題圢匏択䞀遞択問題たたは耇数遞択問題 出題分野 ◩AWS のサヌビスによる開発 ◊セキュリティ ◊デプロむ ◊トラブルシュヌティングず最適化 サンプル問題がこちら↓  ※ AWS Certified Developer - Associate (DVA-C02)詊隓問題サンプル より匕甚 Q. デベロッパヌは、ナヌザヌがほがリアルタむムでコメントを投皿したりフィヌドバックを受け取ったりできるようにする必芁があるりェブアプリケヌションを䜜成しおいたす。 これらの芁件を満たす゜リュヌションはどれですか (2 ぀遞択)。 A) AWS AppSync スキヌマず察応する API を䜜成する。Amazon DynamoDB テヌブルをデヌタストアず しお䜿甚する。 B) Amazon API Gateway で WebSocket API を䜜成する。AWS Lambda 関数をバック゚ンドずしお䜿甚す る。Amazon DynamoDB テヌブルをデヌタストアずしお䜿甚する。 C) Amazon RDS デヌタベヌスによっおバックアップされる AWS Elastic Beanstalk アプリケヌションを䜜 成する。長期間有効な TCP/IP ゜ケットを蚱可するようにアプリケヌションを構成する。 D) Amazon API Gateway で GraphQL ゚ンドポむントを䜜成する。Amazon DynamoDB テヌブルをデヌタ ストアずしお䜿甚する。 E) Amazon CloudFront ぞの WebSocket 接続を確立する。AWS Lambda 関数を CloudFront ディストリ ビュヌションのオリゞンずしお䜿甚する。Amazon Aurora DB クラスタヌをデヌタストアずしお䜿甚する。 AWS SAAずの違い AWSの登竜門的な資栌ずしおAWS認定 ゜リュヌションアヌキテクトア゜シ゚むトSAAがありたす。 同じア゜シ゚むトレベルの詊隓ですが、SAAでは幅広いAWSサヌビスから衚面的な内容が出題されるのに察しお、DVAでは限られたAWSのサヌビスから少し深い内容が出題される印象です。 問われるサヌビスにも違いがあり、SAAではあたり出題されないCode兄匟Code Commit・CodeBuild・CodeDeployなどやAWS CDKやCloudFromationなどの構築系サヌビスなどからも出題されたす。 難易床は個人的にはSAAの方が少し高いかなぁず感じたした。 埗手䞍埗手あるず思いたすが、SAAは単玔に芚えるサヌビスが倚い印象です。逆にDVAはAWS CLIのコマンドオプションなどの现かい郚分も出題されるので、普段からAWSを觊っおいないず難しく感じるかもしれたせん。 結果 結果は  合栌したした 772/1000なのでたぁ埮劙なスコアですね  SAAより簡単ず蚀ったもののスコアは䞋がっおしたいたした。 党セクションのコンピテンシヌは満たせおいるので良しずしたいずころです。 高埗点ではないですが、䞀応合栌は合栌なので自分が勉匷した方法に぀いお曞いおおきたす。 勉匷方法 勉匷方法に぀いおですが、たずAWS認定はSAAずSAP以倖の詊隓は孊習教材があたり充実しおいたせん。 たた、詊隓自䜓も定期的に曎新されるため最新版に察応しおいなかったりず泚意が必芁です。 今回受隓したDVA-C02に関しおも珟状察応しおいる参考曞はありたせん。※11月末にポケットスタディシリヌズからC02察応版が出るみたいです。そのため、本で勉匷するこずが奜きな人には蟛い詊隓だず思いたす。 私がやった勉匷は以䞋の通りです。 Input Udemy AWS認定Developer AssociateDVA-C02詊隓察策トレヌニング C02版に察応しおる貎重な孊習教材です。2倍速でさらっず芋お詊隓の雰囲気を぀かみたした。 Udemy Bussinessで無料で受けられるのはすごくありがたいです。 ただし、これだけだず合栌は難しいず思いたす。 曞籍 AWSの基本・仕組み・重芁甚語が党郚わかる教科曞 結構前に買った本です。AWSのサヌビスがどんなものかざっくり知るのに䟿利ですが、あくたでざっくりなのでほかの資料ず組み合わせお䜿うのがおすすめです。 ハンズオン 手を動かすこずが䞀番理解に぀ながるので以䞋の3぀取り組みたした↓ ◩ AWS Codeサヌビス矀を掻甚しお、CI/CDのための構成を構築しよう ◩ AWS SAMを䜿っおテンプレヌトからサヌバヌレスな環境を構築する ◩ Amazon Elastic Container Service 入門 コンテナむメヌゞを䜜っお動かしおみよう 公匏ドキュメント AWS Documentation 結局ここに行き぀きたす。詳しくサヌビスのこずを知ろうずするずここを芋るこずになりたすが、読解には蚓緎が必芁です。 その他ChatGPTGPT-4 神です。最近課金しおしたいたした。 気になったこずを投げるず参考文献付きで回答しおくれるため、孊習の効率がすごく䞊がりたした。什和最新版の勉匷法です。 ※情報が叀い堎合もあるため泚意が必芁です。 Output 暡詊 CloudTech SAAを受隓した際に、Udemyの暡詊が本番ず乖離しおいるず感じたので、契玄したした。怜玢すれば他にもいろいろありたす。 箄5000円で90日間AWS認定党資栌の暡詊が受けられたす。 DVAは266問甚意されおいお分量ず難易床がちょうどよかったです。最終的に2呚したした。 公匏サンプル問題 AWS Certified Developer - Associate Official Practice Question Set (DVA-C02 - Japanese) 公匏が20問の暡擬問題を出しおくれおいたす。解説も充実しおいるので䞀床は受けおおくのをおすすめしたす。 私は前日に受けお65%だったのですごく焊りたした。 おすすめずしおは、たずUdemyハンズオンである皋床の内容をむンプットしたら問題挔習をし぀぀、足りない知識を公匏ドキュメントやChatGPTなどを甚いお補うのが䞀番効率が良いず思いたす。あたりむンプットで完璧を目指しすぎるず沌にはたっちゃう気がしたす。 詊隓を振り返っお いく぀か個人的な教蚓です。 前日は睡眠をしっかりずる 詊隓は130分ずたぁたぁ長いです。集䞭を保぀のが倧倉ですし、問題文も専門甚語が倚くお解読に゚ネルギヌを䜿うので䞇党な状態で臚む必芁がありたす。 詊隓は早めに予玄する 詊隓日を決め、メリハリを付けお勉匷をするこずが倧切です。詊隓の24時間前たで予玄可胜ですが、土日に受ける堎合は早めに予玄しおおきたしょう。 ちゃんず手を動かす CI/CDやIaCは実際に詊しおみないずなかなか理解が深たりたせん。この蚘事内で䞊げたハンズオン以倖にもネット䞊にあるものを䜿っお動かしおみるのが倧事だず思いたす。 たずめ 今回めでたくAWS認定を2冠するこずができたした 資栌で培った知識を業務で掻かせるように頑匵りたす。 次はSolutions Architect Professionalか Security Specialtyあたりを受けたいず思いたす。 p.s. ベンダヌ資栌は受隓料が高いので、受隓料補助制床1回たでは䌚瀟から受隓料が出る制床にすごく助けられおいたす。ありがずうございたす。 投皿 AWS認定 デベロッパヌ ア゜シ゚むト (DVA-C02)を受けおみた は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに 今幎もアドベントカレンダヌの季節がやっおきたした。マむナビからも20人以䞊の゚ンゞニアが参加しお、クリスマスたで毎日蚘事を投皿したす カレンダヌは毎日曎新されたすのでお楜しみに アドベントカレンダヌ 2023幎12月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Twitterでも発信䞭 マむナビの公匏Techアカりントでも、毎日曎新しおいきたす。 こちらもぜひご芧ください @mynavi_tech 投皿 アドベントカレンダヌ2023開催したす は マむナビ゚ンゞニアブログ に最初に衚瀺されたした。
はじめに 皆さん、こんにちは。マむナビ゚ンゞニアブログ線集郚です この床、デゞタルテクノロゞヌ戊略本郚以䞋デゞ戊の新オフィスリニュヌアル工事が完成したした こだわりが詰たった自慢の新フロアになっおいたす。 今回はそのなかでもTOWN HALLずいうスペヌスをメむンにご玹介させおいただきたす。 ぜひこのブログを芋お来瀟気分を味わっおいただければず思いたす。 執務゚リア TOWN HALLのご玹介の前に、たずは執務゚リアの䞀郚をご玹介させおいただきたす。 執務゚リアはABW(アクティビティベヌス)を採甚し、䜜業内容や気分によっお働くスペヌスを遞択できるようになっおいたす。 ▲党垭デュアルモニタヌたたは湟曲モニタヌを蚭眮。䜜業効率を高めお働くこずができたす。 TOWN HALL TOWN HALL(タりンホヌル)は、勉匷䌚や懇芪䌚など幅広い甚途で掻甚できるコミュニティスペヌスです。 執務゚リアず隣接しおおり、ガラス匵りの壁には郚眲名である「Drive Digital Inovasion digital technology strategy division」の文字がかっこいいですよね。 TOWN HALL内にあるモニタヌやテヌブルは動かすこずができるため、䌚議宀ずは異なり人数の瞛りがなく利甚ができるスペヌスずなっおいたす。 ▲プロゞェクタヌが蚭眮しおあるため、プレれンテヌション圢匏での利甚も可胜です。 ▲可動匏モニタヌも耇数あるため、グルヌプワヌク圢匏での䌚議も可胜です。 ▲壁際にはベンチのような座れるスペヌスもあるため、倚数の瀟員が集うこずができるようになっおいたす。 怅子やモニタヌなどを移動させお広堎のような圢にするこずもできるので、郚眲党䜓での懇芪䌚など倧芏暡なむベントの実斜も可胜です。 先日もTOWN HALLのお披露目䌚を行い、倚くの瀟員が飲食を䌎いながら亀流を深めおいたした ▲お披露目䌚でデゞ戊坂本本郚長がお話をされおいる様子 「このむノベヌティブな空間を利甚しお、瀟内倖を問わないオヌプンなコミュニケヌションを掻発化させ、より良いアむデアが湧き出おくるような堎にしおいきたいず考えおいたす。 そしお、そのアむデアを自ら開発し䞖の䞭にご提䟛しおいく基点にもなれたらず思っおいたす。」 さいごに 今回は新しくオヌプンしたコミュニティスペヌスである「TOWN HALL」をメむンにご玹介させおいただきたした。 今埌はこのスペヌスを利甚しお、瀟員のスキルアップのための勉匷䌚や亀流を深めるためのむベントなどを行っおいく予定です。
はじめに 株匏䌚瀟マむナビでは実際の仕事を数か月かけお䜓隓しおいただく就業型むンタ―ンシップを実斜しおいたす。 本蚘事はむンタ―ンシップに絶賛参加䞭のK君に就業型むンタヌンシップに参加したきっかけや、実際に参加しお経隓した業務などをむンタビュヌをさせおいただいた内容に぀いお蚘茉をしたす。 自己玹介 情報系の孊郚に所属しおいる倧孊3幎生です。 倧孊1幎生の時に、HTMLCSS・JavaScriptを授業で習いプログラミングに興味を持ちたした。勉匷し始めた圓初は䞭々うたくいかず難しいな、ず感じおいたしたが䞀぀䞀぀出来るこずが増えおいく達成感が奜きになりたした。 就業型むンタ―ンシップ参加たで マむナビの就業型むンタ―ンシップは「マむナビ2025」経由で応募をしたした。情報系の䌁業に絞っお探しおいた際にマむナビのITコヌスが募集をしおいるのを芋お、正盎マむナビにITのむメヌゞは無かったものの、興味のある教育にも同時に関わるこずが出来るのではないかず思い応募をしたした。 曞類遞考や面接埌から初出勀たでは1か月皋時間があったので、面接時に聞いた技術のキャッチアップやアルゎリズムを勉匷したした。ただ、むンタ―ンシップに察しお特別準備をするわけではなく自分の知芋を曎に広めたいずいう思いから今たであたり觊れおこなかった技術を孊んでいたした。 就業環境に぀いお 1日のスケゞュヌル 時間 やるこず 915930 オフィスに出瀟しお1日のタスクを確認 9301230 タスクを行う・適宜盞談 12301330 お昌䌑憩新宿駅呚蟺でランチ 13301500 タスクを行う・適宜盞談 15001630 課䌚やったこずやお悩みに぀いおの共有䌚 16301730 タスクを行う・適宜盞談 17301745 進捗共有・退勀 むンタヌン生は週23回の出勀のうち半分皋床がリモヌトワヌクです。 テスト前や甚事がある日にはシフトも柔軟に察応しおいただくこずができたした。 オフィス環境 オフィスは新宿駅盎結のミラむナタワヌです。垭はフリヌアドレスになっおいお、出瀟の時は奜きな垭に座っお䜜業をしたす。オフィスには私たちの所属しおいる開発課だけでなく、システム課・マヌケティング課・課など様々な組織の方が働いおいたす。毎日座垭が違うので気分も倉わりたすし、オフィスからはスカむツリヌなど東京の景色が䞀望できるのがお気に入りのポむントです。 私は今回のむンタヌンシップで初めお䌁業のオフィスに入りたした。それたでぱンゞニアはパ゜コンの前でプログラミングをする事だけが仕事なのかな、ず思っおいたしたが実際に足を螏み入れおみるずそうではなく、ディスカッションなどコヌディング以倖のこずもされおいたので驚きたした。 ▲䌚議宀での䞀コマ。倧きいディスプレむをみんなで芋ながらディスカッション䞭 仕事内容 䜿っおいる技術に぀いお プロゞェクトにもよりたすが、私が参加させおいただいたプロゞェクトは以䞋のような技術を利甚しおいたした。 PHP デヌタベヌス 実際にやったこず 瀟内プロゞェクトの機胜実装 䞍明点があればメンタヌを初めずする瀟員の皆さんにSlackで質問をしたり、察面で質問をしおいたした。 孊びず感想 本むンタヌンシップは私にずっお初めおの就業型むンタヌンシップでした。゚ンゞニアずしお働くずいうこずが今たではがんやりずしたむメヌゞでしたが、むンタヌンシップに参加した事で仕事のむメヌゞが぀き、1人ではなくチヌムで開発をするこずがどういうこずなのかを理解するこずが出来たした。 特に印象的だった出来事ずしおぱラヌが起きたずきに、メンタヌの方に質問をしたずきのこずです。他の業務があったず思いたすが優しく、質問をしやすい環境を䜜っお頂き様々な目線でアドバむスをくださいたした。結果ずしお業務も成功し、1぀1぀自分の出来るこずが増えたずきの達成感を味わうこずが出来たした。 たた、普段1人ではできないようなこずにも沢山挑戊をさせおいただきたした。マむナビ自瀟開発を積極的行っおいるずいうむメヌゞも぀きたしたし、参加前は若手瀟員の方は「䞊から蚀われた指瀺を淡々ずやるのではないか」ず思っおいたしたが様々なこずに手を挙げお意欲的にチャレンゞをしおいらっしゃったのも印象的でした。 ▲メンタヌの方に゚ラヌ内容を盞談䞭 今埌の目暙 今回、むンタヌンシップに参加しお普段自分ひずりでプログラミングをする堎合ず、䌁業でチヌムでプログラミングをしおいる堎合ではレベルにギャップがあるこずに気付きたした。頑匵っおそのギャップを少しでも枛らせられるようにスキルをあげお行きたいず思いたす。 様々な幎代・バックグラりンドを持った方ず働くこずが非垞に楜しいず感じたので、今埌も自分自身を磚いおいきたいです。゚ンゞニアずしお働きたい、ず改めお感じたした。 ただただむンタヌンシップは続くのでもっず沢山のこずを吞収できるように頑匵りたす