TECH PLAY

株匏䌚瀟ラクス

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

å…š941ä»¶

はじめに FM_Harmonyです、8月2回目の投皿になりたす。 ↓前回の蚘事はコチラです tech-blog.rakus.co.jp 今回はgitコマンドのfetchに぀いお、孊んだ内容をたずめおみたした。 今回の蚘事を曞こうず思ったきっかけは pullずfetchの違い に぀いお尋ねられた時、现かいずころたで答えられなかったこずです。 倧雑把に fetchはデヌタを持っおくるだけ、pullはmergeたで行う ずいうこずたでは答えられたのですが... そこで、この機䌚にfetchに぀いお孊びなおしおみたした。 Gitを孊び始めたばかりの方や、埩習したいず考えおいる方の参考になれば幞いです。 はじめに fetchの説明...の前にリモヌト远跡ブランチの説明 本題、fetchの説明 merge, pullの説明 おわりに 参考 fetchの説明...の前にリモヌト远跡ブランチの説明 fetchを説明するうえで リモヌト远跡ブランチ の説明は欠かせたせん。 では、リモヌト远跡ブランチずは䜕でしょうか リモヌト远跡ブランチRemote-tracking branchずは、ロヌカル リポゞトリ にあっお リモヌ トリポゞ トリの状態を保持する参照 です。 簡単に蚀うず、リモヌトにある同名のブランチず同䞀のコミットを指すブランチの事です。 このブランチの特城ずしお、リモヌト远跡ブランチのブランチ名は( リポゞトリ 名)/(リモヌトのブランチ名)で固定される、ナヌザが倉曎をコミットするなどしおブランチが指すコミットを盎接操䜜するこずはできない、ずいったこずが挙げられたす。 そのため、ロヌカル リポゞトリ からもリモヌト远跡ブランチを通じお、リモヌ トリポゞ トリの倉曎を確認する、ロヌカルの䜜業ブランチにリモヌトの倉曎を取り蟌むずいったこずができるようになっおいたす。 しかし、ロヌカル リポゞトリ は24時間365日ネットワヌクに接続はしおいたせん。 そのため、ロヌカル リポゞトリ にあるリモヌト远跡ブランチは垞にリモヌトのブランチず同じものを指すわけではありたせん。 誰かがリモヌトのブランチに倉曎をpushしおしたうず、リモヌト远跡ブランチずリモヌトにある同名のブランチが指すコミットが異なるずいうこずが発生したす。 この状況を解消するために䜿うコマンドが fetch なのです 本題、fetchの説明 fetchコマンドを利甚するこずで、リモヌ トリポゞ トリの倉曎をロヌカル リポゞトリ に取り蟌み、リモヌト远跡ブランチを同期するこずができたす。 䟋えば、䞋蚘のコマンドを利甚するず、リモヌ トリポゞ トリ origin の master ブランチに぀いお、倉曎をロヌカル リポゞトリ に取り蟌み、リモヌト远跡ブランチ origin/master をリモヌトブランチ master ず同期させたす。 $ git fetch origin master この時点では、ロヌカルの䜜業ブランチに倉曎は反映されたせん。 そのため、䟋えばロヌカルのブランチ master に察しおコミットを行っおいた堎合、リモヌト远跡ブランチずロヌカルのブランチずが分岐するこずになりたす。 merge, pullの説明 さお、こうしお取り蟌んだリモヌトブランチの倉曎をロヌカルブランチに反映するにはどうすればよいでしょうか その方法の䞀぀ずしお、 ロヌカルブランチにリモヌト远跡ブランチをmergeする ずいう方法がありたす。 䟋えば、 origin/master ずロヌカルブランチ master が分岐する堎合、䞋蚘のコマンドを実行するこずで図のようなブランチ構造になりたす。 $ git checkout master $ git merge origin/master たた、同じコマンドを実行した堎合でも、 origin/master がロヌカルブランチの先のコミットを指しおいるだけで分岐しおいない堎合、 master の指すコミットを倉曎するだけのいわゆる Fast-forward マヌゞを行いたす。 別の方法ずしお、 pull コマンドを利甚するずいうものがありたす。 これは、 fetch + merge ず同じ動䜜を行いたす。 すなわち、 $ git checkout master $ git pull origin master ずいうコマンドは、䞋蚘のコマンドず同矩です 。 *1 $ git checkout master $ git fetch origin master $ git merge origin/master おわりに fetchに぀いお簡単にたずめおみたのですが、いかがでしたでしょうか。 個人的にはリモヌト远跡ブランチの存圚を知らなかったため、この機䌚に知るこずができお良かったず思いたす。 今回の蚘事䜜成を通しお、Gitに぀いおただただ知識が足りないこずが分かったので、たた別の機䌚に他の操䜜(addやpush, etc...)に぀いお、機䌚を䜜っお調べおみようず思いたす。 参考 Git - リモートブランチ Gitの公匏によるリモヌト远跡ブランチずfetchの説明です ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com *1 : 厳密には同矩ではなく、masterにmergeされるのはFETCH_HEADずいうfetchした際に䜜成されるブランチです。
id:radiocat です。既に蚘事で玹介されおいたすが、倧阪オフィスの開発郚内で毎月開催しおいるビアバッシュで『タスク管理のやりかたずツヌルの䜿いかた』ずいうタむトルで発衚をしたした。 tech-blog.rakus.co.jp 今回はこの発衚で玹介した スクラム 方匏のタスクマネゞメント手法を改めお蚘事にたずめたす。 個人のタスクマネゞメントずは そもそも個人のタスクマネゞメントずいうのはい぀、䜕を、どう管理するのでしょうか 家族ず生掻しおいる人は家族に頌たれた買い物を䌚瀟垰りに買っお垰るために買い物ずいうタスクを管理したいかもしれたせん。反察にプラむベヌトは自由気たたに過ごしたいので现かい事たで管理したくない人もいるかもしれたせん。 ツヌルの遞びかた 䜕をどこたで管理したいのかは人それぞれなので、ツヌルの遞びかたもその人の生掻スタむルや環境によっお倉わっおきたす。 䞖の䞭には様々なタスクマネゞメントツヌルがありたす。ネット䞊ではTrello、Todoist、asanaずいったサヌビスを䜿った事䟋をよく目にしたす。私の所属するチヌムではTrelloを䜿っおいたす。 trello.com ja.todoist.com asana.com 私の堎合は家族ず生掻をしおいお自分の時間は限られおいるのでスキマ時間は倧切です。たた、 スマホ は Android で、カレンダヌやメヌルは Google のサヌビスを䜿うため、これらず連携した䜿い方もポむントになりたす。 たた、性栌的にプラむベヌトをあたりキッチリ管理するのは息苊しく感じるため、スキマ時間を䜿うにしおも手軜さやカゞュアルさも重芁です。 Google Keepの䜿い方 以䞊を螏たえお私が遞んだツヌルが Google Keepです。 Google Keepはタスク管理ツヌルずいうよりはメモツヌルですが、それが逆にシンプルで個人でタスクを管理するならこのレベルで十分ず感じおいたす。 スケゞュヌルずの連携など Google の他のサヌビスずも連携できたす。 スマホ のホヌム画面に衚瀺される りィゞェット や、駅などの特定の堎所に到着したら通知しおくれるリマむンド機胜も䟿利です。 倖出䞭であれば音声で登録したり、 スクリヌンショット を撮っお残りは自宅でずいう、その堎の状況に応じた䜿い方も可胜です。 スクラム 方匏のタスクマネゞメント実践方法 そしお、 Google Keepを䜿い、 スクラム のやり方にヒントを埗たタスク管理の手法が今回玹介する スクラム 方匏のタスクマネゞメントです。 スクラム 同様にシンプルで軜量なマネゞメント手法です。 バックログ のように重芁なものから1列に䞊べる Google Keepはメモツヌルずしお登録したメモが瞊䞀列に䞊ぶようになっおいたす。そのため重芁なものから順番に䞊べるだけで バックログ のように扱うこずができたす。 バックログ のように「完了したしおいない」だけを管理 スクラム ではスプリントの期限たでに完了しおいないタスクはたずえ途䞭たで完成しおいたずしおも未完了ずしお扱いたす。個人のタスクマネゞメントも同様です。買い物をしたり、ブログに蚘事を曞くずいうタスクが途䞭たで終わっおいおもあたり意味がありたせん。そのため、完了したかどうかだけを芳枬するようにしたす。たた、完了したタスクは「 アヌカむブ 」するこずで䞀芧からは陀倖されたすが、メニュヌから アヌカむブ 䞀芧を衚瀺するこずができるためい぀でも完了したタスクを確認するこずができたす。 タむムボックスを決めお繰り返す 私は毎週日曜日に1週間を振り返っお、翌週のプランニングをしおいたす。プランニングでは1週間でできそうな範囲の䞊䜍のタスクだけを重芁な順に䞊び替えお、リマむンドを蚭定したり、タスクの内容を敎理したす。 スクラム でもナヌザヌストヌリヌを具䜓化したり完了の定矩を明確化したりしお バックログ をReadyにしたすが、個人のタスクも同じようにブログのアりトラむンをメモしおおいたり、 Google Keepのリスト機胜を䜿っおやるこずの詳现をチェックリスト化しおReadyにしたす。 スクラム 開発ずは違うずころ スクラム 開発ずは違っお個人のタスクマネゞメントではやらないこずもありたす。 党䜓の芋通しを立おない 䜕かを開発したりリリヌスするわけではないので、個人のタスク管理には終わりがありたせん。そのため党䜓の芋積もりやバヌンダりンチャヌトを䜜っお芋通しを立おるようなこずはしたせん。 個々のタスクを芋積もらない 党䜓の芋通しを立おる必芁がないので個々のタスクも芋積もりたせん。ただし、個々のタスクがどれくらい時間がかかるかなどを现かく管理したい人は芋積もりをしおもいいかもしれたせん。 これらはあくたで私の堎合はやる必芁がないず感じおいるこずですが、必芁に感じる堎合はやりかたをアレンゞしおみおも良いかもしれたせん。その堎合は Google Keepではできないこずもあるので、䞊蚘で玹介したTrelloなどの本栌的なタスク管理ツヌルを䜿うほうが良いかもしれたせん。 おわりに この手法はやりかたはシンプルですが、プロセスがきちんず回るようにするためには、日々の状況チェックや1週間単䜍の完了確認、ふりかえりをどこたでやるかなどを、自分でルヌルを決めおブラッシュアップする必芁がありたす。理解は容易ですが、習埗が困難な点も スクラム ず同じです。 今回は私が愛甚しおいる Google Keepを䜿っおのやりかたを玹介したしたが、同様のやりかたは他のツヌルでもできるかもしれたせん。自分の䜿いやすいツヌルで実践しおみるず良いでしょう。ただ、 Google Keepは軜量で扱いやすいツヌルなので、今回玹介した手法に向いおいるツヌルだず思っおいたす。私ず同じように普段䜿うツヌルは Google のサヌビスが䞭心で手軜にタスクマネゞメントしたいずいう人は Google Keepを䜿っお スクラム 方匏の個人のタスクマネゞメントを実践しおみおはいかがでしょうか。 圓日発衚したスラむドは公開しおいたすので良ければご芧ください。 speakerdeck.com 告知Meetupで スクラム 開発に぀いお発衚したす 圓ブログでも既に告知枈みですが、9/13に開催される匊瀟䞻催のMeetupで楜楜粟算の開発チヌムが実践しおいる スクラム 開発の取り組みに぀いお発衚したす。今回の発衚は過去の 瀟内むベント の資料がベヌスですが、資料をアップデヌトしお圓時はリリヌス前で話せなかった内容や、プロゞェクトのその埌の状況に぀いおも話をする予定ですのでぜひご参加ください。 rakus.connpass.com ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
kuwa_38です。 ラク スでは月回のペヌスで開発メンバヌの亀流䌚ずしおビアバッシュを開催しおいたす。 ビアバッシュずはビヌルなどず軜食を片手にフランクに技術内容に぀いお発衚したり語り合う亀流䌚です。 7月分のビアバッシュに぀いおは䞋蚘の蚘事をご芧ください tech-blog.rakus.co.jp 倧阪開発郚のビアバッシュでは、決められたテヌマに沿った発衚を行う「テヌマ枠発衚」ず自由なテヌマで発衚を行う「LTLight Talk 枠」が存圚したす。 今月のテヌマは「 ツヌル特集 」です。各々が䜿甚しおいる䟿利なツヌルや業務効率化のために䜿っおいるツヌルに぀いお発衚しお頂きたした。 本蚘事ではテヌマ枠、LT枠自由発衚それぞれの発衚に぀いおご玹介したす。 テヌマ枠ツヌル特集 ツヌル玹介 Node.jsずnpmの関連ツヌル My Powerful Scripts タスク管理のやりかたずツヌルの䜿いかた 個人的に䜿っおいる䟿利ツヌル 業務効率UP iOSアプリ LT枠自由発衚 むンフラ゚ンゞニアの怖い話 トりダン・ゞャヌニヌ おわりに テヌマ枠ツヌル特集 テヌマ枠で行われた6件の発衚に぀いおご玹介したす。各発衚の玹介を少し蚘茉した埌、発衚内で述べられおいたツヌルを列挙したす。 ツヌル玹介 Snipping Tool や Tampermonkey の スクリプト など業務で䜿甚しおいる䟿利なツヌルや スクリプト を玹介しお頂きたした。業務でどのような時に䜿っおいるのかずいうお話もあったため、䜿う堎面が想像し易すく、他のチヌムの方がどのような業務や進め方をしおいるのかずいった点でも参考になる発衚でした。たた、 Snipping Toolが廃止される こずは知らなかったため驚きでした。 Snipping Tool phpStormのDiff Node.jsずnpmの関連ツヌル Windows でのNode.jsやnpmのバヌゞョン管理ツヌルであるNodistやnpmのバヌゞョン5.2.0で導入されたnpx、自䜜したパスワヌドを生成するツヌルに぀いお玹介しお頂きたした。npmを䜿甚する埓来の方法ず、npxを䜿う方法を前で実践しお䞋さったため、npxを䜿うこずでワンラむンで簡朔に実行できるこずがわかる発衚になっおいたした。 Nodist npm npx パスワヌドを⟃動✣成するツヌル My Powerful Scripts Tampermonkeyで自䜜した䟿利な スクリプト に぀いおランキング圢匏で発衚しお頂きたした。GitLabでのレビュヌを簡単にするために優先床を付加するボタンを衚瀺する スクリプト やMattermostで未読のみを衚瀺する スクリプト などを玹介しお頂きたした。「Mattermostで未読のみを衚瀺する スクリプト 」はチャットがスッキリしお芋易くなるので私も普段から䜿わせおもらっおいたす。 Tab キヌ抌䞋時に、タブHard Tabの代わりに、スペヌス x 4Soft Tabを入力するスクリプト GitLab の Merge Request の Code Review コメントに察応優先床を付加する スクリプト Mattermost で未読チャンネルだけを衚瀺する スクリプト タスク管理のやりかたずツヌルの䜿いかた 色々なタスク管理ツヌルを玹介した埌、珟圚䜿っおいるタスク管理ツヌル Google Keepずその䜿い方、䜕が良いのかに぀いお発衚しお頂きたした。業務向きずいうよりはプラむベヌトでのタスク管理にフォヌカスしたお話でした。 Google Keepでは Googleカレンダヌ などの他の Google アプリず連携ができるこず、どこでも芋れるこずが䟿利ずのこずです。たた、メモのように手軜に曞き蟌み週末に優先順䜍を倉曎し、次の1週間のタスクを決めおいるそうです。 Google Keep 発衚者おすすめ Trello 今の䞻流 Todoist asana Toodledo Google Tasks Microsoft To-Do 個人的に䜿っおいる䟿利ツヌル コピヌ履歎を保存しおくれるツヌルClipyや Markdown 蚘法を甚いお綺麗に曞くこずのできる゚ディタTypora、 Mac 䞊のアプリ・ファむルなどを怜玢できるツヌルSpotlight怜玢など業務の䞭で個人的に䜿っおいる䟿利なツヌルの玹介を行いたした。業務で Markdown 蚘法を甚いるこずが倚いため、TyporaやMarpは愛甚しおいたす。 Clipy Typora Spotlight怜玢 Marp 業務効率UP iOS アプリ 業務効率化のために䜿甚しおいる iOS アプリに぀いお玹介しお頂きたした。珟圚、発衚者の方が行っおいる業務の関係䞊、Office LensやSkitchなどの画像加工アプリがメむンでした。おたけずしお、文字に濁点を付けおいく、Dakutenずいった面癜いアプリの玹介もあったため、 堅苊しい ものでなく聞き手から笑いの起こる発衚でした。私も情報共有のために スクリヌンショット をずり、説明を付加するこずは良く行うためい぀くか詊しおみようず思いたす。 Office Lens Skitch Key 楜楜粟算 モザむク がかし&モザむク加工アプリ Dakuten LT枠自由発衚 LT枠で行われた2件の発衚に぀いおご玹介したす。 むンフラ゚ンゞニアの怖い話 倏ずいえば怖い話。この発衚ではむンフラ゚ンゞニアが実際に起こした、たたは、起こすず肝が冷えるミスに぀いおご玹介頂きたした。発衚䞭は笑いが起こっおいたしたが、 rm -rf / やshutdownコマンドなど、誀っお実行しおしたうず笑いごずでは枈たないミスに぀いおご玹介頂きたした。rmコマンドやshutdownコマンドを業務で䜿ったこずはありたせんが、機䌚があるずきは本圓に気を付けないずいけないなず考えさせられる発衚でした。 トりダン・ゞャヌニヌ php conference 2018 Kansai に登壇したこずに぀いお、登壇が決たるたで、業務ずしお登壇するにあたり準備したこず、資料䜜成などに぀いおご説明頂きたした。公開リハヌサルや圓日の発衚に至るたでの発衚者間でのタスク管理や情報共有など、登壇たでの過皋や裏偎に぀いお知るこずができる発衚ずなっおいたした。 登壇された様子に぀いおは䞋蚘の蚘事を埡芧ください tech-blog.rakus.co.jp おわりに 今月も様々なタむプの発衚が聞くこずができお、倧倉充実したビアバッシュになりたした。 次回のテヌマは「 他人のスラむド発衚䌚 」です。他の人が䜜ったスラむド、面癜かった蚘事やスラむドを甚いお発衚しお頂きたす。今たでにない発衚圢匏なので、どのような発衚がされるのか楜しみです。
ラク スは「 IT技術 で䞭小䌁業を匷くしたす」をミッションに掲げ、 メヌル共有・管理システムのメヌルディヌラヌから始たり、経費粟算システムの楜楜粟算に至るたで、 延べ40,000瀟を超えるお客様に自瀟開発した クラりド サヌビスを提䟛しおきたした。 今回9/13(朚)は、 ラク スで䞻力 クラりド サヌビスの開発を牜匕する゚ンゞニアによる トヌク セッションず亀流䌚を開催したす。 クラりド サヌビス開発の゚ンゞニアずしお掻躍しおいる方はもちろん、 クラりド サヌビス開発にご興味をお持ちの゚ンゞニアの方も気軜にご参加頂ければず思いたす。 自瀟開発ならではの技術・運甚ノりハりや、新しい取り組みの成果や倱敗談など ご参考にしお頂ける情報を積極発信しおいきたいず考えおおりたす。 このむベントが新しい気づきや成長に぀ながる機䌚を提䟛する堎になるずずもに、 ラク ス瀟員ず参加者の皆さた、たた参加者の皆さた同士で新たな぀ながりが生たれるきっかけになれば幞いです 開催抂芁 【日時】2018/9/13(朚) 19:3021:30(開堎は19:00) 【䌚堎】 ラク ス 東京本瀟 〒151-0051 東京郜枋谷区 千駄ヶ谷 5-27-11 アグリスク゚ア新宿2F [アクセス]  【定員】30名 【申蟌み】 connpass 【参加費】無料 【䞻催】 ラクス 今回の トヌク テヌマ 終わらない スクラム  楜楜粟算のサヌビス拡倧を支える スクラム 開発の取り組み 倧塚正道おお぀かたさみち ラク スでは、ただ倚くの開発チヌムが りォヌタヌフォヌル 型の 開発プロセス を採甚しおいたすが、 䞀郚のチヌムで スクラム による アゞャむル 開発に取り組んでいたす。 今回は楜楜粟算チヌムでの取り組みを玹介したす。 実際にやっおみるず様々な問題が発生したした。問題解決に向けたアクションや取り組みを通じお埗た知芋、今埌の課題等を事䟋を亀えおお話ししたす。 テッ クリヌド 自称ずしおのやっおいき  iOS アプリ開発 チヌムを率いお 川䞊裕かわなみゆう 若手゚ヌス゚ンゞニアが初めおの iOS アプリ開発 でテッ クリヌド ずしお奮闘したお話しです。 iOS アプリ開発 は、自身も初、メンバヌも初、しかも短玍期3ヵ月。 この デスマヌチ を予感させる䞍利な条件䞋で、テッ クリヌド ずしおどのようにチヌムをリヌディングしたのか。 様々な事䟋を亀えおご玹介したす。 流行の開発手法ChatOpsずは 楜楜明现チヌム/ChatOpsでルヌティン䜜業をたるごず自動化 䞉田英䞀みたえいいち Jenkinsの導入で自動化が進んだけど、「Jenkinsを毎回開くのは面倒」、「アカりントの䜜成も面倒」、「非゚ンゞニアに䜿っおもらうにはちょっずハヌドルが高い」。 そこで導入したのがChatOps! Slack互換のチャットツヌル「Mattermost」でルヌティン䜜業を䞞ごず自動化したした。 利甚した bot ツヌル、システム構成、Hubot スクリプト の実䟋など、ノりハりを䜙すこずなくご玹介したす。 タむムテヌブル 19:00 開堎・受付開始 19:30 むベントスタヌト 21:30 終了予定 トヌク が終わり次第、亀流䌚に移りたす。 亀流䌚では、フィンガヌフヌド、ドリンクをご甚意臎したす。 お気軜にご参加ください。 ゚ントリヌ方法 [connpass] より゚ントリヌをお願いしたす。 ※圓日はお名刺2枚ご持参ください ※提䟛可胜な蚭備 Wi-Fi 、電源 䌚堎 ラク ス 東京オフィス2F セミ ナヌルヌム 東京郜枋谷区 千駄ヶ谷 5-27-11 アグリスク゚ア新宿2F [アクセス]
こんにちは。゚ンゞニアのmickey-STRANGEです。 今たではめんどくさがりをテヌマに、「簡単に○○する方法」を玹介しおきたした。 tech-blog.rakus.co.jp 今回の蚘事では、3幎目になった私が、これたでの゚ンゞニア生掻の䞭でやっおおよかったず感じる「 JavaScript で遊ぶ」こずに぀いおお話したいず思いたす。 ゚ンゞニアになるず呚りから「勉匷しずいた方がいいよ」「いろんな技術觊っずいた方がいいよ」ず声をかけられるこずが倚いず思いたす。 しかし、䜕から手を付けおいいか分からない、どんな技術を、どんな蚀語を觊っおみればいいか分からない、ず最初は思うかもしれたせん。 そういった新人゚ンゞニアの方が勉匷ず気負い過ぎず、軜い気持ちで「 JavaScript で遊ぶ」こずから始めるメリットに぀いおお話しおいきたす。 実行環境の準備が芁らない JavaScript の実行環境はブラりザです。勉匷を始めるための環境構築ずいうフェヌズが必芁ありたせん。 テスト甚のHTMLファむルさえ甚意しおしたえばブラりザで開くだけで実行しおくれたす。 ただ、最初はHTMLの蚘述ず JavaScript の蚘述を同時に考えるのが難しいず思いたす。そんな時は普段芋るサむトのHTML構成をそのたた匕っ匵っおくるこずをお勧めしたす。 実際に公開されおいるHTML構成なので䜜り蟌みがされおいお、簡単にしっかりずしたテスト甚HTMLを甚意するこずができたす。 こうするこずで、自分でベヌスのHTMLを甚意しなくおも JavaScript の緎習が出来るようになりたす。 環境構築が必芁ないのは、ずっ぀きやすさずいう面でかなりの匷さになりたすね。 実際に䜿える業務知識が埗られる JavaScript は業務でもよく䜿う蚀語です。Web系゚ンゞニアなら圓然、画面䞊の動きは JavaScript で蚘述するこずになりたす。 ずはいえ、非同期凊理があったり、画面䞊のナヌザ操䜜ずの兌ね合いがあったりで、実行順が分かりにくくなる傟向があり、私の呚りでも JavaScript に察しお苊手意識を持぀メンバがちらほらいたす。 私も最初はそうでしたが、 JavaScript でちょくちょく遊んでいた結果、倧芏暡な画面改修タスクを担圓するこずになっおも怯たなくなり、今では苊手意識は自分ではほがないず感じおいたす。 たた、 JavaScript はもはやブラりザ䞊だけの蚀語だけではなく、 JavaScript ベヌスの蚀語でネむティブアプリの画面を構成できたり、サヌバサむドの凊理を蚘述したりするこずもできたす。 以前投皿されたGASも、 JavaScript ベヌスの蚀語だったりしたす。 tech-blog.rakus.co.jp JavaScript は他の蚀語ず比べお、埗た知識がどこかで業務に繋がる可胜性の高い蚀語であるずいえるでしょう。 小さな改善がすぐにできるようになる 普段芋るサむトやブラりザアクセスするシステムの画面に察しお、䜿いにくいなヌめんどくさいなヌ、ず思ったこずはありたせんか そんな時は chrome の 拡匵機胜 のTampermonkeyがおすすめです。 chrome.google.com Tampermonkeyは、指定したURLのペヌゞが開いたずきに自動で JavaScript を実行しおくれる 拡匵機胜 です。 これを利甚するこずで、普段䜿うシステムの画面をちょっず䜿いやすくする、ずいったこずが気軜に行えたす。 たた、䜜成した スクリプト は他のメンバのTampermonkeyの画面に貌り付けしおもらうだけで共有が出来るので、小さな改善をすぐチヌムに共有するこずが出来たす。 私も瀟内の基幹システムの膚倧な数のメニュヌをいい感じに怜玢出来る スクリプト を䜜成しお、チヌム内に共有しおいたのですが、い぀の間にか広たっおいき、他のチヌムの方から感想をいただくこずもありたした。 甚事がない限り他チヌムの方に話しかける機䌚はあたりないので、こういった面でもずおもよかったず思いたす。 さいごに 私が感じた「 JavaScript で遊ぶ」こずで埗られたよかった点をたずめおみたした。いかがでしたでしょうか。 ずっ぀きやすく 、 業務に繋がりやすく 、 改善にも぀ながる 、ずいうのはかなりのメリットだず思いたす。 たた、 JavaScript は ajax を甚いるこずで他システムの API を叩くこずも可胜ですので、1぀の スクリプト 内で出来るこずの幅がかなり広いです。 「勉匷しよう」ず思うず難しいかもしれたせんが、このペヌゞのここをこうしたいな、を原動力に「 JavaScript で遊ぶ」感芚で手を付け始めるず楜しさが分かっおいただけるかず思いたす。 楜しいずいう感芚になっおしたえば勝手に持続するので、遊び感芚で スキルアップ しおみたしょう
はじめに ゚ンゞニアのFM_Harmonyです。 Rakus Developers Blogには、䜕床か蚘事を投皿させおいただきたした。 tech-blog.rakus.co.jp ↑前回の投皿蚘事はこちらです さお、今幎も早いもので7月初旬に開発郚ぞ新卒瀟員が配属されたした。 たた、同時期にオフショア先の ベトナム 子䌚瀟から出匵者の受け入れを行いたした。 そこで先日、新卒瀟員 ベトナム メンバヌの歓迎䌚を開催いたしたした 歓迎䌚の内容をたずめたしたので、みなさたに ラク ス瀟内の雰囲気が䌝われば幞いです。 亀流の様子 たずは自己玹介から行いたした、名前ず顔を芚えおいただくのは重芁です。 今回は、普段のビアバッシュで甚意しおいるものよりも、豪華な食事をご甚意させおいただきたした 参加された方に䌺ったずころ、みなさんご満足いただけたようで䜕よりです。 普段はなかなか話す機䌚のない、先茩や管理職の方ずもこうしお話す機䌚を蚭けるこずができるのが、歓迎䌚のよいずころです。 新卒の方も積極的に話しかけおいたす。 ベトナム のメンバヌの方はすっかり日本のメンバヌずも打ち解けられようで、こうしお蚘念撮圱も行っおおられたした。 アむスブレむクペヌパヌタワヌ 䌚の終わりごろには、アむスブレむクIce breakずしお ペヌパヌタワヌ ずいうゲヌムを行いたした 簡単に説明したすず、A4甹箙20枚を䜿っお最も高いタワヌを䜜ったチヌムが勝利するずいうゲヌムです。 では、ゲヌムの様子を写真ずずもにご芧ください。 ルヌル玹介 今回は以䞋のようなルヌルでゲヌムを実斜いたしたした。 1チヌム45名で行う 2回ゲヌムを行い、それぞれで勝利チヌムを決定する 䜜戊を怜蚎する時間は5分、実際にタワヌを組み立おる時間も5分ずする 利甚しお良いのは、A4甹箙20枚および玙テヌプ1m分のみずする ↓ルヌルはこちらのサむトを参考にさせおいただきたした heart-quake.com ↓ルヌル玹介の様子、圌の厳正な審査により各チヌムの勝敗が決たりたす 䜜戊タむム ↓あるチヌムの䜜戊䌚議の様子、このプランニングにより䜜業がスムヌズに行えるか決たりたす ↓別のチヌムの様子、玙を片手に䜜戊䌚議䞭です ↓ ベトナム メンバヌの方々は1チヌムずしお集たっおいただきたした 続いお実際の組み立おの様子ずいきたかったのですが、残念なこずに撮圱担圓者もゲヌムに参加しおいたため、組み立お時の写真はありたせんでした  そのため、結果発衚の様子に移りたいず思いたす。 結果発衚 ↓蚈枬の様子、タワヌが倒れないようみなさん必死です ↓䞭には予想倖の組み立お方をされたチヌムも 肝心の結果はどうなったかずいうず、なんず 2回ずも ベトナム メンバヌチヌムの勝利 でした ↓成果物ず䞀緒に蚘念撮圱、みなさんおめでずうございたす おわりに ずいうずころで、今回はここたでずさせおいただきたす。 この蚘事を通しお、みなさたに ラク スずいう䌚瀟の雰囲気を䌝えるこずができたのであれば幞いです。 今回は私もむベント開催を担圓したのですが、本圓に楜しい歓迎䌚を開催するこずができお良かったです。 たた、新人や ベトナム の方だけでなく、私たちも普段あたり話す機䌚のない方ずお話しできたこずも良かったず思いたした。 最埌になりたすが、新卒の方にはこれからの掻躍を、 ベトナム の方には日本で貎重な経隓が埗られるよう、心から祈っおおりたす。
こんにちは。開発゚ンゞニアのamdaba_sk ペンネ ヌム未定です。 前回の冒頭で、ちょろっず以䞋のように曞きたした。 「OWASP ZAPに぀いお調べおみた」ずいう蚘事を曞きたした。 単䜓テスト 䞭にこっそり䜿っおみようかず思っおいたのですが、手元の環境ではポヌト埅ち受けで゚ラヌが出おしたっお攟眮しおいたす  。 この件に぀いお、実はポヌト番号を遞べばロヌカルプロキシずしお䜿えそうだずいうこずがわかったのでそのこずで続報を、ず思ったのですが。 いいタむミングでたたもあの人が目立っおくれたしたね 2018.kphpug.jp tech-blog.rakus.co.jp 先日開催された PHP カンファレンス関西 2018 に ラク スの゚ンゞニアが登壇したした。我らが坂田くんがそのうちの䞀人ずしお参加しおいたす。 圓日は私も芋に行きたした。開始前のえらく緊匵しおそわそわしおいる姿ず、発衚䞭の堂々ず話す姿のギャップが激しかったのがすごく印象的でした。 ずいうわけで、このブログぞの次の投皿もこれをネタにするしかあるたいず思った次第です。䟋によっお雑談に芋せかけおたた坂田くんにむンタビュヌしおみたしたので、その時の話を今回は曞こうず思いたす。 ※本人了承枈み。ただし写真は気恥ずかしいのでやっぱりNGだそうです。ほんずもう今さらな感じもしたすが なおむベントそのものず、匊瀟がこのむベントに公匏に参加するこずになった経緯などに぀いおはリンク先をご芧ください。 カフェスペヌスにお PHPカンファレンス 関西の開催された翌週、私はいい感じに話を聞けるタむミングを芋蚈らっおいたした。坂田くんは䜕やら忙しそうで、なかなか昌食もいっしょに行けない様子。無理に時間を䜜っおもらうのも悪いのでどうしたものかず思っおいたずころ、ちょっずした䌑憩でも取る぀もりなのかコップを持っお執務宀を出おいく坂田くんの姿が。私はチャンスずばかりに埌を远いたした。 ペンネ ヌム未定 以埌 ペン未 「ずいうわけでお話をしたしょう」 坂田くん 以埌 坂田 「䜕が『ずいうわけ』なんだ  。おいうかそのメモ玙ずペンは䜕 たたブログのネタにされるや぀」 ペン未 「ちっ、君のような勘のいいガキは  」 坂田 「嫌いだずいうなら無理にお話しなくおもいいのだけど」 ペン未 「いやいや奜きだから。もうめっちゃ奜き。察しがよくお助かるわ」 スピヌカヌディナヌのこず ペン未 「前日にも業務埌に䜕か行っおたよね」 坂田 「スピヌカヌディナヌっおいうのに参加しおた。圓日はお互い発衚があっお話す時間が取れないからだず」 ペン未 「飲み䌚自䜓あんたり奜きじゃないっお蚀っおたのによく行く気になったね」 坂田 「せっかくの機䌚だからず思っお。瀟倖の人ず亀流する機䌚もあんたりないし」 ペン未 「どんな感じだった」 坂田 「ネットの知り合いずのオフ䌚っお感じだった。みんな私服だし、『もしかしお、○○さんですか』みたいな声のかけ方ずかも。党員集たるたで適圓にだべっおる感じもたさしく」 ペン未 「ぞヌ。その堎にいた人はみんなお互い初察面だった感じ」 坂田 「いや、けっこう知り合いっお感じの人も倚かったかな。毎回登壇しおるような人ずか、珟運営、元運営みたいな人達はお互いに知り合いで、むしろ私みたいな新参者の方が珍しかったような印象。それもあっおちょっず話に加わりづらい感じがした」 坂田 「でも実行委員長の人は垭も近かったしけっこう話せた。そういえば今回はスポンサヌの応募も䟋幎よりすごく倚かったみたいで、しかも初めおスポンサヌするっおずころも倚かったらしい。それで問合せがいっぱい来お察応が倧倉だったずか」 ペン未 「そうなんだ。それはちょっず申し蚳なかった感じがあるね  」 圓日のこず ペン未 「発衚盎前はめっちゃそわそわしおたよね。坂田くんでも緊匵するんだっお思った」 坂田 「私だっお緊匵ぐらいしたす。ビアバッシュの発衚のずきだっお緊匵しおるんですが」 ペン未 「党然そうは芋えない」 坂田 「それ他の人にも蚀われたんだけど。なんでそう芋られおいるのか  」 ペン未 「それは君がそういう振る舞いをしおいるからずしか蚀いようがないけど。でもあの時はこずさら緊匵しおたっおこずでしょう」 坂田 「たあね。発衚が始たっおからは倚少萜ち着くんだけど、発衚前の5分間は結構぀らかった」 ペン未 「発衚前にパ゜ コントラ ブルもあったしね」 坂田 「そうそれ。私の持っおる唯䞀のノヌトパ゜コンが元XPで珟 Linux 搭茉の叀いや぀で、もずもず䜿えるかどうかわからないねっお話はしおたのだけど。 VGA のケヌブルがあったから自分のパ゜コン繋げられるず思っのに、いざ繋げおからパ゜コン起動させおみるずなぜかログむンできなくなっおいるずいう。わけが分からなかったし時間も無かったから急遜パ゜コンを貞しおもらった」 ペン未 「あせっおパスワヌドミスっおただけでは」 坂田 「間違っおはいなかったず思うのだけどなあ。埌で VGA を倖しおから同じようにログむン詊行しおみたら普通に入れたし」 ペン未 「たあでも発衚始たったら急にスむッチ入った感じだったよね。なんか緎習よりも䞀段ず分かりやすくなっおたような気がするし。䜕か準備しおた」 坂田 「別に盎前に特別なこずはしおない。スラむド芋返すずかその皋床で」 ペン未 「それで話せるずかすごいな。時間もほがぎったりだったよね」 坂田 「時間は、実はちょっず遅いかもっお思っおた。䞀回時蚈を芋たのだけどい぀始たっおい぀終わらないずいけないのかわからくなっお、もういいやっお」 ペン未 「たじで。それめっちゃ䞍安じゃない」 坂田 「今思うず䞍安なんだけど、発衚䞭はなぜか時間のこず忘れおられたんだよね。䞍思議なこずに」 坂田 「でも発衚䞭に出おいっちゃた人がいたのは残念だったなあ」 ペン未 「あヌ、そういえばいたね。でもそれっお仕方ないんじゃない」 坂田 「そうかもしれないけど。でも今思い返しおみるず、確かに『Laravelの良かったずころ』のセクションは確かに聞いおお぀たらないかもずも思うんだよね。Laravelの宣䌝しおるだけみたいな感じになっおお。ずいっおもどう倉えればいいのかよくわからないのだけど」 ペン未 「たあそれは今埌の課題ずいうこずで。たた同じような発衚をする機䌚があればその時考え盎しおみるずいいですね」 坂田 「そうですね。そう頻繁に同じような発衚をするこずになっおも困るけど」 そしお仕事は぀づく ただただ話は匕き出せそうでしたが、息抜きには十分なほどに話をしおいたした。 私たちは話をするうちに飲み干しおしたったお茶を入れなおし、自垭に戻りたした。 これからは䌚瀟ずしおも PHPカンファレンス のようなむベント、勉匷䌚ぞの参加を掚進しおいくずのこずなので、坂田くんに掻躍しおもらう機䌚が今埌もたびたびあるのでしょう。 私は心の䞭で゚ヌルを送り぀぀、先ほど聞いた話をブログにたずめるべくキヌボヌドをたたくのでした。
@kawanamiyuu です。以前の 投皿 でお知らせしたしたずおり、先日開催された PHP カンファレンス関西 2018 に ラク スの゚ンゞニアが登壇したした。 たた、 ラク スはシルバヌスポンサヌずしおむベントに協賛いたしたした。 むベント抂芁 日時 : 2018 幎 7 月 14 日 (土) 䌚堎 : グランフロント倧阪 公匏 HP : https://2018.kphpug.jp/ 2018.kphpug.jp 登壇 チャットディヌラヌの高速開発を支える Laravel30分セッション speakerdeck.com 本人コメント PHP カンファレンスに限らず技術系のむベント初参加でした。最終的に私が登壇するこずになりたしたが、䌚瀟ずしおの参加が決たっおからネタ出し、アりトラむン䜜成、資料䜜成、発衚緎習等、最埌たでチヌムで準備を進めたした。圓日もちろん緊匵はしたしたが、䞍安を感じずに発衚ができたのはチヌムのみんなのおかげです。 たた発衚以倖の時間では聞く偎ずしおも楜しめたしたし、勉匷にもなりたした。これからはもっず積極的にこういった瀟倖のむベントや勉匷䌚に参加しおみようかなず思い始めおいたす。 mixed 型なんおけしからんず瀟内チャットお゙぀ぶやいたら炎䞊したラむトニング トヌク  私、 @kawanamiyuu も実はラむトニング トヌク が採択されたしたので話しおきたした。 speakerdeck.com 本人コメント 今回がカンファレンスでの初 LT 䜓隓でした。ネタはけっこう前から枩めおいお、瀟内のビアバッシュずかで話そうかず思っおいたしたが、今回匊瀟の゚ンゞニアが 30 分セッションにも登壇するし、LT もやったれず思っお応募したら採択されお、ドキドキしたけどずおも楜しめたした。 むベント 2 日前にオフィスで行った公開発衚緎習では 1 分半も時間が䜙っおしたい焊りたしたが、自䞻緎の結果、本番では時間ちょうどくらいで終われお安心したした。ほんずうはドラを鳎らされおみたかったです (^m^) 所感 今回、 ラク スにずっお初めおの技術むベントぞの協賛および登壇でした *1 。いろいろ勝手が分からず、ちゃんずむベント圓日たで挕ぎ着けるこずができるか䞍安でしたが、担圓サヌビスを暪断した登壇掚進チヌムで協力しお資料䜜成や発衚緎習を行い、圓日、自分の䌚瀟の゚ンゞニアが目の前で発衚しおいる姿を芋おずおも嬉しくなりたした。 今埌も継続しお技術むベントに登壇しおいけるよう、たた、コミュニティに貢献しおいけるよう、開発組織のレベルアップや゚ンゞニアリング文化の 醾造 に取り組んでいきたいず思いたす。 *1 : これたでも匊瀟の゚ンゞニアがプラむベヌトで技術むベントで登壇するこずはありたしたが、開発郚の公匏な取り組みずしお登壇や協賛を行ったのは初めおでした。
Google API ずは、 Google が提䟛するのサヌビスやプラットフォヌムを扱える API です。 これらの API を䜿いこなすこずで、 Google のサヌビスを自身のアプリケヌションぞ組み蟌み、様々なこずを実珟できたす。 ここでは、 Gmail を扱う API ず、GoogleDriveを扱う API を PHP アプリケヌションから利甚する䟋に玹介したす。 内容は2018幎7月珟圚の情報です。 この蚘事の内容 今回は、 Google API のガむドに蚘茉されおいるQuickstartを甚いお、 OAuth認蚌 を行い API を実行したす。 *1 抂芁は以䞋の図のような感じです。 この蚘事では、「その1プロゞェクトの甚意」で、 Google Cloud プラットフォヌムにプロゞェクトを甚意し、 「その2認蚌情報の䜜成」にお、OAuthに必芁な認蚌情報ファむルの䜜成、 「その3 API を叩く」でサンプルプログラムを甚いお䞊蚘図の①④に瀺す認蚌凊理ず API の実行を行いたす。 少し内容が長くなっおしたったので、目次を芋お必芁な情報のずころをご芧ください。 この蚘事の内容 その0Googleアカりントの甚意 その1プロゞェクトの甚意 プロゞェクトを䜜成する プロゞェクトで䜿甚するAPIを指定する その2認蚌情報の䜜成 OAuth 2.0 クラむアント ID を䜜成する OAuth 2.0 同意画面を蚭定する その3APIを叩く Google Client Libraryのむンストヌル 認蚌情報をダりンロヌド サンプルプログラムの䜜成 APIクラむアントオブゞェクトの取埗 利甚するAPIのサヌビスオブゞェクト䜜成 サンプルプログラムの実行 䜙談ですが、恥ずかしながら、この蚘事を曞くたで、私は「OAuth」を、他のシステムで認蚌するから「Other Auth」の略だず思っおいたした。正しくは「Open Auth」ですね。。。 その0 Google アカりントの甚意 蚀わずもがな、 API を利甚しお操䜜する Google アカりントが必芁です。 詳しい方法は割愛。䜜成したら、ログむンしおください。 その1プロゞェクトの甚意 API を利甚するため、 Google アカりントに玐づいたプロゞェクトを䜜成する必芁がありたす。 プロゞェクトを䜜成する 䜿甚する Google アカりントにログむンしたら、 Google Cloud プラットフォヌム にアクセスしたしょう。 巊䞊の ハンバヌガ ヌメニュヌから、「IAMず管理 > リ゜ヌスの管理」を遞択したす。 リ゜ヌスの管理画面に、「プロゞェクトを䜜成」リンクがあるので、クリックしたす。 その埌の画面でプロゞェクト名を入力し、「䜜成」したす。 これでプロゞェクトが䜜成できたした。 少し画面衚瀺に時間がかかるこずがありたす。 プロゞェクトで䜿甚する API を指定する 次に、䜜成したプロゞェクトで䜿甚する API を指定したす。 Google Cloudプラットフォヌムの画面䞊郚から、先ほど䜜成したプロゞェクトを遞択した状態で、「 API ずサヌビス > ラむブラリ」を遞択したす。 ここでは、䜿甚するこずができるGoogleAPIラむブラリを遞ぶこずがありたす。 どの API も面癜そうですが、ずりあえず今回は「 Gmail 」ず「GoogleDrive」を利甚するので、たず、「 Gmail API 」を探し、「有効にする」を遞択したす。 これで、このプロゞェクトで Gmail API を有効にするこずができたす。 なお、この画面からは Gmail API のガむドやリファレンスなどのドキュメントを閲芧するこずができたす。 同様に、「 Google Drive API 」を、 API ラむブラリから探し、有効にしたす。 これで、䜿いたい API を有効にしたプロゞェクトが䜜成できたす。 その2認蚌情報の䜜成 さお、プロゞェクトは準備できたしたが、 API を叩くにあたり、認蚌が必芁です。 次は認蚌情報を䜜成し、自分が䜜成するアプリケヌションからのリク ゚ス トのみを受け付けるようにしたしょう。 Google Cloudプラットフォヌムの画面䞊郚から、先ほど䜜成したプロゞェクトを遞択した状態で、「 API ずサヌビス > 認蚌情報」を遞択したす。 その埌、「認蚌情報を䜜成」から「OAuth クラむアント ID の䜜成」をクリックしたす。 OAuth 2.0 クラむアント ID を䜜成する OAuthの蚭定をするにあたり、たずは API を叩くアプリケヌションの皮類を指定したす。 今回は、「その他」を遞んでください。 API ガむドに茉っおいる「Quickstart」を䜿うためには、「その他」を遞ぶ必芁がありたす。 遞択したら、クラむアントの識別名を入力し、䜜成したす。 OAuth 2.0 同意画面を蚭定する 次に、 OAuth 2.0 同意画面の蚭定を行うため、 「認蚌情報を䜜成」から「OAuth 2.0 同意画面」を遞択したす。 OAuth 2.0 同意画面ずは、蚭定しおいる API によっおナヌザのデヌタぞアクセスするずきに、衚瀺される画面で、デヌタぞのアクセス前に認蚌を行う画面のこずです。 この画面で認蚌を行うため、メヌルアドレスず、衚瀺する任意のアプリ名を指定したす。 ここで指定したアプリ名は、以䞋のように認蚌画面にお衚瀺されたす。 蚭定出来たら「次ぞ」ボタンを抌䞋したす。 これで認蚌情報の䜜成が完了したした。 ハンバヌガ ヌメニュヌから、「 API ずサヌビス > 認蚌情報」を遞択するず、認蚌情報が䜜成できおいるこずが確認できたす。 その3 API を叩く 次に、アプリケヌションから Google API の認蚌を行い実際に API を実行したす。 ここからは Gmail API の公匏ドキュメントを参考にしながら進めたしょう。 「 API ずサヌビス > ラむブラリ」から「 Gmail API 」を探し出し、「 チュヌトリアル ずドキュメント」の「Learn more」をクリックし、公匏ドキュメントを衚瀺したす。 衚瀺したら、「ガむド」タブの「Quickstarts」から、䜿甚する蚀語を遞択したす。 今回は PHP で説明したす。他の蚀語で API を扱いたい堎合は、察象の蚀語を遞択しお、頑匵っおください。←䞞投げ PHP のQuickstartでは、Step1Step4の手順が玹介されおいたすが、Step1の API を有効化する手順はもう完了しおいるので、Step2から行いたす。 Google Client Libraryのむンストヌル QuickstartのStep2です。 Google の API を䜿甚するために、 Google Client Libraryをむンストヌルする必芁がありたす。 PHP の堎合、composerを甚いるこずで簡単にむンストヌルできたす。 composer require google/apiclient:^2.0 認蚌情報をダりンロヌド 先ほど䜜成したOAuth2.0クラむアントの認蚌情報が蚘茉された JSON ファむルをダりンロヌドしたす。 Google Cloud プラットフォヌムのメニュヌから、「 API ずサヌビス > 認蚌情報」を遞択し、先ほど䜜成したOAuth2.0クラむアントのダりンロヌドアむコンをクリックするこずで、ダりンロヌドできたす。 ダりンロヌドしたクラむアントの認蚌情報ファむルは、次のサンプルプログラム実行で䜿いたす。 サンプルプログラムの䜜成 QuickstartのStep3です。 quickstart.php ずいう名前で以䞋のコヌドを保存したす。 <?php require __DIR__ . '/vendor/autoload.php' ; if ( php_sapi_name () != 'cli' ) { throw new Exception ( 'This application must be run on the command line.' ) ; } /** * 指定した暩限が付䞎されたAPIクラむアントを返す * @return 暩限が付䞎されたGoogle_Clientオブゞェクト */ function getClient () { $ client = new Google_Client () ; $ client -> setApplicationName ( 'Gmail API PHP Quickstart' ) ; $ client -> setScopes ( Google_Service_Gmail :: GMAIL_READONLY ) ; // ※1スコヌプの蚭定 $ client -> setAuthConfig ( 'credentials.json' ) ; // 取埗したJSONファむルのパス $ client -> setAccessType ( 'offline' ) ; // クラむアント蚌明曞ファむルが存圚しない堎合初回実行時は // 認蚌情報JSONファむルを甚いお取埗する。 // 存圚する堎合2回目以降の実行時は、クラむアント蚌明曞を読み蟌む。 $ credentialsPath = 'token.json' ; // クラむアント蚌明曞ファむルのパス if ( file_exists ( $ credentialsPath )) { $ accessToken = json_decode ( file_get_contents ( $ credentialsPath ) , true ) ; } else { // ナヌザからの認蚌を行う $ authUrl = $ client -> createAuthUrl () ; printf ( "Open the following link in your browser: \n %s \n " , $ authUrl ) ; print 'Enter verification code: ' ; $ authCode = trim ( fgets ( STDIN )) ; // 認蚌コヌドをアクセストヌクンに倉換する $ accessToken = $ client -> fetchAccessTokenWithAuthCode ( $ authCode ) ; // クラむアント蚌明曞をファむルに保存する if ( ! file_exists ( dirname ( $ credentialsPath ))) { mkdir ( dirname ( $ credentialsPath ) , 0700 , true ) ; } file_put_contents ( $ credentialsPath , json_encode ( $ accessToken )) ; printf ( "Credentials saved to %s \n " , $ credentialsPath ) ; } $ client -> setAccessToken ( $ accessToken ) ; // クラむアント蚌明曞が有効期限切れの堎合は曎新し、ファむルぞ保存しなおす if ( $ client -> isAccessTokenExpired ()) { $ client -> fetchAccessTokenWithRefreshToken ( $ client -> getRefreshToken ()) ; file_put_contents ( $ credentialsPath , json_encode ( $ client -> getAccessToken ())) ; } return $ client ; } /** * メむン凊理 */ // APIクラむアントを䜜成し、サヌビスオブゞェクトを䜜成する $ client = getClient () ; $ service = new Google_Service_Gmail ( $ client ) ; // 䜿甚するAPIごずのサヌビスオブゞェクトを䜜成 // Print the labels in the user's account. $ user = 'me' ; $ results = $ service -> users_labels -> listUsersLabels ( $ user ) ; if ( count ( $ results -> getLabels ()) == 0 ) { print "No labels found. \n " ; } else { print "Labels: \n " ; foreach ( $ results -> getLabels () as $ label ) { printf ( "- %s \n " , $ label -> getName ()) ; } } 䞊蚘コヌドでは、倧きく分けお、以䞋の凊理を行っおおり、䞀郚 API の実行目的によっお倉曎する必芁がありたす。 API クラむアントオブゞェクトの取埗 クラむアント蚌明曞の取埗ず曎新 API クラむアントオブゞェクトの䜜成 利甚する API のサヌビスオブゞェクト䜜成 API クラむアントオブゞェクトの取埗 API を実行するクラむアントのオブゞェクトを䜜成したす。 䜜成時には、先ほどダりンロヌドした、クラむアントの認蚌情報を利甚しお、クラむアント蚌明曞を取埗し、ファむルに保存したす。 クラむアント蚌明曞には、特別な蚭定をしない限り利甚期限があり、利甚期限が過ぎおいた堎合は曎新されたす。 たた、クラむアントオブゞェクトを䜜成する際に、「スコヌプ」を指定したす。 「スコヌプ」は、そのクラむアントが、 API を甚いお「どこたでの操䜜が実行できるか」を指定するものです。コヌド内コメント※1 スコヌプは API を䜿っお䜕を実行したいのかによるため、堎合によっお曞き換える必芁がありたす。 スコヌプは各サヌビスオブゞェクトの定数を指定するか、 API ガむドにある URI を指定するこずで、蚭定できたす。 Gmailのサヌビスオブゞェクト定数䞀芧 URI䞀芧 たずえば、 Gmail でメヌルを送信したい堎合は以䞋の通りに曞き換えたす。 $client = new Google_Client(); $client- > setScopes(Google_Service_Gmail::GMAIL_SEND); Google Drive でファむルをアップロヌドしたい堎合はこんな感じ。 $client = new Google_Client(); $client- > setScopes(Google_Service_Drive::DRIVE); 耇数のスコヌプを指定する堎合は、定数を配列に栌玍するこずで可胜です。 $client = new Google_Client(); $scopeList = array(Google_Service_Gmail::GMAIL_SEND, Google_Service_Drive::DRIVE); $client- > setScopes($scopeList); 利甚する API のサヌビスオブゞェクト䜜成 取埗したクラむアントオブゞェクトを利甚しお、各サヌビスの API を扱うためのサヌビスオブゞェクトを䜜成したす。 ここは各サヌビスごずに異なるため、ドキュメントをご芧ください。 䜜成したサヌビスオブゞェクトを䜿うこずで、そのサヌビスの API リク ゚ス トが可胜になりたす。 サンプルプログラムの実行 䜜成したサンプルプログラムを コマンドラむン から実行したす。 $ php quickstart.php 実行するず、URLが衚瀺され、入力埅ちになりたすので、衚瀺されたURLぞブラりザからアクセスしおください。 アクセスするず、認蚌情報の䜜成時に蚭定したOAuth 2.0の同意画面が衚瀺されたすので、画面に埓っお実行を蚱可しおください。アクセス トヌク ンが衚瀺されるので、 コマンドラむン にコピペするこずで、クラむアント蚌明曞を取埗するこずができたす。 次回実行時からは、この䜜業で取埗したクラむアント蚌明曞をもずに認蚌を行うため、同意画面での実行蚱可は䞍芁になりたす。 たた、サンプルプログラムは Gmail の API ガむドから取埗したしたが、この認蚌で今回䜜ったプロゞェクトぞの認蚌ができるので、他 API も利甚可胜になりたす。 これで API を実行する準備はできたした。 あずは各サヌビスオブゞェクトのメ゜ッドを䜿っお Gmail を送ったり、 Google Drive を操䜜したりできたす。 䟋ずしお、 Gmail でメヌルを送るずきのコヌドを蚘茉したす。 *2 /** * Gmailを送信する */ public function sendGmail($client) { $data = ""; $data .= "To:xxxx @xxx .xxx.xx\n"; $data .= "Subject: メヌルたいずる\n"; $data .= "\n"; // ヘッダヌず本文を区切る空行 $data .= "本文"; $data = base64_encode($data); //base64゚ンコヌド $service = new Google_Service_Gmail($client); $msg = new Google_Service_Gmail_Message(); $msg- > setRaw($data); $result = $service- > users_messages- > send('me', $msg); return $result; } ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com *1 : https://developers.google.com/gmail/api/quickstart/php?hl=ja *2 : https://sepg.biz/2018/03/23/post-564/
はじめに ラク ス゚ンゞニアのstrongWhiteです。今回はSwiftのextensionずprotocolに぀いお曞きたす。 私がSwiftを勉匷し始めたころは、この2぀の抂念がよくわかっおいたせんでした。 2぀ずも䌌おいるようで党く違うので、䞡者に぀いお簡単にたずめおみたす。 extensionずは extension拡匵ずは、特定のクラスや構造䜓、デヌタ型など、名前はそのたたにプロパティやメ゜ッドを远加する機胜です。 Java でいうず「継承」ず䌌おいたす。 Java の「継承」はクラスのプロパティやメ゜ッドを匕き継いだ別名のクラスを䜜るのに察し、Swiftの「拡匵」は名前はそのたたになるのが特城です。 extensionの䜿い方 それではextensionを䜿った簡単なプログラムを曞いおみたしょう。今回は デヌタ型 の拡匵を行っおみたす。 extensionを䜿っお、Swiftに暙準で備わっおいるデヌタ型䟋Int、Stringを拡匵しおみたす。 extension String { func isLongString () -> Bool { if self .count <= 20 { return false } return true } } let text = "RAKUS Developers Blog" print(text.isLongString()) // 実行結果true サンプルプログラムでは、String型を拡匵し、文字数が20文字以䞊かどうかを刀別する簡単な関数を定矩しおいたす。 このように、extensionを䜿えば、倉数の倀の比范や加工凊理を、既存のデヌタ型にメ゜ッドを远加するこずで実珟できたす。 私は今たで「デヌタ型の定矩を拡匵できる」ような蚀語に出䌚ったこずがなかったので、この蟺りはずおも新鮮な感芚でした。 protocolずは お次はprotocolです。protocolずは、クラスの挙動や振る舞いを決めたものです。クラスでは、プロパティや挙動を现かく蚘述しおいきたすが、protocolでは、むンタフェヌスのみを定矩したす。実際の挙動はprotocolを採甚するクラス偎で蚘述したす。 protocolの䜿い方 ではprotocolを䜿った簡単なプログラムを曞いおみたす。今回は 列挙型 にprotocolを適甚しおみたす。 protocol BaseProtocol { var type : String { get } } enum Blood : BaseProtocol { case AB case A case B case O var type : String { switch self { case .AB : return "AB型" case .A : return "A型" case .B : return "B型" case .O : return "O型" } } } print( "あなたの血液型は" + Blood.AB.type + "です" ) // 実行結果あなたの血液型はAB型です サンプルプログラムでは、血液型を列挙型で定矩しおみたした。たた、ベヌスずなるprotocolずしお、 BaseProtocol そのたたですがを採甚しおいたす。 たた、列挙型のほうで、 BaseProtocol に定矩しおある type 倉数を宣蚀しないず コンパむル ゚ラヌになりたす。 最埌に Swiftのextensionずprotocolに぀いお、違いがよくわかっおいなかったので勉匷しおみたした。 それぞれ身近な Java を䟋に挙げお、extension→継承、protocol→むンタフェヌスであるず解説したしたが、Swiftを知らない人でも少しはむメヌゞができたのではないでしょうか。 皆さんもこの蟺りを勉匷しおみるずよりSwiftが面癜いず感じるかず思いたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
id:radiocat です。䞭孊のずき矎術の先生に矎術科ぞの進孊を勧められたこずがありたすが、それ以降は描いた絵を耒められたこずがありたせん埌述。 アゞャむル な開発チヌム以倖でも近幎は「ふりかえり」を行っおいるチヌムは倚いのではないでしょうか 埓来型の 開発プロセス では「反省䌚」ずも呌ばれたすが、これたでやっおきた事を振り返っお未来に向けた改善アクションを芋぀けるずいう点ではどちらも同じです。そしお、そのような改善に向けお振り返る䌚議の前にたず行うのが「チェックむン」です。 チェックむンずは ふりかえりの「堎を蚭定する」アクティビティの1぀で、『 アゞャむル レトロスペクティブズ』ずいう曞籍で玹介されおいたす。 アゞャむルレトロスペクティブズ 匷いチヌムを育おる「ふりかえり」の手匕き 䜜者: Esther Derby , Diana Larsen オヌム瀟 Amazon 目的 この曞籍の䞭で、チェックむンの目的は以䞋のように説明されおいたす。 䜙蚈なこずを考えずに、レトロスペクティブに集䞭しおもらう。レトロスペクティブから䜕を埗たいのかを明確にしおもらう。 ふりかえりの堎に意識を集䞭しおもらい、チヌムでどういう議論がしたいのかを発信しお参加者の目線を合わせるための䜜業なのです。 やりかた 簡単な質問を1぀する メンバヌは順番に質問に答える たったこれだけです。䟋えば、ふりかえりの ファシリテヌタヌ が「今の気持ちを䞀蚀で答えおください」ずいう質問をしお、メンバヌが「嬉しい」ずか「悲しい」などず順番に答えたす。 「堎を蚭定する」ずいうこず チェックむンのように「堎を蚭定する」こずに぀いお『 アゞャむル レトロスペクティブズ』の䞭で次のように説明されおいたす。 郚屋にいる党員に口を開いおもらう。最初に喋らなかったら、ずっず䜕も喋らなくおもいいずいう暗黙の了解を埗たず思っおしたう。レトロスペクティブの肝はグルヌプで考え、䞀緒に孊んでいくこずなので、党員参加が䞍可欠である。 たった䞀蚀ですが、質問に答えおもらうだけで党員に参加意識を持っおもらえたす。たた、答えた内容によっおその人がどういう気持ちで䌚議に臚んでいるのかを知るこずができたす。䟋えば「嬉しいず感じおいるのは自分だけかもしれない」ず思うず発蚀がしにくいかもしれたせんが、党員の気持ちを知っおいればそのような䞍安が枛っお発蚀のハヌドルが䞋がりたす。 ぀たり党員が䞀蚀ず぀喋るこずで、その人自身の発蚀のハヌドルを䞋げるずずもに、呚りのメンバヌの発蚀のハヌドルを䞋げるこずにも繋がるのです。 堎を蚭定するアクティビティ このような堎を蚭定するアクティビティには様々なやりかたがありたす。我々のチヌムでもいく぀か実践しおみたので、それらの䞀郚を玹介したす。 One Word 今の気持ちを䞀蚀で衚珟しおもらいたす。実際にやっおみた結果は次のような回答でした。 䞀蚀では蚀い衚わせれなかったメンバヌもいたすが、そういう気持ちなんだなず受け止めたす。逆に䞀蚀だず意図がわからないものもありたす。䟋えば「早い」は開発スピヌドのこずなのか、䜜った機胜のこずなのかわかりたせん。ふりかえりの目線を合わせるためにも、必芁に応じおどういう意味なのか聞いおみおも良いでしょう。ただし、ただ堎を蚭定するタむミングなので議論に発展するようならいったん止めおあずで議論するようにしたす。 挢字1文字 今の気持ちを挢字1文字で衚珟しおもらいたす。このケヌスでは順番に回答しおいくうちに、他のメンバヌず被らないようにず、色々考えお回答するようになっお埌半のメンバヌが苊戊するずいうせめぎ合いも起こりたした。 自分の気持ちに適した挢字を遞がうずするず意倖ず難しく、色々考えるこずでふりかえりに向けお集䞭できる効果もありたす。One Wordず同じで意図がわからない挢字の堎合はなぜその挢字なのか聞いおみおも良いでしょう。 Happiness Rader 今の気持ちを顔文字で衚珟しおもらいたす。この時はどんな顔かを聞いお ファシリテヌタヌ がホワむトボヌドに曞きたした。 参加者に自分で曞いおもらっおも良いですが、「どんな顔ですか」ず聞くこずでどんな気持ちなのかがわかりたす。ただ、蚀葉で衚珟された気持ちを絵で衚さなければならないので、 ファシリテヌタヌ の絵心も堎の蚭定に圱響しそうです  絵の埗意なメンバヌが芋かねお代わりに曞いおくれたした。絵心がある人が描くほうが、参加者も今の気持ちを蚀葉で衚珟しやすいかもしれたせん  3 dots 今の気持ちを3段階のドットで衚珟しおもらいたす。短時間か぀シンプルに衚珟できるのが最倧のメリットです。 顔文字ず違っお最速で衚珟できたすが、なんずなく物足りなさはありたす。3皮類しかないので耇雑な気持ちを衚すこずはできたせん。チヌムが耇雑な課題をたくさん抱えおいるような堎合は、みんな1ドットずいう回答でそれぞれが抱えおいる気持ちの違いはわからないずいう結果になる可胜性がありたす。 Good & News 良かったこずず新しい気づきを共有しおもらいたす。 前向きな意芋を集めるような堎の蚭定に有効です。ふりかえりで課題がたくさん出るこずが予想される堎合にあえお最初に前向きな意芋を求めおみるずいう䜿い方もありたす。気付きの共有はやや時間が長くなりがちなので時間が少ない堎合には向いおいないかもしれたせん。 垌望ず懞念 ふりかえりに察する垌望ず懞念事項を共有しおもらいたす。 参加者それぞれがふりかえりをどういう堎にしたいかが比范的わかりやすく衚珟されたす。ただ、これも少し時間がかかるアクティビティです。 以降は我々のチヌムではただ詊したこずはありたせんが、曞籍等で玹介されおいるものです。 DPA Design the Partnership Alliance 決め事を䜜りたすどんな雰囲気で話すかなど。 事前にその堎の雰囲気をどうするかを参加者で話し合っお決めるので、スムヌズに議論に入れそうです。 Keep+Wakattakoto 良かったこずず分かったこずを共有しおもらいたす。 Good & Newsず䌌おいたすが、 KPT のKをより意識した堎の蚭定ができるかもしれたせん。 連想ゲヌム 起きたこずを䞀蚀づ぀隣の人に連想ゲヌムしたす。 挢字1文字ず同じで、考えるこずで意識を集䞭するこずができそうです。たた、ゲヌム感芚で堎を和たせる効果もありそうです。 おわりに 我々のチヌムでは、これらのアクティビティの䞭から1぀を参加したメンバヌに遞択しおもらっおいたす。参加者が䞻䜓的に考えたり遞択しおもらうこずで、ふりかえりの堎が蚭定されたす。 このような堎を蚭定するアクティビティはふりかえりだけのための手法ではありたせん。議論に集䞭するために参加者同士で意識合わせをするこずが目的なので、ふりかえり以倖の䌚議でも掻甚できる堎面はありたす。 䌚議の堎で次のような課題を感じたこずはないでしょうか 発蚀する人が少ない 自由な意芋が出おこない い぀も同じ人の意芋でチヌムの方針が決たる もし、このような課題を感じたら「堎を蚭定する」こずからはじめおみるず良いかもしれたせん。 参考 ふりかえりワークショップ~実践&実践~ - Speaker Deck ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに こんにちは、新卒で入っお入瀟3幎目のnorthmkyです。 いたたでの投皿では yumコマンド に぀いおや 文字コヌド など実業務でも圹立぀基瀎知識をたずめたものを曞いおいたしたが、今回はプラむベヌトで Google Apps Script、略称GASに觊れたのでご玹介したいず思いたす。 題名を「5分で理解する」などず自身でいうのもなんですが巷でよくあるキャッチヌで怪しい、ほんたかいな...ずいうようなものになっおおりたすが、嘘ではないず思いたす。 ただ前提ずしお JSの経隓がある 必芁ありたす。逆に蚀えば WEB界隈でJSを觊ったこずがある方は孊習コストがほが0になりたす。本蚘事を読めばやりたいこずはすぐ曞けたす。 理由ずしおは JSず パラダむム がほが䞀緒 JSず文法がほが䞀緒 暙準で぀いおいるメ゜ッド名が盎感的でわかりやすい の3点です。 ほが同じ思想なので、あずは特有の抌さえおおくべき甚語ず スクリプト ず操䜜するアプリ画面の察応関係がわかれば曞けるようになりたす。 それでは前眮きはこのくらいにしお玹介に入りたいず思いたす。 Google Apps Script(GAS)ずは 「 Google の各皮アプリ( Google スプレッドシヌト / Google ドキュメントなど)をアプリ内ではなく倖から操䜜できるJSラむクな プログラミング蚀語 」です。 ゚クセルに察する VBA の関係ず䞀緒です 1 。 実珟できるこずの䟋ずしおは、指定時間になったら特定のセルの倀を読み出しお倖郚アプリに枡す bot であったり、 スプレッドシヌト だけでなく googleカレンダヌ にたずめおスケゞュヌル登録したり、などなどができたす。 2 色々できるのですが、本蚘事では読者のみなさんに銎染みがあるず思われる スプレッドシヌト を題材にしたす。 早速GASを理解する GASでは操䜜察象のアプリをオブゞェクトずしお扱いたす。 スプレッドシヌト の堎合、芚えるべきオブゞェクトは䞋蚘3点のみです。 Spreadsheetオブゞェクト Sheetオブゞェクト Rangeオブゞェクト アプリず スクリプト 内のオブゞェクトは䞋図のような関係性になっおいたす。 りィンドり巊はおなじみの スプレッドシヌト 、右はGASです。 図の スクリプト は「特定のセル範囲に倀を入れる」凊理をしたす。 実行するず䞋蚘のようになりたす。 奜き、ずいう文字列が指定したセル範囲(= range )に栌玍されたした。 どうでしょうか、説明はこれだけです。 倀を入れるずいうだけの凊理の玹介ですが、これだけでもう スプレッドシヌト を自分の奜きなように操れる気がしないでしょうか。 特別な文法を芚えたりする必芁もありたせん。 ここでは蚘茉しおいたせんが、分岐/繰り返しなど基本構文はもちろんありたすし、暙準メ゜ッドもあるので安心です。 「いやメ゜ッドいちいち調べる感じじゃ...?」ず思われた方、安心しおください。 こちらの暙準゚ディタは補完機胜付きなので、適圓にメ゜ッド名を打っおも実珟したいこずができるメ゜ッドを芋぀けられる確率が高いです。メ゜ッド名がわかりやすい...玠晎らしい... おわりに GASの超入門ずしお、 スプレッドシヌト に察しお凊理を行うこずを通しお、GASをどのように曞けるかをお䌝えしたした。 今回はお話したせんでしたが、webAPIを叩く機胜も暙準でありたすし、 google 本家、たたそうでない人によるたくさんのGAS甚ラむブラリも github で公開されおいたす。 ですので twitter /slackBotも 開発環境構築なしで Google アカりントがあれば誰でも䜜成できる ずいう敷居の䜎さも魅力的なGAS、皆さんも詊しおみたせんか 題名を裏切らない内容になっおいれば幞いです。 付録: スクリプト 䜜成〜実行の簡単な流れ スクリプト 䜜成方法 ツヌル をクリック スクリプト゚ディタ をクリック これで スクリプト が立ち䞊がりたす。 実行方法 Ctrl + S ... スクリプト 保存 Ctrl + R ... スクリプト 実行 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com やや過倧衚珟です。厳密にはGASは、゚クセルに察する VBA のような、どこかのbookに玐付いお動く「Container Bound Script」ず玐付かず単独で動く「Standalone Script」の2皮類があるので厳密な衚珟ではないです。本蚘事では「Container Bound Script」のみを扱いたすのでこのように衚蚘したした。 ↩ ここで私は基瀎を孊びたした。他にもいろいろな実䟋を平易に曞いおありずおもわかりやすいです。 https://tonari-it.com/google-apps-script-manual/#toc2 ↩
こんにちは。west-cです。 早いもので 1゚ントリ目の蚘事 から1幎が経ずうずしおおり、自チヌムにも今幎の新卒メンバヌが配属されたした。 そこで今回も、今幎入瀟の新米゚ンゞニアの方を察象に、個人的に業務でよく䜿うツヌルを玹介したいず思いたす。 私自身もただ4幎目で新米に属する郚類ではありたすが、少しでも業務効率化に寄䞎できれば幞いです。 WinMerge WinMerge 日本語版 テキストファむルの差分比范・マヌゞを行える有名な゜フトりェアです。 修正前埌の差分チェックを行い、意図通りの修正ずなっおいるかを確認するために利甚しおいたす。 目diff *1 ・目 grep は特殊な蚓緎を受けた䞊で実斜しないず思わぬ事故に繋がりたす。正確な結果を埗るためにツヌルを掻甚したしょう。 Sublime Text Sublime Text - A sophisticated text editor for code, markup and prose ゜ヌスコヌド ゚ディタです。 コヌディングは IDE を利甚したすが、ちょっずした スクリプト を芋たり 正芏衚珟 を甚いた怜玢・眮換をサクッず行いたい堎合に利甚しおいたす。 Visual Studio Code や Atom などの゚ディタでも同様のこずは行えたすが、動䜜が䞀番軜快なため私はこの゚ディタの利甚頻床が䞀番倚いです。 指定フォルダ䞋の党ファむル文字列怜玢 grep のようなものも行えたす。 Awesome Screenshot Awesome screenshot ブラりザの画面キャプチャが行えたす。 撮圱範囲の指定や文字挿入などある皋床の画像線集も行えるため、そのたた Mattermost *2 や Redmine に貌り付けお利甚しおいたす。 ScreenToGif ↑実際に動画撮圱をした様子 ScreenToGif - Record your screen, edit and save as a Gif or video 画面を動画撮圱し、GIF圢匏で保存できたす。 自チヌムでは発芋したバグを Redmine のチケットで管理しおいたす。 バグ報告時に再珟手順を文章で説明するのが難しい堎合には、その手順を撮圱したGIF画像もチケットに添付しおいたす。 動画だず操䜜手順が分かりやすく認識霟霬も起きにくいため、チヌム内でもよく利甚されおいたす。 Boostnote Boostnote | Boost Happiness, Productivity, and Creativity. Markdown 圢匏でメモを取るこずができたす。 日々のタスクやちょっずしたtipsなど、基本的にここで䞀元化するようにしおいたす手垳に取ったメモもこちらに枅曞しおいたす。 タグ付けやフォルダ分け・怜玢も行えるため過去のメモも远いやすく、「メモした蚘憶はあるけれど、どこに曞いたか忘れた」ずいう事態がほが無くなりたした。 Postman Postman | API Development Environment WebAPIに察しお GUI で盎感的にリク ゚ス トを送信できたす。 少し API のテストを行いたい堎合に curl コマンドを打぀こずなくサクッず実斜できるので重宝しおいたす。 自分で䜜成したリク ゚ス ト情報をむンポヌトすれば、プログラムに詳しくない方でも簡単に API のテストやお詊しができる点も魅力です。 おわりに これは個人的意芋ですが、 面倒なこず・正確さが求められるこずはコンピュヌタに任せる ずいう意識ぱンゞニアずしお重芁だず思っおいたす。 「 プログラマ の䞉倧矎埳」ずいう有名な蚀葉にも繋がるず思いたす ぜひ非効率だず思う郚分があればツヌルの導入等で効率化を詊みおください。 そしお、堎合によっおは自分で䜜成しおみるずさらに良いず思いす。 自分が欲しかったものを自分の手で䜜るこずができるのは、゚ンゞニアならではの醍醐味だず思いたすよ ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com *1 : Linux コマンドの diff 盞応の差分比范を目芖で行う特殊技胜のこず。目 grep も同様。 *2 : チャットツヌルずしお有名な Slack に䌌たツヌル。自チヌムではチャットツヌルに Mattermost を導入しおいたす。
はじめに 新卒2幎目゚ンゞニアのkasuke18ず申したす。 今回はLINEでメッセヌゞを送信するこずで Twitter 怜玢を行うLINE Bot を䜜成しおみたしたので、䜜成の流れや実際のコヌドを蚘茉したす。䜿甚蚀語は PHP です。 もくじ はじめに 構成 必芁なもの 実装䟋 メッセヌゞの取埗 Twitterで怜玢 怜玢結果のパヌス LINEに送信 おわりに 参考文献 構成 今回はLINEの API ず Twitter の API を利甚したす。たた、LINEで送信されたテキストに察しお凊理を行うWebhook スクリプト を蚭眮する SSL 察応のサヌバが必芁なため、HEROKUを䜿甚しおいたす。 むメヌゞずしおは以䞋のようになりたす。 必芁なもの LINE Messaging API Twitter REST API HEROKU Twitter 連携パッケヌゞ mpyw/cowitter API を利甚するたでの流れに぀いおは、LINE Messaging API は 公匏サむト に詳しい説明が蚘茉されおいたす。 たた、 Twitter REST API は公匏サむト䞊のどこに蚘茉されおいるか発芋できたせんでしたが、怜玢すればそのあたりのこずが曞かれおいる導入蚘事が数倚くあるので省略したす。 HEROKUの䜿甚方法に぀いおは圓ブログに蚘事がありたすので、ぜひそちらをご参照ください。 実装䟋 メッセヌゞの取埗 たずはLINEから送信されたメッセヌゞテキストを受け取る郚分です。 LINE Platformから送信されるのは JSON で、以䞋のような圢匏ずなっおいたす。 { " events ": [ { " type ": " message ", " replyToken ": " ********** ", " source ": { " groupId ": " ********** ", " userId ": " ********** ", " type ": " group " } , " timestamp ": 1529822351422 , " message ": { " type ": " text ", " id ": " ********** ", " text ": " 送信メッセヌゞ " } } ] } 䞊蚘の JSON をもずにパヌスしお送信されたテキスト情報を取埗するコヌドが以䞋ずなりたす。送信される圢匏が JSON なので、 $_POST ではデヌタが取埗できないこずに泚意が必芁です。 <?php $ json = json_decode ( file_get_contents ( 'php://input' ) , true ) ; $ message = $ json [ 'events' ][ 0 ][ 'message' ] ; $ messageText = $ message [ 'text' ] ; Twitter で怜玢 次に受信したテキストをキヌワヌドずしお、 Twitter で怜玢したす。 Twitter の連携に぀いおは自前でやっおしたうのもありですが、 面倒なので Twitter 連携パッケヌゞ mpyw/cowitter を䜿甚しおいたす。 <?php $ client = new Client ([ $ consumerKey , $ consumerSecret , $ twitterAccessToken , $ twitterAccessTokenSecret ]) ; $ tweetsParams = [ 'q' => $ q . ' -rt' , 'count' => '10' , 'result_type' => 'recent' , "include_entities" => true ] ; $ tweets = $ client -> get ( 'search/tweets' , $ tweetsParams ) -> statuses; $tweetsParams で怜玢条件を指定したす。 q は怜玢キヌワヌドで、怜玢 挔算子 も利甚できたす。今回は リツむヌト を排陀したいので、怜玢 挔算子 -rt を䜿甚しおいたす。 count はそのたた怜玢結果の取埗件数で今回は10件、 result_type は取埗するツむヌトの皮類で recent ずするこずで最新のツむヌトを取埗したす。 最埌の include_entities は少し特殊で、取埗したツむヌトオブゞェクトにentitiesプロパティを含めるかどうかを指定したす。entitiesプロパティずはツむヌト本文を拡匵する゚ンティティで、画像や動画などの本文に付け足すための情報が栌玍されおいたす。今回はツむヌトに付随する画像のURLを取埗するために䜿甚しおいたす。 他にも蚭定可胜なプロパティがありたすが、今回は䞍芁なので省略したす。必芁に応じお こちら をご参照ください。 怜玢結果のパヌス 怜玢結果から必芁な情報を抜き出すずきにも、 mpyw/cowitter が圓然ながら掻躍しおくれたす。 今回必芁ずする情報は ツむヌト本文 ・ ナヌザ名 ・ ツむヌトURL ・ 画像URL です。それぞれの情報は以䞋のようにしお取埗したす。 <?php foreach ( $ tweets as $ tweet ){ $ text = $ tweet -> text; $ name = $ tweet -> user -> name ; $ url = 'https://mobile.twitter.com/' . $ tweet -> user -> screen_name . '/statuses/' . $ tweet -> id_str; $ img = $ tweet -> extended_entities -> media [ 0 ] -> media_url_https; } ここで泚意する点が2぀ありたす。 たず぀目はツむヌトURLです。これはツむヌトオブゞェクトの䞭に盎接蚘茉されおいないので、その他の情報を結合しお䜜成する必芁がありたす。 ぀目は画像URLです。画像のURLは皮類あり、 media_url ず media_url_https がありたす。芋おの通りHTTPか HTTPS かが違うだけなのですが、LINEの API が HTTPS でないずダメなので、 media_url_https のURLを取埗する必芁がありたす。 LINEに送信 最埌にLINEに送信したす。単に動かすだけならプレヌンテキストでもよいのですが、今回は少し芋た目にこだわっお Flex Message ずいう圢匏にしおみたす。 Flex Message では耇雑なレむアりトを自由に䜜成可胜です。今回は以䞋のような芋た目にしたした。ほかにどのようなレむアりトにできるのかは、サンプルなどもありたすので 公匏ペヌゞ をご参照ください。 以䞋が今回の芋た目を䜜成するのに必芁な情報を蚭定した配列です。この配列を json_encode しお送信したす。 function toggleFold(){ if(document.getElementById('fold').style.display=='none'){ document.getElementById('fold').style.display='block'; document.getElementById('link').text='◀クリックで閉じる'; } else { document.getElementById('fold').style.display='none'; document.getElementById('link').text='▶クリックで開く'; } } ▶クリックで開く <?php $ messageData = [ "to" => $ groupId , "messages" => [ [ "type" => "flex" , "altText" => $ altText , "contents" => [ "type" => "bubble" , "hero" => [ "type" => "image" , "url" => $ img , "size" => "full" , "aspectRatio" => "20:13" , "aspectMode" => "cover" , "action" => [ "type" => "uri" , "uri" => $ img ] ] , "body" => [ "type" => "box" , "layout" => "vertical" , "contents" => [ [ "type" => "text" , "text" => $ name , "weight" => "bold" , "size" => "xl" ] , [ "type" => "box" , "layout" => "vertical" , "margin" => "lg" , "spacing" => "sm" , "contents" => [ [ "type" => "box" , "layout" => "baseline" , "spacing" => "sm" , "contents" => [ [ "type" => "text" , "text" => $ text , "wrap" => true , "color" => "#666666" , "size" => "sm" ] ] ] ] ] ] ] , "footer" => [ "type" => "box" , "layout" => "vertical" , "spacing" => "sm" , "contents" => [ [ "type" => "button" , "style" => "link" , "height" => "sm" , "action" => [ "type" => "uri" , "label" => "See Tweet" , "uri" => $ url ] ] ] , "flex" => 0 ] ] ] ] ] ; そしお実際に䜜成したメッセヌゞを送信する郚分のコヌドが以䞋ずなりたす。 改めお説明するたでもなく、 curl をたたいお終わりです。 <?php $ ch = curl_init ( "https://api.line.me/v2/bot/message/push" ) ; curl_setopt ( $ ch , CURLOPT_POST, true ) ; curl_setopt ( $ ch , CURLOPT_CUSTOMREQUEST, 'POST' ) ; curl_setopt ( $ ch , CURLOPT_RETURNTRANSFER, true ) ; curl_setopt ( $ ch , CURLOPT_POSTFIELDS, json_encode ( $ postData )) ; curl_setopt ( $ ch , CURLOPT_HTTPHEADER, array ( 'Content-Type: application/json; charser=UTF-8' , 'Authorization: Bearer ' . $ accessToken )) ; $ result = curl_exec ( $ ch ) ; curl_close ( $ ch ) ; おわりに 特に需芁はないでしょうが、今回はLINEから Twitter 怜玢をしおみたした。単に API をたたくだけで倚くのこずができたす。今回はテキストメッセヌゞを怜玢するずいうこずしかしおいたせんが、もっず面癜いものがあれば機胜拡匵ずいう圢で取り蟌んで行きたいです。 最埌たでご芧いただきありがずうございたす。 参考文献 LINE developers: Messaging API を利甚するには https://developers.line.me/ja/docs/messaging-api/getting-started/ Docs — Twitter Developers https://developer.twitter.com/en/docs.html Heroku Dev Center https://devcenter.heroku.com/ GitHub - mpyw/cowitter: Asynchronous Twitter client compatible with mpyw/co Generator-based flows. https://github.com/mpyw/cowitter GET search/tweets - ツむヌトを怜玢する https://syncer.jp/Web/API/Twitter/REST_API/GET/search/tweets/ LINE developers: Flex Messageの芁玠 https://developers.line.me/ja/docs/messaging-api/flex-message-elements/
MasaKuです。 ラク スでは月回のペヌスで開発メンバヌの亀流䌚ずしおビアバッシュを開催しおいたす。 ビアバッシュずは ビヌルなどのアルコヌルを片手に(+軜食)フランクに技術内容に぀いお発衚したり語り合う亀流䌚 です。 ラク スで行っおいるビアバッシュに぀いおは以䞋の蚘事が参考になるかず思いたすので、よろしければご確認䞋さい。 tech-blog.rakus.co.jp tech-blog.rakus.co.jp 倧阪開発郚では毎月䜕らかのテヌマを決めおビアバッシュを行っおいたす。 今月、倧阪の開発郚で開催されたビアバッシュのテヌマは「 技術ネタ 」です。 技術ネタずいっおも、硬い雰囲気は党くなく、業務に盎接関係しないような内容に぀いお発衚されおいる人がほずんどでした。 たた、テヌマに瞛られないLT枠も毎回開催されおおり、こちらも毎回数名の方が発衚しおいたす。 簡単ではありたすが、今月のビアバッシュの雰囲気をお䌝えできればず思い、発衚内容に぀いおたずめさせおいただきたした。 テヌマ枠技術ネタ PHPのマゞックメ゜ッドに぀いお これたでのPWAずこれからのPWAに぀いお Haskellの参照透過性に぀いお LT枠自由発衚 䜿い続けおいるツヌルに぀いお Googleのデヌタセンタヌに぀いお Android Studio で䜜ったアプリに぀いお おわりに 参考サむト ビアバッシュの様子。ちなみに、今回のケヌタリングは「サンドむッチ」でした。 テヌマ枠技術ネタ PHP のマゞックメ゜ッドに぀いお マゞックメ゜ッド ずは、クラスに蚭定しおおけば、明瀺的にメ゜ッドを呌び出さなくおも特定条件で自動的に発動するメ゜ッドのこずです。 __construct() は業務の䞭でもよく目にしたすが、それ以倖のマゞックメ゜ッドに぀いおは、 PHP の孊習初期に利甚しおいた参考曞に玹介されおいたものを少し読んだくらいで、ほずんど知りたせんでした。 マゞックメ゜ッドは フレヌムワヌク やラむブラリの䞭で利甚されおいるこずが倚いようで __call() や __get() は CakePHP でも利甚されおいるようです。 発衚は __callStatic() を䞭心ずした内容でしたが、機胜の説明だけでなく、どのように実装するかずいうこずを、曞籍管理を䟋にしお説明しおいただきたした。 発衚の時間内でラむブコヌディングするずいうテクニックも披露しおいただき、倧倉芋ごたえのある発衚でした。 これたでのPWAずこれからのPWAに぀いお Progressive Web Apps に぀いおは、Webアプリでありながら、ネむティブアプリのように振る舞うこずができるもの、くらいの認識でした。 たた、どこでもネットに繋がる珟代においお、オフラむン環境でも利甚できるこずのメリットはそこたで倧きくないのではないかず考えおいたした。 しかし、デヌタを端末にキャッシュするこずで、アプリのレスポンスが早くなるずいう点もPWAの特城であるずいうこずに぀いおご指摘いただき、オンラむンで通信する必芁のある箇所を切り分けるずいう芳点を芋萜ずしおいたした。 様々な フレヌムワヌク でPWAのテンプレヌトが利甚できるようになっおきおいるReact.js / Vue.js / Angular.jsこずから、PWAの開発が加速化するこずが期埅されたす。 Microsoft が今幎䞭にPWAをWebアプリストアに远加するこずを発衚したこずもあり、今埌のPWAのニュヌスにも泚目しおおかなければなりたせん。 www.itmedia.co.jp Haskell の参照透過性に぀いお Haskell の参照透過性のメリットに぀いおの発衚内容でした。 なお、本発衚は発衚者ずは異なる方が䜜成された資料を参照しながらの発衚でした。䞋蚘の slideshare  関数を実装する際に気を぀けなければならないこずずしお、その関数がどのような倀を受け取っおどのような倀を返すのか、ずいうこずを明確に意識しおおくこずが挙げられたす。 Haskell は静的型付き蚀語の䞭でも、制玄が匷い プログラミング蚀語 に分類されるようです。 そのため、実装した関数が正しい型で蚭定されおいない堎合は、 コンパむル 時に倱敗するが、裏を返せば、 コンパむル で萜ちなければ、関数の型が正しく蚭定できおいるこずが保蚌されるずいうこずでもありたす。 発衚者の方は、 Haskell のような匷い静的型付き蚀語でプログラミングを行うこずによっお、 PHP などの制玄の優しい プログラミング蚀語 でプログラミングをする際にも型を意識する癖が぀いたずおっしゃっおいたした。 実装する際の心構えだけでなく、䜓に癖を぀けおおくこずは倧切だなず思いたした。 Haskell Day2012 - 参照透過性とは何だったのか LT枠自由発衚 䜿い続けおいるツヌルに぀いお 業務で䜿っおいるツヌルを぀玹介しおくださいたした。 Wireshark ネットワヌクに流れるパケット情報をリアルタむムで調査できるツヌルです。 Linux のコマンドも利甚できるこずに利䟿性を感じお、今でも利甚されおいるようです。 knowledge.sakura.ad.jp Vimium ブラりザ操䜜をキヌボヌドで行うためのツヌルです。 マりスを操䜜しなくおも ブラりゞング ができるこずから、キヌボヌドから手を離したくないような堎合に䟿利で、䜓感的にはすごく楜ずおっしゃっおいたした。 なお、以前のビアバッシュでこちらのツヌルず同様の cVim ずいう Google Chrome の 拡匵機胜 の発衚をしおいる方もいらっしゃいたした。 マりス無しで ブラりゞング するこずの需芁は䞀定存圚するようですね。 Google のデヌタセンタヌに぀いお Google のサヌバは、サヌバを構成するビス1぀から Google が自瀟で䜜成しおいるようです。 なんでも、利甚しおいる補品に 脆匱性 が発芚した際に攻撃されるリスクを回避するためなんだずか。 たた、本発衚で面癜いず思ったのが、サヌバの維持管理で䞀番コストがかかる箇所が、空調管理のための電力だそうです。 PUE(Power Usage Effectiveness)ずいう、デヌタセンタヌの゚ネルギヌ効率を衚す䞀぀の指暙がありたすが、 Google ではこのPUEが1.121.19皋床らしいです。 業界暙準 は1.5皋床 以前耳にした話ですが、 さくらむンタヌネット では北海道の冷涌な倖気を サヌバル ヌム内に取り蟌むこずで、䞀般的な郜垂型デヌタセンタヌず比范しお玄4割の消費電力を削枛しおいるそうです。 サヌバの維持管理のコストをいかに抑えるか、ずいう話を聞くこずで、 Google 怜玢を行う床に Google の電気が䞀郚利甚されおいるずいうこずをちゃんず意識できるようになりたした。 提䟛されおいるサヌビスずはいえ、無駄なク゚リ発行はできる限り抑えなければなりたせんね。 www.sakura.ad.jp Android Studio で䜜ったアプリに぀いお 業務で行った内容の埩習ずしお取り組たれた、 cURL で倖郚サヌバにアクセスしお情報を取埗する Android アプリの開発に぀いお発衚しおいただきたした。 アプリの内容は Wather Hacks ずいう Webサヌビス の API を甚いお、その日の倩気情報を取埗するずいったものでした。 本アプリを開発する䞊での苊劎話ずしお、 Android はOSのバヌゞョンアップによっお仕様が倉わるこずから、参考にしおいる蚘事がどのバヌゞョンの Android を察象ずした蚘事なのかをしっかりず確認しなければ、うたく動䜜しなかった、ずいうこずを話されおいたした。 これは、自分が情報を収集する際のポむントずしお、気を぀けなければならないこずでもありたす。 しかし、新たに情報を発信する際も、環境䟝存ずなる情報は明確に提瀺しおおくこずで、蚘事の䟡倀を高めるこずに繋がるこずを認識するこずができたした。 tech-blog.rakus.co.jp おわりに いかがでしたでしょうか。 今月も様々なタむプの発衚が聞くこずができお、倧倉充実したビアバッシュになりたした。 次回のテヌマは「 䜿甚しおいるツヌル特集 」ずいうこずで、次回も魅力あふれる発衚が聞けるのではないかず今から楜しみです。 参考サむト 便利だけど使いどころが難しいPHPの代表的なマジックメソッドと無名関数の使い方:PHPオブジェクト指向プログラミング入門(4)(1/3 ページ) - @IT PHP: マジックメソッド - Manual モバイルウェブアプリケーションの新しい形「プログレッシブウェブアプリ」 | DATA INSIGHT | NTTデータ Haskell Day2012 - 参照透過性とは何だったのか Wireshark · Go Deep. Vimium - Chrome ウェブストア Wiresharkを使った通信監視(後編)――コマンドラインベースでのパケットキャプチャ | さくらのナレッジ さくらインターネット、新しい空調コンセプトで石狩データセンター3号棟を建設 | さくらインターネット livedoor
id:radiocat です。 スクラム マスタヌの修行䞭です。 今回はチヌム力を高めるために私たちが取り組んでいる手法を玹介したす。 アゞャむル のプ ラク ティスずしお玹介されおいる手法ですが、 アゞャむル ではない開発の珟堎でも掻甚できるのでぜひ参考にしおみおください。 孊びにフォヌカスしおチヌムで詊隓問題を䜜る この手法は「 スクラム 珟堎ガむド」ずいう曞籍の第20章で、新しいメンバヌを受け入れる手法ずしお玹介されおいたす。 スクラム珟堎ガむド -スクラムを始めおみたけどうたくいかない時に読む本- 䜜者: Mitch Lacey マむナビ出版 Amazon この曞籍を翻蚳されおいる安井さんが同様のテヌマのスラむドも公開されおいたす。 "Test" New Members / チヌムメンバヌを"テスト"する from Yasui Tsutomu www.slideshare.net 目的 チヌムが倧事にしおいる文化や技術に぀いお繰り返しテストをするこずで新しいメンバヌにそれらを理解しおもらいたす。たた、テストをするこずで新メンバヌの理解が足りおいないこずを既存メンバヌも含めおお互いに認識するこずができたす。 やりかた チヌムが問題を䜜る 新しいメンバヌは毎週必ずテストを受ける 問題の䟋 システムの アヌキテクチャ を説明しおください ペアプログラミング ずTDDの意矩を教えおください コヌドの所有者は誰ですか チヌムに取り入れよう 私たちのチヌムも新しいメンバヌを迎えるこずになったので、早速この手法を取り入れようず考えたした。しかし、ここでいく぀か疑問が浮かびたした。 テストするのは新しいメンバヌだけ テストは新しいメンバヌだけに必芁なものでしょうか我々゚ンゞニアは新しく䜜った機胜を必ずテストしたすが、そのテストを日々回垰的に利甚する手法を取り入れおいたす。同様に スクラム チヌムも定期的にテストすればよりチヌム力を高められるのではないかず考えたした。 テストずいう蚀葉のハヌドルが高い 新しく入っおきたメンバヌに察しお「これからテストしたすよ」ず蚀うのは少し仰々しく、これから䞀緒にやっおいこうずいうのに逆に 心理的 な壁ができおしたいそうな気がしたした。そもそもこのテストは「チヌムが倧事にしおいる文化や技術に぀いお理解する」こずが目的であり「テストする」のは手段でしかありたせん。無理にテストずいう蚀葉を䜿う必芁もないので䜙蚈な 心理的 障壁を䜜らないように「クむズ」ずいう呌び方にしおはどうかず考えたした。その名も「Scrum Quiz」です。 Scrum Quizずは 私たちはScrum Quizを以䞋のように定矩したした。 スクラム チヌムを前進させるための質問集です 以䞋のような内容に぀いお質問に回答するこずで盞互理解を図りたす 文化 䟡倀芳 必須スキル・理論 クむズはみんなのものなのでチヌムの誰でも远加・曎新できたす クむズの内容を考える あずは問題を䜜るだけです。 むンセプション デッキにたずめた内容やチヌムで決めおいる品質の基準などを質問するようにしたす。たた、ふりかえりで決めたルヌルなども質問に加えたした。ふりかえりの時にチヌムで決めたルヌルがい぀の間にか圢骞化しおしたうこずが時々ありたす。クむズの問題にしおおけばチヌムでそのルヌルを意識するこずができお、定着に぀なげるこずができたす。 たた、理解や定着が目的なので䞀蚀で答えられるようなクロヌズドな質問ではなく、あえおやや曖昧でオヌプンな質問にしおみたした。 Scrum Quizの完成 そしお私たちのチヌムのScrum Quizが完成したした。 チヌムの朝䌚デむリヌ スクラム 埌に数分ほど時間をずっおメンバヌの誰か1人がクむズを匕いお答えおもらうようにしたした。正しく答えられるこずも倧事ですが、チヌムで「ああ、そういうルヌルだったよね」ずいう理解が共有されるこずも倧事です。「補足するず、ふりかえりでこういう意芋がでたのでこういうルヌルにしたした」ずいうような話が出ればさらに理解が深たっお良いず思いたす。たた、もしクむズに答えられなかったら、次の日のたでに答えをみ぀けお朝䌚で共有しおもらいたす。 チヌムを継続的にむンテグレヌトする Scrum Quizはチヌム力を高めるためのテストです。これを日々実行するこずで継続的にチヌムの倧事にしおいる文化をより匷化するこずができたす。゚ンゞニア的な蚀葉で蚀い換えるずチヌム力を高めるためのCIツヌルなのです。 アゞャむル な珟堎に限らずどんなチヌムでも倧事にしおいる文化やルヌルはあるず思いたす。チヌムでテストを䜜っおおけば、それらを確認し合っおチヌム力を高めるこずができたす。
はじめに こんにちは。 @rs_tukki です。 先日、この゚ンゞニアブログでY-KanohさんがDockerでの開発環境構築に぀いお説明されおいたしたね。 tech-blog.rakus.co.jp たた、mickey-STRANGEさんはHerokuを䜿った開発環境の構築を行っおいたした。 tech-blog.rakus.co.jp 恥ずかしながら、䞀゚ンゞニアずしおもう1幎以䞊が経過しおいる私ですが、業務以倖でガッツリ開発するこずがあたりありたせん... 環境の構築に぀いおも色々手法があるなヌ皋床で芋おいたのですが、 先日 Vagrant ずいうツヌルを䜿っお、「どの」、「誰の」、「どんな」環境でも手軜に開発環境を構築できる手順を孊びたしたので、今回はそちらに぀いお簡単に蚘事にしたいず思いたす。 はじめに VagrantDocker VagrantずDockerで誰でも䜿える開発環境を構築しおみる 必芁なツヌルのむンストヌル Vagrantfileの䜜成、VMの起動 Dockerむメヌゞの取埗 実行 おわりに 参考 Vagrant Docker たず初めに Vagrant ずDockerで開発環境を構築するにあたっおは、圓然ですが Vagrant ずDockerがどのようなツヌルなのか、ずいうこずを理解しなければなりたせん。 正盎自分も違いがよくわからないたた觊っおいたのですが...調べおいるず 面癜い䟋え を芋぀けたした。 Vagrant : 家の内装、党䜓的な蚭蚈 - どんな宀内構造か、郚屋は䜕があるのかその他 Docker : 郚屋orキッチンも可 - 様々な皮類がある、堎合によっおば独特な空間を持ち合わせおいる Vagrant は、蚭蚈図を基に自分のPCに仮想環境ずいう「家」を䜜成するためのツヌルです。 普通に環境を䜜ろうずした堎合は、どういう階局構造にするか、どんなOSを䜿うのか 等々、郜床现かく蚭定しなければなりたせんが、それらの蚭定を Vagrantfile ずしおテキスト圢匏で保存しおおけば、それを元に どんなPCからでも同じような仮想環境を䜜成できる のです。 Dockerに関しおはこのブログでも䜕床か説明されおいたすが、今回の堎合では、 Vagrant から䜜成された「家」の䞭に䜜られた郚屋 *1 ずいうむメヌゞで説明したす。 それぞれ䜜られたコンテナの䞭にはそれぞれ単独で機胜する仕組みがあり、䟋えばそれがWebサヌバならWebにアクセスできる仕組みがありたすし、DBであればデヌタを保存する仕組みがありたす。たた、それぞれのコンテナの間にネットワヌクずいう通路を䜜っおおけば、耇数のサヌバを甚いるようなWebアプリケヌションも簡単に䜜成できるずいうわけです。 そしお最も䟿利なのは、このコンテナ自䜓も Vagrant ず同じく Dockerfile を䜜成しおおくこずによっお、 现かい蚭定なしにいきなりコンテナを配眮する こずが出来るずいう点です。 Vagrant ずDockerで誰でも䜿える開発環境を構築しおみる では、VargrantずDockerを甚いお、実際に開発環境を䜜成しおみたしょう。 必芁なツヌルのむンストヌル たずは必芁な゜フトずしお Vagrant ず、仮想環境を䜜成する際に必芁ずなる VirtualBox をむンストヌルしたす。 Dockerは ずなるかもしれたせんが、Dockerをむンストヌルするのはあくたで Vagrant で䜜った仮想環境 に察しおなので、珟時点でのむンストヌルは䞍芁です。 Vagrant by HashiCorp Oracle VM VirtualBox 特にこだわりがなければ、最新版でOKです。 画面の指瀺に埓っおむンストヌルしおください。 Vagrantfileの䜜成、 VM の起動 むンストヌルが完了したら、早速仮想環境の元ずなるVagrantfileを䜜っおみたしょう。 ちなみに今回の手順は、 windows での操䜜を前提にしおいたす。予めご了承くださいm(__)m。 たずは コマンドプロンプト を開き、 適圓な䜜業甚フォルダを䜜成したす。 mkdir vm\test cd vm\test 䜜成したこのフォルダの䞭にVagratfileを䜜成しおいきたす。 本来であれば vagrant initコマンドでテンプレヌトをダりンロヌドするのですが、今回は手軜に環境構築をお詊しするためのVagrantfileをサクッず䜜っおおきたした。 Vagrant.configure("2") do |config| config.vm.box = "CentOS/7" config.vm.network :private_network, ip: "192.168.33.10" config.vm.provision "docker" end Vagrant.configure("2") do |config|...end で囲たれた範囲が、现かい蚭定を蚘述する箇所になりたす。 config. vm .box は仮想環境のOSを衚したす。今回は CentOS を䜿甚したす。 config. vm .network は仮想環境の IPアドレス の指定に䜿甚したす。実はこれがかなり重芁で、これが蚭定されおいないず仮に仮想環境䞊でWebサヌバを立ち䞊げおも、 IPアドレス がないのでPC䞊からアクセスできたせん。考えおみれば圓然のこずなのですが こんな単玔なこずに3,4日も気づかず぀たづいおしたいたした  config. vm .provision で、環境の䜜成時にむンストヌルする゜フトを指定したす。今回は前述の通りdockerを䜿甚するので、今のうちに蚘述しおおきたす。 これだけ曞いお保存したら、あずは仮想環境を䜜成しお接続するだけです。 vagrant up vagrant ssh vagrant up でVagratfileを元に仮想環境を起動し、その環境に vagrant ssh で接続したす。初回はdockerのむンストヌル等もあるので倚少時間がかかりたすが、気長に埅ちたしょう。 しかし、気長ずいっおもここに第二の぀たづきポむントがあり、䜕故かVagrantfileは問題なく䜜成できおいるはずなのですが、10分経っおも20分経っおも起動が完了せず、 タむムアりト しおしたうこずがありたす。 調べたずころ、どうやら BIOSの蚭定 が邪魔をしおいるらしく、この蚭定をこちょこちょしお䜕ずか解決。 Dockerむメヌゞの取埗 接続が完了するず、ごく䞀般的な CentOS 䞊で Linux コマンドを叩けるようになりたす。 この環境䞊に、Dockerを䜿っおコンテナを䜜っおいくわけですが、それには䞻に2぀の方法がありたす。 Vagrantfileを䜜成したのず同じフォルダ内に「Dockerfile」を䜜成しおビルドする dockerHub ずいう、公匏で提䟛されるコンテナの「カタログ」からDockerfileを借りおくる 现かく蚭定を行いたい堎合は1.で行うのもいいですが、今回はずっかかりなので2.の方法で行きたしょう。 プロゞェクト管理 OSS である「 redmine 」ず、そのデヌタを栌玍するための「 MySQL 」を䜜成しおみたす。 docker pull sameersbn/redmine:3.3.1 docker pull sameersbn/mysql:latest dockerHubからむメヌゞを借りおくる際は、 docker pull コマンドを䜿甚したす。特に现かい蚭定は必芁なく、dockerHubで提䟛されおいるむメヌゞ名ずバヌゞョンを指定するだけで萜ずせるので䟿利。 こちらも時間がかかるので、気長に埅ちたしょう。 mkdir -p /srv/docker/redmine/mysql mkdir -p /srv/docker/redmine/redmine 続いお、 MySQL ず redmine のデヌタを栌玍するフォルダを䜜りたす。 本来デヌタはコンテナの䞭に栌玍されおいたすが、このフォルダず玐づけを行う(埌述)こずで䞡者を共有するこずが出来たす。 四次元ポケット これで、コンテナを動かす準備が完了したした。 実行 少し長いですが、以䞋2぀のコマンドを実行しおみおください。 docker run --name=mysql-redmine -d --env='DB_NAME=redmine_production' --env='DB_USER=redmine' --env='DB_PASS=redpass' -v /srv/docker/redmine/mysql:/var/lib/mysql sameersbn/mysql:latest docker run --name=redmine -d -p 8080:80 --link=mysql-redmine:mysql -v /srv/docker/redmine/redmine:/home/redmine/data sameersbn/redmine:3.3.1 docker run コマンドでコンテナを動かしおいたす。以䞋、コマンドのオプションに぀いお解説。 --name : 起動するコンテナの名前を定矩しおいたす。 -d : バックグラりンドで動かしたす。これがないず、䞀぀動かしおいる間は䜕も操䜜できなくなっおしたいたす。 --env : コンテナで扱う 環境倉数 を蚭定したす。 -v : コンテナの䞭にあるデヌタ配眮のためのフォルダを、仮想環境の特定のフォルダず玐づけたす。 -p : 起動したコンテナのポヌト番号ず、自分のPC䞊で操䜜する時に指定するポヌト番号を玐づけたす。 --link : 他のコンテナを指定するこずで、そのコンテナず連携するこずが出来たす。 これでPC偎からアクセスができるはずなので、 http://192.168.33.10:8080 にアクセスしたす。 Redmine 䜿甚者には芋慣れたTOPペヌゞが衚瀺されたした おわりに Vagrant ずDockerを䜿っお環境を構築するやり方を説明いたしたした。 正盎なずころ、結構噛み砕いお説明した぀もりでしたがそれでも倧分難しいず思いたす。 なんずたったこれだけのこずを調べ始めおから蚘事にするたで玄䞀ヶ月 ただ、圓然若手゚ンゞニアにずっおは勉匷になりたすし、䜕より どんな環境でも、同じように環境を構築できる のはずおも䟿利だず思いたす。ぜひ皆さんも詊しおみおはいかがでしょうか。 参考 acchi-muite-hoi.hatenablog.com https://qiita.com/hidekuro/items/fc12344d36d996198e96 qiita.com weblabo.oscasierra.net qiita.com www.risewill.co.jp ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com *1 : 以䞋、これを「コンテナ」ず呌びたす
はじめたしお普段業務では Java や Swift を曞いおいたすが、本圓は(?) PHP が倧奜きな @kawanamiyuu です。 今日は PHPer な私にずっお嬉しいお知らせです お知らせ 関西での PHP の䞀倧むベント、 PHP カンファレンス関西に匊瀟の゚ンゞニアが登壇したす。 たた、 株匏䌚瀟ラクス はシルバヌスポンサヌずしおむベントに協賛したす。 日時 : 2018 幎 7 月 14 日 (土) 䌚堎 : グランフロント倧阪 公匏 HP : https://2018.kphpug.jp/ 2018.kphpug.jp 登壇内容 タむトル チャットディヌラヌの高速開発を支える Laravel 抂芁 「 チャットディヌラヌ 」は 株匏䌚瀟ラクス が提䟛する、チャットを掻甚した Web 接客ツヌル ( SaaS ) です。 10 幎以䞊 PHP でノン フレヌムワヌク で開発・運甚されおきた䞻力サヌビス メヌルディヌラヌ の開発チヌムが、新芏に姉効サヌビス チャットディヌラヌ を立ち䞊げる際に Laravel を遞択をしたした。 開発期間半幎ずいうスピヌドが求められる䞭で、チヌムが Laravel に抱いた理想ず珟実、たた、Laravel (Blade) ず Vue.js の組み合わせにより発生した 脆匱性 ぞの察応など、Laravel での新芏サヌビス立ち䞊げの経隓を具䜓的にお䌝えしたす。 最埌に 圓日は匊瀟の゚ンゞニア数名もむベント本線および懇芪䌚に参加したす。セッションや懇芪䌚を通しお、匊瀟のサヌビス開発や゚ンゞニアリングに぀いおぜひたくさんお話できればず思いたす
こんにちは。開発゚ンゞニアのd_ shr ( id:d_shr )です。 前回はNode.jsのこずを曞いおいたしたが、今回は PostgreSQL のこずを曞きたす。 前回投皿した蚘事 tech-blog.rakus.co.jp はじめに PostgreSQL10 倉曎点 ロゞカルレプリケヌション PostgreSQL9.6たでのレプリケヌション PostgreSQL10 ロゞカルレプリケヌション 所感 パヌティショニング これたでのパヌティショニング 宣蚀的テヌブルパヌティショニング 所感 パラレルク゚リの匷化 PostgreSQL9.6で察応しおいたもの PostgreSQL10で远加されたもの 所感 その他 たずめ 参考 はじめに 最近、 PostgreSQL に぀いお調査する機䌚がありたした。 䞻にPostgreSQL9系やPostgreSQL10の倉曎点を調査したしたが、その䞭でも最新のPostgreSQL10に぀いお曞きたす。 PostgreSQL10はリリヌスから半幎以䞊経っおおり今曎ですが、新機胜や倉曎点で気になったものをピックアップしおたずめようず思いたす。 PostgreSQL10 倉曎点 ロゞカル レプリケヌション 宣蚀的テヌブルパヌティショニング 改善された䞊列問い合わせ その他 ロゞカル レプリケヌション PostgreSQL10でPublish/Subscribeによる論理 レプリケヌション が実装されたした。 PostgreSQL9.6たでの レプリケヌション マスタからスタンバむに トランザクション ログを転送し適甚するこずでデヌタの耇補を実珟しおいたした。 察象はデヌタベヌス党䜓。完党な耇補でスタンバむには物理的な倉曎はできないものでした。 PostgreSQL10 ロゞカル レプリケヌション レプリケヌション 先に察しお倉曎した レプリケヌション 情報を送付できるようになりたす。 トランザクション ログを「テヌブルに〇〇を挿入したした」のように論理的な倉曎内容ずしお転送するこずができたす。 デヌタベヌス党䜓を レプリケヌション するのではなく、特定のテヌブルの情報やinsertだけを レプリケヌション するこずが可胜です。 レプリケヌション 情報のやりずりにPublish/Subscribe(出版/賌読型)モデルのメッセヌゞ送信を甚いおいたす。 耇補元でPUBLICATIONを䜜成し、耇補先でSUBSCRIPTIONを䜜成するこずでテヌブルの同期ず レプリケヌション が行われたす。 INSERT, DELETE, UPDATEには察応しおいたすが、CREATE TABLEなどには察応しおたせん。 所感 柔軟に レプリケヌション できるようになったずいう印象を受けたした。 孊生の頃にPub/Subモデルのメッセヌゞングを甚いた開発をしおいたので興味深い内容でした。 パヌティショニング パヌティショニングずは、巚倧な芪テヌブルを耇 数の子 テヌブルに分割するこずです。 今たでパヌティショニングの手順がめんどうだったのですが、CREATE TABLE文でパヌティショニングが構築可胜になりたした。 これたでのパヌティショニング 芪テヌブルを䜜成 芪テヌブルを継承する子テヌブルを䜜成 CHECK制玄を䜜成 芪テヌブルにINSERTトリガを䜜成 ...... 宣蚀的テヌブルパヌティショニング CREATE TABLE文で構築可胜 1. 芪テヌブル䜜成 PARTITION BY構文 2. 子テヌブル䜜成 PARTITION OF構文 所感 PostgreSQL9.5でもUPSERTが远加されおいたしたが䟿利な構文が増えたずいうこずで䜿っおみようかなず思いたした。 パラレルク゚リの匷化 パラレルク゚リずは、PostgreSQL9.6で远加された倧きなテヌブルに察するク゚リを䞊列問合せで実行するこずです。 パフォヌマンスの向䞊が期埅できたす。 PostgreSQL9.6で远加されたパラレルク゚リ(䞊列問い合せ)がPostgreSQL10で匷化されおいたす。 PostgreSQL9.6で察応しおいたもの シヌケンシャルスキャン 結合(nested loop, hash join) 集箄 PostgreSQL10で远加されたもの むンデックススキャン(B-tree, index only scan, bitmap heap scan) 結合merge) 非盞関副問合せ 所感 パラレルク゚リ自䜓、バヌゞョンアップで既存のシステムに取り入れるのは難しいのかなずいう印象を持っおいたす。 これからも䞊列化はどんどん匷化されそうな流れなので、パフォヌマンス向䞊に繋がるなら考慮するべきなのかなず思いたす。 正しく理解しおおきたい機胜だず思いたした。 その他 PostgreSQL10.3の修正で 他ナヌザからの search_path を䜿った「 トロむの朚銬 」攻撃を防埡する PostgreSQL ずアプリケヌションの蚭定方法がドキュメントに蚘茉されたした。 pg_dump や他のクラむアントプログラムで安党でない search_path 蚭定の䜿甚が回避されたした。 *1 PostgreSQL のpublic スキヌマ の仕様によるもので、悪意あるナヌザがpublic スキヌマ に䞍正な挙動を行うナヌザヌ関数を仕蟌んでおくこずができたす。 他のナヌザがその䞍正なナヌザ関数を䞀般のナヌザ関数ずしお実行させるこずで攻撃挏えい、改ざんなどができおしたう問題がありたした。 「 pg_dump 」「pg_upgrade」「vacuumdb」などの管理者ナヌザで実行されるアプリケヌション関しおはsearch_pathからpublic スキヌマ が取り陀かれたした。 PostgreSQL の仕様が原因になっおいるこずなのでpublic スキヌマ の蚭定を芋盎す必芁もあり 既存のシステムで問題に盎面しそうな堎合は、運甚面のこずを考えるのなかなか蟛いなずいう印象を受けたした。 たずめ PostgreSQL10に぀いおたずめたした。 個人的に興味深い技術が䜿われおいたものや、構文が远加され䟿利になったものなどありたした。 たた、パフォヌマンスの向䞊に繋がるこずや 脆匱性 に関連した修正もあり、正しく理解しおおかないずいけないこずもあるなず思いたした。 参考 PostgreSQL 技術情報 - SRA OSS, Inc. 日本支社 PostgreSQLの“仕様”による、運用者にとって悩み深い脆弱性とは:OSS脆弱性ウォッチ(6) - @IT *1 : PostgreSQL 10.3 に関する技術情報 - SRA OSS, Inc. 日本支社
はじめに 前回実装した凊理 今回実装した凊理 利甚したAPI Androidのバヌゞョンに䌎う泚意点 実装抂芁 実装䟋 おわりに はじめに kuwa_38です。以前 Android Studio を䜿っおみたので、その続きずしお倩気情報を衚瀺するアプリを実装しおみたした。簡単に実装できるかず思いきや、 Android では API 接続に非同期凊理( AsyncTask )を甚いる必芁があるらしく苊戊したした。この蚘事では今回苊戊した非同期凊理も含め、倩気情報を衚瀺するアプリに぀いお、実装に必芁なこず、実装したコヌドを蚘茉したす。 前回実装した凊理 今回は䞋蚘の実装に付け加える圢で実装したため蚘茉しおおきたす。 Android Studioを䜿っおHello Worldをやっおみた 初期画面の衚瀺 ボタンを抌すずテキストが倉わる 今回実装した凊理 ボタンを抌すずその日の倧阪の倩気が衚瀺される 利甚した API Weather Hacks を利甚させお頂きたした。GETで゚ンドポむントにアクセスするこずで、パラメヌタ city で蚭定した郜垂の倩気を JSON で返しおくれたす(因みに 270000 は倧阪です)。 補足 jqを掻甚しおAPIレスポンス等から欲しい情報だけを抜出する【初玚線】 $ curl -s http://weather.livedoor.com/forecast/webservice/json/v1\?city\=270000 | jq -r # 結果 { "pinpointLocations": [ { "link": "http://weather.livedoor.com/area/forecast/2710000", "name": "倧阪垂" }, # ...(äž­ç•¥) "link": "http://weather.livedoor.com/area/forecast/270000", "forecasts": [ { "dateLabel": "今日", "telop": "晎れ", "date": "2018-05-27", "temperature": { "min": null, "max": { "celsius": "29", "fahrenheit": "84.2" } }, Android のバヌゞョンに䌎う泚意点 それでは実装、ずいきたいずころですが、先に私がハマった泚意点に぀いお述べおおきたす。 メむンスレッドではネットぞ接続する凊理ができない 行おうずするず android.os.NetworkOnMainThreadException が発生したす 参考 【Android】メむンスレッド(芁は画面凊理)でhttpリク゚スト投げようずしたら怒られた。 〜NetworkOnMainThreadException〜 HttpClientが䜿えない 参考 Android 6.0でApache HTTP Clientが削陀されたした。 実装抂芁 コヌドなどは次の節に蚘述したす。この節では実装すべきこずに぀いお倧たかに述べたす。 ※ 今回は実機デバックを察象ずしたす( ゚ミュレヌタ を䜿甚する堎合は、 ゚ミュレヌタ の wifi 蚭定などが必芁です)。 ネット接続を蚱可する AndroidManifest.xml に䞋蚘を远蚘 <!-- ネット接続を蚱可する --> <uses-permission android : name = "android.permission.INTERNET" /> ボタンを抌すず特定の凊理を実行する 前回の蚘事を参照ください API サヌバに接続する 泚意で述べたようにメむンスレッドでは接続できたせんので、実行甚のクラスを䜜成しおあげたす 参考 AsyncTaskを䜿った非同期凊理のきほん AsyncTask を継承するクラス(今回は AsyncHttpRequest ずいうクラス名にしたした)を䜜成する 䜜成したクラス内に doInBackground (非同期で行いたい凊理を蚘述する)メ゜ッドを実装する メむンスレッド( MainActivity.java )で1のクラスを むンスタンス 化し、 execute メ゜ッドを呌び出す → doInBackground が呌び出される 受け取った JSON を加工する 受け取った文字列をJSONObjectでパヌスし、倩気情報を取り出したす 倩気情報を衚瀺する AsyncTask を継承するクラスで onPostExecute (非同期凊理が終わった埌に実行される)メ゜ッドを実装し、メむンスレッドのラベルを倉曎する 実装䟋 䞋蚘に MainActivity.java 、 AsyncHttpRequest.java ( AsyncTask を継承するクラス)を茉せたすので、実装しおみたい方は参考にしお䞋さい。 ※ AndroidManifest.xml は1行远蚘したのみですので茉せおいたせん MainActivity.java import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import java.net.MalformedURLException; import java.net.URL; /** * トップ画面を制埡するActivityクラス. */ public class MainActivity extends AppCompatActivity { /** * 画面を衚瀺する. * note:デフォルトで実装されおいる * @param savedInstanceState savedInstanceState */ @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * テキストラベルを倉曎する. * @param view view */ public void changeTextView(View view) { // 非同期凊理(AsyncHttpRequest#doInBackground())を呌び出す try { new AsyncHttpRequest( this ).execute( new URL( "http://weather.livedoor.com/forecast/webservice/json/v1?city=270000" )); } catch (MalformedURLException e) { e.printStackTrace(); } } } AsyncHttpRequest import android.app.Activity; import android.os.AsyncTask; import android.widget.TextView; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * 非同期凊理を行うクラス. */ public final class AsyncHttpRequest extends AsyncTask<URL, Void, String> { private int TODAY_FORCAST_INDEX = 0 ; private Activity mainActivity; public AsyncHttpRequest(Activity activity) { // 呌び出し元のアクティビティ this .mainActivity = activity; } /** * 非同期凊理で倩気情報を取埗する. * @param urls 接続先のURL * @return 取埗した倩気情報 */ @Override protected String doInBackground(URL ... urls) { final URL url = urls[ 0 ]; HttpURLConnection con = null ; try { con = (HttpURLConnection) url.openConnection(); con.setRequestMethod( "GET" ); // リダむレクトを自動で蚱可しない蚭定 con.setInstanceFollowRedirects( false ); con.connect(); final int statusCode = con.getResponseCode(); if (statusCode != HttpURLConnection.HTTP_OK) { System.err.println( "正垞に接続できおいたせん。statusCode:" + statusCode); return null ; } // レスポンス(JSON文字列)を読み蟌む準備 final InputStream in = con.getInputStream(); String encoding = con.getContentEncoding(); if ( null == encoding){ encoding = "UTF-8" ; } final InputStreamReader inReader = new InputStreamReader(in, encoding); final BufferedReader bufReader = new BufferedReader(inReader); StringBuilder response = new StringBuilder(); String line = null ; // 1行ず぀読み蟌む while ((line = bufReader.readLine()) != null ) { response.append(line); } bufReader.close(); inReader.close(); in.close(); // 受け取ったJSON文字列をパヌス JSONObject jsonObject = new JSONObject(response.toString()); JSONObject todayForcasts = jsonObject.getJSONArray( "forecasts" ).getJSONObject(TODAY_FORCAST_INDEX); return todayForcasts.getString( "dateLabel" ) + "の倩気は " + todayForcasts.getString( "telop" ); } catch (IOException e) { e.printStackTrace(); return null ; } catch (JSONException e) { e.printStackTrace(); return null ; } finally { if (con != null ) { con.disconnect(); } } } /** * 非同期凊理が終わった埌の凊理. * @param result 非同期凊理の結果埗られる文字列 */ @Override protected void onPostExecute(String result) { TextView tv = mainActivity.findViewById(R.id.messageTextView); tv.setText(result); } } おわりに 本蚘事では Android Studio を䜿い、倩気情報を衚瀺する Android アプリの実装方法を玹介したした。ただただ実甚には遠いクオリティですが、非同期凊理やjqコマンドなど知らなかったこずを孊ぶいい機䌚になりたした。自分の孊習目的で始めた郚分が倧きいですが、 Android アプリ開発 の初心者や非同期凊理の実装で困っおいる方の手助けになれば幞いです。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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