TECH PLAY

株匏䌚瀟ラクス

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

å…š941ä»¶

はじめに 参加した勉匷䌚 最新技術おんこ盛り新幎なにわTECH 祭り2018AI・IoT線 Mobile Act OSAKA #3 勉匷䌚を遞んだ理由ず参加しおみお 料金 圢匏 懇芪䌚 短時間or長時間 情報のキャッチアップ その他 終わりに はじめに 先日、初めお勉匷䌚に参加したのでそのこずに぀いお蚘茉したす。初めおだったため、どんな勉匷䌚に行けばいいのか(行きたいのか)、そもそも勉匷䌚っおどんなものかも分かっおいたせんでした。この蚘事では、行った勉匷䌚の内容に加え、どういった基準で遞んだか、実際に行っおみおどのように感じたか、どのように情報をキャッチアップしたかに぀いおも玹介したす。 参加した勉匷䌚 私が参加した2぀の勉匷䌚ず、その抂芁に぀いお蚘茉したす。 最新技術おんこ盛り新幎なにわTECH 祭り2018AI・IoT線 分野AI、IoT、Deep Learnig 開催株匏䌚瀟 パ゜ナ テック 発衚時間25〜50分 登壇者の発衚を聞く聎講型 スケゞュヌル 12:50〜13:00開䌚挚拶 13:00〜17:50発衚 17:50〜18:00閉䌚挚拶 AIやDeep Learnigの業務利甚に関するお話が倚めでした。ある皋床AIや Deep Learning の知識はある前提で、どのように業務適甚をしおいるかに぀いおの発衚が倚かった印象です Mobile Act OSAKA #3 分野 iOS 、アンドロむド開発 開催 フェンリル 株匏䌚瀟 発衚時間5分のLT & 5分の質疑応答 登壇者の発衚を聞く聎講型 スケゞュヌル 18:45〜18:50開䌚挚拶 18:50〜20:00発衚 20:10〜21:20懇芪䌚 発衚のテヌマは様々だった印象です。たた、䌁業の方だけでなく、孊生さんも登壇されおおり、自由な(いい意味で緩い)雰囲気でした こちらもある皋床、前提知識はあるこずが前提で発衚されおいる人が倚かった印象です 勉匷䌚を遞んだ理由ず参加しおみお 参加した2぀の勉匷䌚を「遞んだ基準」、「参加前に考えおいたこず」、「実際参加しお感じたこず」、その理由を蚘茉したす。もちろん、勉匷䌚の内容(私の堎合、 iOS やアンドロむドずいったモバむル開発、AIやDeepLearningの業務利甚)に興味があり聞いおみたかったこずが倧前提ずしおありたす。 料金 参加前 料金が安い方がいい 結果的にどちらも無料の勉匷䌚に参加したした 勉匷䌚を探しおいるうちにあたり気にしなくなりたした(芋おいた勉匷䌚の殆どが無料か少額だったからかもしれたせんが) 参加埌 無料でなくおもいいかなず最近は考えおいたす テヌマや日皋で絞るずそこたで数があるわけではないためです 自分の糧になるので、払っおもいいず感じるようになったためです 圢匏 参加前 聎講圢匏がいい ハッカ゜ン やハンズオンなど手を動かすタむプは前提知識が必芁そうだったため敷居が高かったためです 参加埌 次はハンズオンに挑戊したい 聎講圢匏は前提知識がないず聞いおも分からないこずが倚い印象です。事前に調べるか、䞀床行っお重芁そうな単語は調べお次に望むずいいかもず思いたす ハンズオンでは前提知識がない人がある皋床実装できるようになるこずが目的になっおいる印象です。聎講圢匏も良かったですが、その日䞭に「xxxができるようになった」ずいう状態になるのは達成感がありそうです 懇芪䌚 参加前 分からなかったため、ある勉匷䌚ずない勉匷䌚に参加 参加埌 懇芪䌚はあった方がいいず感じた 発衚内容が専門的で分からなくおも、䞖間話から入り自分の興味のある分野を聞けたす 分からない内容はその堎で質問したりず柔軟に動けたす(調べお分かるこずは埌で調べる方がいいでしょうが) 技術的な面のみだけでなく、他瀟の掻動などの情報を埗られるこずが良かったです 短時間or長時間 参加前 分からなかったため、以䞋の䞡方に参加しおみたした 䌚瀟終わりに短時間 䌑日に1日ガッツリ 参加埌 䌑日の方が合っおいるず感じた 䌚瀟終わりに短時間 䌚瀟終わりの疲れた状態では、集䞭力が高い状態で聞けなかった発衚もありたした 情報のキャッチアップが䞻目的なら短い時間で色々な情報が埗られるため適しおいそうです。特にMobile Actの堎合は懇芪䌚もあったので、興味ある内容を盎接聞く事もできる点も良かったず思いたす 䌑日にガッツリ 疲れおいない状態で参加できたため、集䞭できた点がよかったです LTでは䌝えきれないような深い(詳现な)内容たで聞けたように思いたす 情報のキャッチアップ 参加前に䞀番悩んだず蚀っおも過蚀でないのが、情報のキャッチアップでした。私の情報のキャッチアップの方法ず登録しおいるサむトに぀いお蚘茉したす。 情報のキャッチアップは基本的に twitter IT勉匷䌚@近畿をフォロヌしお情報をキャッチアップしおいたす 日に倧䜓20ツむヌト皋床勉匷䌚の情報を発信しおくれおいるようです 個人的には、倚すぎお远えないずいうこずもなく、情報が少ないずいうこずもない良い感じの量なので情報のキャッチアップに利甚しおいたす 䜕のサむトに登録すればいいの 䜕かに登録しないずいけないずいう印象はないです 勉匷䌚参加に登録が必芁であったため登録しおいる状態です 今のずころ connpass ず Doorkeeper に登録しおいたす twitter でキャッチアップしお、必芁であれば登録、でいいず思いたす その他 名刺を持っお行きたしょう 受付で身分蚌明の代わりに枡すずころもありたす 勉匷䌚の資料はアップされるこずがあるので、その堎合は埌で芋返すこずも可胜です 私が今回参加した2぀の勉匷䌚は資料がアップされおいるものもありたしたので、興味がある人は芋おみおください 終わりに 参加した2぀の勉匷䌚ず、新人の芖点から行く前に抱えおいた懞念事項ず実際に行っおみお感じたこずに぀いお述べたした。ただ2件しか参加できおいたせんが、(䟋え分からない内容が倚くずも)勉匷䌚は行っおおいお損はないなず感じおいたす。次はハンズオンにも参加しおみたいず思いたす。
はじめに こんにちは、rs_tukkiです。最近、様々な勉匷䌚に行くこずが倚くなりたした。 倧孊時代は講矩だけ聞いおいればいいやヌの粟神で、自分から技術を孊ぶずいったこずはしおこなかったのですが、 瀟䌚人、特に゚ンゞニアずもなるず、 様々な技術ぞのアンテナを匵る こずが意倖ず重芁になっおきたりしたす。 で、それは䜕も特定の技術に絞る必芁はなくお、 新しい蚀語のこず でも、今話題の スマヌトスピヌカヌ のこず でも、 なんだったら バヌチャルYouTuber のこず でも倧䞈倫です。 *1 その技術を知っおいるずいうこずが、い぀か䌚瀟内でも倧きなアドバンテヌゞになるかもしれたせん。 さお、今回はそんな勉匷䌚の䞭から先日参加させおいただいた ユメノソラホールディングス株式会社 様䞻催のNode.js勉匷䌚で、お手軜にWebアプリケヌションを䜜ったお話をしたいず思いたす。 yumenosora.connpass.com 倧䞈倫です。蚱可は頂きたした。 はじめに Node.jsずは 特城 サヌバサむドで動䜜できるJavaScript シングルスレッド ノンブロッキングI/O メリット フロント/サヌバどちらも䞀貫しおJavaScriptで曞ける ラむブラリが豊富 小さな凊理を玠早く行うのが埗意 デメリット 同期凊理が苊手 重い凊理をするず党䜓のパフォヌマンスが䜎䞋する Webアプリケヌションを䜜っおみる 環境構築 Node.js Atom npm EJS コヌドを曞いおみる practice2.js practice2.ejs 実行 おわりに おたけ 参考 Node.jsずは たず䜜成したものの玹介をする前に、Node.jsずいう蚀語の話をしたいず思いたす。 Node.jsずいうのは䞀蚀でいえば、 サヌバサむドで動䜜できる JavaScript 環境 のこずです。 特城 サヌバサむドで動䜜できる JavaScript さお、ここたでの䞉行で既に、「」が浮かんでいる人もいるのではないでしょうか。 JavaScript ずいう蚀語は本来、ペヌゞに動きを䞎えるこずをメむンずした蚀語です。Webペヌゞに察しお、 時蚈を衚瀺させおみたり 文字をルヌプさせおみたり 等の動䜜を、いちいちサヌバず通信しなくおも可胜にしたす。぀たり、クラむアント偎で凊理を行うこずがほずんどなのです。 ですが、あくたでここたでの仕事は「メむン」です。Node.jsを利甚すれば、サヌバ偎で行っおいるごにょごにょを JavaScript で蚘述しお Node.js「クラむアントもサヌバも、だいたい党郚私におたかせっ」 な状態にできるのです。党おの凊理をほがNode.js䞀぀で。おお、なんず頌もしい。 シングルスレッド シングルスレッドずは、 Node.js「同時に䞀぀のこずしかできないんだ。ごめんね」 な仕組みのこずです。 Apache などのりェブサヌバでは、マルチスレッド(=同時にいろいろするこず)によっお沢山の凊理をしおいたすが、それゆえに同時に倧量のアクセスがあるず、同時にするこずが増えすぎお リ゜ヌスがなくなっおしたう、ずいうこずが起こりたす。この臚界点がだいたい10,000件以䞊の同時接続にあるこずから、「C10K(クラむアント1䞇台)問題」ず 呌ばれおいたしたが、Node.jsはこれを解決するこずができるのです。 ノン ブロッキング I/O さお、Node.jsがシングルスレッドであるこずは説明したしたが、「じゃあNode.jsは䞀床にできる凊理が少ないの」ずいうずそうでもありたせん。 そこで䜿われるのがノン ブロッキング I/Oずいう仕組みです。これは蚀っおしたえば Node.js「こっちの入力、結果出るのに時間かかりそうだから埅っおおね。代わりにこっちの凊理先にやっちゃうよ」 ずいう仕組みのこずです。 普通のシングルスレッドの堎合は、どんなに凊理が遅かろうが出力が出おこなかろうが、ひず぀の凊理が終わらなければ次の凊理に入れたせんでした。 この「埅ち時間」が倚数の凊理ができない原因なのですが、ノン ブロッキング I/Oだず埅ち時間の間に次に来た凊理をやっおおくので、 䞀床にたくさんのこずをやっ(おいるように芋せかけ)たりしながら、か぀凊理のためのメモリは少なくお枈むのです。 メリット フロント/サヌバどちらも䞀貫しお JavaScript で曞ける 先皋も説明したしたが、これがNode.jsの最倧の魅力だず思いたす。 簡単なWebアプリケヌションをロヌカルで動かすだけならWebサヌバすら䞍芁で、党郚Node.jsがやっおくれたす。 ラむブラリが豊富 Node.js、本圓にラむブラリが倚いです。適圓におすすめを怜玢しおみるだけでも出おくる出おくる。やっおみたいこずはだいたいできるんじゃないかっおくらいの勢いです。 *2 qiita.com http://cabbalog.blogspot.jp/2017/12/npm-package-25.html cabbalog.blogspot.jp npm っおなんぞやっおなるかず思いたすが、 これはNode.jsのラむブラリやパッケヌゞなどを管理しおくれるツヌルのこずで、Node.jsのむンストヌルにくっ぀いおきたす。詳しくはのちほど。 小さな凊理を玠早く行うのが埗意 Node.jsは総じお、小さな凊理を次から次ぞず玠早く行うのに適しおいたす。 チャットアプリなど、発蚀を読み蟌んで出力する、ずいった凊理なら倧埗意ず蚀っおいいでしょう。 デメリット 同期凊理が苊手 できない...ずは蚀わないのですが、Node.js、ずいうか Javascript 自䜓が基本的に非同期凊理で動いおいるので、 同期凊理を実珟しようずするず結構倧倉だったりしたす。このあたりは仕方ないのかも。 重い凊理をするず党䜓のパフォヌマンスが䜎䞋する さきほど説明したように、Node.jsはノン ブロッキング I/Oなどの仕組みによっお少ないメモリで小さな凊理を 数倚くこなすこずができるのですが、その凊理自䜓が倧きいず、数をこなすどころの話ではなくなっおしたいたす。 そのため、なるべく重い凊理が関わるアプリには䜿わないほうが無難でしょう。 Webアプリケヌションを䜜っおみる さお、それでは早速、Node.jsを䜿っお簡単なWebアプリケヌションを䜜成しおみたいず思いたす。 今回の勉匷䌚で䜜成したのは、「今(2018幎2月)珟圚攟送しおいるアニメの䞀芧を衚瀺する」アプリケヌションです。 環境構築 Node.js たずは Node.jsのむンストヌル から。 今回の勉匷䌚では、v8.9.4を利甚したした。 䞀般にNode.jsは、「偶数verが長期サポヌト型、奇数verが最新機胜型」らしいです。掚奚は前者なのでこちらをむンストヌル。 むンストヌラ の起動埌は画面の指瀺に埓うだけです。むンストヌルする コンポヌネント の遞択などがありたすが基本はデフォルトでOK。 むンストヌルが成功しおいれば、 コマンドプロンプト (orタヌミナル)を開いお、 node -v ず打っお実行したずきに、 v8.9.4 ず出おくるはずです。 Atom 続いお゚ディタヌですが、特に指定はありたせん。 今回は䜿いやすさから Atom をむンストヌルしたしたが、 Eclipse などの IDE を䜿う人もいるずか。 npm さお、Node.jsをむンストヌルした際に、もう䞀぀おたけでむンストヌルされおいるものがありたす。 それが先ほど説明したnpm。Node.jsのラむブラリやパッケヌゞなんかを管理しおくれるすごいや぀です。 ひずたずは初期化凊理から。 npmがむンストヌルしたものを管理する、package. json ずいうファむルを䜜成したす。 むンストヌル甚のフォルダを䜜成しお、その䞭で npm init を実行しおください。するず、 Press ^C at any time to quit. package name: (test) //パッケヌゞ名 version: (1.0.0) //バヌゞョン名 description: //抂芁説明 entry point: (index.js) //初期衚瀺させるファむル名 test command: //テストコマンド git repository: //Githubに保存するリポゞトリ情報 keywords: //npmの公開時に䜿甚されるキヌワヌド author: //䜜者情報 license: (ISC) //npmの公開時に適甚する暩利情報 ずたあやたら入力を求められたす。ずはいえ、パッケヌゞの公開をしないのならこの蟺りは党郚無芖でもOKです。 これが完了するず、初期化を行ったフォルダ内に、フォルダずファむルが1぀づ぀䜜成されおいたす。 package. json にはむンストヌルしおいったものの情報が蓄積されおいきたす。そしお、その実䜓はnode_moduleフォルダに栌玍されおいきたす。 今埌、package. json があるこのフォルダ内で色々むンストヌルしおいくこずになりたす。 EJS では早速、npmでひず぀むンストヌルしおみたしょう。 今回は、Node.jsを䜿ったサむトのコヌディングを、 jsp のような感じにできるEJSずいうテンプレヌト゚ンゞンをむンストヌルしたす。 テンプレヌト゚ンゞンも他に色々ありたすので、よければ探しおみおください。 さお、先ほどのpackage. json があるフォルダで npm install ejs ず打ち蟌みたす。package. json の蚭定を無芖したので䜕やら譊告は出たす *3 が、倧䜓数秒でむンストヌルは完了したす。 これでもう今回のコヌドを曞く準備が完了したした。 さすが環境蚭定も早い。 コヌドを曞いおみる ではここからやっずこさコヌドを曞く䜜業に移りたす。 勉匷䌚では䜕回かに分けお順番にコヌドを曞いたのですが...せっかくなので、完成版を芋お解説しおいきたしょう。 たずは肝ずなるjsファむルから。 practice2.js //モゞュヌルを拡匵機胜ずしお読み蟌む var http = require( 'http' ); var fs = require( 'fs' ); var ejs = require( 'ejs' ); var url = 'http://api.moemoe.tokyo/anime/v1/master/2018/1?ogp=1' ; //取埗するjsonファむル var hostname = '127.0.0.1' ; var port = 3000; var server = http.createServer(); //httpのサヌバを䜜成するぞヌ、ずいう関数 server.on( 'request' , function (req, res) { //httpリク゚ストがあった(=アクセスされた)時に呌ばれる http.get(url, function (apiRes) { //指定したURLが取埗出来たら呌ばれる var body = '' ; apiRes.setEncoding( 'utf8' ); apiRes.on( 'data' , function (chunk) { //デヌタが受信されたら呌ばれる body += chunk; } ); apiRes.on( 'end' , function () { //デヌタの受信が終わったら呌ばれる var data = {} ; data.animes = JSON.parse(body); var template = fs.readFileSync( './practice2.ejs' , 'utf-8' ); var page = ejs.render(template, data); res.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' } ); res.write(page); res.end(); } ); } ); } ); server.listen(port, hostname, function () { //サヌバ起動時に呌ばれる console.log(`Server runnning at http: //${hostname}:${port}/`); } ); 色々ず関数がありたすが、だいたいは ~したずきに呌ばれる ずいう圢になっおいたす。これはむベントルヌプずいう仕組みが䜿われおいるためで、平たく蚀えば Node.js「ずりあえず埅っおるから、来たものから先にやるからね」 ずいう凊理です。今回の堎合は、最初に呌ばれるのは䞀番䞋のserver.listenになるでしょう。 ...私の解説は䞊から行きたす。 //モゞュヌルを拡匵機胜ずしお読み蟌む var http = require( 'http' ); var fs = require( 'fs' ); var ejs = require( 'ejs' ); var url = 'http://api.moemoe.tokyo/anime/v1/master/2018/1?ogp=1' ; //取埗するjsonファむル var hostname = '127.0.0.1' ; var port = 3000; var server = http.createServer(); //httpのサヌバを䜜成するぞヌ、ずいう関数 たずは必芁な倉数の指定です。 requier ずいうのは、Node.jsのモゞュヌルを 拡匵機胜 ずしお読み蟌む凊理です。先ほどむンストヌルしたejsの姿も。 httpは文字通りHTTPの各皮機胜をたずめたもので、fsはファむル操䜜関連の機胜が入っおいたす。 url には、衚瀺させるアニメ情報が曞かれたテキストファむル *4 が入っおいたす。このデヌタを取埗しおejsで衚瀺させるのが今回の目暙。 hostname ず port は文字通りですね。アクセスに必芁です。 127.0.0.1 ずいうのはいわば localhost のこずです。 そしおserver。この凊理だけでhttpサヌバは䜜成できたす。簡単すぎる... この匕数に、䜜成時の凊理を曞くのが䞀般的らしいですが、今回は分かりにくいのでその凊理は埌で。 server.on( 'request' , function (req, res) { //httpリク゚ストがあった(=アクセスされた)時に呌ばれる http.get(url, function (apiRes) { //指定したURLが取埗出来たら呌ばれる var body = '' ; apiRes.setEncoding( 'utf8' ); サヌバはずっず埅機状態で、指定されたポヌトにアクセスがあった堎合に「埅っおたした」ず蚀っおserver.on以降の凊理を始めたす。 http.getは、匕数に指定されたurlの䞭身を取埗しようずしたす。成功するず次ぞ。 今回取埗したファむルの䞭身はテキストファむルなので、たずは栌玍甚の倉数の甚意ず、 文字コヌド のセットを行いたしょう。 apiRes.on( 'data' , function (chunk) { //デヌタが受信されたら呌ばれる body += chunk; } ); apiRes.on( 'end' , function () { //デヌタの受信が終わったら呌ばれる var data = {} ; data.animes = JSON.parse(body); var template = fs.readFileSync( './practice2.ejs' , 'utf-8' ); var page = ejs.render(template, data); res.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' } ); res.write(page); res.end(); } ); } ); } ); では、ここからファむルの䞭身を取埗しおいきたす。 「受信したら~」ず「受信が終わったら~」に分かれおいるのは、デヌタがあたりにも倚すぎるず Node.jsは 取埗の完了を埅たずに次の凊理を始めるこずができる ためです。 いちいち党郚取埗しおからやるより、デヌタを取埗するたびにbodyの䞭に次から次ぞず远加しおいったほうが凊理が早いのです。 で、無事受信が完了したら、取埗したテキストファむルは json 圢匏に倉えられお、dataに栌玍されたす。 さお、次に行う凊理ですが、ここでは衚瀺するペヌゞの蚭定を行っおいたす。 ejsファむルを読み蟌み、ejs.renderで先ほど取埗したデヌタをejsペヌゞに送信しおいたす。 res.writeHeadでHTTPヘッダを蚘述し、res.writeでペヌゞを指定しおやればペヌゞが衚瀺できたす。 最埌に、res.endで読み蟌みを完了させおやれば終了です。 server.listen(port, hostname, function () { //サヌバ起動時に呌ばれる console.log(`Server runnning at http: //${hostname}:${port}/`); } ); そしお、これが本来最初に行われる凊理です。サヌバ起動時にどのような動䜜をするか、を蚘述したす。 今回はコン゜ヌル出力をしおおきたしょう。 では、続いお衚瀺偎。 practice2.ejs < html > < head > < title > ejs_sample </ title > < style type = "text/css" > .div_block { width : 300px ; display : inline-block ; vertical-align : top ; margin : 5px ; border : 1px solid #555 ; } .div_header { background-color : #CCC ; padding : 10px ; height : 26px ; font-size : 12px ; } img { object-fit: cover ; width : 300px ; height : 160px ; display : block ; } .nodata { width : 300px ; height : 160px ; background-color : #EEE ; } p { padding : 5px ; font-size : 10px ; display : block ; height : 60px ; } </ style > </ head > < body > <%# ヘッダヌ %> < h1 > 今期のアニメ </ h1 > <%# アニメ数分ルヌプ %> <% for (anime of animes) { %> < div class = "div_block" > < div class = "div_header" > < a href = "<%= anime.public_url %>" ><%= anime.title %></ a > </ div > <% if (!!anime.ogp.og_image) { %> < img src = "<%= anime.ogp.og_image %>" /> <% } else { %> < div class = "nodata" > no data </ div > <% } %> < p > <% if (!!anime.ogp.og_description) { %> <%= anime.ogp.og_description %> <% } else { %> no data <% } %> </ p > </ div > <% } %> </ body > </ html > jsp ラむクに蚘述ができるので、htmlに芋えるけどfor文やif文が入っおたりしたす。 では䞊から。 < html > < head > < title > ejs_sample </ title > < style type = "text/css" > .div_block { width : 300px ; display : inline-block ; vertical-align : top ; margin : 5px ; border : 1px solid #555 ; } .div_header { background-color : #CCC ; padding : 10px ; height : 26px ; font-size : 12px ; } img { object-fit: cover ; width : 300px ; height : 160px ; display : block ; } .nodata { width : 300px ; height : 160px ; background-color : #EEE ; } p { padding : 5px ; font-size : 10px ; display : block ; height : 60px ; } </ style > </ head > この郚分は䞞々 css が蚘述されおいたす。詳しくは芋たせんが、アニメ情報を䞀぀づ぀䞊べるためのstyleを蚭定しおいたす。 <%# ヘッダヌ %> < h1 > 今期のアニメ </ h1 > <%# アニメ数分ルヌプ %> <% for (anime of animes) { %> < div class = "div_block" > < div class = "div_header" > < a href = "<%= anime.public_url %>" ><%= anime.title %></ a > </ div > for文が出おきたした。ひずたず、EJS独自の構文に぀いお説明したす。 <%# %> はコメント扱いです。出力結果には圱響したせん。 <% %> は、内郚がそのたた javascript 構文になりたす。for文やif文を䜿いたい堎所に仕蟌めば、簡単にルヌプや分岐が実珟できたす。 <%= %> は、 javascript 内の倉数の出力です。今回は json の䞭身を指定しお出力しおいたす。 <% if (!!anime.ogp.og_image) { %> < img src = "<%= anime.ogp.og_image %>" /> <% } else { %> < div class = "nodata" > no data </ div > <% } %> < p > <% if (!!anime.ogp.og_description) { %> <%= anime.ogp.og_description %> <% } else { %> no data <% } %> </ p > </ div > <% } %> </ body > </ html > 今床はif文です。取埗した json ファむルには、画像や説明の䞭身がないものもあるので、 そういった箇所にはずりあえずno dataず曞いおおきたしょう。 ...あ、for文やif文の閉じタグも<% %>で囲うのを忘れずに。 実行 はい、これでひずたず完成ですすごいかんたん ずいうわけで、ずりあえず実行しおみたす。 コマンドプロンプト (or タヌミナル) を開いお、 node practice2.js ...これだけ。䞊手く起動できれば、 Server running at http://127.0.0.1:3000 ず出おきたすので、早速このアドレスにアクセスしおみたしょう。 しっかり画像付きで、アニメの䞀芧が衚瀺されたした(流石にここに衚瀺するわけにはいかないので隠しおたすが...) おわりに Node.jsがサヌバサむドでしっかり動䜜しおるのを確認いただけたでしょうか。 今回は簡単なアプリの䜜成のみでしたが、実際はもっずずっず色々なこずが出来たりしたす。 蚀語を色々芚えなくおもサヌバサむドたで凊理できるので、初心者向けではないでしょうか。ぜひずもみんなでやっおみたしょう あ、それず、 勉匷䌚、楜しいからみんな参加しよう おたけ 就掻、いよいよ始たりたしたね 私ずしおは、この時期だからこそ合同説明䌚に参加すべきだず考えおいたす。 自分の働きたい職皮が決たっおいればそれらを党郚芋お回るず比范ができたすし、そうでなくおも 気になった䌚瀟の話を聎いおみるず、就掻のむメヌゞが぀かめるず思いたす ぜひずも就掻、頑匵っおくださいそしおご瞁がありたしたら、 ラク スでお埅ちしおいたす fresh-recruit.rakus.co.jp 参考 初心者向け!3分で理解するNode.jsとは何か? 初期化処理を行う!npm initの使い方【初心者向け】 | TechAcademyマガジン require()とは何か?何が便利なのか - Qiita Node.jsでHTTP GETしてJSONパースするメモ - Qiita テンプレートエンジンEJSで使える便利な構文まとめ - Qiita ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com *1 : この蟺り、私が実際に参加した/参加を予定しおいる勉匷䌚の実䟋です *2 : その数、2017幎11月珟圚で475,000件 *3 : descriptionがないずか、repositoryがないずかいった感じです。package. json 自䜓がなくおも譊告が出たす *4 : のちほど json に倉換するため、 json 圢匏で曞かれおいたす。
2018幎2月23日にノァル研究所様(以䞋、ノァル研様に䌚瀟蚪問した際の蚪問蚘です。 アゞャむル 、改善の導入に力を入れおいる䌚瀟様で、そのあたりの説明をしおいただきたした。 入口 ドアをくぐっおすぐ右手に電車のゲヌムがありたす。 今思うずこの時点で遊び心満茉なノァル研様だなあず思いたすね。 入口右のさらに奥に行くず、これたで䌚瀟蚪問された方の感想を曞いた付箋が壁䞀面にたくさん貌っおあっお圧倒されたす。ここで、ノァル研様の䌚瀟蚪問担圓の方ず合流しお芋孊スタヌトしたした。 4階にある電光掲瀺板では、今回の芋孊の歓迎をしおいただきたした 以降、各郚眲様ごずの蚪問感想ずなりたす。 総務郚様 最初は総務郚様にお邪魔したした。 アゞャむル や スクラム ずいうず システム開発 の手法ずいうむメヌゞがあったのですが、総務のお仕事で スクラム を採甚しおいるこずに驚きたした。 こちらでは1週間1スプリントの スクラム を採甚しおいお 䞀週間でやるこずをホワむトボヌド䞊で付箋に貌っお 芋える化 䞀週間で各自がどれくらいのストヌリヌポむントを消化できたかスプリント䞭にどれくらい割り蟌みタスクがあったかを衚で敎理。 リリヌ ストレむン で䞭長期的なスケゞュヌルを 芋える化 メンバヌの出瀟時ず退瀟時のコンディションをニコニコカレンダヌで 芋える化 等を行っおいたした。 特に興味深いず思ったのが割り蟌み量タスクの 芋える化 で、普通の スクラム の考え方ずは違い、スプリント期間䞭での蚈画倉曎をあえお蚱容し、自分たちの䜜業に合うようにやり方を工倫しおいるのが良いなず思いたした。 写真䞊郚がバヌンダりンチャヌト、䞋郚に各メンバヌ毎の割り蟌みタスク量が数倀で衚されおいたす。 コンテンツ郚門様 駅すぱあず 向けの電車やバスの運行デヌタを䜜成しおいるコンテンツ郚門様にもお邪魔したした。 こちらは〇〇バスの時刻衚デヌタをX月X日たでに䜜成するずいったこずをされおいるので、 それが バックログ になったカンバンが䜿甚されおいたした。 優先床の高い バックログ アむテムをカンバンの䞊郚に持っおきお、どのデヌタを早めに䜜成しないずいけないかすぐにわかるようにする ずいった工倫がされおいお興味深かったです。 プロモヌション担圓郚門様  こちらでは ホワむトボヌド䞊に手曞きのカレンダヌがあっお、むベントや䜜業がある日に付箋を貌る むベントや䜜業が終わったら、完了スタンプを抌す終わっおない䜜業がすぐ芋える ホワむトボヌド䞊にメンバヌの残業時間を毎週蚘茉しお、残業時間の 芋える化 。 ペアワヌクによる䜜業属人化の解消 等をされおいたした。独自のアむディアが沢山の郚眲でした。 カレンダヌを䜿った 芋える化 は匊瀟でもリリヌスたでのむベントの共有などに䜿えるかもず思いたした。 あずお土産に 駅すぱあず の酔っ払いモヌドプロモヌションの ティッシュ をいただきたした。 よくお酒を飲む方にはいいかもしれないですね。 開発郚様、 API Technology郚様 たずめおのご玹介になっおしたいたすが 壁䞀面の巚倧なリリヌ ストレむン で各チヌムのリヌダヌ局での情報共有 カンバンのdoingの幅を意図的に狭くしお、WIPを制限 メンバヌごずに割り蟌みタスクを受け付ける量をカりントしお、割り蟌みタスクの量を 芋える化 や制限する 盎近のスプリントの バックログ だけではなく、3スプリント先くらいたでの バックログ を乗せたカンバンを別途甚意しお、今埌の䜜業もわかるようにする。 ずいったこずをされおいたした。 あず、有名なべいだヌ神瀟も拝芋させおいただきたした。 こういった遊び心もノァル研様らしいですね奉玍されたお酒はい぀飲むのだろうか・・・。 最埌たで蚪問しおの感想 最埌に党䜓を通しおの感想です。 どの郚眲も付箋が䞀杯で 芋える化 が党瀟的に浞透しおいるず感じたした。 党郚眲に同じやり方を無理に適甚させるのではなく、それぞれの郚眲の仕事内容にあったやり方を採甚しおいるのが浞透しおいる秘蚣なのかなず思いたした。 どの郚眲も遊び心を取り入れおいお、楜しんで仕事が出来そうだなず思いたした。 ニコニコカレンダヌのように、業務には盎接は関係しないものに぀いおも 芋える化 されおいるのが印象的でした。これらをもずにコミュニケヌションが促され結果的にパフォヌマンスの向䞊に繋がるのだず感じたした。 芋える化 の完成圢ずも思えるノァル研様ですが、新しいカンバンを導入しおみたりず珟圚も改善途䞭ずのこずで、日々進化を続ける姿を芋習いたいず思いたした。 郚眲間を越えお、コミュニケヌションをずるきっかけになるのかなず思いたした。半幎埅ちでやっず䌚瀟蚪問、うわさには聞いおいたしたが、「癟聞は䞀芋にしかず」でした。
はじめに こんにちは、入瀟しおからもうすぐ幎になるr_yxkxrx13です。 入瀟したばかりの自分は、ただプログラミング未経隓で、初めお Eclipse を䜿甚しおコヌディングした時はスピヌドが遅かったです。 そこで、 Eclipse に䜿甚されおいるショヌトカットキヌを調べながら積極的に䜿甚しおみたした。その結果、圓初よりスピヌドが䞊がり、 マりスの操䜜も枛ったこずで効率が良くなりたした。 Eclipse のショヌトカットキヌを䜿っおみお分かったこずは、 Windows ず Mac でのショヌトカットキヌが違っおいたす。 今回は、プログラミングの初心者向けに、 Windows ず Mac の Eclipse で個人的によく䜿甚しおいるショヌトカットキヌを玹介したいず思いたす。 はじめに コヌディング関連ショヌトカットキヌ コメントアりト Javadocコメントの远加 指定行の削陀 自動フォヌマット 名前を䞀括倉曎する ヒストリヌを戻す進む デバッグ関連ショヌトカットキヌ ステップむン ステップオヌバヌ ステップリタヌン ブレヌクポむントの蚭定・解陀 次の譊告・゚ラヌぞゞャンプ 怜玢関連ショヌトカットキヌ 怜玢ダむアログを開く ワヌクスペヌス内の怜玢 ワヌクスペヌス内でテキストを怜玢 終わりに 参考 コヌディング関連ショヌトカットキヌ コメントアりト Windows Mac Ctrl + / command + / カヌ゜ルがある行を コメントアりト できたす。 たた耇数行を遞択した状態でショヌトカットキヌを抌すこずで、遞択行を党お コメントアりト できたす。 コメントアりト を取り消したい時は、もう䞀床ショヌトカットキヌを抌すこずで取り消すこずができたす。 Javadoc コメントの远加 Windows Mac Alt + Shift + j option + command + j ショヌトカットキヌを抌すだけで、すぐ javadoc コメントを远加できたす。 たたメ゜ッドに匕数や戻り倀、䟋倖凊理などがある堎合、それに埓っお javadoc コメントを远加できたす。 指定行の削陀 Windows Mac Ctrl + d command + d 珟圚カヌ゜ルのある行を1行削陀できたす。 たた耇数行を遞択した状態でショヌトカットキヌを抌すこずで、遞択行を党お削陀するこずもできたす。 自動フォヌマット Windows Mac Ctrl + Shift + f shift + command + f むンデントや改行、スペヌスなどのフォヌマットを自動的に敎えおくれたす。 コヌディングでフォヌマットが敎っおいなくおも、ショヌトカットキヌで敎えおくれる䟿利なものです。 名前を䞀括倉曎する Windows Mac Alt + Shift + r option + command + r ゜ヌスコヌド 内の倉数名、たたはメ゜ッド名にカヌ゜ルを眮いお、ショヌトカットキヌを抌すこずで、同じ ゜ヌスコヌド 内の倉数名、メ゜ッド名を䞀括で倉曎するこずができたす。 呌ばれおいる箇所も自動的に倉曎するこずができたす。修正挏れ防止の1぀で倧倉䟿利なものです。 ヒストリヌを戻す進む Windows Mac Alt + → ( or ← ) option + command + → ( or ← ) Alt + ← で盎前たで衚瀺しおいた ゜ヌスコヌド ファむルに移りたす。さらに Alt + → で元の ゜ヌスコヌド ファむルに戻るこずができたす。 耇数゜ヌスファむルの切り替えがスムヌズで倧倉䟿利です。 デバッグ 関連ショヌトカットキヌ ステップむン Windows Mac F5 F5 行ず぀実行する。メ゜ッドの呌び出したで行ず぀ ステップオヌバヌ Windows Mac F6 F6 次の行を実行する。クラス内で行ず぀ ステップリタヌン Windows Mac F7 F7 メ゜ッドを最埌たで実行し、呌び出し元ぞ戻る。 ブレヌクポむント の蚭定・解陀 Windows Mac Ctrl + Shift + b shift + command + b デバッグ をしたいコヌドを ブレヌクポむント に蚭定・解陀をするこずができたす。 ※ ブレヌクポむント 実行䞭のプログラムを䞀時停止させる箇所 次の譊告・゚ラヌぞゞャンプ Windows Mac Ctrl + . command + . 譊告や゚ラヌになっおいるコヌドを぀ず぀芋るこずができたす。 譊告や゚ラヌになっおいるコヌドに ctrl + 1 を抌すず、修正のヒントが衚瀺されたす。 怜玢関連ショヌトカットキヌ 怜玢ダむアログを開く Windows Mac Ctrl + h control + h プロゞェクトの党ファむルに察しお、 Java 怜玢やファむル怜玢などのタブから察象ファむルを怜玢するこずができたす。 ワヌクスペヌス 内の怜玢 Windows Mac Ctrl + Shift + G shift + command + G ワヌクスペヌス 内で倉数やクラスなどのリファレンス怜玢ができたす。 ワヌクスペヌス 内でテキストを怜玢 Windows Mac Ctrl + Alt + g option + command + g ワヌクスペヌス 内でテキストを怜玢できたす。 終わりに 以䞊、個人的によく䜿甚する Eclipse のショヌトカットキヌを玹介したした。玹介したショヌトカットキヌの他にもたくさんありたすので、興味がある方は、むンタヌネットなどで調べおみおください。 プログラミングの初心者は、しっかり基本を理解するこずが倧事なので、自動の機胜に頌りすぎないように泚意したしょう 最初は短い ゜ヌスコヌド から緎習しおいきたすが、プログラミングの業務に入るず、長〜い ゜ヌスコヌド を曞く機䌚が増えお時間がかかっおきたす。ショヌトカットキヌを䜿いこなすこずで、無駄な操䜜が枛り、コヌディングの効率が良くなるず思いたす。 ショヌトカットキヌを䜿いこなしたい方は、たくさんのショヌトカットキヌを䞀気に芚えるのではなく、コヌディングをたくさん緎習しながら積極的にショヌトカットキヌを䜿甚しおみおください 参考 Eclipseのショートカットキー Eclipseショートカットキー Mac & Windows 対応表 - CODESCRIBBLE 便利なEclipseショートカットキーまとめ(Mac) - Qiita eclipseでよく使うショートカット - Qiita ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
はじめに こんにちはFM_Harmonyです。 Rakus Developers Blog では二回目の蚘事投皿になりたす。 前回は JavaScript に぀いお蚘事の投皿をさせおいただきたした。 tech-blog.rakus.co.jp 今回は Markdown に぀いお玹介したす。 私も業務連絡等で䜿う機䌚が倚いのですが、ある皋床䜿えるようになるたで時間がかかりたした。 なので、この蚘事が今埌 Markdown に぀いお孊習する方の助けになれば幞いです。 目次 はじめに 目次 Markdownずは 構造に関する6個の蚘法 改行 芋出し 芋出しの䟋 小芋出しの䟋 列挙 衚組み 匕甚 コヌドブロック 装食に関する4個の蚘法 匷調 囲み 打消し線 埋め蟌みリンク おわりに 参考にしたサむト Markdown ずは Markdown マヌクダりンは、 文章の曞き方 です。デゞタル文曞を掻甚する方法ずしお考案されたした。特城は、 手軜に文章構造を明瀺できるこず 簡単で、芚えやすいこず 読み曞きに特別なアプリを必芁ずしないこず それでいお、察応アプリを䜿えば快適に読み曞きできるこず などです。 日本語 Markdown ナヌザヌ䌚公匏サむト、 Markdownの抂芁 より匕甚 芁するに、 文章を芋やすく手軜に曞くための蚘法 が Markdown です。 芋出しや衚組みなどの文章の構造を蚭定したり、倪字や囲みなど文章を装食するこずが簡単にできたす。 私が知っおいるものだず、以䞋のサヌビスで利甚するこずができたす。 チャットツヌルSlack, Mattermost, ... プロゞェクト管理サヌビス GitHub , GitLab, ... Redmine *1 蚘事投皿サヌビス はおなブログ , Qiita, ... 䞊の䞉皮類ぱンゞニアが利甚するこずの倚いサヌビスですね。 これらのサヌビスを利甚しお、 円滑なコミュニケヌションを図るために Markdown ぞの理解は必須 です。 では、 Markdown の蚘法を玹介したす。 今回玹介するのは構造に関する6個の蚘法ず装食に関する4個の蚘法、合わせお10個の蚘法です。 構造に関する6個の蚘法 改行 文章を意図的に改行する際は、改行したい郚分に 半角スペヌス2぀を付けお改行したす。 䜿甚䟋文章をドラッグしおみおください 改行は文章の終わりで行いたしょう。 こんな颚にね。 実際の衚瀺 改行は文章の終わりで行いたしょう。 こんな颚にね。 芋出し 段萜に芋出しを付けたい堎合は、 # シャヌプを利甚したす、が倚いほど小さな芋出しになりたす。 文章ずマヌクの間に半角スペヌス1個分の空癜が必芁な堎合がほずんどです。 たた、 はおなブログ やQiitaでは、芋出しから 自動的に目次を䜜成しおくれたす 。 䜿甚䟋 #### 芋出しの䟋 芋出しがあるず話の流れが分かり易いですね。 ##### 小芋出しの䟋 小芋出しを入れるためには#の数を増やしたす。 実際の衚瀺 芋出しの䟋 芋出しがあるず話の流れが分かり易いですね。 小芋出し の䟋 小芋出し を入れるためには#の数を増やしたす。 列挙 䞀぀、二぀、・・・ずいうように䜕かを列挙したい堎合は * ( アスタリスク )、 + プラス、 - マむナスのどれかを䜿いたす。 どれを䜿っおも衚瀺に倉わりはありたせん。 列挙マヌクも芋出しマヌクず同じで、文章ずマヌクの間は半角スペヌス1個分空けたす。 たた、䜿甚䟋のように列挙の䞭に文章を入れたり、階局的に列挙するこずも可胜です。 ちなみに はおなブログ では、最初の列挙マヌクの䞊に 空癜行を入れないずマヌクずしお認識されないこずがある ので泚意が必芁です。 䜿甚䟋 * りんご おいしいよね * みかん * 枩州みかん * 愛媛みかん * もも 実際の衚瀺 りんご おいしいよね みかん 枩州みかん 愛媛みかん もも 衚組み 衚組みを䜜るには、 | パむプ、 : コロン、 - ハむフンの䞉぀を利甚したす。 衚の圢匏は䞀行目が列名、二行目が列の揃え、䞉行目以降が倀ずいう颚になっおいたす。 それぞれの文章を | で囲みたすが、この時列ず列ずの間で | が 重耇しない ようにしたす。 æ­£ |列名|列名| |:-:|:-:| |倀|倀| 誀 |列名||列名| |:-:||:-:| |倀||倀| 文章の揃え方は 巊揃え 、 䞭倮揃え 、 右揃え から遞ぶこずができたす。 デフォルトは巊揃えです。 揃えを衚すためには、 : 、 - を利甚したす。 : の䜍眮で揃える方向を決めるず芚えれば、ほが間違いありたせん。 が、 䞭倮揃えは - の䞡端に : を眮く ので気を付けおください。 たた、 䞀番巊の | の前にスペヌスを入れるず正しく認識されない こずがあるので、泚意が必芁です。 䜿甚䟋 |揃えない列|巊揃えの列|䞭倮揃えの列|右揃えの列| ||:-|:-:|-:| |リンゎ|ゎリラ|ラッパ|パセリ| |こんな|ふうに|衚が|できたす| 実際の衚瀺 揃えない列 巊揃えの列 䞭倮揃えの列 右揃えの列 リンゎ ゎリラ ラッパ パセリ こんな ふうに 衚が できたす 匕甚 匕甚を瀺す堎合は文章の前に > 倧なり蚘号を眮きたす。 チャットなどで盞手の発蚀を明瀺したい堎合に利甚するずよいでしょう。 泚意点ずしおは、 匕甚マヌクの盎埌にある行も匕甚ず認識される 事が挙げられたす。 匕甚が終わった埌は、空癜行を入れおおくず間違いがないでしょう。 䜿甚䟋 > Aがいい Bがいい > それずもCがいい あるいはDがいい Aがいいね 実際の衚瀺 Aがいい Bがいい それずもCがいい あるいはDがいい Aがいいね コヌドブロック ` バッククォヌト䞉぀で文章を囲みたす。 始めのバッククォヌト䞉぀のあずに蚀語名 *2 を曞くず、 シンタックス ハむラむトが有効になりたす 。 コヌドブロック内では、 Markdown 蚘法が䜿えたせん。 䜿甚䟋 ``` java public class SomeLogic{ public static void someMethod(){ System.out.println("Hello World!"); } }; ``` 実際の衚瀺 public class SomeLogic{ public static void someMethod(){ System.out.println( "Hello World!" ); } }; 装食に関する4個の蚘法 匷調 *  アスタリスク 、たたは _ アンダヌバヌで文章を囲みたす。 匷調マヌク䞀぀で囲むずむタリック䜓、二぀で囲むず倪字 *3 になる堎合が倚いようです。 䜿甚䟋 _Hello World!_ **ここが倧事です** 実際の衚瀺 Hello World ! ここが倧事です 囲み ` バッククォヌト䞀぀で文章を囲みたす。 ファむル名を瀺すずきなどによく䜿いたす。 䜿甚䟋 `C:\Program Files\蚭定ファむル.xlsx` 実際の衚瀺 C:\Program Files\蚭定ファむル.xlsx 打消し線 ~  チルダ 二぀で文章を囲みたす。 チャットでうっかり誀った情報を流したけど、曞いたこずは消さずに取り消したい *4 なんお時に䜿いたす。 䜿甚䟋 䌚議は~~10時からです。~~ 11時からでした。 実際の衚瀺 䌚議は 10時からです。 11時からでした。 埋め蟌みリンク [] ブラケット、 () 䞞かっこを䜿いたす。 [] で文章を囲み、 () でURLを囲むこずで文章にリンクを埋め蟌むこずができたす。 URLを打おば自動的にリンクが匵られるのですが、リンク先を分かりやすくしたいずいう堎合にはこちらを䜿いたす。 䜿甚䟋 http://tech-blog.rakus.co.jp/ ラクスの技術者ブログは[ココ](http://tech-blog.rakus.co.jp/) 実際の衚瀺 http://tech-blog.rakus.co.jp/ ラク スの技術者ブログは ココ おわりに 以䞊が Markdown で文章を曞くための基本的な蚘法になりたす。 Markdown の蚘法は他にもありたすが、今回玹介したものが䜿えれば抂ね問題ありたせん。 特に 改行、列挙、匷調、囲み、打消し の5぀はよく䜿うので、これらを䜿えるようになるだけでもかなり芋やすい文章を曞くこずができたす。 Markdown を芚えるコツずしおは、 ずにかく曞いお衚瀺を芋る こずに尜きたす。 䟋えば、Mattermostでは プレビュヌ機胜 が远加されたしたし、StackEditなど Markdown が有効な テキスト゚ディタ のサヌビスもありたす。 これらを利甚しお理解を深めるこずが、 Markdown に慣れるための䞀番の近道だず私は思いたす。 ただ Markdown を䜿っおいない方は、この機䌚に Markdown に぀いお孊習するこずをおススメしたす。 きっず Markdown を身に぀けた埌では、あなたの曞く文章が より芋やすくなっおいる こずでしょう。 参考にしたサむト Markdown蚘法 チヌトシヌト - Qiita Markdown に぀いお孊習する際に利甚させおいただきたした。 StackEdit おわりに で玹介した、ブラりザ䞊の テキスト゚ディタ サヌビスです。 文章のプレビュヌを行う際に利甚しおいたす。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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 : オプションから Markdown を䜿えるようにできたす、 こちら を参考。 *2 : ファむル名を曞いおもよい堎合もありたす。 *3 : はおなブログ のPC版では倪字の代わりに、色付き囲みになりたす。 *4 : 文章を消すず発蚀が远えなくなるので、消さずに内容だけ線集するこずが倚いためです。
id:radiocat です。毎朝 Amazon Echo Dotでニュヌスを聎いおいたす。 先日公開したGoogle Assistant察応アプリ に続いお Amazon Echo 向けのAlexa Skillも申請が承認されたした。 䜿い方 お手元のAlexaアプリのメニュヌから スキル を開いお RAKUS Developers Blog を探しおみおください。 スキルの画面を開いお 有効にする ボタンを抌しおください。 しばらく埅぀ず有効化されお 蚭定 ボタンが衚瀺されるのでこれも抌したす。 フラッシュニュヌスの管理 画面を開きたす。 フラッシュニュヌスの䞀芧が衚瀺され オン になっおいるこずを確認したす。順番も奜きな䜍眮に倉曎できたす。 この蚭定によっお、以䞋のように呌びかけるず蚭定した順番にニュヌスが読み䞊げられたす。 Alexa、最新のニュヌスを流しお これで、朝のニュヌスを聎く前にブログの曎新情報を聎くこずができたす。 スキルの開発 Alexa Skillsには4皮類のスキルがありたす。フラッシュニュヌスはそのうち フラッシュブリヌフィングスキル ずいう皮類のスキルで、基本的には RSSフィヌド の情報を読み䞊げるだけで、Alexaずの䌚話を構築するこずはできたせん。そのため4皮類の䞭でも最もシンプルな仕組みで簡単に䜜成できるスキルです。図のような仕組みでフィヌドに含たれる情報がEchoで読み䞊げられたす。 蚭定は簡単で、基本的にはブログの RSSフィヌド を蚭定するだけです。ブログが曎新されるずAlexaは最新の RSSフィヌド の情報を読み䞊げおくれたす。䟋えばこのブログの RSSフィヌド は以䞋のようになっおいたすが、Alexaが読み䞊げるのは <description> 芁玠の内容です。 <item> <title> Google Homeがブログの蚘事タむトルを読み䞊げるアプリを䜜っお公開した話 </title> <link> http://tech-blog.rakus.co.jp/entry/2018/02/05/130449 </link> <description> & lt ; p & gt ;& lt ; a href= & quot ; http://blog.hatena.ne.jp/radiocat/ & quot ;& gt ; id:radiocat & lt ; /a & gt ; です。 & lt ; a class= & quot ; keyword & quot ; href= & quot ; http://d.hatena.ne.jp/keyword/Google%20Home & quot ;& gt ; Google Home & lt ; /a & gt ; Miniず & lt ; a class= & quot ; keyword & quot ; href= & quot ; http://d.hatena.ne.jp/keyword/Amazon%20Alexa & quot ;& gt ; Amazon Alexa & lt ; /a & gt ; Dotの二刀流プレむダヌです。 & lt ; /p & gt ; 省略 Alexaが読み䞊げるテキストの内容は以䞋のような条件を満たす必芁がありたす。 各フィヌドアむテムの文字数が4,500文字以内であるこず。 SSML、HTML、 XML のタグなどの 特殊文字 を含たない、プレヌンテキストであるこず。 詳现は デベロッパ ヌサむトに解説されおいたすが、珟状のブログ蚘事のたただずこの条件を満たすこずが難しく゚ラヌが発生しおしたいたした。 developer.amazon.com 䞊蚘 デベロッパ ヌサむトの解説によるず RSSフィヌド 以倖に JSON 圢匏にも察応しおいたす。そこで、 RSSフィヌド を JSON 圢匏に倉換するこずを考えたした。 先日公開したGoogle Assistant察応アプリ もHeroku䞊で RSSフィヌド を JSON 圢匏に倉換したので、仕組み的にはこれず同じ方匏です。そのためこのHerokuの環境ぞ新たにAlexa向けの゚ンドポむントを远加するこずにしたした。 党䜓の構成図は以䞋のようになりたす。 前回同様FeedParserを䜿っお RSSフィヌド の内容を取埗し、以䞋のような芁領でフラッシュブリヌフィングスキルの仕様に合わせお JSON オブゞェクトを生成したす。 var feedData = [] ; http.get(BLOG_RSS_URL, function (res) { res.pipe( new FeedParser( {} )) // 省略 .on( 'readable' , function () { var stream = this , item; while (item = stream.read()) { feedData.push( { "uid" : item.guid, "updateDate" : item.pubDate, "titleText" : item.title, "mainText" : item.title, "redirectionUrl" : item.link } ); } .on( 'end' , function () { response.setHeader( "Content-Type" , "application/json" ); response.send(JSON.stringify(feedData)); } ); } ); Alexaが読み䞊げるのは mainText の内容です。䞊蚘の䟋では蚘事のタむトルを読み䞊げたす。たた、耇数の堎合はオブゞェクトを配列にするず updateDate が新しい順に最倧5件が読み䞊げられたす。日付が叀いものは無芖されるずのこずで、詊したずころ1週間以䞊前のものは読み䞊げられたせんでした。 なお、 ラゞオニュヌスのようにオヌディオファむルを再生させたい堎合は streamUrl 芁玠を远加しオヌディオファむルのURLを蚭定するようです。 Amazon Echo で聎いたフラッシュニュヌスの内容はAlexaアプリにも衚瀺されたす。 この画面に衚瀺されおいるブログ蚘事のタむトルは titleText で指定したものです。 もっず読む のリンク先は redirectUrl のURLになりたす。 開発手順に぀いおはQiitaにもたずめたしたので参照ください。 qiita.com スキルの申請 HerokuにデプロむしたらAlexaの デベロッパ ヌコン゜ヌルに゚ンドポむントのURLずフィヌドの情報を蚭定するこずでフラッシュブリヌフィングフィヌドの蚭定は完了です。512x512pxのアむコンは冒頭に玹介したようにフラッシュニュヌスの䞀芧画面に衚瀺されたす。 最埌にスキルの 公開情報 ず プラむバシヌずコンプラむアンス を蚭定したす。スキルの画面に衚瀺される108x108pxず512x512pxの2皮類のアむコンを準備する必芁がありたす。たた、個人情報を収集する堎合はプラむバシヌポリシヌのURLを準備する必芁がありたすが、フラッシュブリヌフィングフィヌドは発信するのみで個人情報は収集できないので䞍芁です。 Google Assistantの堎合はプラむバシヌポリシヌのURLを必ず準備する必芁がありたしたが、Alexaの堎合は個人情報を収集しない堎合は必芁ありたせん逆に指定するず申請時にリゞェクトされるようです。 䞀通り蚭定が終わるず申請ボタンを抌しお申請したす。䌑日䞭に申請するず翌営業日には連絡が来お無事承認されたした。 おわりに フラッシュブリヌフィングスキルは RSSフィヌド が取埗できるコンテンツであれば手軜に䜜成するこずができ、今回のようにカスタマむズも容易にできたす。毎朝聎くニュヌスず䞀緒に聎いおもらえるので、コンテンツを持っおいるなら䜜っお損はないのではず思いたす。 Google AssistantずAlexa Skillsのそれぞれで開発から公開たでチャレンゞしおみたしたが、どちらも実珟は容易で手軜さがありたす。ただ、1぀のプラットフォヌムで出来るこずは限られおいるので、やりたいこずを実珟するためには今回のようにHerokuを䜿ったり、 Google や Amazon の他の クラりド プラットフォヌムず連携させたりずいった工倫は必芁になるず思いたす。たた、公開のための審査はどちらもスピヌディヌなレスポンスなので、リゞェクトを恐れず申請しおみるのが良いず思いたす。 私は先日神戞で開催された Alexa Day 2018 に行っおきたした。䌚堎でも話題になっおいたしたが、音声のVUIは スマホ などの既存のUIよりも利甚者にずっお身近で手軜なもので、子䟛からお幎寄りたでが扱うこずができるむンタヌフェヌスずしお倧きな可胜性を秘めおいたす。 Amazon Echo はただ招埅制で販売されおいたすが、今埌少しず぀入手しやすくなっおくるず思われたす。利甚者が増えればスキルに芁求されるこずも増えお可胜性も広がっおいくので今のうちにスキルの開発にチャレンゞしおおくず良いず思いたす。
どうも、NIR-AMAUQAです。寒い日が続いおいたすね。 そんな時はできるだけ家に匕き籠りたい!! そしお、家で䜕か勉匷したいずいうこずで  今回はUdemyずいうサヌビスを利甚しお、 スキルアップ を詊みるお話です。 ※ 投皿時点では、ただ受講途䞭です。 Udemyっお䜕 なんでUdemyを受けようず思ったのか どんな講座を受けたのか 講座内容を簡単に玹介 孊習の進め方 動画ず䞊行しお手を動かす 孊習した項目を応甚 隙間時間を掻甚 躓いた所 やっおみた感想 Udemyっお䜕 Udemyずは倚数の講座をeラヌニングで提䟛するサヌビスです。 実際にサむトを芋おみるずいろいろな皮類の講座があるのがわかるず思いたす。 www.udemy.com 蚀語は英語が䞭心ですが、日本語の講座も結構ありたす。 ※英語の講座でも、字幕付きの講座もあるみたいです。 パッず芋た感じだず有料コンテンツが倚いですが、無料コンテンツもありたす。 トップペヌゞで無料ず怜玢するず、少しですが出おきたす。 なんでUdemyを受けようず思ったのか 先日、瀟内メヌルで Udemyの講座で業務もしくは技術に関連するものであれば䌚瀟負担で受けられたすよ ずいう連絡がありたした。 これぱンゞニアにずっおはかなり嬉しいですね!! 業務に盎接関係ない講座でも技術関連であればOKずのこずでした。 そしお、eラヌニングでのスキル孊習に興味もあったのでやっおみよう!! ずいう経緯です。 そもそも瀟内メヌルを芋るたで、Udemyの存圚を知りたせんでした。無知なのは突っ蟌たないでください。笑 どんな講座を受けたのか 技術関連であればOKずのこずでしたので、以䞋の条件で探したした。 業務ずは違う分野 普段䜿っおいない プログラミング蚀語 身近なもの 結果、今回は党く觊ったこずのないSwiftの勉匷をするこずに!! Xcode にも觊れたこずが無かったので初心者甚講座を探したした。 いろいろあった䞭から「【Swift4.0察応】超豪華版未経隓者が有名 アプリ開発 者になる iOS 11の党お 20個以䞊アプリを぀くりプロになる」を遞択。 www.udemy.com 䜙談ですがSwiftを遞択した どうでもよい 理由 去幎買った MacBook が自宅で攟眮されおいる  ゚ンゞニアずしおそれはどうなのか  デスクトップ掟なもので  流行っおるものは觊っおみたい 友人に iOS ゚ンゞニアが倚いから気になった 理由はどうあれ、きっかけがあれば良いず思いたす。笑 講座内容を簡単に玹介 有料コンテンツなので詳しくは曞きたせんが少しだけ  未経隓者にフォヌカスしおいるこずもあり、 Xcode をむンストヌルする所から䞁寧に解説されおいたした。 プログラムの基本的な知識や構文の曞き方などに関しおも解説されおいたす。 ※ 甚語に関しおは未経隓者の方は調べながらやった方が理解しやすいかず思いたす。 アプリ䜜成に䜿甚する画像なども甚意されおいるので、プログラムの経隓者であればすぐに䜜成するこずが出来るず思いたす。 参考たでに最初の方に䜜った物のサンプルを茉せおおきたす。 パラパラ挫画的なのを再生 タむマヌの䜿い方や、ボタンを抌したずきの凊理を孊ぶ項目にお。 ログむン画面的なや぀ テキストボックスの操䜜やキヌボヌドの䜿い方を孊ぶ項目にお。 ラク スカラヌ っぜくしおみたした。 孊習の進め方 動画ず䞊行しお手を動かす 私の遞択した講座はハンズオン圢匏でしたので、基本的には動画を芋ながら手を動かしお進めおいきたした。 䞀床賌入した講座は䜕床でも芋れるので、聞き逃した所なども再床芋るこずができたす。 孊習した項目を応甚 孊習した項目に関しおは、自分のスキルにするために自分が玍埗するたで調べたり操䜜したりしたした。 再床同じこずをしようずしたずきに、自分の思い描いた通りにできるのが理想ですね。 隙間時間を掻甚 少しだけ空いた暇な時間などには積極的に進めるようにするこずで無駄な時間が無くなりたした。 動画ず䞊行で進めるずは蚀っおも、先に内容を知っおおいた方がやはり効率が良いので、通勀䞭の電車で動画を芋お予習をしたした。 Udemyは スマホ アプリ版があるのでい぀でも動画を芋るこずが出来るのは良かったです。 ※ 動画を芋おいた続きから再生されるので、PCずアプリを亀互に䜿う際に手軜でした。 Andorid版 play.google.com iPhone 版 Udemy:ビデオで授業が受けられる孊習アプリ Udemy 教育 無料 この蚘事を曞いおいる時に知ったんですが、 スマホ でオフラむン時に再生するためにあらかじめダりンロヌドができるようです。 これを利甚するず、モバむル通信費を節玄できるのでいいですね。 https://support.udemy.com/hc/ja/categories/204119668-%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB support.udemy.com 躓いた所 プログラムずかは問題なかったのですが、 Xcode の䜿い方に慣れおいなくお躓いたなっおずころがありたした。 iPhoneアプリ 䜜ったこずのある人にずっおは圓たり前の事だず思いたすが、解決するずきに参考にした蚘事を玹介しおおきたす。 シミュレヌタでのUIの配眮箇所がおかしい ideacloud.co.jp シミュレヌタでキヌボヌドが出おこない qiita.com yutaihara.com UIパヌツずプログラムの玐づけで゚ラヌ ios.steppers-hi.net やっおみた感想 たずたった時間は取れないけど勉匷したい方や巷で行われおいる勉匷䌚のスケゞュヌルに合わない方には良いサヌビスだず思いたす。 実際、マむペヌスで進められるのは結構気が楜でした。 ただし、マむペヌスで進められるので自分で孊習するずいう意思が無いず䞉日坊䞻になりそうなので泚意です。 利甚しおみお䞀぀難点かなず感じたのは、ノヌトPCのみの堎合は動画を芋ながら䞊行で進めるこずが難しいずころかず思いたす。 回避策ずしお、私はデスクトップで動画再生しながら MacBook を操䜜しおいたした。 珟時点では講座の途䞭ですが、結構孊んだこずが倚く スキルアップ に繋がっおいるず感じれおいるので満足しおいたす。 簡単なアプリであれば今でも䜜れそうだなっお感じなので、講座を受け終わったころに䜕かアプリ䜜れたらいいなず思っおいたす。 今埌も気になる講座、特に 人工知胜 や業務関連でフロント゚ンド系の技術の講座は積極的に受けおいきたいです。
こんにちは sts -250rrです。 今回は最近リリヌスされた iPhone のOSであるiOS11から远加された「ARKit」を少し觊っおみたしたので玹介したいず思いたす。 あたり業務的ではありたせんが、昚幎は VR元幎 ず蚀われ3D関連は少しだけホットな話題ですよね。 むンタラクティブ な内容になっおいたすがお付き合いいただければ幞いです。 ARKitっおなに? ハヌドりェア ゜フトりェア Apple Developer のラむセンス Unityでサンプルアプリを動かしおみる Unityでプロゞェクトを䜜成 UnityにARKit Pluginをむンポヌトする ARKitのサンプルを開く ARKitサンプルのビルド蚭定 サンプルアプリの実行 たずめ ARKitっおなに? ARKitはその名の通りAR(拡匵珟実Augmented Reality)なアプリケヌションを開発するための フレヌムワヌク です。 䜕か特別なセンサヌ類を甚意せずずもARアプリの開発が可胜になったためハヌドルは䞋がったのではないかず思いたす。 ARKitでの開発を始めるために必芁なものは以䞋のものです。 ハヌドりェア Mac macOS Sierra 以降 iPhone 6s以降でiOS11が入っおいるもの ゜フトりェア Unity version5.6.2以降 Unity ARKit Plugin Xcode version9以降 Apple Developer のラむセンス 今回はAppStoreに公開するわけではないため無料のもので良いです。 無料ラむセンスでもアプリを3぀たで iOS デ バむス に転送できたす。サンプルを動かす分には十分です。 Unityでサンプルアプリを動かしおみる Unityでプロゞェクトを䜜成 たずはUnityでプロゞェクトを䜜成しおいきたす。 プロゞェクト䜜成時点で泚意すべき点はありたせんがプロゞェクト名を「ARSample」ずでもしおおき、[Create Project]したしょう。 䜜成が終わるずUntitledずいう名前のシヌンが䜜成された状態になりたす。 私も3D モデリング やUnity自䜓に詳しいわけではないですが、シヌンずは3Dオブゞェクトを配眮しおいくための「舞台」であるず解釈しおいたす。 iOS 甚のビルド蚭定を行う Fileメニュヌの[Build Settings]を開くず図のような画面が開きたす。 [Platform]に iOS を遞択しお[Switch Platform]ボタンを抌しおビルド蚭定を iOS にしたす。 ※ iOS の項目にUnityのアむコンが衚瀺されおいるはずです。 UnityにARKit Pluginをむンポヌトする UnityのWindowメニュヌから[Asset Store]を遞択するず画面䞊にAsset Storeが衚瀺されたす。 Asset Storeは プラグむン やUnityで䜿甚できる3Dモデルや玠材を画像などを賌入するこずができたす。無料のものもあるので色々探しおみるのも良いず思いたす。 話を戻したしょう。Asset Storeの怜玢フォヌムから「Unity ARKit Plugin」を怜玢し、むンポヌトしたす。 ダむアログが出おくる堎合がありたすが、特に問題はないようなので気にせずむンポヌトしたす。 ボタンをぜちぜちしおいるずなんのパッケヌゞをむンポヌトするのかずいった画面が出おきたすので党おの チェックボックス にチェックが入っおいるこずを確認し[Import]したしょう。 むンポヌトが完了するず[Project]りィンドりの[Asset]フォルダに[Unity ARKit Plugin]のフォルダが䜜成されたす。 これでUnityでARKitプロゞェクトを䜜成する準備が敎いたした。 ARKitのサンプルを開く [Unity ARKit Plugin/Example/UnityARKitScene]にサンプルのシヌンがあるのでダブルクリックしお開きたす。 [Scene]りィンドりに切り替えるず図のようなシヌンが衚瀺されおいたす。この画面をARで衚瀺しおいくわけです。 巊偎のタブに衚瀺されおいるものはシヌンに远加されおいるオブゞェクトの䞀芧です。 今回は3D モデリング に関しおの話がメむンではないので割愛したす。 ARKitサンプルのビルド蚭定 再びFileメニュヌの[Build Settings]を開き、䞊郚のUnityARKitSceneの チェックボックス をチェックしたす。 次に[Player Settings...]ボタンを抌すず[inspector]タブに iOS の甚のプレむダヌ蚭定画面が衚瀺されたす。 [Other Settings]の項目を蚭定しおいきたす。蚭定を行う項目は以䞋の3点です。 Identification [Bundle Identifier] 「com.unity.arkitscene」ずいう文字列が入っおいたすが、ここの固有䞀意のものでないずいけたせん。自身で ドメむン を持っおおられるような方は ドメむン を入れおしたうのが手っ取り早いです。 ここが固有のものでなかった堎合、埌の工皋で぀たづきたす。筆者談 Configuration [Camera Usage Description] 「AR BABY」の文字列が入っおいるこずを確認したす。 ここの倀は今回䜜成するARアプリが iPhone のカメラにアクセスする暩限を埗るために必芁なようです。 よくある「〇〇がアクセスを求めおいたす」のや぀ Supported URL schemes [Target minimum OS Version] 䞭身の倀を「11.0」に倉曎。 Build Settingsのりィンドりの[Build And Run]を抌䞋しお、任意の名前UnityARKitSceneで良いですで保存しビルドを始めたす。 凊理が完了するず、 Xcode が起動し「Unity- iPhone 」のプロゞェクトが衚瀺されたす。 サンプルアプリの実行 Mac ず iPhone を接続し、 Xcode の巊䞊の▶ボタンを抌すず iPhone 偎にアプリが転送され問題なく完了するず iPhone 䞊でアプリが起動したす。カメラぞのアクセス蚱可を求められるので、拒吊しないであげおください。 カメラ画面が衚瀺されるず画面䞊に黄色い点が衚瀺されたり、氎色の枠が衚瀺されたす。黄色い点は特城点、氎色の枠は氎平面を認識しおいるこずを瀺しおいたす。氎色の枠内をタップするず立方䜓が蚭眮されたす。 この立方䜓は氎平面䞊に配眮されおいるので、回り蟌んでみたりするずたるでその堎所に眮いおあるように芋えたす。 色々なずころをぐるぐる芋回しおみたり、平面に立方䜓を蚭眮しおみおAR䜓隓をしおみおください。 たずめ 簡単なサンプルでしたがいかがでしょうか 実際にアプリを開発しようず思うず3D モデリング や iOS アプリ開発 の知識が必芁になるかず思いたすが、比范的ハヌドルが䜎く感じられたのではないでしょうか 筆者の感想ずしおは、 iPhone の優秀さが感じられ非垞に手軜に楜しく開発ができそうだなず思いたした。 みなさんのア むデア をぜひARで実珟しおみたせんか ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
id:radiocat です。 Google Home Miniず Amazon Alexa Dotの二刀流プレむダヌです。 先日、このブログのタむトルを読み䞊げる Google Assistant察応アプリの申請が承認されたした。 Google Assistant | RAKUS Developers Blog お手元の Google Home か スマホ の Google Assistantを起動し、以䞋のように呌びかけおみお䞋さい。 OK Google , RAKUS Developers Blog に぀ないで スマホ の堎合は以䞋のように最新5件の蚘事のタむトルず投皿日、そしおこのブログぞのリンクが衚瀺されたす。スピヌカヌの堎合はタむトルず投皿日を読み䞊げたす。 しばらくは新着䞀芧にも衚瀺されるようです。 スマホ の Google Assisntantを起動しお「䜿い方・ヒント」を衚瀺するず新着䞀芧が出おきたす。 今回はこのアプリを䜜る手順ず公開するための申請手順に぀いお簡単にたずめおみたした。 アプリの開発 Action on Google Dialog Flow HerokuNode.js RSSフィヌドを䜿っおブログ情報を取埗する スマホから呌ばれた堎合だけブログのリンクを付けお応答する HerokuにデプロむしおDialogflowに蚭定 アプリの申請 アプリの起動ワヌド アプリの画像 プラむバシヌポリシヌ アプリの利甚範囲 審査 おわりに アプリの開発 基本的な開発の流れは以前この蚘事にたずめられおいたすのでたずはそちらを確認しおみおください。 tech-blog.rakus.co.jp 今回䜜ったアプリの党䜓の構成むメヌゞは以䞋の図のようになりたす。 ブログ情報を取埗する機胜はNode.jsExpressで実装したした。 Action on Google プロゞェクトを䜜成し、ActionsにDialogflowを蚭定したす。それ以倖の入力項目はアプリの申請時たでに入力を完成すれば良いので、いったんは未入力たたはダミヌ入力で構いたせん。 Dialog Flow 今回のアプリはブログの情報を応答するだけで䌚話をしないので、Default Welecom Intentに盎接 Use Webhook を蚭定したした。たた、今のずころ応答埌に䌚話を継続させる機胜もないので End conversation を蚭定したした。぀たりアプリに぀なぐずブログ情報の応答を返しおすぐアプリは終了したす。 HerokuNode.js Heroku䞊でNode.jsExpressを䜿った Google Assistantアプリの基本的な開発手順に぀いおは以前Qiitaに公開しおいたすので、たずはそちらを参照しおみおください。 qiita.com メむンずなるブログ情報を取埗しお応答する機胜の䞻芁な郚分に぀いお以降で解説しおいきたす。 RSSフィヌド を䜿っおブログ情報を取埗する 応答を返す前に、たずブログ情報を取埗する必芁がありたす。 圓ブログが利甚しおいる はおなブログ はブログのURLに /rss を付けるず RSSフィヌド を取埗できたす。このURLを利甚しお蚘事のタむトルず投皿日を取埗するこずにしたした。 RSSフィヌド を JSON 圢匏で取埗するためにFeedParserずいうラむブラリを䜿いたす。 github.com 詳现は䞊蚘の公匏サむトにたずめられおいたすが、ざっくり以䞋のような流れで RSSフィヌド を取埗できたす。 // RSSフィヌドを取埗する http.get(BLOG_RSS_URL, function (res) { res.pipe( new FeedParser( {} )) .on( 'readable' , function () { var stream = this , item; // 最新5件だけ取埗 while (item = stream.read()) { if (itemCount >= 5) { break ; } // item.title のように必芁な属性を取埗 スマホ から呌ばれた堎合だけブログのリンクを付けお応答する スマホ から呌ばれたかどうかはWebhookのリク ゚ス トの JSON の surface.capabilities をチェックするこずで刀別できたす。詳现はQiitaにたずめおいたす。 qiita.com たた、 Google AssistantにはBasic Cardずいうリンク付きのカヌドを衚瀺するRich Responsesずいう仕組みが準備されおいたす。これもQiitaにたずめおいたす。 qiita.com これらの仕組みを䜿うこずで スマホ の画面ではちょっずだけ芋栄えを向䞊させるこずができたす。 HerokuにデプロむしおDialogflowに蚭定 RSSフィヌド からブログの情報を取埗しお JSON でレスポンスを返す仕組みが完成したらHerokuぞデプロむし、そのURLをDialogflowのFulfillmentに蚭定したす。 あずはAction on Google のSimulatorで問題なく動䜜するこずが確認できれば公開するアプリの準備は完了です。 アプリの申請 いよいよアプリを公開するために申請の準備を行いたす。基本的にはAction on Google の画面で党おの項目を入力するだけです。必須項目を党お入力するず以䞋のように SUBMIT DRAFT FOR REVIEWボタンが抌せる状態になりたす。 アプリの起動ワヌド Sample invocationsでアプリの起動ワヌドを蚭定したす。「○○に぀ないで」や「○○ず話したい」ずいう蚀葉を蚭定したす。今回は䌚話系アプリではないので「○○に぀ないで」ずいうワヌドのみ蚭定したした。 アプリの画像 以䞋の2぀の画像を準備する必芁がありたす。 Large banner image (1920 x 1080) Google AssistantのアプリのペヌゞのTopに衚瀺されるバナヌです Small square logo (192 x 192) アプリのペヌゞやアプリ䞀芧で衚瀺されるアプリのロゎです プラむバシヌポリシヌ 今回のアプリでは特に個人情報を扱うこずはないので以䞋のような簡単なペヌゞを準備したした。Herokuを䜿うのでExpress䞊に静的ペヌゞを準備しお配眮したした。 アプリの利甚範囲 今回は特に制限しおいたせんが Surface capabilitiesでアプリをスピヌカヌだけ、 スマホ だけの利甚に制限するこずもできたす。 審査 申請するずその翌日には結果が返っおきたした。䞀床目は申請内容に䞍備があっおリゞェクトされたした。指摘は2点で1点は単にプラむバシヌポリシヌのURLが間違っおいたためで、もう1点は以䞋のような起動ワヌドが䞍適切ずいう指摘でした。 Sample Invocationsでは、<アプリ名、たたは、 Pronunciation + Trigger Phrase>を組み合わせた圢で文蚀を䜜成し、 必ずその文蚀がアプリ起動するこずをご確認いただいおから、ご申請頂く必芁がありたす。 最初に申請した時はアプリ名にはずらわれず、利甚シヌンや利䟿性を考えお䞋蚘のようなワヌドも登録しおいたした。 ラク スブログに぀いないで 最新の ラク スブログ情報を教えお これらが "<アプリ名、たたは、 Pronunciation + Trigger Phrase>を組み合わせた圢" ではなかったこずが原因です。詊しおいなかったのですが、これらのワヌドでは呌び出すこずができないようです。事前にAction on Google のSimulatorから蚭定した党おのワヌドで呌び出せるこをずを確認しおから申請するのが良さそうです。たた、手軜に呌び出しできるようにするには、呌び出しやすいアプリ名Pronunciationを考える必芁がありそうですもちろん、呌び出しやすくおもアプリの趣旚に沿わない名称では結局リゞェクトされるず思いたす。 䞊蚘を修正埌、再床申請しその翌日に無事承認されたした。すごく幞犏感のある返信メヌルが届きたした。ありがずうございたす。 なお、メヌルにも曞かれおいるように耇数蚀語でアプリを公開したい堎合は党おの蚀語で承認を受ける必芁があるようです。 おわりに 無事にアプリを公開するこずができたした。なお、今回䜜ったアプリは匊瀟のシステムリ゜ヌス等は䜿わずパブリックな クラりド サヌビスを利甚しお個人で䜜った実隓的なものであり䌚瀟の公匏的なサヌビスずしお公開されたものではないこずはご了承ください。 次回はこの機胜をAlexaからも䜿えるようにしおみたいず思いたす。
はじめに こんにちは新卒1幎目のrs_tukkiです。 ゚ンゞニアずしお入瀟しおからもうすぐ1幎。最初は右も巊も分からなかった私ですが、先茩や䞊叞の方々に しごかれ 指導しおいただきながら、なんずか機胜開発に携われるようになっおきたした。 さお、今回は技術そのものずは少し違うお話です。 珟圚2月。 あず2か月もすれば新しく新卒ずしお入瀟される、蚀わば 「新卒0幎目」 の皆さんは、期埅ず同時に、どのように仕事を進めおいけばいいのか、どうすれば説明䌚で䌚った先茩たちのようになれるか...ずいう䞍安もお持ちだず思いたす。 残念ながらそういったコツは実際の業務の䞭で身に着けおいくしかありたせんが、そのヒントなら、 叀今東西 のあらゆる曞籍に転がっおいたす。 そこで今回は、新卒1幎目の私が、新卒0幎目の゚ンゞニアにオススメしたい、5冊+1冊の必読曞...いえ、 「虎の巻」 をご玹介したす はじめに たずは「仕事のやり方」から <文章嫌いではすたされない! > ゚ンゞニアのための䌝わる曞き方講座 問題解決力を鍛えるトレヌニングブック 脳のパフォヌマンスを最倧たで匕き出す 神・時間術 評䟡される゚ンゞニアずは リヌダブルコヌド ―より良いコヌドを曞くためのシンプルで実践的なテクニック プログラマが知るべき97のこず 【おたけ】゚ンゞニアじゃなくおも読んでほしい「新卒虎の巻」 入瀟1幎目の教科曞 おわりに たずは「仕事のやり方」から ゚ンゞニア、ずいうず皆さんの䞭には、ただずっずパ゜コンに向かっおコヌドを曞いおいればいい、ず思っおいる方もいるかず思いたす。 ですが、実際の仕事は䜕も自分䞀人だけで進めおいくものではありたせん。 䟋えば自分たちの䜜ったものを資料にたずめお営業の人たちに説明したり、発生した問題に察しお皆で察応策や回避策を考えたり...ず、パ゜コンを䜿わない䜜業も意倖ず倚いのです。 ずはいえそんなずきに、「自分はプログラミングしかできないから」ず投げ出すわけにはいきたせん。むしろ、盎接業務に関係するためにその時になっおからでも孊ぶこずができるプログラミングよりも、 文曞の曞き方 や 問題に盎面したずきの考え方 、 そしお、 そういった䜜業をこなし぀぀本来の業務を遅らせないための取り組み方 こそが「今、このタむミングで知っおおくべきこず」なのだず思いたす。 ここでは、そういったこずを知れる本を3冊ご玹介したす。 <文章嫌いではすたされない! > ゚ンゞニアのための䌝わる曞き方講座 <文章嫌いではすたされない! > ゚ンゞニアのための䌝わる曞き方講座 䜜者: 開米 瑞浩 発売日: 2014/06/28 メディア: 単行本゜フトカバヌ 倧孊時代に真面目なメヌルを沢山曞き、重芁なプレれンを垞にやっおいた、ずいう人はあたりいないのではないでしょうか。 ですが就職した埌は、たずえ゚ンゞニアであっおも説明のためにメヌルを送ったり資料を曞いたりず、ずにかくプログラム以倖にも「曞く」䜜業がかなり増えたす。 そこで䞀番重芁なのは、「必芁な情報だけを、正確に、分かりやすく盞手に䌝えるこず」です。 この本では「誰に」「䜕のために」文章を曞くのか、ずいうこずから始めお、図や衚の䜜り方など、情報を的確にたずめお䌝えるための方法が曞かれおいたす。よく、「コミュニケヌションは仕事で䞀番倧事なスキルだ」ずいう人がいたすが、その意芋の是非はずもかく、「誀解なく䌝えられるこず」は必ず圹に立぀はずなのです。 問題解決力を鍛えるト レヌニン グブック 問題解決力を鍛えるトレヌニングブック (かんきビゞネス道堎) 䜜者: 奈良井 安 メディア: 単行本 発売は2002幎ず結構叀い本です。が、今でも十分参考になる内容だず個人的には考えおいたす。 安易に問題ず蚀っおも様々ですが、この本ではたず「問題」の定矩ずは䜕かずいうこずから考え始め、いきなり解決に取り組むのではなく、いったい䜕が原因なのか、どうすれば解決したず蚀えるのか、ずいったこずを䜓系立おお「基本手順」ずしおたずめおいたす。 実際に起こった問題に察する解決の事䟋も远えるので、゚ンゞニアずしおの問題にも十分応甚が利く本です。 脳のパフォヌマンスを最倧たで匕き出す 神・時間術 脳のパフォヌマンスを最倧たで匕き出す 神・時間術 䜜者: 暺沢 玫苑 発売日: 2017/04/13 メディア: 単行本゜フトカバヌ こちらは逆に昚幎4月に発売されたばかりで、私も今たさに読んでいる途䞭の本です。 䞀般的に仕事は1日8時間。特に゚ンゞニアだず残業が倚く、9時間も10時間も働くこずがあるかもしれたせん。毎日そんなに長い間集䞭しお取り組めずいうのも無理な話ですし、実際私も集䞭力が途切れ途切れになっお泚意されおしたうこずがありたした。 この本では、いわゆる「生産性」を叩き出す方法ずしお、䞊手く集䞭力を維持しながら、効率よく時間を䜿う方法に぀いお解説しおいたす。 「雑念が出たら玙に曞け」ずいうのはちょっず意倖でした。 評䟡される゚ンゞニアずは ...䜕やら偉そうなこずを 蚀っおいるように思うかもしれたせん。 私もそう思いたす プログラミングの䞖界には「たずは動くようになるこずが倧事」ずいう栌蚀があるらしいですが、圓然ただ動くようになっただけでは、ただごちゃごちゃしたものが出来䞊がっおいるだけです。 自分のコヌドが先茩や䞊叞に評䟡されるためには、たずそのコヌドが読みやすいものでなければいけたせん。それは技術力ずはたた別のずころにありたすが、䟋えるなら郚屋の敎理敎頓をきちんずできるか、ずいったずころでしょうか。 このように、これから゚ンゞニアずしお働く皆さんが、「デキる」゚ンゞニアになるためには、ただ技術があるだけでなく、それをどう実際の業務で生かすか、ずいうずころたで求められおいるのだず思いたす。 コヌドの綺麗な曞き方 や 開発ぞの心構え など...基本的なプログラミングを芚えた人たちが、そういったノりハりを知るこずが出来る本 *1 を2冊ご玹介したす。 リヌダブルコヌド ―より良いコヌドを曞くためのシンプルで実践的なテクニック リヌダブルコヌド ―より良いコヌドを曞くためのシンプルで実践的なテクニック (Theory in practice) 䜜者: Dustin Boswell , Trevor Foucher 発売日: 2012/06/23 メディア: 単行本゜フトカバヌ ゚ンゞニアずしお就職するず、圓然ながら仕事ずしおのプログラミング技術が必芁で、コヌドを曞くこずも倚いず思いたす。 倧孊では、自分がコヌドを曞いおも、それを読むのはせいぜい自分ず教授くらいだったかもしれたせん。しかし、仕事では䞀぀のコヌドを倚くの仕事仲間で線集するので、圓然分かりやすさは倧事になっおきたす。 分かりやすい倉数名の曞き方、分かりやすいコメントの曞き方、分かりやすいロゞックの組み立お方など...ベテランの プログラマ でも意倖ずできおいない「分かりやすさ」のための技術がたずたっおいる本です。 プログラマ が知るべき97のこず プログラマが知るべき97のこず 発売日: 2010/12/18 メディア: 単行本゜フトカバヌ 既に沢山のブログで「初心者向けの必読曞」ずしお玹介されおいるので、もう読んだこずのある人もいるのではないでしょうか。 実に73人もの プログラマ による97本の゚ッセむ(日本語版には曎に日本人8人による10本)がたずめられおいたす。「 浮動小数点数 は実数ではない」のような数孊に近い話から、「関数の『サむズ』を小さくする」などの実際のプログラミングにも圹立぀内容、曎には「ハヌドワヌクは報われない」などずいった働き方に関する話たで。 党おを実践する、ずいうのは無理がある(ずいうか矛盟する話もいく぀かある)のですが、「デキる」人たちはこういうこずを意識しおいるんだな、ずいうこずを芚えるだけでもいいず思いたす。 【おたけ】゚ンゞニアじゃなくおも読んでほしい「新卒虎の巻」 最埌に、オススメの本をもう䞀冊だけご玹介したす。 ですがこちらは、営業職向けの内容も倚く含たれおいるため「゚ンゞニアの虎の巻」ずは蚀えたせん。 それでも今、このタむミングでなるべく倚くの「新卒0幎目」に読んでいただきたい、 「新卒の虎の巻」 です 入瀟1幎目の教科曞 入瀟1幎目の教科曞 䜜者: 岩瀬 倧茔 発売日: 2011/05/20 メディア: 単行本゜フトカバヌ オススメ、ずいう割に、この本に曞いおあるこず自䜓は「仕事は絶察やりきろう」ずか「早く出すこずを意識しよう」ずか「仕事に察する芋方を倉えよう」ずか、割ず圓たり前に思われるこずです。 ですが、そんな圓たり前が党郚で50個。入瀟したばかりのやる気に満ちおいる時であればずもかく、しばらくするず数倚くの「圓たり前」に取り組むこずを忘れおしたうかもしれたせん。 そんな時に、この本に乗っおいたこずを思い出しお自分のやり方を芋぀め盎す。そうしおたた入瀟したずきのやる気を埩掻させる。そんな読み方ができる本だず個人的に考えおいたす。だからこそ、入瀟する前の今に読んでおいおほしいのです。 たあ、50個の䞭には「宎䌚芞を死ぬ気でやれ」ずか「同期ずは付き合うな」ずか個人的にどうだろうず思うものもあるのですが... おわりに 私が入瀟しおから今たでに読んだ本の䞭で、「これは絶察に圹に立぀」ず感じた5+1冊をご玹介したした。 もちろん、読んでないずいけない、ずいうわけではありたせん。これらの本を党郚読んで、曞いおある内容を党郚実践しようなんお無理だず思いたす。 ですが、 「読んだこず」自䜓は絶察に無駄になるこずはない ず思うのです。 面癜そうだず思った本を䞀冊流し読みしおみお、これなら自分にもできそうだず思った䞀぀を、機䌚があったらチャレンゞしおみようず思うだけでもいいず思いたす。おいうか私もそんな感じです。 私の玹介した本が、新卒0幎目の皆さんの心の片隅にでも残っおくれれば幞いです。 *1 : 逆に、プログラミング未経隓の方には難しい内容だず思いたす...
こんにちは。゚ンゞニアのmickey-STRANGEです。 今回はめんどくさがりによるめんどくさがりのための スマホ アプリ開発 に぀いおお話したいず思いたす。 ずはいえ、このブログの内容では スマホ アプリは䜜りたせん。 タむトル詐欺ぎりぎりですが、嘘は぀いおいたせんので、そういう認識でお楜しみいただけたすず幞いです。 構成 GitHub Pages Web Storage IndexedDB 1.DBに接続する 2.オブゞェクトストアにアクセスする 3.IndexedDBの泚意点 たずめ 構成 先に曞きたした通り筆者は非垞にめんどくさがりです。開発環境・実行環境の敎備ずいったずころに手間をかけたくありたせん。 今回䜿うのは GitHub のみです。 GitHub のみで疑䌌Webアプリを実珟したす。 では GitHub のみで疑䌌Webアプリをどう䜜るか考えおいきたしょう。 Webアプリずいうず倧雑把に考えお3぀、倧事な芁玠がありたす。 サヌバそのもの apache 、 tomcat など プログラム実行環境 php 、 Java など 蚘憶領域postgres、 Oracle など これらに察応させお考えおいきたす。 たずサヌバには GitHub Pages を䜿甚したす。 GitHub Pagesは GitHub のサヌビスであり、静的ペヌゞを ホスティング しおくれるもので、簡単なWebサむトを公開するこずが出来たす。 そしお公開した静的WebサむトHTMLに javascript を曞いおおきたす。぀たり実行環境は ブラりザ です。 最埌に蚘憶領域ですが、アクセスした各端末に必芁な情報を蚘憶させたす。 javascript による氞続の蚘憶領域ずしお、 Web Storage や IndexedDB ずいうものがありたす。 これらを䜿甚しお スマホ でも実行可胜なプログラムを䜜成するこずが可胜です。では各芁玠に぀いお芋おいきたしょう。 GitHub Pages たずサヌバの圹割を担う GitHub Pagesです。 䞊蚘の通り静的ペヌゞの ホスティング サヌビスですが、すごく簡単に蚀うず「 GitHub にHTMLファむルをpushすればWebサむトずしお公開しおくれる」ずいう認識でいいず思いたす。 ここから GitHub Pagesの䜿いかたをご説明いたしたす。ずいっおも倧局なものではなく、2ステップで完了です。 1.たずHTMLファむルをpushしたす ここは詳しい説明は省きたす。方法は問いたせんので自分の リポゞトリ にHTMLファむルをpushしおください。 めんどくさがりの意芋ずしおたしおは GitHub Desktopを今回初めお䜿いたしたが、䜕も考えなくおいい感じがずおもよかったです。 GitHub Desktop | Simple collaboration from your desktop 䟋ずしおHello,World!的なHTMLを䜜成したした。 2.pushした リポゞトリ を公開する蚭定をしたす リポゞトリ 画面の䞊郚にある「Settings」リンクをクリックし  GitHub Pagesカテゎリ内のSource蚭定を「master branch」に倉曎しお隣の「Save」をクリック。 以䞊です これで GitHub Pagesの蚭定が完了したした。pushしたファむルにアクセスしおみたしょう。 衚瀺されおいるリンクをクリックするず  https://mickeystrange.github.io/tools/ Hello,GitHubPages!が衚瀺されればOKです。 発行されるURLは https://[ナヌザ名].github.io/[リポゞトリ名]/ファむル名 なので、 https://mickeystrange.github.io/tools/index.html にアクセスしおも同じものが衚瀺されたす。 おそらくファむル名を省略した堎合にindex.htmlを自動的に衚瀺しおくれおいるのではないかず。 HTMLを公開する蚭定が出来たしたので、あずは javascript を䜜っおいくだけです。 これで GitHub Pagesの説明は終わりです。実行環境のブラりザは蚀わずもがなずいうこずで蚘憶領域の1぀目、 Web Storage の説明に移りたす。 Web Storage Web Storage はブラりザの蚘憶領域にKey- Value Storeで倀を保持できる仕組みです。 Web Storage API - Web API | MDN 䜿いかたはずおも簡単で、準備も䞍芁です。 これでもう倀の栌玍ず取り出しが出来おいたす。それぞれ1行だけです。 もう芋たたたですが䞀応ご説明いたしたすず、 3行目の localStorage.setItem( 'key' , value); の郚分で 'key' ずいうキヌで倉数 value の倀を栌玍しおいたす。 たた、 5行目の var item = localStorage.getItem( 'key' ); の郚分で 'key' ずいうキヌで栌玍されおいる倀を倉数 item に取り出しおいたす。 localStorage ずいうのは Web Storage の皮類の1぀で、蚘憶領域が保持される期間が氞続のものです。 もう1぀の皮類ずしお sessionStorage ずいうものがありたすが、こちらはブラりザを閉じるたでの間のみ有効なものになりたす。 この Web Storage を䜿甚しお、ペヌゞぞのアクセス数をカりントする簡単なプログラムを䜜成いたしたした。 LocalStorage 静的リソースだけでアプリケーションを作るための記憶領域テスト ペヌゞの再衚瀺やブラりザの再起動などをしお遊んでいただきたすず、蚘憶領域をたしかに持っおいるこずが確認出来るず思いたす。 開発者ツヌルなどで芋るこずが出来たすが、特別隠すようなものでもありたせんのでコヌドは以䞋の通りです。 tools/storage_test.html at master · mickeySTRANGE/tools · GitHub 簡単な倀の保持だけであれば Web Storage が十分な機胜を持っおいるこずをご説明いたしたしたが、続いおもっず匷力な蚘憶領域ずいたしたしおIndexedDBの説明に移りたす。 IndexedDB IndexedDBはブラりザの蚘憶領域にオブゞェクトを保持する仕組みです。 Web Storage ず比べお最倧容量が倚い、KVSではなく JSON を保存できる、怜玢に匷い、などの特城がある、 NoSQLデヌタベヌス です。 これからIndexedDBの䜿甚方法に぀いおの説明をいたしたすが、 Web Storage の埌で芋るずずおも耇雑です。 むンストヌルや倖郚ラむブラリは䞍芁ブラりザの機胜なので圓たり前ですが、手順が倚いです。 1.DBに接続する IndexedDBは基本的にリク ゚ス トず、そのリク ゚ス トの結果によっお実行される郚分を曞いおいきたす。 今回の䟋ですず、3行目の var openRequest = indexedDB.open( "sampleDatabase" , version); がDB接続のリク ゚ス トで、4-10行目の // 接続に成功すれば各凊理を実行 openRequest.onsuccess = function ( event ) { db = event .target.result; db.onerror = function ( event ) { alert ( "Database error: " + event .target.errorCode); } ; } ; が接続成功時に実行する凊理、ずいった具合です。サンプルは関数の倖の倉数にDBの むンスタンス を保存しおいたす。 11-15行目の // DB定矩を曎新 openRequest.onupgradeneeded = function ( event ) { db = event .target.result; db.createObjectStore( 'sampleObject' , { keyPath: 'key' } ); } ; は、保存するオブゞェクトの定矩を行っおいたす。 アクセスする時のオブゞェクトストアの名前を第䞀匕数に、オブゞェクトの定矩を第二匕数に持っおいたす。 サンプルは 'sampleObject' ずいう名前のオブゞェクトストアで 'key' をキヌに定矩しおいたす。 この onupgradeneeded ずいうものは、DBのバヌゞョンが䞊がった時に実行されるものです。 3行目の open() の第二匕数に version がありたすが、これはIndexedDBのバヌゞョンではなく、自分が䜜るDBのバヌゞョンです。 バヌゞョン1ずしおこのサンプルの通りオブゞェクトストアを定矩し、倉曎が必芁になった時にバヌゞョン2ずしお接続し、 onupgradeneeded の䞭で新しくオブゞェクトストアを远加したり、オブゞェクトストア定矩倉曎を行ったりするこずが出来たす。 2.オブゞェクトストアにアクセスする DBに接続出来れば次はデヌタぞのアクセスです。デヌタの栌玍ず取埗を芋おみたしょう。 setValueではDB接続のサンプルで䜜ったsampleObjectに1぀のオブゞェクトを远加しおいたす。 keyは 'sample' 、 value に 'hoge' ずいう倀を持っおいたす。keyは必須か぀重耇䞍可の制玄がありたすが、他の芁玠は䜕を持っおいおも構いたせん、 getValueではsampleObjectから 'sample' ずいうkeyPathサンプルでは 'key' を持぀倀を怜玢しおいたす。 IndexedDBの蚘憶領域は党お氞続なので、この構文のみでもアプリを䜜成するこずが可胜です。 これらの構文を䜿甚し、たたペヌゞぞのアクセス数をカりントする簡単なプログラムを䜜成いたしたした。 Indexed Database 静的リソースだけでアプリケーションを作るための記憶領域テスト tools/indexed_database_test.html at master · mickeySTRANGE/tools · GitHub ペヌゞのリロヌド等をしおいただきたすずカりントが正垞に出来おいるこずが分かりたす。 3.IndexedDBの泚意点 簡単なサンプルをお芋せいたしたしたが、 indexed_database_test.html のコヌドを芋おいただきたすず、 Web Storage の時ずは倧きく構成が違うこずが分かっおいただけるかず思いたす。 そうです、「取埗する関数」ず「栌玍する関数」で分けお凊理をきれいに曞くこずが出来なかったのです。 理由がありたしお、リク ゚ス トを曞き、その成功時倱敗時に実行する凊理を曞くず説明いたしたした。 実はこれが曲者で、リク ゚ス トが完了したかどうかをむベント倖から芋るこずが出来ないのです。 「取埗する→1増やす→栌玍する」ずいう流れを切り分けるこずが出来ず、 取埗するリク ゚ス トのonsuccessむベントで「1増やしお栌玍する」ずいう凊理の流れになりたす。 曎に蚀うず取埗するリク ゚ス トさえ接続するリク ゚ス トのonsuccessむベント内で実行しおいたす。 IndexedDBは Web Storage よりも匷力なデヌタベヌスが䜿甚できる代わりに、凊理の流れを䜜るずころで非垞にややこしくなっおしたう、ずいうデメリットがあるず蚀えたす。 たずめ 自分の曞いたコヌドを簡単に スマホ で動かす方法をご玹介いたしたした。いかがでしたでしょうか。 䞀番手軜なのはやはり Web Storage を䜿甚する方法です。 倚分これが䞀番早いず思いたす。 これに JQuery やBootstrapなどの郚品を組み合わせるこずで十分な スマホ アプリのようなものが䜜れるず思いたす。 今回の蚘事ずは別に業務を効率化するJSなども趣味で䜜っおいたりしたため、ここ最近でJS面で成長したこずを感じおいたす。 自分で䜿えるツヌルをもっずpushしおJSラむフを楜しんでいきたいです。
はじめに 開発゚ンゞニアのamdaba_sk ペンネ ヌム未定です。前回は「 ゜フトりェアテストに぀いお簡単にたずめおみた 」ずいう蚘事を曞きたしたが、その流れで今回はセキュリティテストツヌル「OWASP ZAP」に぀いお少し調べおみたした。 ※以䞋は個人的にネットで調べおみた情報をたずめたものであり、実際に開発過皋で運甚するなどしたものではありたせん。たた日本語サむトを䞭心に調べおいるため、機胜等の情報は叀い可胜性がありたす。 セキュリティテスト 昚今は個人情報の挏えいや顧客情報流出などのニュヌスをよく耳にしたす。怖いですね 。 ラク スでも個人情報の挏えいや顧客情報流出などは深刻な問題ずしおずらえおいたしお 1 、その発生を未然に防ぐために開発者には幎1床セキュリティ孊習ず修了テストが課されおいたりしおいたす。 たたリリヌス前にはずあるWebアプリケヌション怜査ツヌルを䜿った 脆匱性 怜査を実斜し、怜出された 脆匱性 を修正するようにしおいたす。 しかしながら今のツヌルによる怜査は、はたから芋おいるだけの感想ですが 蚭定がややこしそう リリヌス前に修正箇所党䜓に察しお行うため、たくさんあったずきに修正が倧倉 ツヌルの皌働サヌバヌがチヌム間で共有なため、柔軟には䜿甚できない ずいった䞍䟿さを抱えおいるように感じたす。 OWASP ZAP そこで䞊蚘の䞍䟿さに察し、 もっず簡単な蚭定で自動チェックをしおくれるツヌルはないか もっずこために、䟋えば 単䜓テスト の䞀環ずしおチェックできないか もっず柔軟に、チヌムごずに専甚の環境を甚意できないか ずいった芁望を満たすツヌルずしお私が目を付けたのが「OWASP ZAP」でした。 OWASPずは OWASP ZAPではじめる2016幎のりェブアプリケヌションセキュリティ では りェブアプリケヌション を䜜成する開発者や りェブアプリケヌション に関わる意思決定を行う方々に察しセキュリティに関する十分な情報を行き枡らせるこずを目的ずし掻動をしおいるのがOWASPです。OWASPは「The Open Web Application Security Project」の略称でグロヌバルにチャプタヌ 支郚 を展開するオヌプンコミュニティです。 ず説明されおいたす。Webアプリケヌションセキュリティの啓蒙団䜓ずいったずころでしょうか。 OWASP ZAPの抂芁 OWASPにはWebアプリケヌションセキュリティの啓蒙に関しお倧小さたざたなプロゞェクトを展開しおいたす。 OWASP Zed Attack Proxy OWASP ZAP⁠はその䞭でも最重芁ずしお䜍眮づけられたプロゞェクトの䞀぀であり、その成果物ずしおのツヌルです。 IPA テクニカルりォッチ「 りェブサむトにおける脆匱性怜査手法の玹介 」でも取り䞊げられお、䜿いやすく、怜知制床が高く、効率性が非垞に高い初玚者向けのツヌルずいう評䟡を受けおいたす。たたありがたいこずに無料で䜿える オヌプン゜ヌス の りェブアプリケヌション 脆匱性 蚺断ツヌルで、 Github侊 に ゜ヌスコヌド が公開されおいたす。 甚途ずしおは「開発者が開発時に簡易的な りェブアプリケヌション 脆匱性 蚺断を実斜する」こずを特に意識しお䜜られおおり、セキュリティの専任ではない開発者でも簡単に利甚できるようになっおいたす。 なお、OWASP ZAPが怜査可胜な䞻な 脆匱性 は以䞋のずおりです。 クロスサむトスクリプティング SQLむンゞェクション パストラバヌサル オヌプンリダむレクタ ヘッダむンゞェクション オヌトコンプリヌト機胜の有効 アプリケヌション゚ラヌの開瀺 X-Content-Type-Optionsヘッダの未蚭定 X-Frame-Optionsヘッダの未蚭定 HttpOnly属性が付䞎されおいない Cookie の利甚 等 OWASP ZAPの機胜 衚1 はOWASP ZAPの䞻芁な機胜をたずめたものです。 衚1  OWASP ZAPの䞻芁機胜 OWASP ZAPではじめる2016幎のりェブアプリケヌションセキュリティ より匕甚 項番 機胜名 抂芁 1 スパむダヌ機胜 指定のURLを起点ずしオヌトクロヌリング自動で 脆匱性 蚺断察象のリンクを蟿り存圚するURLを掗い出す。を行いたす。 2 動的スキャン機胜 クロヌリングしお明らかになった任意のURLに察しツヌルが準備しおいる 脆匱性 蚺断甚の怜査文字列を甚いお自動で 脆匱性 蚺断を行いたす。 3 ロヌカルプロキシ機胜 ロヌカルプロキシずしおOWASP ZAPを動䜜させ手動で 脆匱性 蚺断を行いたす。やや玄人向けです。 4 ディレクト リ探査機胜 指定のURL配䞋に䞍芁な ディレクト リが存圚しないかを確認したす。 5 アラヌト機胜 脆匱性 蚺断結果に関する簡易の報告曞を䜜成したす。 6 ZAP Script機胜 OWASP ZAPの機胜を拡匵しOWASP ZAPをより自分奜みにカスタマむズできたす。 Javascript  Python  Ruby などのさたざたな蚀語に察応しおいたす。情報源ずしおは OWASP ZAP Scripts ずいうGroupがありたす。 OWASP ZAPは Java で䜜られおおり、 クロスプラットフォヌム で動䜜したす。たた windows 環境では特にありがたいのですが、利甚しやすいようにグラフィカルむンタヌフェヌスを備えおいたす。 詳しい手順はその他の蚘事や公匏のドキュメントを参照しおいただきたいず思いたすが、項番1スパむダヌの実行埌に項番2動的スキャンを実行する自動 脆匱性 蚺断を行うだけなら 怜査察象URLの入力 実行ボタンクリック ずいう非垞に簡朔な手順で実斜できたす。 䞀方でRESTfulな API による操䜜もできるようで、 curl などで コマンドラむン からリク ゚ス トを投げれば䞊の手順を スクリプト 化できたす。さらにデヌモンモヌドで起動しおおけば、JenkinsなどのCIツヌルず連携しお最初から最埌たで自動で実斜するこずもできたすe.g. JenkinsずOWASP ZAPで自動蚺断 - Qiita 。 たたJenkinsず連携した䞊の䟋ではOWASP ZAPの API を スクリプト で盎接呌び出しおいたすが、 公匏の ZAP Jenkins plugin ずいうものもあるようで、そちらを利甚するずいう手もあるでしょう。 その他、手動の 単䜓テスト 実斜時にロヌカルプロキシ機胜を䜿甚しおチェックするずか、いろいろ蚭定をいじっお䜿っおみるずか、䜿い方の幅も広そうです。 おわりに 以䞊簡単ながら「OWASP ZAP」に぀いお調べたこずをたずめたした。 蚭定も簡単、粟床もよく、自動化も可胜ず、ずっおも䟿利そうです。ただあくたで簡易チェックツヌルずいうこずで、 開発䞭は「OWASP ZAP」で簡易怜査 リリヌス前は粟密チェックができる別のツヌルで本怜査 ずいう颚な䜿い分けをしたらいいんじゃないかず今の段階では思っおいたす。 参考 OWASP Zed Attack Proxy Project IPAテクニカルりォッチ「りェブサむトにおける脆匱性怜査手法の玹介」 OWASP ZAPではじめる2016幎のりェブアプリケヌションセキュリティ JenkinsずOWASP ZAPで自動蚺断 - Qiita zap plugin - Jenkins - Jenkin Wiki ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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 本ブログで「 意図しない凊理が実行されるCSRFずは抂芁ず察策 」や「 芁泚意新人゚ンゞニアが発生させた2倧脆匱性 」ずいった蚘事があるように、個人レベルでも関心の高い話題です。 ↩
こんにちは゚ンゞニアのY-Kanohです。 匊瀟の゚ンゞニアは、業務終了前にその日の皌働報告を瀟内システムに入力するこずになっおいたす。 しかしながら、この入力を忘れるメンバヌ䞻に私が倚く、チヌムのリヌダヌに指摘されおから、数日前の仕事状況を思い出しお蚘入するこずが床々ありたした...。すみたせん。 そこで、チヌムで導入されおいるチャットツヌル、「MatterMost」に 皌働報告を忘れおいる人ぞ通知をする ようにしおみたした。 Mattermost | Open Source Collaboration for Developers しかし、ただ䜜るだけではすぐ終わっおしたったので、かねおから興味があったDockerを䜿っおマむクロサヌビスずしお䜜り盎しおいたす。 今日はそのお話です。 抂芁 蚭蚈 抂念図 BFF API Gateway バック゚ンド docker-compose.yml 実際に䜜成したBot 今埌の拡匵 抂芁 倧雑把に蚀えば、䜜成した Bot システムは䞋図のようなむメヌゞです。 プログラムは毎朝始業盎前に動かすようセットしたす。 皌働状況は瀟内のDBに登録されおいるので、たず瀟内DBを参照し、昚日の入力を忘れおいるメンバヌを芋぀け、チャットに通知したす。 MatterMostには倖郚連携機胜があり、倖郚システムからの投皿が可胜です。 *1 蚭蚈 抂念図 最初は、「動けばいい」の信念のもず、䞊蚘図の Bot システムをそのたた1コンテナにしただけの蚭蚈でした。 マむクロサヌビスを目指すにあたり、そのコンテナ内容を機胜ごずに分割し、以䞋のような蚭蚈で実装しおいたす。 *2 䜜成したコンテナは以䞋の7぀です。 管理甚BFFコンテナ Bot 甹BFFコンテナ API Gateway コンテナ API Gateway 情報DBコンテナ 瀟内DBアクセス甚コンテナ チヌム情報DBアクセス甚コンテナ チヌム情報DBコンテナ ※瀟内DBには皌働情報、チヌムDBにはチヌムメンバヌ情報やチヌムが䜿甚しおいるチャット情報が栌玍されおいたす。 これらのコンテナ矀は、倧きく BFF ず API Gateway 、 バック゚ンド の䞉皮類に分けるこずができたす。 BFF BFFずは、Backends for Frontendsの略で、぀たりフロント゚ンドのためのバック゚ンドです。 *3 *4 BFFは、クラむアントの皮類ごずに、クラむアントずバック゚ンドの間で、デヌタ加工や画面䜜成などの凊理を行いたす。 BFFを䜿甚するこずで、バック゚ンドから受け取ったデヌタを、各BFFが察象ずするデ バむス やナヌザ向けに適した圢に加工しお衚瀺させるこずができたす。 API Gateway 機胜を各コンテナに分けるうえで、䞀぀問題がありたした。 コンテナ同士はやり取りする盞手のコンテナ接続情報を知っおおく必芁がありたす。そのため、やり取りするコンテナを増やすたびに、接続先情報をそれぞれ定矩する必芁があるため、 コンテナ䟝存関係の定矩が耇雑になっおしたいたす。 そこで、今回はバック゚ンドのコンテナは、互いに通信せず、必ず API Gateway を介しおやり取りするようにしたした。 これにより、以䞋のメリットが芋蟌たれたす。 API を䞀元管理 コンテナ間の䟝存関係を簡略化 共通凊理を行う堎合ここで実行可胜 BFFからのサヌビス呌び出しを簡略化 バック゚ンドの API は、必ず API Gateway を介しお呌び出されたす。 Gateway に来たリク ゚ス トは、 Gateway で適切なコンテナぞルヌティングされるため、Dockerコンテナで面倒なコンテナ同士の䟝存関係を定矩する必芁はなくなりたす。 たた、今回は特に実装しおいたせんが、バック゚ンドぞの認蚌機胜や、ログの収集なども、ここで䞀括しお行うこずができたす。 今回、 API Gateway には、 OSS ずしお開発が進められおいるKongを䜿甚したす。 Kong Open-Source API Management Gateway for Microservices バック゚ンド BFF、 API Gateway の導入により、バック゚ンドはその他の機胜ずかなり 疎結合 になりたす。 フロント偎に適した デヌタ圢匏 に加工する必芁が少ないため、蚭蚈の制玄が枛りたす。 そこで、バック゚ンドの API は、RESTの原則に基づいた実装にしたした。 docker-compose.yml docker-compose.ymlは以䞋の通りです。 前述した API Gateway により、各コンテナはkongコンテナをlinkさせるだけでバック゚ンドの API が䜿甚できたす。 version: '2' #============================================================================== # Volumeの定矩 #============================================================================== volumes: team_vol: driver: 'local' kong_vol: driver: 'local' #============================================================================== # servicesの定矩 #============================================================================== services: ############################################################################# ## API Gateway ############################################################################# # API GatewayのDB kong-database: image: postgres:9.4 environment: - POSTGRES_USER=kong - POSTGRES_DB=kong volumes: - kong_vol:/var/lib/postgresql/data # API Gatewayの初期蚭定を行うコンテナ kong-migration: image: kong depends_on: - kong-database environment: - KONG_DATABASE=postgres - KONG_PG_HOST=kong-database command: kong migrations up # API Gatewayコンテナ kong: image: kong:latest depends_on: - kong-database - kong-migration environment: - KONG_DATABASE=postgres - KONG_PG_HOST=kong-database - KONG_PG_DATABASE=kong ports: - "8000:8000" - "8443:8443" - "8001:8001" - "8444:8444" ############################################################################# ## 瀟内DBアクセス機胜 ############################################################################# qcp_watcher: links: - kong build: context: "./BEService/QcpWatcher" dockerfile: "Dockerfile" ports: - 49513:80 extra_hosts: - qcp:192.168.99.100 #瀟内DBのホストを指定 ############################################################################# ## Team情報管理機胜 ############################################################################# # Team情報管理DB team_db: build: "./BEService/Team/DB" ports: - 54321:5432 environment: POSTGRES_USER: postgres POSTGRES_DB: postgres volumes: - team_vol:/var/lib/postgresql/data # TeamDBアクセスコンテナ team: links: - kong - team_db build: "./BEService/Team" ports: - 49514:80 ############################################################################# ## Bot甚コンテナMatterMost連携コンテナ ############################################################################# mm_bff: links: - kong build: "./FEService/MmBff" ports: - 49515:80 ############################################################################# ## 管理者甚コンテナ ############################################################################# admin_bff: links: - kong build: "./FEService/AdminBff" ports: - 49516:80 実際に䜜成した Bot 毎朝こんな感じに通知しおくれるようになりたした。 より通知を目立たせるために、 戊闘力が53䞇の方にご協力いただいおいたす 。 この方には bot をマむクロサヌビスにする前から協力いただいおいたす。最初はア むコン画 像だけでしたが、メンバヌからの芁望により、口調もあの方になりたした。 最初は 黄色いネズミ のアむコンだったのですが、こちらのほうが断然反応しおいただけたした。 党員皌働報告が入力できおいた堎合は、ちゃんず耒めお(?)いただけたす。ありがたや。 今埌の拡匵 Bot を機胜ごずに分割するこずで、远加機胜の実装もやりやすくなりたした。 たた、コンテナによっお機胜ごずにプログラムが隔離されおいるため、興味がある技術を詊しに䜿っおみるこずもできたす。 そのため、今埌は業務に圹立ちそうなものを 趣味 自己孊習ずしお、拡匵できればず思いたす。 *1 : https://docs.mattermost.com/developer/webhooks-incoming.html *2 : https://www.wantedly.com/companies/wantedly/post_articles/32977 *3 : https://qiita.com/kawasima/items/356d54e253c54d730fb0 *4 : https://www.oreilly.co.jp/books/9784873117607/
こんにちは。楜楜粟算開発チヌムの岡本です。 䌚瀟で賌入したGoogleHomeで自由に遊べる暩利を頂いたので、色々ず遊ばせおもらいたした。 先日その内容を瀟内でプレれンする機䌚があったのですが、せっかくなのでGoogleHome自身にプレれンしおもらいたした。 今回は、その際に実斜した蚭定を説明しようず思いたす。 ※蚭定方法に぀いおは west-cさん が既に曞かれおいるので、蚭定した内容だけ曞いおいきたす。 今回やりたいこず スマヌトフォン でプレれン開始を指瀺する。 ディスプレむにスラむドが衚瀺される。 GoogleHomeがスラむドの内容を喋り始める。 スラむドの内容を喋り終えるず、次のスラむドに切り替わる。 スラむドが終了するたでを繰り返す。 準備するもの Wan偎 Action on Google Googleアシスタント 内で呌出し可胜な チャットアプリ *1 を構築できるサヌビスです。 構築した チャットアプリ から曎に別の Webサヌビス を呌び出すこずもできるので、この仕組を甚いれば Googleアシスタント から盎接 Webサヌビス を呌び出せたす。 今回は Dialogflow を呌び出すように構築しおいたす。 Dialogflow 自然蚀語 の解析゚ンゞンです。受取った音声デヌタを解析しおテキストに倉換しおくれたす。 たた、 Firebase の ホスティング を甚いた スクリプト 実行も可胜なので、倉換したテキストを他の Webサヌビス に連携させたりもできたす。 Firebase いわゆるBaasです。 今回は ホスティング 機胜ずDB機胜を䜿甚したす。 Lan偎 RaspberryPi 超小型のコンピュヌタヌです。 今回は以䞋の機胜を実装しおいたす。 ディスプレむぞのスラむド切替え通知 GoogleHomeぞのメッセヌゞ通知 GoogleHome いわゆる スマヌトスピヌカヌ 。今回は喋らせるだけなのでスマヌトな機胜は䜿いたせん。 ざっくりずした凊理の流れ スマヌトフォン の Googleアシスタント から Action on Google で構築した チャットアプリ を呌び出す。 チャットアプリ で入力した音声デヌタを Dialogflow に連携する。 Dialogflow の解析結果テキストを Firebase のDBに保存する。 保存したテキストをRaspberryPiに通知する。 通知されたテキストがプレれン開始キヌワヌドの堎合は、プレれンを開始する。 スラむドの衚瀺/切り替えをディスプレむに通知する。 喋らせるメッセヌゞをGoogleHomeに通知する。 Action on Google の蚭定 Action on Google で新芏プロゞェクトを䜜成し Action ず App information を蚭定したす。 Action ADD ACTIONS から Dialogflow を遞択したす。 App information 重芁なのは Assistant app name の項目だけです。 Assistant app name で蚭定した名前で Googleアシスタント で チャットアプリ を呌び出すこずになりたす。 今回は「発衚アプリ」にしたので、 スマホ に「 OK Google 発衚アプリに぀ないで」ず話しかけるず チャットアプリ が起動したす。 それ以倖の項目に぀いおは適圓に蚭定しおしたっお問題ないです。 以䞊で Action on Google の蚭定は完了です。 Dialogflowの蚭定 Action on Google の Action 蚭定から、Dialogflow画面に遷移できるので、新芏プロゞェクトを䜜成し Intents ず Fulfillment を蚭定したす。 Intentsの蚭定 チャットアプリ で入力した音声デヌタに察しお、どのように振舞うのかを蚭定したす。今回は以䞋の2぀を蚭定したす。 Default Welcome Intent チャットアプリ が起動した時の振舞いを蚭定したす。 今回は、アプリ起動時に チャットアプリ が「発衚アプリを起動したした。」ず応答するように Text response を蚭定したした。 プレれン開始 チャットアプリ にプレれン開始を指瀺した時の振舞いを蚭定したす。今回は以䞋のような振舞いを想定しおいたす。 チャットアプリに「プレれン開始」ず音声入力する。 「プレれン開始」のキヌワヌドをFirebaseに保存する。 チャットアプリが「プレれンを開始したした。」ず応答する。 「プレれン開始」の音声入力で saveData ずいうアクションが実行されるように蚭定したす。 saveData の内容に぀いおは Fulfillment で蚭定したす。 アクション実行埌、 チャットアプリ が「プレれンを開始したした。」ず応答するように蚭定したす。 Fulfillmentの蚭定 Inline Editor を ENABLED に倉曎し、 index.js ず package.json を以䞋のように蚭定したす。 /** index.js **/ 'use strict' ; const firebase = require( "firebase" ); const functions = require( "firebase-functions" ); const DialogflowApp = require( "actions-on-google" ).DialogflowApp; // Firebaseぞの接続情報 var config = { apiKey: "XXXXXXXXXXXXXXXXXXXXXX" , authDomain: "XXXXXXXXXXXXXXXXXXXXXX" , databaseURL: "XXXXXXXXXXXXXXXXXXXXXX" , projectId: "XXXXXXXXXXXXXXXXXXXXXX" , storageBucket: "XXXXXXXXXXXXXXXXXXXXXX" , messagingSenderId: "XXXXXXXXXXXXXXXXXXXXXX" } ; firebase.initializeApp(config); exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => { var app = new DialogflowApp( { request, response } ); let actionMap = new Map(); // saveDataアクションを登録 actionMap.set( "saveData" , function (app) { // Firebaseにキヌワヌドを保存する firebase.database().ref( "/googlehome" ).set( { word: "プレれンを開始したす" } ); } ); app.handleRequest(actionMap); } ); Firebaseぞの接続情報 は Firebase の画面で りェブアプリに Firebase を远加 をクリックしお衚瀺されるコヌドを䜿甚したす。 /** package.json **/ { "name" : "dialogflowFirebaseFulfillment" , "description" : "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase" , "version" : "0.0.1" , "private" : true , "license" : "Apache Version 2.0" , "author" : "Google Inc." , "engines" : { "node" : "~6.0" } , "scripts" : { "start" : "firebase serve --only functions:dialogflowFirebaseFulfillment" , "deploy" : "firebase deploy --only functions:dialogflowFirebaseFulfillment" } , "dependencies" : { "actions-on-google" : "^1.5.x" , "firebase" : "^4.8.0" , "firebase-admin" : "^4.2.1" , "firebase-functions" : "^0.5.7" , "apiai" : "^4.0.3" } } 蚭定埌、 DEPLOY をクリックし Firebase ぞ スクリプト をデプロむしたす。 以䞊で Dialogflow の蚭定は完了です。 Firebaseの蚭定 Firebase の Database にデヌタ保存堎所ずアクセスルヌルを蚭定したす。 デヌタ保存堎所の蚭定 Database > デヌタ から保存堎所を䜜成したす。今回は /googlehome/word に䜜成したす。 䜜成した保存堎所には、PUTでデヌタを保存出来たす。 curl -X PUT \ https://XXXXXX.firebaseio.com/googlehome/word.json \ -H 'content-type: application/json' \ -d '"保存キヌワヌド"' 保存したデヌタはGETで取埗できたす。 curl -X GET \ https://XXXXXX.firebaseio.com/googlehome/word.json \ -H 'content-type: application/json' アクセススヌルの蚭定 Database > ルヌル からDBぞのアクセスルヌルを蚭定したす。 今回は蚭定簡易化のため /googlehome 配䞋のデヌタには認蚌無しでアクセスできるように蚭定しおいたす。 { "rules" : { "googlehome" : { ".read" : true , ".write" : true } , ".read" : "auth != null" , ".write" : "auth != null" } } 以䞊で Firebase の蚭定は完了です。 RaspberryPiの蚭定 以䞋の内容を スクリプト 化し、RaspberryPiのNode.js䞊で実行したす。 GoogleHomeぞのメッセヌゞ通知 ディスプレむぞのスラむド衚瀺通知 Firebase のDB曎新通知の受信 ※RaspberryPiに初期むンストヌルされおいるNode.jsはバヌゞョンが叀いので、最新の安定バヌゞョンに曎新する必芁がありたす。 GoogleHomeぞのメッセヌゞ通知 GoogleHome任意のメッセヌゞをプッシュするNode.js甚ラむブラリが公開されおいるので、ありがたく䜿わせおいただきたす。 → google-home-notifier ラむブラリのむンストヌル $ npm init $ npm install google-home-notifier 動䜜確認 /** testMessage.js **/ const googlehome = require( "google-home-notifier" ); const language = "ja" ; // デバむス蚭定(Google-Homeで始たる党デバむスにメッセヌゞが通知される。) googlehome.device( "Google-Home" , language); // 通知するメッセヌゞ googlehome.notify( "こんにちは。私はグヌグルホヌムです。" , function (res) { console.log(res); } ); ※test.jsの 文字コヌド はUTF8で䜜成する。 $ node testMessage.js Device "Google-Home-XXXXXXXXXXXXXXXXXXXXXX" at 192.168.1.11:8009 <- 応答したGoogleHomeのデバむス名 Device notified ディスプレむぞのスラむド衚瀺通知 スラむドの衚瀺には fbi ずいうコマンドを䜿いたす。 コマンドのむンストヌル $ sudo apt-get install fbi 動䜜確認 $ sudo fbi -nocomments -noverbose -a -T 1 -d {出力堎所} {画像ファむルのパス} ※コン゜ヌル出力の堎合は、{出力堎所}に /dev/fb0 を、 HDMI 出力の堎合は /dev/fb1 を蚭定したす。 FirebaseのDB曎新通知の受信 Firebaseのドキュメント を元に蚭定したす。 ラむブラリのむンストヌル $ npm install firebase 動䜜確認 /** testFirebase.js **/ // Firebaseぞの接続情報(Dialogflowの項目で蚭定したものず同じ) var config = { apiKey: "XXXXXXXXXXXXXXXXXXXXXX" , authDomain: "XXXXXXXXXXXXXXXXXXXXXX" , databaseURL: "XXXXXXXXXXXXXXXXXXXXXX" , projectId: "XXXXXXXXXXXXXXXXXXXXXX" , storageBucket: "XXXXXXXXXXXXXXXXXXXXXX" , messagingSenderId: "XXXXXXXXXXXXXXXXXXXXXX" } ; firebase.initializeApp(config); const path = "/googlehome" ; const key = "word" ; const db = firebase.database(); // 曎新通知を受信した時の凊理を蚘述 db.ref(path).on( "value" , function (changedSnapshot) { // 曎新された倀をログに衚瀺 console.log( "取埗キヌワヌド:" + changedSnapshot.child(key).val()); } ); $ node testFirebase.js # Firebaseに「テスト」をPUTしおDBを曎新する 取埗キヌワヌド:テスト index.js䜜成 実行ファむルずしおindex.jsを䜜成したす。 /** index.js **/ const firebase = require( "firebase" ); const exec = require( "child_process" ).exec; const googlehome = require( "google-home-notifier" ); // メッセヌゞを通知するGoogleHomeの蚭定 const language = "ja" ; const deviceName = "Google-Home-XXXXXXXXXXXXXXXXXXXXXX" ; googlehome.device(deviceName, language); // Firebaseぞの接続情報を蚭定 var config = { apiKey: "XXXXXXXXXXXXXXXXXXXXXX" , authDomain: "XXXXXXXXXXXXXXXXXXXXXX" , databaseURL: "XXXXXXXXXXXXXXXXXXXXXX" , projectId: "XXXXXXXXXXXXXXXXXXXXXX" , storageBucket: "XXXXXXXXXXXXXXXXXXXXXX" , messagingSenderId: "XXXXXXXXXXXXXXXXXXXXXX" } ; firebase.initializeApp(config); // GoogleHomeぞメッセヌゞを通知 var notifyGoogleHome = function (word) { googlehome.notify(word, function (res) { console.log(res); } ); } ; var totalSpeakTIme = 0; var speak = function (word, speakTime) { // 前回メッセヌゞの終了埌、メッセヌゞを通知 setTimeout( function () { notifyGoogleHome(word); } , totalSpeakTIme); // 今回メッセヌゞの秒数分カりントアップ totalSpeakTIme += (speakTime * 1000); } // ディスプレむぞスラむドの衚瀺を通知 var notifyDisplay = function (imgPath) { // fbiコマンドを䜿っおディスプレむに画像を衚瀺 exec( "fbi -nocomments -noverbose -a -T 1 -1 -d /dev/fb0 " + imgPath, function (err, stdout, stderr) { if (err) { console.log(err); } } ); } ; var totalDisplayTIme = 0; var show = function (imgPath, speakTime) { // 前回スラむドの終了埌、衚瀺を通知 setTimeout( function () { notifyDisplay(imgPath); } , totalDisplayTIme); // 今回スラむドの衚瀺秒数分カりントアップ totalDisplayTIme += (speakTime * 1000); } // Firebaseの曎新通知を受取った時の凊理 const path = "/googlehome" ; const key = "word" ; const db = firebase.database(); db.ref(path).on( "value" , function (changedSnapshot) { // 曎新された倀を取埗 const value = changedSnapshot.child(key).val(); if (value === "プレれンを開始したす" ) { // 開始キヌワヌドの堎合はプレれン開始 // 登録された倀をFirebaseから消しおおく db.ref(path).set( {[ key ] : "" } ); // プレれン䞭は䜕もしない if (totalDisplayTIme > 0 || totalSpeakTIme > 0) { return ; } // プレれン開始メッセヌゞをGoogleHomeに喋らせる speak( "承知したした。" + value, 10); // 1枚目のスラむドを衚瀺する show( "./img/001.jpg" , 15); // 以䞋、プレれン甚スクリプトを蚘述 } } ); ファむルが䜜成できたら、実行したす。 $ sudo node index.js ※ fbi コマンドの実行時にroot暩限が必芁なので sudo 付きで実行したす。 以䞊で RaspberryPi の蚭定は完了です。 実際にやっおみる 蚭定完了埌、 スマホ に察しお「発衚アプリに぀ないで」「プレれン開始」ず指瀺するず、index.jsに曞かれた内容でGoogleHomeがプレれンをしおくれたす。 長いので冒頭郚分だけですが、実際にこんな感じでGoogleHomeにプレれンしおもらいたした。 参考 Google Home開発入門 / google-home-notifier解説 Raspberry Pi でTFT液晶モゞュヌルにいろいろ衚瀺する *1 : Googleアシスタント ず䌚話できるアプリ
こんにちは。楜楜粟算開発チヌムの堀内です。 先日、 ryuzeeさん こず吉矜さんに瀟内で スクラム ト レヌニン グを実斜しお頂きたした。最初から最埌たで アゞャむル で、党おが楜しく、埗るものが倚いト レヌニン グでした。 今日はその玹介です。 前眮き ラク スではプロダクト開発の改善掻動の䞀郚に アゞャむル の考え方を取り入れお進めおいたす。 実のずころ、この改善掻動の埌ろで我々を支揎しおくれるのが吉矜さんです。 始たりずしおは、プロダクトをもっず良くするにはどうするのが良いかず頭を抱えおいる頃に、チヌムメンバヌの1人が「改善やチヌムビルディングに詳しい吉矜さん」に盞談しおみるのが良いのではないか、ず蚀っおくれたこずでした。 「なるほど」ず思い䌚瀟に掛け合っおみたずころ、タむミングも良かったこずもあり、すんなりずOKしおくれたした。 早速吉矜さんに盞談しおみるず「目的、ゎヌルを明確にしお、アクションを決めたら䞀芧にしお優先順䜍を決めお䞊び替えお、、、」ずアド バむス を受けたした。アクションを実斜するためにチヌムを組んで少しず぀進めおいるず、良い感じで改善が進み始めたした。そのこずを吉矜さんに䌝えるず、「それが スクラム ず蚀うんです」ず。 それを蚀われお正盎なずころ「ぞぇ」ずいう印象でした。 スクラム ずいうものが良くわかっおいなかったんです。でも、その蚀葉をキッカケに スクラム や アゞャむル で 今でも色耪せるこずのない良曞 ずされるものを読み持り「なるほどっ」ず思うようになりたした。 改善掻動も持続的に続けるこずができおおり、今では開発チヌム党䜓に改善の文化が根付いおきたように思いたす。 そんな アゞャむル のやり方を開発以倖の方々にも知っおもらいたい、そう思っお䌁画したのが吉矜さんによる スクラム ト レヌニン グです。 ト レヌニン グの様子 ト レヌニン グの流れ 実斜しお頂いたのは半日コヌスのト レヌニン グでした。 党䜓の流れは䞋蚘。 党䜓の説明 スクラム の抂芁説明 玙飛行機を䜿っお スクラム を䜓隓 党䜓のおさらい 党䜓説明 ト レヌニン グ内容の党䜓を最初に説明しお頂きたしたが、䞭でも最も印象に残っおいるのは次の蚀葉でした。 「16時に終わりたす。終わるこずをコミットしたすので、安心しおください。16時から通垞業務に戻れたす。質問は垞に受け付けたす。奜きなだけ聞いおください。ただし、質問が倚ければ予定しおいるト レヌニン グの内容が最埌たでいかないこずになりたす。」 捉え方によっおは、最埌たでト レヌニン グの内容を受けたければ質問はほどほどに、ずも思えたすが、アりトプットは途䞭の状況に応じお倉わるずいうこずを瀺しおくれおいたず感じたす。 アゞャむル で蚀う「スコヌプの調敎」ずいうこずなんだろうなず。 ぀たり、16時に終わるこずをコミットタむムボックスを固定し、ト レヌニン グの内容スコヌプは質問の量状況に応じお調敎する、ずいう事なんだなず。 スクラム の抂芁説明 これは教科曞的ずいうか、 ryuzee.com のブログに曞かれおいるような内容で、銎染みのない人にも分かりやすく説明しお頂きたした。 玙飛行機を䜿っお スクラム を䜓隓 今回の醍醐味ずも蚀うべき、ゲヌムを通じおの スクラム 䜓隓です。 5〜6人に分かれお、チヌムで飛ばした玙飛行機の数を競い合うもので、以䞋のように進めたした。  芋積もり、蚈画、玙飛行機補䜜、振り返りを1セットずしお4回繰り返す぀たり4スプリント実斜 玙飛行機を䜜る䞊でいく぀かのルヌルが決められおいる 決められた距離以䞊飛ばしお始めお成果ずなる 最埌に党䜓の振り返り 各スプリントが始たる前に、䜕機補䜜できそうか、各チヌムが目暙ずなる数字を公衚したす。 1回目は倧䜓の芋積もりは圓たっおいたせんでした。 2回目の芋積もり粟床はかなり改善されたした。 やっおみないず分からなかったこずが、1床実斜しお振り返るこずで芋積もりも補䜜も䞊手くなり、改善したずいうこずなんだず思いたす。 3回目は玙飛行機を補䜜する䞊で決められおいたルヌルを1぀だけ取り陀くこずができたす。これはどのチヌムも同じルヌルを倖したした。そのルヌルが ボトルネック ずなる「制玄」ず党員が考えおいたんですね。3回目はどのチヌムも良い数字を叩き出したす。 4回目は3回目に倖した制玄がもず通りになり、1、2回目ず同じ制玄のもずで玙飛行機を補䜜したす。 途䞭で発生するルヌル倉曎が開発で蚀うずころの「ビゞネスの状況倉化」を衚すわけなんですが、ルヌルを倉えるこずで成果も倉わるこずが䜓感できたした。 制玄を倖すこずで成果が倉わるこずが䜓感できたこずは良かったのですが、それ以䞊に重芁なこずは「ルヌルに曞かれおいないこずは犁止しおいない」ず蚀うこずでした。 䟋えば、補䜜に必芁なハサミは1぀だけずいうルヌルはなく、耇数必芁なら予備があるので䜿っおも良かった、他のチヌムの玙飛行機を分析しおはいけないルヌルは無い、などです。他にもいく぀かあったのですが、決められたルヌルに瞛られるず新たな考えを「発想」する事が出来なくなるんだず気づく事ができたした。 実際の開発の珟堎に眮き換えるなら、 ボトルネック ず認識されおいる「制玄」を倖すこずも重芁ですが、「制玄」になっおいないこずに目を向けお工倫するこずも重芁、ずいうこずになりたす。 チヌムず結果 最埌に ト レヌニン グは予定通り16時に終わりたした。党䜓を通じお芁所芁所で質問もありたした。玙飛行機のワヌクショップでは時間が若干抌しおいるようでした。でもきっちり16時に終わりたした。 ト レヌニン グ内容のスコヌプが吉矜さんにより調敎されたのか、予め想定されおいたバッファに収たったのかは分かりたせん。 ただ、私たちの孊びや満足が成果だずするず、私たちは間違いなく成果を埗るこずができたしたし、予定通り16時から通垞業務に戻るこずができたため、党お蚈画通りでした。 アゞャむル の原理原則を党䜓を通じお䜓感できる有意矩なト レヌニン グでした。   その埌 埌日、参加者にアンケヌトを取らせお頂いたずころ、皆が満足感を埗られおいたこずが改めおわかりたした。 たた、開発以倖の方々ず スクラム の考えを共通認識ずしお持぀こずができたため、ちょっずした䌚話の䞭でも「䟡倀」「サむズを小さくする」ずいったキヌワヌドが聞こえ始めおいたす。 今では改善掻動だけでなく、開発を アゞャむル で始めるこずができるようになりたした。ただただ始たったばかりですが、倧きな䞀歩を螏み出しおいたす。 募集 お陰様で順調に䌞び続けおいる ラク スは、 アゞャむル を取り蟌むこずで曎に改善し、飛躍しおいきたす。 この倉化の真っ只䞭で成長を実感されたい方、ぜひ䞀緒に働きたしょう楜しさずやりがいは保蚌したす 企業の成長を支援するクラウドサービス | 株式会社ラクス
はじめに こんにちは。 ラク スのstrongWhiteです。 今回は Google Chrome (以䞋、 Chrome ) の旧バヌゞョンをむンストヌルする手順に぀いお曞きたす。 ここ最近、䌚瀟で Selenium を動かす機䌚があり、そのずきに Chrome の旧バヌゞョンが必芁になったので、むンストヌルする手順をいろいろ調べおいたした。 これから調べたむンストヌル手順を曞いおいきたすが、私自身、実際に手順を詊しおいたせん。 なぜ詊さなかったかずいうず、これから曞く手順は レゞストリ に手を加える必芁があり、PCに重倧な䞍具合を匕き起こす可胜性があるからです。䞊蚘を承知した䞊で詊したい方は以䞋を読み進めおください。 旧バヌゞョンは公匏にはない たず前提ずしお、 Chrome の旧バヌゞョンは公匏では提䟛されおいたせん。 Chrome は、セキュリティアップデヌトなどで最新のバヌゞョンが利甚可胜になったずきに自動曎新できる仕組みになっおおり、垞に最新のバヌゞョンを保おるようになっおいるからです。旧バヌゞョンを利甚するこず自䜓、想定されおいないずいうこずですね。 そのため、旧バヌゞョンをむンストヌルするには有志が公開しおいる非公匏なサむトから むンストヌラ を入手する必芁がありたす。 ただむンストヌルするだけじゃダメ 前述の通り Chrome は自動曎新する仕組みになっおいるので、ただむンストヌルするだけではダメです。自動曎新を停止させる蚭定を行わなければいけたせん。 自動曎新の停止蚭定は Chrome 偎からは行えず、タヌミナルなどで倖郚から蚭定しないずけたせん。 Windows だず レゞストリ を倉曎する必芁があり、 Mac だずdefaultsコマンドを実行しなくおはいけたせん。 レゞストリ は䞍甚意に倉曎するずPCに重倧な䞍具合が起こる可胜性がありたす。ひず぀ひず぀の操䜜が理解できた䞊で慎重に行うこずを匷く匷くオススメしたす。 自動曎新を埩掻させる方法 自動曎新は停止させたあずでも以䞋の方法で埩掻させるこずができたす。 Windows の堎合は レゞストリ ゚ディタから HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Update に、DWORD倀で DisableAutoUpdateChecksCheckboxValue ずいう倀を䜜成し、0に蚭定すればOK。 Mac の堎合は defaults write com.google.Keystone.Agent checkInterval 1 を実行すればOKです。 これらは Google Update 関連のタスクを有効にする蚭定です。 むンストヌルの手順 これたでのセクションを読んで察するこずができるかもしれたせんが、 Chrome の旧バヌゞョンをむンストヌルする手順は公匏がサポヌトしおいる手順ではないのでご自身の責任でお詊しください。 以䞋、調べた手順。 ■ Windows 手順 すでに Chrome がむンストヌルされおいる堎合はアンむンストヌルする 旧バヌゞョンの むンストヌラ を取埗する ネットワヌク接続を切断する むンストヌルする レゞストリ ゚ディタから HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Update に、DWORD倀で DisableAutoUpdateChecksCheckboxValue ずいう倀を䜜成し、1に蚭定する ネットワヌク接続を有効にする ■ Mac 手順 14たでは䞊ず同じ タヌミナルを起動し、 defaults write com.google.Keystone.Agent checkInterval 0 ず実行する ネットワヌク接続を有効にする ※手順を補足するず、むンストヌル前にネットワヌク接続を切断しおいるのは、むンストヌル埌に Chrome が自動曎新しないようにするためです。その他、 Windows 手順の5ず Mac 手順の2では、 Google Update 関連のタスクを無効にする蚭定を行っおいたす。 おわりに 今回は Chrome の旧バヌゞョンをむンストヌルする手順を曞きたした。 冒頭でなぜ実際に手順を詊しおいないず曞いたのか、ここたで読んでいただいた方は意味がわかったかず思いたすが、公匏でサポヌトされおいる手順ではなく、か぀PCが壊れる危険性を孕んでいたすので、䜕床も蚀いたすが詊す際は自己責任でお願いしたす(汗) 参考 https://news.mynavi.jp/article/20100602-chrome-no-update/ http://yanor.net/wiki/?Windows-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%2FChrome%2F%E5%8F%A4%E3%81%84%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%EF%BC%88%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E5%81%9C%E6%AD%A2%EF%BC%89 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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
id:radiocat です。倧阪本店で瀟内勉匷䌚の運営をしおいたす。 今回は「IT勉匷䌚/コミュニティ運営 Advent Calendar 2017」の21日目の蚘事ずしお投皿したす。 qiita.com 瀟内の勉匷䌚むベント 倧阪では倧きく2぀の勉匷䌚むベントが開催されおいたす。 ビアバッシュ 倧阪の開発郚で毎月実斜しおいる勉匷䌚です。参加自由ですが䌚瀟予算で飲み物ず軜食を出しおもらっおいたす。私は䞻にこの運営に関わっおいたす。先日はクリスマス版で実斜したした。 もくもく勉匷䌚 有志の呌びかけで毎週朚曜日に実斜する勉匷䌚です。月末の朚曜日はLT圢匏で発衚䌚をしたす。特に予算や制玄はなく、やりたいメンバヌが集たっおゆるくやっおいたす。こちらは運営メンバヌが以前このブログに投皿しおいたすので詳现はそちらをご芧ください。 tech-blog.rakus.co.jp これらの運営に関わっお実際にやっおみた事に぀いおたずめおみたした。なお、やっおみお思ったほどうたくいかなかった事も知芋を埗たずいう点では䟡倀があるず思うので惜しみなくご玹介したす。 コンテンツ線 テヌマを決める 自己玹介LT 開発倖の郚眲の人にもプレれンしおもらう ハッカ゜ンしおみる 質問タむムを削る 䌚堎セッティング線 䌚堎を瀟倖にしおみる サテラむト䌚堎で同時䞭継する 食べ物や飲み物を工倫しおみる ツヌル線 スマホ䞉脚 Chromecast 掲瀺板ず立お看板 スラむド共有 おたけ クリスマスを楜しむ コンテンツ線 テヌマを決める ビアバッシュでは毎月テヌマを決めお発衚者を募集しおいたす。同じ開発郚のメンバヌ同士ずはいえチヌムによっお文化が違ったり、䜿っおいる技術が違っおいたりするため、ある皋床テヌマを絞ったほうが発衚者が発衚しやすく参加者も参加しやすいだろうず考えお運営偎でテヌマを決めおいたす。ただし、あくたで参加しやすい堎を䜜る事が目的なので、倚少テヌマから倖れた発衚であっおも指摘するこずはありたせん。 過去に実斜したテヌマをいく぀かご玹介したす。 テヌマ 抂芁 各サヌビスのお仕事発衚䌚 各サヌビスで取り組んでいる課題やチャレンゞしおいるこずを共有しおもらいたした。 各サヌビスのトラブル特集 その名の通りトラブル事䟋の共有ですが、ビアバッシュでやっおみるず業務報告ずは違った本音や苊劎話が聞けたした。 読曞特集 技術曞の玹介や効率よく読むための工倫などの読曞術に぀いお共有しおもらいたした。 QAセッション倧䌚 他のサヌビスの担圓者に聎いおみたいこずを事前に募集しお回答しおもらいたした。 爆LT倧䌚 時間の蚱す限りみんなでLTをやりたす。 自己玹介LT オフショア先の ベトナム 子䌚瀟からの出匵者や䞭途入瀟、新卒の配属などで新しいメンバヌが参加する堎合、LT圢匏の自己玹介をしおもらっおいたす。本圓にただプレれン資料を䜿っお自己玹介するだけです。入瀟しおいきなりLTするのは敷居が高いですが、自己玹介ならば敷居は高くないず考えおお願いしおいたす。新メンバヌ党員に必ずお願いする事も重芁であったりしたす。結果的に新しいメンバヌの事を知る良い機䌚になっおいたす。次回以降で発衚しおもらう時の 心理的 敷居が䞋がるこずも密かに期埅しおいたす。 開発倖の郚眲の人にもプレれンしおもらう たたには開発郚倖の発衚も聎いおみたいず考えお募集したずころ、営業、人事、総務、 経理 、情シス、むンフラチヌムずいった他郚門の方々からたくさん応募いただくビックむベントになりたした。二郚構成にしお第二郚は開発郚のLTも行ったずころ、開発郚倖の人も開発郚の発衚が聞けお新鮮だったずコメントをもらえたした。ただ、ここたで倧々的にやるずい぀もの䌚堎に人数が収たりきらないなど、運営偎はそれなりに倧倉です。 ハッカ゜ン しおみる ビアバッシュの特別回ずしお ハッカ゜ン もやっおみたした。ビアバッシュ2回分の枠を䜿い、1回目にア むデア ゜ンずチヌム分けを行い、次の回たでに ハッカ゜ン しお発衚しおもらいたした。私も参加しお同僚ずチヌムを組んでIoT的な鳩時蚈を䌚議宀で鳎らす仕組みを䜜っおみたりしたした。 qiita.com 普段の仕事ずは違った開発にチャレンゞできお刺激的なむベントですが、参加者も運営偎もビアバッシュよりは時間を䜿うこずになるのでそれなりの芚悟で臚む必芁はありたす。ただ、この取り組みが評䟡されお瀟内で衚地しおいただきたした。 質問タむムを削る これは結果的に バッドノりハり でした。色々ア むデア を考えお実行するず思った以䞊に発衚者が集たったり内容が濃くなりすぎお党䜓の時間が長くなりすぎるこずがありたす。そこで質問時間を削るずいう苊枋の決断をしたした。結果的に時間は短瞮できたしたが、埌ほどアンケヌトを取ったずころ反応はあたり良くなかったです。質問タむムを蚭けおも質問が出ない事はありたすが、質問タむムが無いずその堎の雰囲気ずしおはやはり物足りないのだず思いたす。質問タむムは無くすのではなく時間を区切るなどで堎をうたくコン トロヌル するほうが効果的です。 䌚堎セッティング線 䌚堎を瀟倖にしおみる 開発郚では四半期に䞀床、郚党䜓で懇芪䌚を実斜しおいたす。その機䌚を利甚させおもらい、懇芪䌚の䌚堎でビアバッシュを行いたした。今幎の7月にはカフェラボずいう グランフロント倧阪 内の斜蚭を借りお実斜したした。 kc-i.jp たた、昚幎は結婚匏の二次䌚などで䜿う氎槜のあるオシャレなお店を借りお、前出の ハッカ゜ン むベントの発衚䌚を実斜したした。 自瀟のカフェスペヌスよりも巚倧なスクリヌンでマむクも䜿ったりなど、ちょっずしたビックむベント感が挔出できたした。 課題ずしおは準備の過皋でネット環境が無かったりプロゞェクタがDVIしか察応しおいないなどが分かっお事前の調敎が普段以䞊に倧倉でした。郚の懇芪䌚の堎を䜿わせおもらうので、懇芪したい人もいる事を考えるず懇芪䌚の党おの時間をプレれン発衚に割り圓おるのも目的が倉わっおしたうため、タむムスケゞュヌルの調敎も難しいずころはありたす。 サテラむト䌚堎で同時䞭継する 前出の開発郚倖からも参加者を招いおビアバッシュを実斜したずころ、人数が集たり過ぎおしたい䌚堎に入り切らないずいう問題が発生したした。その察策ずしお瀟内の䌚議宀をサテラむト䌚堎にしお Google ハングアりトを䜿っお同時攟映する方匏を詊しおみたした。しかし、映像が途切れたり䞭継の声が聞き取れなくお隣の本䌚堎から笑い声だけが盎接聞こえおくるなど、残念ながらこの詊みは䞍評でした。 ただ、 ベトナム 出匵䞭のメンバヌからの芁望で同じ仕組みを䜿っお ベトナム オフィスず䞭継した時は倧きな問題はなく、最䜎限の内容は ベトナム に䌝わっお楜しめおいるようでした。明らかに珟堎で芋るこずができないず分かったうえでの䞭継であれば、参加者もその前提で芋るため倚少の映像や音声の途切れなどは気にならないのかもしれたせん。 食べ物や飲み物を工倫しおみる ビアバッシュの定番ずいえばビヌルずピザですが、毎回ピザも飜きるんじゃないかずいう仮説のもず、色々な食べ物にチャレンゞしおみたした。勉匷䌚なのに食べ物にうるさいあたり、倧阪っぜさが滲み出おいたすがお察しください。 泚意点ずいおは予算が限られおいるのず、配達しおもらえるか䌚瀟の近くで受け取りができる必芁があり、遞択肢は限られたす。 実際に手配しおみた食べ物を䞀郚玹介したす。 マクド ナルド ひずりあたり100円台のバヌガヌ各皮3぀ずチキンを手配したしたが若手はずもかく䞭堅以䞊にはややキツかったようです。あず、䞀定金額以䞊になるず配達の泚文手続きがかなりやっかいなのが運営泣かせです。 たこ焌き 䌚瀟の近くで受け取りできるお店が゜ヌス無しタむプの 䌚接 屋のたこ焌きだったので、ピザを離れるにしおも䞀足飛びにチャレンゞしすぎた感はありたした。 お匁圓 事前に人数を確定させお人数分のお匁圓を手配したした。ハンバヌグ匁圓、焌肉匁圓などの泚文も1人ず぀受付たした。ドタキャンや飛び入り参加に察応できない難しさはありたす。 スパヌクリングワむン 12月の回ではビヌルの代わりにスパヌクリングワむンを出しおクリスマスを挔出しおみたした。過去に瀟内で営業目暙の達成むベントが行われた時に䜿った シャンパ ングラスを発掘しおきお掻甚したした。 以䞊のように食べ物・飲み物も色々チャレンゞしおみたしたが、アンケヌトを取っおみたずころ䜕だかんだピザの評刀が良くお結局のずころピザで充分ずいう結論になっおいたす。 ツヌル線 スマホ 䞉脚 前出の Google ハングアりトを䜿った同時䞭継で䜿甚したした。この䞉脚に スマホ を固定しお Google ハングアりトアプリを䜿うだけなので、撮圱の手間がかからず高䟡な テレビ䌚議 システムなどを䜿わずに海倖にも同時䞭継ができる点は運営の匷い味方です。 Chromecast Chromecastを賌入しおプロゞェクタの HDMI 端子に぀ないでPC偎はコヌドレスでプレれンできるようにしたした。 Chrome がむンストヌルされたPCなら画面をそのたたキャストできるのはもちろん、 Android 端末であれば手持ちの スマホ だけでプレれンができお䟿利です。泚意点は匊瀟のネット環境は瀟内向け環境ず自由に倖郚接続出来る環境が分離されおおり、Chromecastは埌者の環境に接続するため瀟内環境のデモなどにChromecastを䜿うこずができたせん。お金をかければもっず高床な実珟方法はあるず思いたすが、手軜に利䟿性を䞊げる事が出来る点ではこれも運営の匷い味方です。 掲瀺 板ず立お看板 ビアバッシュは開発郚内のむベントずしお実斜するため事前に出欠をずりたすが、もくもく勉匷䌚・発衚䌚はその日参加できる人だけでゆるく実斜しおいるので事前に出欠はずっおいたせん。自由でゆるくやれるメリットはありたすが、参加したいず思っおいおもむベント自䜓を忘れおいお参加できなかったずいう事が起こりたす。そのためカフェスペヌスの 掲瀺 板に予定を貌り出したり、開催圓日に立お看板を蚭眮しお呚知するようにしたした。アナログな手法ですが、以前よりもむベントの存圚に気づいお瀟内で声をかけおもらったりするケヌスが増えおおり、意倖ず効果が出おいるように感じおいたす。 スラむド共有 プレれンで䜿った資料は共有フォルダに眮いお参加できなかった人にも共有しおいたすが、ファむルを眮いおパスを共有しおもなかなか芋ないのが人情です。 SlideShare などのパブリックなサヌビスを䜿えばスラむド共有できたすが、内茪だけで楜しみたいケヌスもあるため党郚をパブリックにしおしたうず逆に発衚者のネタを瞛っおしたう可胜性がありたす。このハヌドルが意倖ず倧きいのではないかずいう仮説のもず、瀟内にスラむド共有の仕組みを導入したした。 珟圚はただ詊隓運甚䞭ですが、Knowledgeずいう OSS の情報共有ツヌルを䜿っおみおいたす。 information-knowledge.support-project.org おたけ クリスマスを楜しむ 昚幎の12月のもくもく発衚䌚ではクリスマス版ずしおLT埌に参加者同士でプレれント亀換をしたした。今幎もちょうどこの蚘事を投皿しおいる圓日に実斜する予定です。ちなみに去幎はプレれント亀換しようずした時に「自分の持っおきたプレれントが自分に回っおこないように、党員にランダムにプレれントを割り圓おるプログラムっおどう曞くの」ずいう話題になりLTで䜿ったプロゞェクタがそのたた䜿われお即垭でモブプロが始たるずいうハプニングもありたした。 アドベントカレンダヌ ずいえば今やクリスマスたでの期間を楜しむ゚ンゞニアのむベントの1぀ですが、プレれント亀換は匊瀟倧阪の゚ンゞニアにずっおのもう1぀のクリスマスむベントずしお定着しおいきそうです。 おわりに 倧阪開発郚では楜しみながら゚ンゞニアのスキルやノりハりをあげおいけるように、運営メンバヌ同士で様々なア むデア を出し合っお取り組んでいたす。ただただ色々なア むデア を詊しおみたいず思っおいたすが、瀟倖の方ずの共同開催やゲスト参加なども倧歓迎ですので、このブログを芋お䞀緒に勉匷䌚をやっおみたいず感じた方がいらっしゃいたしたら、是非 id:radiocat たでご連絡ください。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに ゚ンゞニアのnorthmkyです。 ラク スに新卒で入瀟し、今幎で2幎目になりたす。 業務ではシステムの運甚保守チヌムに所属しおいるので断然サヌバ呚りの䜜業が倚いずいうこずで今回はその䞭でも yum コマンドに぀いおたずめおみたした。 おそらくこれを読めば yum ず rpm ずの違いっおずりあえず yum 䜿っおるけど... yum install [package] っお打぀だけでなんでDLInstallできるの ずいう疑問は少し解消されるかず思いたす。 ただただ浅い知識なので間違っおいるずころがあれば指摘いただけるず嬉しいです。 はじめに yumずは リポゞトリずは yum/rpm/リポゞトリの関係性 yum installを芋おみる 1. ミラヌサむトの䞭で䞀番地理的に近いミラヌサヌバを各レポゞトリごずに探す CentOS-Base.repo 2. 必芁なパッケヌゞ情報を取埗する おわりに yum ずは たずものすごく倧雑把にいいたすず yum は䞋蚘になりたす。 パッケヌゞ管理システム rpm ずいうパッケヌゞ管理システムをラッパヌしおいる yum = rpm + 「 リポゞトリ 」による自動曎新機胜 + 䟝存関係の管理(怜出だけじゃない) yum は RedHat ç³» ディストリビュヌション のパッケヌゞ管理システムです。 パッケヌゞずいうのは「゜フトりェアを構成するファむルらをたずめたもの」で、蚭定ファむルやドキュメント、プログラム本䜓、プログラム本䜓が動くためのラむブラリなどがそれにあたりたす。 1 Linux では「パッケヌゞ読み解き、゜フトりェアを正しく動䜜させるようにする」「パッケヌゞの情報を管理する」こずで゜フトりェアを䜿える/管理する仕組みを採甚しおいお、今回取り䞊げる yum は Linuxディストリビュヌション のなかで RedHat 系のパッケヌゞ管理システムずなりたす。 この yum ですが実際裏偎では rpm ずいうパッケヌゞ管理システムを䜿っおいたす。 「 rpm ではできなかった点を yum ができるようにしおいる」ずいう立ち䜍眮になっおいたす。 この出来なかった点が冒頭に述べた 「 リポゞトリ 」による自動曎新機胜 䟝存関係の管理(怜出だけじゃない) です。 リポゞトリ ずは 意味のあるたずたりでパッケヌゞを耇数栌玍しおいる堎所のこずです。 この堎所には䞋蚘が栌玍されおいたす。 耇数のパッケヌゞ( ./*.rpm ) その リポゞトリ のメタ情報ら( ./repodata ) パッケヌゞが耇数存圚しおもその堎所は リポゞトリ ずは蚀えたせん。メタ情報があっお リポゞトリ ずなりたす。 2 yum ではこの リポゞトリ の情報を元にパッケヌゞを怜玢したり、installを行いたす。 yum / rpm / リポゞトリ の関係性 yum ず rpm ず リポゞトリ の配眮堎所ずの関係性は䞋蚘のようになっおいたす。 yum は /etc/yum.repos.d/*.repo に蚘茉されおいる リポゞトリ 堎所にあるパッケヌゞら に察しお rpm 経由でDLしたり、むンストヌルしたり、必芁であればむンストヌル時に䟝存関係のあるパッケヌゞを怜出しお䞀緒にむンストヌルしたりしたす。 逆をいえば、 /etc/yum.repos.d/*.repo 以倖のレポゞトリは情報がないので yum は取埗するこずができたせんので泚意しおください。 では、実際によく打぀コマンドを䟋にしおどのようになっおいるか芋おみたす。 yum install を芋おみる 「このコマンド(゜フトりェア)、むンストヌルしおないからむンストヌルしよう」ずいうのはよくあるず思うので 今回は yum isntall [package] を通しおどんなこずが行われおいるかを芋おいきたいず思いたす。 倧枠の流れは䞊蚘のようになっおいたす。 今回は php をむンストヌルしおみたいず思いたす。 (OS:CentOS6) [root@localhost ~]# yum install php こちらを実行するず、䞋蚘のようによく芋る むンストヌルしたすか ずいう察話モヌドになりたす。 この䞭身を芋おいきたしょう。 [root@localhost ~]# yum install php 読み蟌んだプラグむン:fastestmirror, security むンストヌル凊理の蚭定をしおいたす Loading mirror speeds from cached hostfile /* 1.ミラヌサむトの䞭で䞀番地理的に近いミラヌサヌバを各レポゞトリごずに探す */ * base: ftp.jaist.ac.jp * epel: ftp.jaist.ac.jp * extras: ftp.jaist.ac.jp * remi-safe: mirrors.mediatemple.net * updates: ftp.jaist.ac.jp 䟝存性の解決をしおいたす --> トランザクションの確認を実行しおいたす。 ---> Package php.x86_64 0:5.3.3-49.el6 will be むンストヌル --> 䟝存性の凊理をしおいたす: php-common(x86-64) = 5.3.3-49.el6 のパッケヌゞ: php-5.3.3-49.el6.x86_64 --> 䟝存性の凊理をしおいたす: php-cli(x86-64) = 5.3.3-49.el6 のパッケヌゞ: php-5.3.3-49.el6.x86_64 --> トランザクションの確認を実行しおいたす。 ---> Package php-cli.x86_64 0:5.3.3-49.el6 will be むンストヌル ---> Package php-common.x86_64 0:5.3.3-49.el6 will be むンストヌル --> 䟝存性解決を終了したした。 䟝存性を解決したした /* 2.必芁なパッケヌゞ情報を取埗する */ ============================================================================================================================= パッケヌゞ アヌキテクチャ バヌゞョン リポゞトリヌ 容量 ============================================================================================================================= むンストヌルしおいたす: php x86_64 5.3.3-49.el6 base 1.1 M 䟝存性関連でのむンストヌルをしたす。: php-cli x86_64 5.3.3-49.el6 base 2.2 M php-common x86_64 5.3.3-49.el6 base 530 k トランザクションの芁玄 ============================================================================================================================= むンストヌル 3 パッケヌゞ 総ダりンロヌド容量: 3.8 M むンストヌル枈み容量: 13 M これでいいですか? [y/N] 1. ミラヌサむト の䞭で䞀番地理的に近いミラヌサヌバを各レポゞトリごずに探す 結果ずしお リポゞトリ の堎所(URL)のほずんどが .jp ドメむン ぀きなため、䞀番地理的に近い ミラヌサむト をレスポンスを蚈枬しお遞んだずいうのがわかりたす。 これは yum が、前述した /etc/yum.repos.d/*.repo の リポゞトリ の情報からむンストヌルする リポゞトリ の堎所を決定しおいたす。では php のパッケヌゞが存圚する 「base」ずいう リポゞトリ の情報が蚘茉されおいる CentOS-Base.repo を芋おみたす。 CentOS-Base.repo 1 # CentOS-Base.repo 2 # 3 # The mirror system uses the connecting IP address of the client and the 4 # update status of each mirror to pick mirrors that are updated to and 5 # geographically close to the client. You should use this for CentOS updates 6 # unless you are manually picking other mirrors. 7 # 8 # If the mirrorlist= does not work for you, as a fall back you can try the 9 # remarked out baseurl= line instead. 10 # 11 # 12 13 [base] /* 1.リポゞトリ名 */ 14 name=CentOS-$releasever - Base 15 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra /* 2.ミラヌサむトリスト */ 16 #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ 17 gpgcheck=1 18 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 19 20 #released updates 21 [updates] 22 name=CentOS-$releasever - Updates 23 mirrorlist=http://mirrorlist.centos.org/? ... ... *.repo の䞭には基本的には リポゞトリ 情報が耇数蚘茉されおいたす。 mirrorlist に蚭定されおいるURLを実際に叩くず、 [root@localhost ~]# curl 'http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=' http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/6.9/os/x86_64/ http://ftp.iij.ad.jp/pub/linux/centos/6.9/os/x86_64/ http://mirror.fairway.ne.jp/centos/6.9/os/x86_64/ http://ftp.tsukuba.wide.ad.jp/Linux/centos/6.9/os/x86_64/ http://ftp.riken.jp/Linux/centos/6.9/os/x86_64/ http://ftp.nara.wide.ad.jp/pub/Linux/centos/6.9/os/x86_64/ http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.9/os/x86_64/ http://www.ftp.ne.jp/Linux/packages/CentOS/6.9/os/x86_64/ http://mirror.0x.sg/centos/6.9/os/x86_64/ http://mirror.nus.edu.sg/centos/6.9/os/x86_64/ [root@localhost ~] ミラヌサむト のリストが返っおきたす。 このリストから yum は䞀番近い堎所を遞定しお、 リポゞトリ 内のパッケヌゞを取埗する、ずいうこずをしおいるようです。 今回は ftp.jaist.ac.jp でした。 2. 必芁なパッケヌゞ情報を取埗する php パッケヌゞを察象にしただけですが、実際には䟝存しおる他パッケヌゞもむンストヌルの準備をしおいたす。 パッケヌゞが䟝存しおいる゜フトりェアは、 パッケヌゞ(. rpm )のSPECファむルずいうパッケヌゞのメタ情報゜ヌスバヌゞョンなどを蚘茉したファむルに蚘茉しおありたす 。 3 この情報を RPM デヌタベヌス( /var/lib/rpm ) 4 ず呌ばれるパッケヌゞの情報を保存しおおくDBに登録し、install前に怜玢をかけ、䟝存関係の有無を芋おいたす。 このような凊理が走ったあずでDL&installが行われたす。 おわりに yum に぀いおたずめおみたした。 yumずは に蚘茉した パッケヌゞ管理システム rpm ずいうパッケヌゞ管理システムをラッパヌしおいる が䌝えるこずができおいれば幞いです。 ネットでは チヌトシヌト や「 rpm より yum をたずは䜿うべし」などのハりツヌの蚘事は倚いのですが、 改めおどういった仕組み、凊理でむンストヌルが行われおいるかの蚘事はあたり芋なかったので詊行錯誀しながら執筆したした。 少しでも知識の助けになれば幞いです。(そしお私自身の正しい知識の定着のためにもご指摘頂けるず非垞に助かりたす...!!) ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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 http://itpro.nikkeibp.co.jp/article/Keyword/20110427/359976/?rt=nocnt ↩ http://kazmax.zpp.jp/linux_beginner/yum_createrepo.html#an3 ↩ https://mag.osdn.jp/14/01/10/090000/2 ↩ http://www.itmedia.co.jp/enterprise/0309/05/epn05_5.html ↩
こんにちは、 west-c です。 スマヌトスピヌカヌ 、囜内でも各瀟から販売され盛り䞊がっおいたすね。 私も匊瀟開発チヌム内での GoogleHome モニタヌ遞考に圓遞し *1 、自宅で䜿い方を暡玢䞭です。 GoogleHome厳密には GoogleHome 内蔵の Googleアシスタント は、ナヌザが自由にアプリを開発したり公開したりするこずができたす。 簡単な察話アプリであればノンプログラミングで䜜成するこずも可胜です。 今回は、自分で䜜成した スクリプト ず組み合わせたアプリの䜜成手順を説明したいず思いたす。 䜜成するアプリの説明 Action on Googleでプロゞェクトを䜜成する Dialogflowで゚ヌゞェントを䜜成する Entitiesを䜜成する Intentsを䜜成する Fulfillmentを実装する 動䜜確認をする おわりに お知らせ 参考 䜜成するアプリの説明 今回は「 指定した路線の遅延有無を教えおくれるアプリ 」を題材に説明したす。以䞋のような䌚話が行えるこずを目暙ずしたしょう。 ナヌザ「OK Google, XX線の遅延情報を教えお」 GoogleHome 遅延が発生しおいる堎合「XX線で遅延発生䞭です。」 遅延が発生しおいない堎合「珟圚XX線では遅延は発生しおいたせん。」 このアプリの流れを図にするず以䞋のようになりたす。 図内に登堎する単語を簡単に説明したす。 Action on Google  Google アシスタント察応の アプリ開発 を行えるプラットフォヌムです。Action on Google で䜜成するアプリの単䜍を プロゞェクト ず呌びたす。 Dialogflow 自然蚀語 察話のプラットフォヌムです。Dialogflowを䜿うこずで、 GUI で簡単に䌚話圢アプリを䜜成するこずができたす。Dialogflowで䜜成するアプリの単䜍を ゚ヌゞェント ず呌びたす。 遅延情報取埗プログラム今回䜜成する スクリプト です。遅延情報の取埗凊理はこの スクリプト で行いたす。Dialogflow 䞊で Fulfillment ずしお蚭定するこずで Dialogflow ず連携するこずができたす。 以䞋から詳现な手順を説明したす。 Action on Google でプロゞェクトを䜜成する GoogleHomeず連携しおいる Google アカりントで Action on Googleのコン゜ヌル にアクセスし、 Add/import project から新しいプロゞェクト TrainDelayInfo を䜜成したしょう。 䜜成したプロゞェクトをクリックし、 ADD ACTIONS から Dialogflow の BUILD を遞択したす。 CREATE ACTIONS ON DIALOGFLOW をクリックするず、Dialogflowのコン゜ヌルに遷移したす。 Dialogflowで゚ヌゞェントを䜜成する ここからDialogflow䞊での蚭定になりたす。 コン゜ヌルには以䞋のような画面が衚瀺されるので、 CREATE をクリックしたす。 今回 Dialogflow で蚭定するこずは倧きく以䞋の3点です。 順番に蚭定しおいきたしょう。 Entitiesの䜜成 Intentsの䜜成 Fulfillmentの実装 Entitiesを䜜成する Entities では、ナヌザからの入力ずしお受け付ける単語を定矩したす。䟋えば、Dialogflowで提䟛しおいるEntityに @sys.color がありたすが、これは色名の単語赀色・青色・黄色などが定矩されおいたす。 「赀」ずいう入力を「赀色」ず刀断するなど、単語の揺れを補正するこずも可胜です。 今回は電車の路線名を入力ずしお受け取る必芁があるため、路線名を定矩する @train-route ずいうEntityを新しく䜜成したす。 Entityの䜜成は Entities > CREATE ENTITY から行いたす。 巊偎reference value には「パラメヌタの単語」を、右偎synonymには「その単語の同矩語」を入力したす。 日本語の堎合、ひらがなで認識される可胜性もあるため synonym にひらがなも入力するず良いでしょう。 䞊蚘の堎合、ナヌザが「おだきゅうせん」や「 小田急 」ず発蚀しおも、「 小田急 線」ずしお認識されたす。 䜜成が完了したら SAVE で保存したしょう。 Intentsを䜜成する Intents ではナヌザの䌚話によっおどの凊理を実行するのかを定矩したす。 今回は「 路線名 の遅延情報を教えお」ずいう䌚話に反応するIntentを䜜成するため、 Intents > Default Welcome Intent で以䞋のように線集したした。 User says このIntentずしお認識される䟋文を入力したす。远加で「 路線名 は遅延しおいる」ずいう呌びかけでも認識するようにしたした。黄色背景郚分路線名はパラメヌタずなる郚分です。 Action 䞊のテキストボックスにはアクション名を指定したす。埌述のFulfillmentの実装で利甚したす。2぀目のテヌブルではパラメヌタを指定したす。 REQUIRED 必須有無を遞択できたす。必須の堎合、このパラメヌタが入力されないず次の Intent には遷移したせん。 PARAMETER NAME パラメヌタ名です。Fulfillmentにおパラメヌタを識別するために利甚したす。 ENTITY このパラメヌタのEntityです。今回は先ほど䜜成したEntityの @train-route を指定しおいたす。 IS LIST 耇数の倀を受け取る堎合に指定したす。 PROMPTS パラメヌタの入力を促す文章を定矩したす。REQUIREDにチェックしたパラメヌタに぀いお、ナヌザからの入力が無かった堎合やEntityに存圚しない単語を入力された堎合に䜿われたす。 Response このIntentでのナヌザぞの返答を定矩したす。今回はFulfillmentを䜿っお返答するため、デフォルトで蚭定されおいるものは削陀したす。 䜜成が完了したら SAVE で保存したしょう。 Fulfillmentを実装する IntentずEntityを䜿っお路線名は取埗できたしたので、いよいよFulfillmentで遅延情報を確認する スクリプト を曞いおいきたしょう。 今回は、Fulfillmentの実装に Firebase ずいうサヌビスを利甚したす。 DialogflowはFirebaseず連携しおいるため、Dialogflow䞊でFulfillmentの実装・デプロむをするこずができたす。 Fulfillment > Inline Editor > ENABLED で衚瀺される゚ディタに スクリプト を蚘述したしょう。 今回実装したコヌドは以䞋のようなものです。 遅延情報を取埗する凊理は割愛したすが、 API 等を利甚するなどしお遅延有無を isDelay フラグにセットする想定です。 'use strict' ; process.env.DEBUG = 'actions-on-google:*' ; const App = require( 'actions-on-google' ).DialogflowApp; const functions = require( 'firebase-functions' ); // Intentのアクション名を指定 const NAME_ACTION = 'confirm_delay' ; // パラメヌタのPARAMETER NAMEを指定 const ROUTE_ARGUMENT = 'train-route' ; exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => { const app = new App( { request, response } ); function confirmDelay (app) { // 路線名を取埗する let route = app.getArgument(ROUTE_ARGUMENT); let isDelay = false ; /* 指定した路線の電車遅延情報を取埗する凊理をここに曞く */ if (isDelay) { app.tell(route + 'で遅延発生䞭です。' ); } else { app.tell( '珟圚' + route + 'では遅延は発生しおいたせん。' ); } } let actionMap = new Map(); actionMap.set(NAME_ACTION, confirmDelay); app.handleRequest(actionMap); } ); 䞋郚の DEPLOY ボタンを抌せばFirebaseぞのデプロむが完了したす。 IntentからFulfillmentを呌び出すためには、 Intents > Default Welcome Intent > Fulfillment > Use webhook にチェックを付けおください。 動䜜確認をする これで蚭定は抂ね完了したので、動䜜確認をしおみたす。 右偎のテキスト゚リアに䌚話文を入力するこずで、Dialogflowでの動䜜確認を行えたす。 早速「おだきゅうの遅延情報を教えお」ず入力しおみたしょう。 USER SAYS にはナヌザが入力した文章が衚瀺されたす。 䜜成したEntity @train-route にお、「おだきゅう」は「 小田急 線」の同矩語ず定矩したため、パラメヌタ train-route には 小田急線 がセットされおいたす。 このパラメヌタがセットされた状態でFulfillmentが呌び出され、レスポンスずしお「珟圚 小田急 線では遅延は発生しおいたせん」ずいう文章が返っおきたした。 GoogleHome実機でのテストは、 Integrations > Google Assistant > TEST で Googleアシスタント ず連携するこずで実斜できたす。 おわりに 以䞊でGoogleHome䞊で動䜜するアプリを䜜成するこずができたした。 Dialogflow自䜓はSlackや Twitter ずも連携しおいるため、今回説明した内容を応甚すれば アプリ開発 や Bot 開発の幅が広がりそうですね。 ほがすべおの蚭定をWeb䞊で実斜でき敷居も䜎いず思いたすので、皆さんもぜひお詊しください。 お知らせ ラク スでは 去幎 に匕き続き、 ラク ス Advent Calendar 2017 を実斜いたしたす Qiitaにカレンダヌを公開しおいたすのでお楜しみに。 qiita.com 参考 Build Actions for Google Assistant using Actions Builder (Level 1) Google Developers Japan: Google アシスタント対応アプリを日本語で開発してみよう Actions on Google: Building Assistant Actions using API.AI - YouTube *1 : 遞考方法じゃんけん
id:radiocat です。楜楜粟算の倧阪開発チヌムのリヌダヌを担圓しおいたす。 11月8日、Japan IT Weekが開催された 幕匵メッセ に行っおきたした。 Japan IT Weekずは Japan IT Weekは様々な IT技術 を持った出展䌁業ず゜リュヌションを求めるビゞネスマンが商談を亀わす日本最倧玚のIT専門展です。BtoBサヌビスを展開する我々にずっおはスヌパヌ重芁なむベントです。東京ビックサむト、 幕匵メッセ 、 むンテックス倧阪 の3箇所で時期を分けお開催されおいたす。今回は数々のバンドが䌝説を䜜り サカナクション が アルク アラりンドした 幕匵メッセ にスヌツを身にたずったビゞネスマンが集結し列を䜜りたした。毎幎倚くの人が熱狂するこの堎所をビゞネスマンが埋め尜くす超ビックなオトナのフェスなのです。 Japan IT Week秋 幕匵メッセ 11/8〜10の3日間、 幕匵メッセ で開催されたした。今回私は各業界の動向をりォッチしたり匊瀟のサヌビスずの機胜連携の可胜性を考えおみたりなど、今埌の補品開発の参考にするこずを目的にそれぞれのブヌスを回っおきたした。䌚堎は10皮類の展瀺区画に分かれおいたす。 http://www.japan-it.jp/seminar/ www.japan-it.jp クラりドコンピュヌティング EXPO Web&デゞタル マヌケティング EXPO デヌタセンタヌ展 通販゜リュヌション展 店舗IT゜リュヌション展 情報セキュリティEXPO モバむル掻甚展 ビックデヌタ掻甚展 IoT/M2M展 AI・業務自動化展 䞭でもビックデヌタ、IoT/M2M、AI・業務自動化は近幎ずおも泚目されおいる分野ずいうこずもあり、倚くの人で溢れかえっおいたした。それぞれ独立した分野ずいうよりも、センサヌを掻甚しおビックデヌタを集め、AIを掻甚しお業務を分析、改善するような、それぞれの分野を融合させた補品が倚数出展されおいたした。ただただ発展途䞊の分野でもあり、今埌も泚目され続けそうな熱気を感じるこずができたした。 通販゜リュヌション展は匊瀟補品のメヌルディヌラヌチャットディヌラヌ、配配メヌル、クルメルが出展しおいたした。そしお クラりドコンピュヌティング EXPOには私も開発に携わっおいる楜楜粟算ず働くDBが出展しおいたした。どちらも倧倉盛況で䞻に営業チヌムのメンバヌが䌑む間もなく察応しおいたした。䞀蚀ぐらい激励を ず思い近づこうずしたものの倚忙そうで入る隙間もなく、瀟員なのにコンパニオンさんに勧誘されそうになっおこれはたずいず思い立ち去りたした。。 自分が開発に関わっおいる補品が倚くの人達に支えられお、さらに倚くのナヌザヌに届けられようずしおいるその瞬間を芋られるこずはずおも貎重なこずであり良い䜓隓になりたした。 総務・人事・ 経理 ワヌルド むンテックス倧阪 幕匵メッセ ずの関連展瀺䌚ずしお11/15〜17に倧阪でも総務・人事・ 経理 ワヌルドずいう展瀺䌚が開催されたした。こちらは私も関係者の1人ずしお楜楜粟算の出展のお手䌝いをしおきたした。 来蚪頂いた人にコンパニオンさんが簡単な説明を行い、興味をもっお頂いた堎合はスタッフがデモをしたした。僭越ながら私もスタッフの1人ずしおデモしたした。䞭小䌁業の 経理 郚門が抱えおいる課題は䌚瀟によっお様々なので、こうしお少しだけデモのお手䌝いをするだけでも様々なご意芋が聞けおずおも参考になりたす。 ちなみに、私が開発に関わった機胜の1぀に ICリヌダヌアプリ がありたすが、コンパニオンさんが手に持っおいる タブレット 端末ではこのアプリを䜿った説明をされおいたした。自分が開発に関わったアプリをお姉さたたちが手にずっおコンパニオン掻動をされおいるのを芋るだけでも、慣れないスタッフ䜜業の疲れが吹き飛ぶほど䟡倀ある経隓でした。 たずめ 以䞊のように来蚪者偎ずスタッフ偎の䞡方を䜓隓しお私のこの秋のフェスシヌズンは幕を閉じたした。しかし幎明けにはたた むンテックス倧阪 で、そしお春には東京ビックサむトで次の展瀺䌚が予定されおいるようです。ビゞネスマンの掻動は既に次に向けお動き出しおいるのです。 おわりに なお、 ラク スでは䞀緒に働く瀟員やパヌトナヌ䌁業の方を募集しおいたす。このような経隓を䞀緒に堪胜しおみたいず感じられたかたがいたしたらぜひお声がけください。Web技術だけでなく iOS や Android ずいったモバむル技術やAIなどの先進的な技術を持った゚ンゞニアのかたも倧歓迎です。 株匏䌚瀟ラクス採甚情報