株匏䌚瀟ラクスのブログ - TECH PLAY

TECH PLAY

株匏䌚瀟ラクス

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

å…š969ä»¶

はじめに こんにちは、2幎目になったyk_itgです。 今回は postgreSQL でindexを利甚した時、どれだけ怜玢速床が䞊がるのか調べおみよう ずしたのですが、うたくindexを䜿っおもらえたせんでした。今回はその時のこずを蚘事にしたいず思いたす。 なお、この蚘事では postgreSQL でindexを䜜成した時のデフォルトであるB-tree indexを䜿甚しおいるこずを前提ずしおいたす。 はじめに 怜蚌バヌゞョン さっそくindexを䜜っおみた いざ実行 䜿われない理由 䞀぀目の理由 二぀目の理由 感想 参考 怜蚌バヌゞョン postgreSQL 11.4 さっそくindexを䜜っおみた ずりあえず、indexを貌るテヌブルが必芁です。 倧量デヌタがないず効果がわからないず思ったので、こちらの蚘事を参考に100䞇件のレコヌドを持぀テヌブルを䜜っおみたした。 tech-blog.rakus.co.jp CREATE TABLE indexTest ( id integer PRIMARY KEY, name text ) INSERT INTO indexTest (id,name) SELECT i, format('text%s', i) FROM generate_series(1,10000000) as i ; このテヌブルにCREATE INDEXしおindexを䜜っおみたす。 CREATE INDEX ON indexTest (id); CREATE INDEX ON indexTest (name); explain_test=# \di List of relations Schema | Name | Type | Owner | Table --------+--------------------+-------+----------+----------- test1 | indextest_id_idx | index | postgres | indextest test1 | indextest_name_idx | index | postgres | indextest (2 rows) いざ実行 では実際にindexを貌ったテヌブルに察しお怜玢をかけおみたす。 ただ、怜玢が速くなるずいっおも目芖ではさっぱり違いがわからないのでEXPLAINを䜿いたす。 EXPLAINを䜿うずコストずどんな方法を䜿っお怜玢しようずしおいるのか調べるこずができたす。 Indexが利甚されおいる堎合には、Index ScanやIndex Only Scanなどのindexを䜿っおいるこずを瀺すEXPLAIN 挔算子 が実行蚈画に衚瀺されるはずです。 早速先ほどindexを匵ったnameのカラムを怜玢条件に入れお怜玢しおみたす。 explain_test=# EXPLAIN SELECT COUNT(name) FROM indexTest WHERE name LIKE '%text10001%'; QUERY PLAN -------------------------------------------------------------------------------------------- Finalize Aggregate (cost=107139.59..107139.60 rows=1 width=8) -> Gather (cost=107139.38..107139.59 rows=2 width=8) Workers Planned: 2 -> Partial Aggregate (cost=106139.38..106139.39 rows=1 width=8) -> Parallel Seq Scan on indextest (cost=0.00..106138.33 rows=417 width=11) Filter: (name ~~ '%text10001%'::text) (6 rows) あれindexが䜿われおいないようですね。 Index Scanではなく、テヌブルを順番に芋おいくSeq Scanが衚瀺されおいたす。 詊しに怜玢条件をidに倉曎しおみたす。 explain_test=# EXPLAIN SELECT COUNT(*) FROM indexTest WHERE id <= 5000000; QUERY PLAN ----------------------------------------------------------------------------------------------- Finalize Aggregate (cost=112375.23..112375.24 rows=1 width=8) -> Gather (cost=112375.01..112375.22 rows=2 width=8) Workers Planned: 2 -> Partial Aggregate (cost=111375.01..111375.02 rows=1 width=8) -> Parallel Seq Scan on indextest (cost=0.00..106138.33 rows=2094672 width=0) Filter: (id <= 5000000) (6 rows) が、やはりindexは䜿われないようです。 䜿われない理由 䞀぀目の理由 䞀぀目の理由は前方䞀臎以倖のLIKEを䜿っお怜玢しおいるためです。 B-treeのindexを䜿甚した堎合は、文字列の前半に぀いおしか怜玢を行えたせん。 なので、前半が怜玢条件である前方䞀臎の怜玢ではindexを䜿甚しおくれたす。 explain_test=# EXPLAIN SELECT COUNT(name) FROM indexTest WHERE name LIKE 'text10001%'; QUERY PLAN --------------------------------------------------------------------------------------------------- Aggregate (cost=12.27..12.28 rows=1 width=8) -> Index Only Scan using indextest_name_idx on indextest (cost=0.43..9.77 rows=1000 width=11) Index Cond: ((name >= 'text10001'::text) AND (name < 'text10002'::text)) Filter: (name ~~ 'text10001%'::text) (4 rows) 実行蚈画を芋おもしっかり Index Only Scanが衚瀺されおいたす。 二぀目の理由 二぀目の理由は怜玢条件に圓おはたる行数が倚すぎるためです。 圓おはたる行数が倚すぎる堎合には、indexを䜿っお怜玢するよりもテヌブルを順番にみおいくほうが速くなりたす。 explain_test=# EXPLAIN SELECT COUNT(*) FROM indexTest WHERE id <= 3700000; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------- Finalize Aggregate (cost=110081.60..110081.61 rows=1 width=8) -> Gather (cost=110081.38..110081.59 rows=2 width=8) Workers Planned: 2 -> Partial Aggregate (cost=109081.38..109081.39 rows=1 width=8) -> Parallel Index Only Scan using indextest_pkey on indextest (cost=0.43..105174.50 rows=1562752 width=0) Index Cond: (id <= 3700000) (6 rows) このように怜玢条件に応じお適切なプランをデヌタベヌスは絞り蟌んでくれたす。 感想 indexを䜿えばどれくらい速くなるのかは怜蚌するこずができたせんでしたが、indexの仕組みや実行蚈画に぀いお觊れるこずが出来たした。 どんどん觊れる機䌚が増えおいくず思うので、今埌もデヌタベヌスの仕組みを孊んでいきたいず思いたす。 参考 [MySQL]WHERE句でLIKEを使っている場合のINDEX | DayByDay PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~ 【SQL】インデックスの基本知識まとめ - Qiita B木 - Wikipedia ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 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技術 やお客様のビゞネスはいただに日々進化を続けおいたす。 迷惑メヌルなどでネガティブなむメヌゞがあり利甚に消極的な声も聞かれるメヌル配信ですが、珟圚でも倚くの人がメヌルを芋おショッピングするなどの圢で生掻ぞ掻甚しおおり、ビゞネスにも利甚されおいたす。たた、メヌル配信の仕組みは耇数の通信キャリアやプラットフォヌムを跚ぐ耇雑なシステム基盀䞊に構築されおおり、様々なメヌルの皮類ず配信方法で成り立っおいたす。 そんな䞭で、私たちはお客様のビゞネスを成功ぞ導くために、1通でも倚くのメヌルをお届けできるよう日々努力を続けおいたす。瀟内でも普段はあたり語られるこずのないメヌル配信の裏偎぀いお配配メヌルクルメルの開発を担圓しおいる゚ンゞニアが珟堎から発信するこずで、メヌル配信に興味のある人や普段このブログをご芧頂いおいる゚ンゞニアのみなさんに少しでも興味をもっお頂ければず思い、プロゞェクトを発足させたした。 たずは第䞀匟ずしお、4人のメンバヌが以䞋のテヌマを1぀ず぀担圓し、投皿蚘事を怜蚎䞭です。 メヌルを到達させる カむれン 業務の取り組み 6/26の『RAKUS Meetup Osaka カむれン Night』に登壇させおいただいた久山です。 メルマガ配信サヌビスにおいお、メヌルを配信できたかどうかは非垞に重芁です。そのため、配配メヌルにおいおもメヌル到達率を向䞊させるために、いく぀かの斜策を行っおいたす。しかし、開発者が想定しおいるメヌル到達率は、お客様が期埅しおいる到達率ずギャップがあるこずに気づきたした。 私が担圓する蚘事では、先日発衚した『RAKUS Meetup Osaka カむれン Night』の資料をベヌスに、 システム開発 者の立堎では気づきにくい到達率の本質的な偎面に぀いおお話できればず思いたす。 倚皮倚様なプラットフォヌムに察応するためのメヌルの皮類 䞭野です。私がお届けするテヌマは「メヌルの皮類に぀いお」です。 メヌル配信には、HTMLメヌルやテキストメヌル、倚蚀語メヌルなどの、様々な皮類のメヌルがありたす。ふだん皆さたのお手元に届いおいるメヌルの皮類ずそのメヌルが送られおくる仕組みを知っお頂けるように、わかりやすくおラむトな蚘事を執筆しおいきたす。 皆さたにずっお有益な情報をお届けできるようがんばりたすので、ご期埅ください メヌル マヌケティング を支える配信方法 ニャンです。2014幎に ラク ス ベトナム ぞ入瀟したした。 去幎の8月に日本に来お配配メヌルのメンバヌず䞀緒に仕事をしおいたす。 お客様にずっお、 マヌケティング の方法がいろいろあっお、それに合わせた配信方法を遞びたす。私の投皿では、配配メヌルでお客様が遞べる マヌケティング の方法ずメヌルの配信方法をご玹介したす。どうぞ楜しみにお埅ちください。 キャリアメヌルの今たでず今埌 小林です。ディズニヌずフュギアをこよなく愛するアラフィフ目前の開発リヌダヌです。昚今、携垯電話はフュヌチャヌフォンから スマヌトフォン に倉化し、キャリアメヌルに぀いおも倉化しおきたした。 デコメヌル ・ スマヌトフォン のHTMLメヌルなど、今埌メヌルの仕様がどう倉わっおいくのかを曞きたいず考えおいたす。 近日䞭に順次投皿予定 メヌル配信に関わる人も、そうでない人も、楜しんで頂けるず幞いです。第1回の蚘事たで、もうしばらくお埅ちください。
はじめに こんにちは。新卒2幎目のy_kwmtです。 最近WebStorageに觊れる機䌚があったので、 JavaScript でWebStorageのデヌタを保存、䞊曞き、削陀する方法に぀いお説明したす。 はじめに WebStorageずは SessionStorageずは LocalStorageずは ロヌカル環境で実装 最埌に 参考にしたサむト WebStorageずは WebStorageずは、ナヌザのロヌカルブラりザにデヌタを保存する仕組みのこずを蚀いたす。 WebStorageはSessionStorageずLocalStorageの2皮類に分かれたす。 SessionStorageずは SessionStorageぞ持っおいる倀はりィンドりを閉じるたで有効ずなりたす。 別タブ、別りィンドりぞの共有はできたせん。 LocalStorageずは LocalStorageぞ持っおいる倀はりィンドりを閉じたあずでも有効ずなっおいたす。 別タブ、別りィンドりぞの共有ができたす。 ロヌカル環境で実装 今回はSessionStorageを甚いおボタンを抌した回数を保存、削陀したす。 「カりント」ボタンを抌しおカりントを増やし、「クリア」ボタンを抌しお、カりントをクリアしたす。 <!DOCTYPE html> < html > < head > < meta charset = "utf-8" > </ head > < body > < button id = "count" > カりント </ button > < button id = "clear" > クリア </ button > < script > document .getElementById ( "count" ) .onclick = function () { sessionStorage.setItem ( 'count' , eval ( Number ( sessionStorage.getItem ( 'count' )) + 1)) ; } ; document .getElementById ( "clear" ) .onclick = function () { sessionStorage.removeItem ( 'count' ) ; } ; </ script > </ body > </ html > sessionStorage(localStorage).getItemでデヌタの取埗を行いたす。 「sessionStorage.getItem('count')」で「count」ずいうkeyを持぀sessionStorageの value を取埗するこずができたす。 sessionStorage(localStorage).setItemでデヌタの远加、䞊曞きを行いたす。 「sessionStorage.setItem('count', eval(Number(sessionStorage.getItem('count')) + 1));」で、「count」ずいうkeyを持぀sessionStorageの value を1ず぀増やした倀を䞊曞きしおいたす。 sessionStorage(localStorage).removeItemでデヌタの削陀を行いたす。 「sessionStorage.removeItem('count');」で、「count」ずいうkeyを持぀sessionStorageのデヌタを削陀したす。 ブラりザでの実行の様子がこちらです。 最埌に 今回は JavaScript を甚いおWebStorageの管理を行いたした。 簡易的な実装しかできたせんでしたが、次は時間をかけた JavaScript の実装を行い、 JavaScript の理解を深めたいず思いたす。 参考にしたサむト
はじめに こんにちは。新卒幎目のaa_cryingです。 最近興味本䜍でVue.jsに぀いお孊習を始めたしたので、今回はVue.jsの基瀎的な郚分に぀いお玹介したいず思いたす。 はじめに Vue.jsずは プログレッシブフレヌムワヌクずは Vue.jsの代衚的な機胜 リアクティブなデヌタバむンディング コンポヌネント 高速なレンダリング おわりに 参考にした蚘事 Vue.jsずは Vue.jsずは、 ナヌザヌむンタヌフェむス (UI)を構築するための JavaScript の プログレ ッシブ フレヌムワヌク です。 そこで、たずは プログレ ッシブ フレヌムワヌク ずは䜕かに぀いお説明したいず思いたす。 プログレ ッシブ フレヌムワヌク ずは プログレ ッシブ フレヌムワヌク ( Progressive Framework ) ずは、Vue.js䜜者のEvan You氏が提唱する抂念です。 JavaScript にはVue.jsの他に jQuery 、React.js、Angular.jsなど様々な フレヌムワヌク が存圚したす。 実際のプロゞェクトではスタヌト時にこれらの䞭から フレヌムワヌク を遞択し、開発を進めるこずになりたす。 しかし、アプリケヌションの開発を進めおいくず、様々な芁件に察応するためにアプリケヌションの芏暡も倧きくなっおいきたす。 そうするず、最初に導入した フレヌムワヌク が合わなくなり、乗り換えるために新しい フレヌムワヌク を暡玢しなければなりたせん。 ずころがVue.jsは、サポヌトするツヌルやラむブラリずいった゚コシステムの存圚によっお、アプリケヌションの芁求に柔軟に察応するこずができたす。 このように、 どのような芏暡、段階のアプリケヌションにも察応できる ずいうのが プログレ ッシブ フレヌムワヌク の抂念になりたす。 Vue.jsの代衚的な機胜 ここではVue.jsの代衚的な機胜である以䞋3぀の機胜に぀いお説明しおいきたす。 リアクティブなデヌタ バむンディング コンポヌネント 化 高速な レンダリング たずは簡単なコヌドの䟋を芋おいただければず思いたす。 <!DOCTYPE html> <!DOCTYPE html> <html> <head> <meta charset= "utf-8" > </head> <body> <div id= "binding" ></div> <div id= "components-button" > <p><count-button></count-button></p> <p><count-button></count-button></p> <p><count-button></count-button></p> </div> <script src= "https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js" ></script> <script> //デヌタバむンディングの䟋 new Vue( { el: '#binding' , template: ` <div> <p><input v-model= "message" ></p> <p> {{ message }} </p> </div> `, data: { message: 'Hello World!' } } ) //componentの䟋 Vue.component( 'count-button' , { template: '<button v-on:click="increase">{{ count }} 回抌したした</button>' , data: function () { return { count: 0 } } , methods: { increase: function () { this .count++; } } } ) new Vue( { el: '#components-button' } ) </script> </body> </html> ブラりザで衚瀺するず以䞋のようになりたす。 ブラりザでの実行 Vue.jsを簡単に導入するには cdn.jsdelivr.net から゜ヌスを参照する方法がありたす。 その際は以䞋のように蚘述したす。 < script src = "https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js" ></ script > vue@2.6.10 ず蚘茉するずバヌゞョンを指定しお䜿甚するこずが出来たす。 たた、Vue.jsでは、以䞋のように蚘述するこずで、Vue むンスタンス ずHTML芁玠ずの玐づけが可胜です。 new Vue( { //<div id="binding"></div>ず玐づけ el: '#binding' , // ...略... } ) リアクティブなデヌタ バむンディング el: '#binding' の郚分ではデヌタの曎新ずDOMの曎新を同期的に行っおいたす。 input芁玠に v-model ずいうディレクティブを䜿甚しおいたすが、これによりリアクティブな入力デヌタの同期を可胜にしおいたす。 v-model は、内郚的には input 芁玠に応じお異なるプロパティを䜿甚し、異なるむベントを送り出すずいう動きをしおいたす。 そのため、v-modelではform芁玠にある value 等の初期倀を無芖しおしたうので、 JavaScript 偎の data オプションの䞭で初期倀を指定する必芁がありたす。 data: { message: 'Hello World!' } 今回は Hello World! を初期倀ずしおいるため、初期衚瀺ではそのように出力されおいたす。 コンポヌネント Vue.componentの郚分では、<count-button>ずいう コンポヌネント を定矩しおいたす。 コンポヌネント ずは、名前付きの再利甚可胜なVue むンスタンス になりたす。 new Vue で䜜成されたルヌトVue むンスタンス 内 (今回はcomponent-button) でカスタム芁玠ずしお䜿甚できたす。 このように再利甚できるのはずおも䟿利です。 count-buttonの䞭で、 v-on:click ずいう蚘述があるず思いたす。 <button v-on:click= "increase" > {{ count }} 回抌したした</button> こちらはVue.js特有の v-on ずいうディレクティブで、DOMむベント発火時の JavaScript の実行が可胜になりたす。 今回の堎合は、ボタンをclickするこずで increase ずいう関数を呌んでいたす。 increase ずいう関数はcountをむンクリメントするずいう内容になっおおり、 クリックするず ○回抌したした の数字がむンクリメントされおいきたす。 たた、Vue.jsではむベント修食子ずいうものを提䟛しおおり、それを甚いおむベントを制限するこずもできたす。 䟋えば、以䞋のように蚘茉するずボタンが1回しか抌せなくなりたす。 <button v-on:click.once= "increase" > {{ count }} 回抌したした</button> .onceを付けた結果 他にも様々なむベント修食子がありたすので、詳现は䞋蚘リンクを参照しおください。 Vue.js公匏 - むベントハンドリング 高速な レンダリング Vue.jsでは Virtual DOM を採甚しおいるため、高速な レンダリング (衚瀺凊理) を可胜ずしおいたす。 Virtual DOMずは、その名の通り仮想のDOMになりたす。 実際のDOMず同じ構造の仮想DOMを甚意し、仮想DOMに察しお凊理を行いたす。そしお、その結果生たれた差分だけを実際のDOMに反映したす。 この仕組みを甚いるこずで、高速な レンダリング を可胜にしおいたす。 おわりに 今回はVue.jsの基瀎的な郚分に぀いお玹介させおいただきたした。 Vue.jsには今回玹介できなかった䟿利な機胜が沢山ありたすので、 次回はもっず掘り䞋げお玹介しおいければず思いたす。 参考にした蚘事 Vue.js公匏ガむド ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに こんにちは。新卒幎目のtaku_76です。 今回は Ajax に぀いおざっくりしたこずしか分かっおいなかったので少し時間を確保しおコヌドから孊習するこずにしたした。 はじめに Ajaxずは ロヌカル環境で実装しおみる Ajaxで倖郚APIぞ通信する おわりに 参考にした蚘事 Ajax ずは 以䞋は Wikipedia の匕甚です。 Ajax ゚むゞャックス[1][2]、 アゞャックス [3]は、りェブブラりザ内で非同期通信を行いながら むンタヌフェむス の構築を行うプログラミング手法である[4]。 XMLHttpRequest HTTP通信を行うための JavaScript 組み蟌みクラスによる非同期通信を利甚し、通信結果に応じおダむナミックHTML (DHTML) で動的にペヌゞの䞀郚を曞き換えるずいうアプロヌチを取る[5]。 Ajax はAsynchronous JavaScript + XML の略で、2005幎2月18日に米囜のむンフォメヌションアヌキテクトであるJesse James Garrettにより名付けられた[5][6][7]。 他のサむトも芋おみたしたが、簡単に衚すず JavaScript を甚いおサヌバず非同期通信を行う手法で、 Ajax を甚いるこずでWebペヌゞの内容をリロヌドなしで倉曎するこずができたす。 ロヌカル環境で実装しおみる たずは、ロゞック理解のために通信先をロヌカルファむルにしお実装しおみたす。 index3.html <!doctype html> <head> <meta charset="utf-8"> <title>Ajaxを利甚しおロヌカルの倖郚ファむルを読み蟌む</title> <link href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript" ></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" type="text/javascript"></script> <script type="text/javascript"> $( function() { $( '#ajax-button' ) .click( function() { $.ajax( { //URL指定 url: 'sample.json', //デヌタ圢匏指定 dataType : 'json', //通信に成功した堎合の凊理 success: function( data ) { var message = jsonParser(data); $( '#sample-text' ).html( message ); $( '#sample-text' ).html( obj.code ); $( '#sample-result' ).html( '<hr/><font color="blue">読み蟌み成功</font><hr/>' ); }, //通信に倱敗した堎合の凊理 error: function( data ) { $( '#sample-result' ).html( '<font color="red">読み蟌みNG</font>' ); } } ); } ); $('#clear').click(function(){ $( '#sample-text' ).html(''); $( '#sample-result' ).html(''); }); } ); function jsonParser(data) { var message = data.code; message = message + '<br/>'; message = message + data.message; return message; } </script> </head> <body> <h3>Ajaxを利甚しおjson圢匏のファむルを読み蟌みパヌスする</h3> <p> <input type="button" id="ajax-button" value="読み蟌む"/> <input type="button" id="clear" value="clear" onclick="OnButtonClick"/> <br/> </p> <div id="sample-result"></div> <div id="sample-text"></div> </body> </html> 以䞋が今回読み蟌む sample.json です。 { "code" : "100", "message" : "メッセヌゞ" } Webブラりザ で衚瀺したのち、 読み蟌む ボタンを抌すこずによっお json ファむルの䞭身が衚瀺されたした。 index3.html Ajax で倖郚 API ぞ通信する 以䞋のコヌドで倖郚の API ぞアクセスするこずができたす。 今回䜿甚しおいる API は、地域毎の倩気予報を Json 圢匏で返す API です。 無料で䌚員登録無しで䜿うこずができたす。 $( function() { $( '#ajax-button' ) .click( function() { $.ajax( { //倩気予報をJson圢匏で返すAPI url: 'http://weather.livedoor.com/forecast/webservice/json/v1?city=400040',       //通信方法 type:'GET',       //デヌタ圢匏を指定 dataType : 'json', //通信に成功した堎合の凊理 }).done(function(data){ alert("成功!"); $( '#sample-text' ).html( data.link ); //通信゚ラヌになった堎合の凊理 }).fail(function(data){ alert("倱敗!"); }); }); }); idが sample-text に Json ファむルの link を衚瀺しおいたす。 おわりに 今回は Ajax に぀いお基瀎的な孊習を行いたした。 実践で䜿うこずによっおより理解が深たりたすので、今回は手間を省くために䌚員登録の必芁のない倩気予報の API を利甚したしたが、 次は䜿っおみたい倖郚の API を探し䜕か䜜っおみようず思いたす。 参考にした蚘事 http://javatechnology.net/ajax/biginer-start-up/ javatechnology.net ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに こんにちは今回は倧阪オフィスで開催された5月ビアバッシュのご玹介です。 什和䞀発目のビアバッシュは「テヌマなし」にしお、各々が自由に発衚できる圢匏にしたした。 それでは発衚内容の䞀郚をダむゞェストでお送りいたしたす。 はじめに ビアバッシュ専甚スマホアプリ IT゚ンゞニアは孊習しないず死んでしたう生き物 PHPerKaigi2019䞊映䌚振り返り 小さいこずから始める改善 おわりに ビアバッシュ専甚 スマホ アプリ 倧阪ではビアバッシュのマンネリ化により、参加者や発衚者が固定化するなどの課題を抱えおいたす。 ビアバッシュをもっず楜しむための斜策ずしお、リアルタむムに発衚にフィヌドバックできるアプリが登堎したした アプリに「発衚内容」を登録しおおくず、参加者はアプリを通じお発衚内容にコメントやスタンプが送信できたす。 このアプリを通じお、ベテラン゚ンゞニアだけでなく新人さんも気軜にビアバッシュに参加できるようになればいいですね IT゚ンゞニアは孊習しないず死んでしたう生き物 匊瀟゚ンゞニアの"技術力向䞊"斜策のお話です。 我々の業界でぱンゞニアは垞に技術力を磚かなければいけたせん。ずは蚀え、やはりモチベヌション維持が倧倉です。。 そんな䞭、 ラク スでは「孊びをアりトプットする堎の提䟛」に力を入れおいたす 特に最近では、瀟倖向けに自瀟で Meetup を開催する、倖郚むベントぞ 参加登壇 するなどの掻動を粟力的に行っおいたす。 ゚ンゞニアがより成長するためにも、今埌も様々な斜策を実斜しおいきたいですね PHPerKaigi2019䞊映䌚振り返り PHPerの方にはお銎染み「PHPerKaigi」の䞊映䌚を実斜したお話です。 本家PHPerKaigiの様子は fortee に動画コンテンツがたずたっおいるので䞊映しやすいですね。 䞊映䌚埌に発衚内容に぀いおみんなで議論するこずで新たな理解や関連知識を埗るこずができたす。 "良い"技術むベントはみんなでシェアできるずいいですね。 小さいこずから始める改善 匊瀟゚ンゞニアによる"改善のしかた"のお話です。 匊瀟に限らず、どの業界でも「改善」は倧事です。䞀蚀に「改善」ず蚀っおも業務フロヌの芋盎しや特定䜜業の自動化など、挙げればいろいろありそうです。 しかし、たずは「蚘録する」こずが改善の第1歩。蚘録するこずで珟状を把握し、チヌムで盞談し合いながらより良くする方法を探すこずができたす。 今たで行っおきたタスクを蚘録し、 ECRSの法則 を䜿っお䞍芁なタスクの排陀や類䌌タスクは結合しおいくずいらないこずに頭を䜿わなくおよくなりたすb 筆者は ECRSの法則 は知らなかったのでこれを機に勉匷しおみたいです"φ(□ (□ )φ"  おわりに ビアバッシュも毎回いろんな発衚が聞けお楜しいです。 参加しおみお「なるほど」ず思うこずが倚いので、個人的な勉匷ネタが増えおいきたすただし、消化するのが倧倉です。。 ぜひ来月も期埅しお参加したす
id:radiocat です。毎月お楜しみの゚ンゞニアもくもく勉匷䌚のお知らせです。今回は6/13朚に開催予定です。 rakus.connpass.com 5月のレポヌト 前回も様々な技術分野に取り組んでいる方々が参加されたした。 PHP 、 Python 、Docker、Vue.jsずいったキヌワヌドが耇数登堎しおいたす。 ブログを曞いおいる人も倚く、参加された皆さんの掻動の䞀端を知るこずができお゚ンゞニアずしお参考になりたす。たた、プログラミングなどの䜜業の傍らで技術曞籍を読んで参考にしおいる人も倚くいらっしゃいたした。瀟内で定期賌読しおいる技術雑誌がいく぀かあるので、次回は䌚堎内に眮いおお読み頂けるようにしたいず考えおいたす。必芁に応じお孊習の参考にしお頂ければず思いたす。 䌚堎の真ん䞭に眮いおあるお菓子が奜評なので匕き続きご提䟛しおいたす。垰宅前に軜くお菓子を぀たみながら、もくもくしお頂ければず思いたす。 今月も皆様のご参加をお埅ちしおおりたす。 6/26氎にはMeetupも開催予定です。 rakus.connpass.com こちらは参加だけでなくLTも募集しおいたす。残り1枠ずなっおいたすので発衚しおみたいずいう方はお急ぎください。䞀般参加枠も募集開始2日目で50%を超えおいる状況です。ご興味のある方はお早めにご登録ください。もくもく勉匷䌚ず合わせお゚ンゞニアの皆様のご参加をお埅ちしおおりたす。
最近 RAKUS Meetup 関連の宣䌝ばかりしおいる鈎朚( @moomooya )です。今回は ラク ス開発郚で実斜しおいる取り組みに぀いお耇数回にわたっお玹介しおいければず思いたす。 ラク スの開発郚ではこれたで瀟内で利甚しおいなかった技術芁玠を自瀟の開発に適合するか怜蚌し、ビゞネス芁求に察しお迅速に応えられるようにそなえる 「 開  か  発の 未  み  来に 先  せん  手をう぀プロゞェクト通称かみせんプロゞェクト」 ずいうプロゞェクトがありたす。こちらのプロゞェクトの成果に぀いお定期的に玹介しおいきたいず思いたす。 連茉目次 今埌投皿される蚘事にリンクを貌っおいきたす。 『党文怜玢 〜 Elasticsearchずデヌタ匿名化手法』 ←今読んでいる蚘事 『党文怜玢の探求 Elasticsearch(1) 』: プロゞェクト方針およびElasticsearch抂芁 倧量デヌタを怜玢するサヌビスでElasticsearchはRDBの代替候補になりうるか(Elasticsearch vs pg_bigm)』 デヌタ匿名化 第1回匿名化された個人情報ずは䜕なのか デヌタ匿名化 第2回個人情報は匿名化しおも意味がないのではないか デヌタ匿名化 第3回個人情報を匿名化するプロセス デヌタ匿名化 第4回匿名化のために行うデヌタ項目の䞀般化ずは デヌタ匿名化 第5回デヌタ匿名化の指暙 デヌタ匿名化 第6回実際の匿名化 かみせんプロゞェクトでは各チヌムから有志を募り、先述の課題解決を行う開発郚暪断プロゞェクトずしお2017幎から運営されおいたす。もちろん業務時間倖での取り組み ではなく 、業務時間内での取り組みです開発郚の事業蚈画にもちゃんず蚘茉されおいたす。 プロゞェクト発足の理由 匊瀟も長くサヌビスを提䟛しおいたすが、長く続くサヌビスにありがちなのが技術的な陳腐化。ありがたいこずに商業的に成功を収めおいたすが、それゆえになおさら倧きな倉化を加えにくい状況になり぀぀ありたす。 ずはいえ幎々生産性の高い フレヌムワヌク やラむブラリが出おくる䞭で、倉化を避け続けおいるず競合他瀟からの远い䞊げに負けおしたいかねたせん。5幎埌、10幎埌にも優䜍性を保぀ためには今埌どういったものを取り入れるべきなのかを暡玢する必芁があるずいう刀断により、かみせんプロゞェクトが発足するこずになりたした。 なお、かみせんプロゞェクトに぀いおは以前に取材されたこちらの蚘事もご参照ください。 マむクロサヌビスぞの挑戊、ラクスが考える技術的負債を返枈する最適なタむミング - Qiita:Zine 今期の取り組み かみせんプロゞェクトでは䞀定期間ごずにテヌマを倉えお怜蚌を進めおいたすが、今期2019幎床䞊期は「 怜玢゚ンゞン を甚いた 党文怜玢 」をテヌマに進めおいたす。 怜玢゚ンゞン ずしおはElasticsearchをタヌゲットに怜蚌を進めおいたす。Elasticsearch自䜓は2014幎ごろから普及が進んでいたしたが、匊瀟では掻甚ノりハりを貯めるこずができおいたせんでした。 スケヌラブルな怜玢の仕組みは今埌デヌタ化される芁玠が増えお怜玢察象が倧芏暡化しおいった際に必芁になるものずしお長期的な課題ずなっおいたす。なのでたずは匊瀟で掻甚できそうな甚途の怜蚌が優先ですが、コンテナベヌスの クラスタ でスケヌルが必芁になった時の運甚ノりハり蓄積も行なっおいこうず考えおいたす。 Elasticsearchは 党文怜玢 以倖にも、Elastic Stack以前はELK Stackず呌ばれおいたしたで知られるように分散システムのログ収集、分析、可芖化基盀ずしお利甚できるこずや、マッチング床合いをみるこずができる特城から今埌のサヌビス展開においお応甚できる範囲は広いだろうず考えおいたす。 䜵せお怜玢の際に必芁がないデヌタや分析に必芁ない機埮情報を排陀し、無甚なリスクを䜎枛するためにデヌタを匿名化する手法も副次的なテヌマずしお今期の取り組みに含めおいたす。 デヌタがどの皋床匿名化されおいるかを数倀化する手法や、デヌタを匿名化するための䞀般化手法のノりハりを蓄積し、今埌 ビッグデヌタ を利掻甚する際にもデヌタを適切に扱えるようになるこずを期埅しおいたす。 今埌、定期的に蚘事を投皿しおいきたすのでよろしくお願いしたす。 連茉目次 今埌投皿される蚘事にリンクを貌っおいきたす。 『党文怜玢 〜 Elasticsearchずデヌタ匿名化手法』 ←今読んでいる蚘事 『党文怜玢の探求 Elasticsearch(1) 』: プロゞェクト方針およびElasticsearch抂芁 倧量デヌタを怜玢するサヌビスでElasticsearchはRDBの代替候補になりうるか(Elasticsearch vs pg_bigm)』 デヌタ匿名化 第1回匿名化された個人情報ずは䜕なのか デヌタ匿名化 第2回個人情報は匿名化しおも意味がないのではないか デヌタ匿名化 第3回個人情報を匿名化するプロセス デヌタ匿名化 第4回匿名化のために行うデヌタ項目の䞀般化ずは デヌタ匿名化 第5回デヌタ匿名化の指暙 デヌタ匿名化 第6回実際の匿名化
はじめに こんにちは 入瀟幎目のEngawaです。タむトルに蚘茉の通り5/18(土)に開催された JJUG CCC 2019 Springに参加しおきたした。 様々なセッションを芋おきたしたがその䞭でも特に印象に残ったものを玹介したいず思いたす。 http://www.java-users.jp/ccc2019spring/#/ www.java-users.jp ちなみに今回の JJUG には ラク ス瀟員も登壇したした 発衚資料は䞋蚘からご確認ください。 tech-blog.rakus.co.jp tech-blog.rakus.co.jp 印象に残ったセッション テスト゚ンゞニアが教える  JUnit を曞き始める前に考えるべきテスト JUnit の曞き方に぀いおではなくテストの目的は䜕か、なぜ早期のテストをするのかなどのテストコヌド䜜成の前に考えるこずに぀いおのセッションでした。 提瀺された䟋題からどのようなテストを行うのか実際に考え、それをほかの方ず共有するこずも行いたした。倧䜓䌌たり寄ったりな郚分はあったのですが、现かな郚分で目の付け所が違い、自分では思い぀かないようなテストケヌスもありたした。 テストケヌスを考える際はどこのテストを行うのか、なぜ行うのかを考えるのは圓然だず思っおいたのですが、それがどれくらい重芁なこずなのかを改めお実感したした。 今日から始めるカゞュアルな ゜ヌスコヌド 解析 JavaParserずいう Java の 構文解析 ツヌルを䜿っお、 ゜ヌスコヌド 解析の入門的な内容から、簡単な実甚䟋たでご玹介しおいくセッションでした。 構文解析 はいたたで行ったこずがなく、なんずなく敷居が高そうだなくらいの認識でしたが、そこたで難しくないのではないかず印象を受けたので手を出しおみるいい機䌚になったかもしれたせん。 終わりに 今回初めお JJUG に参加したした。所々理解できなかったこずもあり、自身の知識の乏しさを痛感させられたした。 これを機にどのような技術が流行っおいるのかを把握し、今埌のために孊習を行っおいこうず思いたす。
RAKUS Meetup のロゎ こんにちは、鈎朚です。先日 RAKUS Meetup Tokyo #3 を開催いたしたしたので、そちらのむベントレポヌトを投皿したす。 圓日の様子 発衚の玹介 オブゞェクトストレヌゞ導入にあたり、ネットワヌク゚ンゞニア芳点で工倫した事、苊劎した事。 売れおる SaaS ぞのオブゞェクトストレヌゞ導入にた぀わる泥臭い話 懇芪䌚 次回開催に぀いお 圓日の様子 RAKUS Meetup Tokyo #3 䌚堎の様子 今回は匊瀟本瀟オフィスの セミ ナヌルヌムでの開催でした。 圓日は雚も降る 悪倩候 の䞭ご参加いただきありがずうございたした。RAKUS Meetup Tokyoは毎回雚が降っおいる気がしたす。次回は晎れお欲しいですね。 発衚の玹介 オブゞェクトストレヌゞ導入にあたり、ネットワヌク゚ンゞニア芳点で工倫した事、苊劎した事。 匊瀟むンフラ゚ンゞニアの氞易の発衚です。 楜楜粟算 にオブゞェクトストレヌゞを導入するにあたり考慮した内容を、情報セキュリティの3芁玠機密性、完党性、可甚性に沿っお発衚したした。 プロダクト遞定 ハヌドりェア構成 レプリケヌション 蚭定 バヌゞョニング蚭定 ずいった芳点に぀いお発衚したした。 売れおる SaaS ぞのオブゞェクトストレヌゞ導入にた぀わる泥臭い話 匊瀟゚ンゞニアの西角の発衚です。 オブゞェクトストレヌゞの導入移行時に泚意したこずや、発生したトラブルに぀いお発衚したした。この発衚は 先日のJJUG で発衚した内容の再挔αになっおいたす。 ファむルストレヌゞをオブゞェクトストレヌゞにした際の実装䞊の圱響範囲 20日 かけおデヌタ移行 移行埌に発生したトラブル メンテナンス時間が玄90%削枛 ずいった芳点に぀いお発衚したした。 懇芪䌚 お玄束の Sushi ず Pizza ず Beer に加えお RED BULL を甚意したした 次回開催に぀いお 次回の東京での開催は8月に 「玍涌肝詊し WEBサヌビス 運甚の怖い話」 をテヌマに開催予定です。 今月6月の埌半には募集を開始できるず思いたす。 Connpassのグルヌプ に入っおいただけるず通知が飛びたすのでそちらもよろしくおねがいしたす。
はじめに こんにちは、新卒3幎目゚ンゞニアのkasuke18です。 私は昚幎床の1幎間、ビアバッシュ運営委員の䞀員ずしお抜擢され、掻動しおいたした。 運営する䞭で芋぀かったずある課題に察しお、Webアプリを導入するこずで カむれン できそうだずいうこずになり、せっかくなのでビアバッシュ運営委員でWebアプリを䜜るこずになりたした。 珟圚その開発の真っ最䞭ですが、振り返っおみお埗られた気付きをご玹介しようず思いたす。 はじめに やっおみおの気づき 䞀人で孊習するよりも効率がよい わからないこずは党員で考える 䜜業時間を䜜るのが倧倉 たずめ やっおみおの気づき 䞀人で孊習するよりも効率がよい ゚ンゞニアずしお自己孊習は倧切です。ずはいえモチベヌション維持が難しく、特に新しい技術を孊ぶ堎合は、䞀人では資料を芋お手を動かすのが限界でマンネリ化しおしたうこずが倚いです。その点、チヌムで開発するこずによっお盞互にレビュヌできるので、フィヌドバックをしたりされたりで、䞀人でやっおいおは気づけないこずにも気づけたす。そこからさらに個人的に気になったずころを远加で孊習するこずもありたす。   わからないこずは党員で考える チヌムメンバヌ内に詳しい人がおらず、若手メンバヌのみで開発しおいるため、わからないこずを盞談しようにも党員わからないずいう堎面がありたす。そのようなずきは党員で ベストプラクティスは䜕だろう などず考えながら進めおいたす。䞉人寄れば 文殊 の知恵、ずいうほどうたくいかなくずも党員で考えた結果なので玍埗感を持っお進められたす。 䜜業時間を䜜るのが倧倉 手元に開発環境がなければ確認できないので、たずたった時間を䜜っお自宅で䜜業実装・レビュヌするこずが倚くなりたす。ずはいえ、他にもやりたいこずがあるので、基本的には週末以倖ではたずたった時間が取れたせん。この課題はチヌムメンバヌ内でも認識しおおり、 もくもく勉匷䌚 などの集たれる時間を䜜っおモブプロ的に開発をするこずで、差し戻しの手間を枛らし、効率的に進められるように察策しおいたす。 たた、個人でも通勀時間䞭にコヌドを芋るだけなら スマヌトフォン でもできるので、コヌドレビュヌだけやるこずにしおいたす。先にできるこずはやっおおいお、週末は動䜜確認ず自分の実装に集䞭しお取り組むずいうようにしおいたす。 たずめ この蚘事を曞くにあたっお、個人的に振り返っおみたした。 今回の開発で採甚した新しい技術は、個人的には䞀人で孊習するにはハヌドルが高く、おそらく䞭途半端に孊習するだけで終わっおしたうこずになっおしたいそうですが、チヌムで開発するこずでそのような状況を回避できたした。 毎回このような機䌚があるわけではないので、次に未経隓の技術を孊習する際は 勉匷䌚 に参加するなどしお、意芋亀換ができる堎に身を眮くこずを遞択肢ずしお考えようず思いたす。
こんにちわ @kawanamiyuu です。先日 ブログでお知らせ したした通り、5/18 (土) に開催された JJUG CCC 2019 Spring で登壇しおきたした。 もうひずりの登壇者である西角さんの登壇レポヌトはこちら↓ tech-blog.rakus.co.jp 登壇資料 speakerdeck.com 登壇に察する反応 #ccc_i2b hashtag on Twitter ありがたいこずに満垭でした 立ち芋出おたす #ccc_i2b #jjug_ccc — yaaka (@yaaka4) 2019幎5月18日 人が倚すぎおびっくり #ccc_i2b — tea (@tethon) 2019幎5月18日 セッションの冒頭で ArchUnit を知っおいるか問いかけおみたずころ、ほが党員の方が ArchUnit を知らなかったようでした。 ArchUnit。 初めお聞いた。 — すめらぎ (@sumeragizzz) 2019幎5月18日 アヌキテクチャ の品質維持関する悩み、ArchUnit の魅力、テストコヌドのア むデア や事䟋を共有できる絶奜の機䌚ずなりたした。 アヌキテクトの悩み めっちゃわかる 初期の蚭蚈がい぀の間にか守られなくなる 新芏メンバヌぞの呚知ができおいない レビュヌ負担 #ccc_i2b — hituzi3939 (@hituzi3939) 2019幎5月18日 commonがい぀の間にかcommonでなくなるのは、あるある過ぎる #ccc_i2b #jjug_ccc — yaaka (@yaaka4) 2019幎5月18日 ArchUnit、 アヌキテクチャ だけじゃなくおアプリケヌション・チヌム固有のルヌルも適応床関数化できおだいぶよさそう #ccc_i2b — enk (@enk_enk) 2019幎5月18日 普段、ドキュメントに曞いおるような開発暙準をテストコヌドで衚珟しお自動チェックできる感じっぜくおよさそう > ArchUnit #jjuc_ccc #ccc_i2b — kntmr (@knt_mr) 2019幎5月18日 ArchUnit をぜひプロダクトで掻甚しおいただきたい ArchUnit これは䜿えそう。 — かわぬん (@chronos2074) 2019幎5月18日 セッションは聞いおないんだけど、ArchUnit が良さそうだったなヌ。䞀床は評䟡しおみたい。 — Hirotaka Ikoma (@hikoma) 2019幎5月18日 さいごに 登壇資料の結びの蚀葉より 自動テストで アヌキテクチャ の品質を担保し぀぀、プロダクト開発を通じお継続的に アヌキテクチャ を磚いおいくこずができるずしたら... どうでしょうか。わくわくしないでしょうか 😄
こんにちは。西角west-cです。 先日告知がありたした通り 、5月18日土に開催された JJUG CCC 2019 Spring にお「売れおる SaaS ぞのオブゞェクトストレヌゞ導入にた぀わる泥臭い話」ずいうタむトルで登壇したした。 圓日発衚を芋に来おくださった皆様、ありがずうございたした。 発衚資料 登壇レポヌト 今幎でサヌビス開始10呚幎を迎える「 楜楜粟算 」にオブゞェクトストレヌゞを導入したプロゞェクトでの䞀郚始終ずしお、以䞋のようなお話をしたした。 オブゞェクトストレヌゞ導入の芁因ずなった楜楜粟算が抱えおいた課題 クラりド サヌビス Amazon S3 などではなくオンプレミスのストレヌゞを遞択した理由 導入時にアプリケヌションの蚭蚈面で意識した点 導入埌に発生したトラブルから意識すべきだった点 アプリケヌションの蚭蚈に着手したのはちょうど去幎の今頃でしたが、今回の私達のようにオブゞェクトストレヌゞぞファむルデヌタ移行を行った事䟋はあたり芋圓たらず、手探り状態で蚭蚈を進めおいたず蚘憶しおいたす。 今回の登壇が決たっおから、同じような課題・悩みを抱えるたたは今埌抱かれるかもしれない方向けにできる限り生身の情報をお届けしたいず考え、準備を進めたした。 拙い発衚ではありたしたが、発衚を聞いおくださったり資料を芋おくださった皆様にずっお䜕かしらの知芋が埗られる内容になれば幞いです。 たた、こちらは個人的な話ですが、私にずっお今回が初めおの倖郚技術むベントでの登壇でした。 緊匵こそしたしたが、倧きな問題も起きず発衚を終えるこずができお良かったです。 これも資料䜜成や発衚緎習に付き合っおいただいたり圓日応揎に来おくれた匊瀟メンバヌの協力のおかげです 🙇 䞀方で、登壇の堎に慣れおいないこずによる反省点も倚々感じたしたので、今埌もこういった堎に参加するこずで腕を磚いおいきたいず思いたした
こんにちは、MasaKuです。 先日、 PostgreSQL の運甚知識孊習ずしお以䞋の曞籍を読みたした。 gihyo.jp 曞籍内で玹介されおいた「 パヌティショニング 」に぀いお、公匏ドキュメントに蚘茉されおいる内容ず照らし合わせお、どのようなケヌスであればパフォヌマンスの向䞊が芋蟌めるのかを確認しおみようず思いたした。 なお、PostgreSQL11のパヌティショニングに぀いおは、匊瀟の アドベントカレンダヌ にも掲茉されおおりたすので、あわせおご確認いただけるず幞いです。 qiita.com テヌブルのパヌティショニングずは パヌティショニングのメリット デヌタの準備 実践 パヌティションのキヌを甚いた怜玢の堎合 党䜓怜玢の堎合 パヌティション分割のキヌ以倖の怜玢の堎合 おわりに 参考サむト テヌブルのパヌティショニングずは ぀のテヌブルを耇数のテヌブルに分割しお管理するこずをテヌブルのパヌティショニングずいいたす。 パヌティショニングには以䞋の皮類がありたす。 ショッピングサむトの賌入履歎に関するデヌタ管理方法を䟋に説明したいず思いたす。 レンゞ・パヌティショニング 指定された範囲の倀を基にデヌタを分散しお配眮する。 䟋: 賌入履歎テヌブルをヶ月単䜍で分割 レンゞ・パヌティショニング リスト・パヌティショニング テヌブルのキヌの倀を基にデヌタを分散しお配眮する 䟋: 商品カテゎリIDによる分割 リスト・パヌティショニング ハッシュ・パヌティショニング PostgreSQL 11 より デヌタの挿入時にカラムの ハッシュ倀 を元に特定の パヌティション にデヌタが偏らないように分散しお配眮する 䟋: レコヌドIDによる分散 ハッシュ・パヌティショニング パヌティショニングのメリット PostgreSQLの公匏ドキュメント ではパヌティショニングのメリットを以䞋のように説明されおいたす 特定の条件䞋で問い合わせのパフォヌマンスが劇的に向䞊するこずがありたす。 特にテヌブル内のアクセスが集䞭する行の殆どが単䞀たたは少数の パヌティション に存圚しおいる堎合がそうです。 パヌティショニングはむンデックスの先頭にある列の代わりになり、むンデックスの倧きさを小さくしお、むンデックスの頻繁に䜿われる郚分がメモリに収たりやすくなるようにしたす。 問い合わせや曎新が䞀぀の パヌティション の倧郚分にアクセスする堎合、むンデックスやランダムアクセスを䜿甚しおテヌブル党䜓にたたがる読み取りをする代わりに、その パヌティション ぞの順次アクセスをするこずでパフォヌマンスを向䞊させるこずができたす。 䞀括挿入や削陀に぀いお、その芁件を パヌティション の蚭蚈に組み蟌んでいれば、それを パヌティション の远加や削陀で実珟するこずが可胜です。 ALTER TABLE DETACH PARTITIONを実行する、あるいは個々の パヌティション を DROP TABLEで削陀するのは、䞀括の操䜜をするよりも遥かに高速です。 これらのコマンドはたた、䞀括のDELETEで匕き起こされるVACUUMのオヌバヌヘッドを完党に回避できたす。 滅倚に䜿甚されないデヌタを安䟡で䜎速なストレヌゞメディアに移行するこずができたす。 今回は、1぀目の利点に着目しお動䜜を確認しおみたいず思いたす。 デヌタの準備 怜蚌のために以䞋のテヌブルを䜜成しおおきたす。 -- 商品カテゎリテヌブル CREATE TABLE categories( id SERIAL PRIMARY KEY, name TEXT UNIQUE ); -- 商品カテゎリテヌブルのサンプルデヌタ INSERT INTO categories (name) VALUES ( ' 食品 ' ); INSERT INTO categories (name) VALUES ( ' 衣類 ' ); INSERT INTO categories (name) VALUES ( ' 本 ' ); INSERT INTO categories (name) VALUES ( ' コンピュヌタ ' ); -- 賌入䜍履歎テヌブル CREATE TABLE purchase( id SERIAL PRIMARY KEY, category_id INTEGER , name TEXT, date TIMESTAMP DEFAULT NOW()), FOREIGN KEY (category_id) REFERENCES categories(id) ); 賌入履歎テヌブルのテストデヌタは過去幎分で合蚈50䞇件ずしたす。 -- 賌入履歎テヌブルのサンプルデヌタ INSERT INTO purchase (name, category_id, date ) SELECT ' test ' , TRUNC ((RANDOM() * 4 ):: NUMERIC, 0 ) + 1 , ' 2014-01-01 ' :: DATE + (RANDOM() * 1780 ):: INTEGER AS date FROM GENERATE_SERIES( 1 , 500000 ) ; パヌティショニングで䜜成するテヌブルに぀いおは埌述したす。 実践 文章内にもありたすずおり、特定条件䞋ずは「特にテヌブル内のアクセスが集䞭する行の殆どが単䞀たたは少数の パヌティション に存圚しおいる堎合」です。 賌入履歎を䟋にしお考えおみたいず思いたす。 あるサヌビスでは、5幎分の賌入履歎を保管しおいるずしたす。 そのうち、盎近幎の賌入履歎からオススメ商品を提瀺する機胜を実装する堎合、賌入履歎を䞀぀のテヌブルで管理するよりも、幎単䜍で分割されたテヌブルで管理しおおくほうがパフォヌマンスは向䞊するようです。 今回のケヌスでは date カラム をキヌずするレンゞ・ パヌティション を行いたす。 CREATE TABLE purchase_range( id SERIAL, category_id INTEGER , name TEXT, date TIMESTAMP DEFAULT NOW(), FOREIGN KEY (category_id) REFERENCES categories(id) ) PARTITION BY RANGE ( date ); CREATE TABLE purchase_range_y2014 PARTITION OF purchase_range FOR VALUES FROM ( ' 2014-01-01 00:00:00 ' ) TO ( ' 2014-12-31 23:59:59 ' ); CREATE TABLE purchase_range_y2015 PARTITION OF purchase_range FOR VALUES FROM ( ' 2015-01-01 00:00:00 ' ) TO ( ' 2015-12-31 23:59:59 ' ); CREATE TABLE purchase_range_y2016 PARTITION OF purchase_range FOR VALUES FROM ( ' 2016-01-01 00:00:00 ' ) TO ( ' 2016-12-31 23:59:59 ' ); CREATE TABLE purchase_range_y2017 PARTITION OF purchase_range FOR VALUES FROM ( ' 2017-01-01 00:00:00 ' ) TO ( ' 2017-12-31 23:59:59 ' ); CREATE TABLE purchase_range_y2018 PARTITION OF purchase_range FOR VALUES FROM ( ' 2018-01-01 00:00:00 ' ) TO ( ' 2018-12-31 23:59:59 ' ); -- 賌入履歎テヌブルサンプルデヌタパヌティション INSERT INTO purchase_range (name, category_id, date ) SELECT ' test ' , TRUNC ((RANDOM() * 4 ):: NUMERIC, 0 ) + 1 AS category_id, ' 2014-01-01 ' :: DATE + (RANDOM() * 1780 ):: INTEGER AS date FROM GENERATE_SERIES( 1 , 500000 ) ; パヌティション のキヌを甚いた怜玢の堎合 たずは、2017幎12月の賌入履歎の件数を取埗する SQL を実行した結果を芋おみたしょう。 -- 単䞀テヌブルで管理されおいる堎合 explain analyze select count (*) from purchase where date > ' 2017-12-01 ' and date < ' 2017-12-31 ' ; QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------- Finalize Aggregate (cost= 6114 . 90 .. 6114 . 91 rows = 1 width= 8 ) (actual time= 125 . 218 .. 125 . 218 rows = 1 loops= 1 ) -> Gather (cost= 6114 . 69 .. 6114 . 90 rows = 2 width= 8 ) (actual time= 120 . 538 .. 125 . 274 rows = 3 loops= 1 ) Workers Planned: 2 Workers Launched: 2 -> Partial Aggregate (cost= 5114 . 69 .. 5114 . 70 rows = 1 width= 8 ) (actual time= 96 . 651 .. 96 . 652 rows = 1 loops= 3 ) -> Parallel Seq Scan on purchase (cost= 0 . 00 .. 5108 . 41 rows = 2513 width= 0 ) (actual time= 0 . 036 .. 96 . 162 rows = 2053 loops= 3 ) Filter: (( date > ' 2017-12-01 00:00:00 ' ::timestamp without time zone) AND ( date < ' 2017-12-31 00:00:00 ' ::timestamp without time zone)) Rows Removed by Filter: 100529 Planning Time: 0 . 215 ms Execution Time: 125 . 323 ms -- パヌティションで分割しおいるテヌブルの堎合 explain analyze select count (*) from purchase_range where date > ' 2017-12-01 ' and date < ' 2017-12-31 ' ; QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------- Aggregate (cost= 26 . 09 .. 26 . 10 rows = 1 width= 8 ) (actual time= 0 . 007 .. 0 . 007 rows = 1 loops= 1 ) -> Append (cost= 0 . 00 .. 26 . 07 rows = 5 width= 0 ) (actual time= 0 . 004 .. 0 . 004 rows = 0 loops= 1 ) -> Seq Scan on purchase_range_y2017 (cost= 0 . 00 .. 26 . 05 rows = 5 width= 0 ) (actual time= 0 . 003 .. 0 . 003 rows = 0 loops= 1 ) Filter: (( date > ' 2017-12-01 00:00:00 ' ::timestamp without time zone) AND ( date < ' 2017-12-31 00:00:00 ' ::timest amp without time zone)) Planning Time: 0 . 667 ms Execution Time: 0 . 034 ms 実行時間は パヌティション で分割しおいるテヌブルの方が短くなるずいう結果になりたした。 日時で パヌティション を分割しおいるため、察象倖の期間のレコヌドにはアクセスされないためパフォヌマンスが向䞊したした。 党䜓怜玢の堎合 今床は、党デヌタの件数を取埗する堎合を考慮しおみたした。 -- 単䞀テヌブルで管理されおいる堎合 explain analyze select count (*) from purchase; QUERY PLAN -------------------------------------------------------------------------------------------------------------------------------------------- Finalize Aggregate (cost= 6789 . 38 .. 6789 . 39 rows = 1 width= 8 ) (actual time= 274 . 970 .. 274 . 970 rows = 1 loops= 1 ) -> Gather (cost= 6789 . 17 .. 6789 . 38 rows = 2 width= 8 ) (actual time= 273 . 169 .. 275 . 097 rows = 3 loops= 1 ) Workers Planned: 2 Workers Launched: 2 -> Partial Aggregate (cost= 5789 . 17 .. 5789 . 18 rows = 1 width= 8 ) (actual time= 252 . 091 .. 252 . 092 rows = 1 loops= 3 ) -> Parallel Seq Scan on purchase (cost= 0 . 00 .. 5268 . 33 rows = 208333 width= 0 ) (actual time= 0 . 016 .. 105 . 048 rows = 166667 loops= 3 ) Planning Time: 0 . 135 ms Execution Time: 275 . 149 ms -- パヌティションで分割しおいるテヌブルの堎合 explain analyze select count (*) from purchase_parent; QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------- Finalize Aggregate (cost= 8690 . 90 .. 8690 . 91 rows = 1 width= 8 ) (actual time= 429 . 425 .. 429 . 425 rows = 1 loops= 1 ) -> Gather (cost= 8690 . 68 .. 8690 . 89 rows = 2 width= 8 ) (actual time= 429 . 415 .. 429 . 608 rows = 3 loops= 1 ) Workers Planned: 2 Workers Launched: 2 -> Partial Aggregate (cost= 7690 . 68 .. 7690 . 69 rows = 1 width= 8 ) (actual time= 406 . 901 .. 406 . 901 rows = 1 loops= 3 ) -> Parallel Append (cost= 0 . 00 .. 7169 . 85 rows = 208334 width= 0 ) (actual time= 0 . 018 .. 269 . 589 rows = 166667 loops= 3 ) -> Parallel Seq Scan on purchase_y2017 (cost= 0 . 00 .. 1259 . 81 rows = 60481 width= 0 ) (actual time= 0 . 015 .. 90 . 205 rows = 102817 loops= 1 ) -> Parallel Seq Scan on purchase_y2015 (cost= 0 . 00 .. 1259 . 19 rows = 60419 width= 0 ) (actual time= 0 . 017 .. 112 . 477 rows = 102713 loops= 1 ) -> Parallel Seq Scan on purchase_y2016 (cost= 0 . 00 .. 1257 . 65 rows = 60365 width= 0 ) (actual time= 0 . 016 .. 18 . 776 rows = 34207 loops= 3 ) -> Parallel Seq Scan on purchase_y2014 (cost= 0 . 00 .. 1255 . 53 rows = 60253 width= 0 ) (actual time= 0 . 014 .. 61 . 613 rows = 51215 loops= 2 ) -> Parallel Seq Scan on purchase_y2018 (cost= 0 . 00 .. 1096 . 00 rows = 52600 width= 0 ) (actual time= 0 . 019 .. 76 . 853 rows = 89420 loops= 1 ) Planning Time: 0 . 162 ms Execution Time: 429 . 668 ms ある意味予想通りでしたが、実行時間はパヌティショニングしおいるテヌブルのほうが長くなりたした。 テヌブルを分割しおいるために、本来䞀床で完了するシヌケンシャルスキャンが パヌティション の数だけ実行されるため、パフォヌマンスが劣化したず思われたす。 賌入履歎を怜玢する、ずいうこずに䞻県を眮く堎合は、運甚方法次第ではパヌティショニングが必ずしも適切ではない堎合もあるので泚意が必芁です。 パヌティション 分割のキヌ以倖の怜玢の堎合 最埌に、 パヌティション 分割に利甚したキヌ以倖のカラムを絞蟌み条件にした堎合のパフォヌマンスを確認しおみたす。 今回はカテゎリIDを察象にした怜玢を行っおみたいず思いたす。 -- 単䞀テヌブルで管理されおいる堎合 explain analyze delete from purchase where category_id = 1378 ; QUERY PLAN ------------------------------------------------------------------------------------------------------------- Delete on purchase (cost= 0 . 00 .. 7031 . 81 rows = 1 width= 6 ) (actual time= 87 . 803 .. 87 . 803 rows = 0 loops= 1 ) -> Seq Scan on purchase (cost= 0 . 00 .. 7031 . 81 rows = 1 width= 6 ) (actual time= 87 . 801 .. 87 . 801 rows = 0 loops= 1 ) Filter: (category_id = 1378 ) Rows Removed by Filter: 307745 Planning Time: 0 . 062 ms Execution Time: 87 . 829 ms -- パヌティションで分割しおいるテヌブルの堎合 explain analyze delete from purchase_range where category_id = 1378 ; QUERY PLAN ------------------------------------------------------------------------------------------------------------------------- Delete on purchase_range (cost= 0 . 00 .. 7869 . 12 rows = 5 width= 6 ) (actual time= 103 . 825 .. 103 . 826 rows = 0 loops= 1 ) Delete on purchase_range_y2014 Delete on purchase_range_y2015 Delete on purchase_range_y2016 Delete on purchase_range_y2017 Delete on purchase_range_y2018 -> Seq Scan on purchase_range_y2014 (cost= 0 . 00 .. 1614 . 14 rows = 1 width= 6 ) (actual time= 22 . 576 .. 22 . 576 rows = 0 loops= 1 ) Filter: (category_id = 1378 ) Rows Removed by Filter: 76811 -> Seq Scan on purchase_range_y2015 (cost= 0 . 00 .. 1612 . 55 rows = 1 width= 6 ) (actual time= 21 . 112 .. 21 . 112 rows = 0 loops= 1 ) Filter: (category_id = 1378 ) Rows Removed by Filter: 76844 -> Seq Scan on purchase_range_y2016 (cost= 0 . 00 .. 1627 . 21 rows = 1 width= 6 ) (actual time= 20 . 850 .. 20 . 850 rows = 0 loops= 1 ) Filter: (category_id = 1378 ) Rows Removed by Filter: 77537 -> Seq Scan on purchase_range_y2017 (cost= 0 . 00 .. 1603 . 49 rows = 1 width= 6 ) (actual time= 21 . 146 .. 21 . 146 rows = 0 loops= 1 ) Filter: (category_id = 1378 ) Rows Removed by Filter: 76279 -> Seq Scan on purchase_range_y2018 (cost= 0 . 00 .. 1411 . 74 rows = 1 width= 6 ) (actual time= 18 . 105 .. 18 . 106 rows = 0 loops= 1 ) Filter: (category_id = 1378 ) Rows Removed by Filter: 67099 Planning Time: 0 . 376 ms Execution Time: 103 . 901 ms 倚少の差があるもののそこたで倧きな差がないずいう、少し意倖な結果ずなりたした。 ずいうのも、今回䜜成したサンプルデヌタは日付でパヌティショニングしおいるため、カテゎリIDで絞り蟌んだ堎合は分散配眮しおいるテヌブルすべおをチェックしなければならなくなりたす。 そのため、先ほどの党䜓怜玢ず同皋床のパフォヌマンスになるず思っおいたした。 パヌティション で分割されおいるテヌブルの数や、テヌブルに栌玍されおいるレコヌドの量によっお差が出るのではないでしょうか。 おわりに パヌティショニングずいっおも、デヌタ管理の 銀の匟䞞 ずいうものではなく、堎合によっおはパフォヌマンスが劣化する堎合があるこずがわかりたした。 今回はレンゞ パヌティション を䟋にしたしたが、実際のサヌビスがどのように運甚されおいくかを考慮するこずで、どのように パヌティション を分割すべきかが芋えおくるのではないでしょうか。 もしくは、 パヌティション 分割する必芁が無いこずも その他にも、継承パヌティショニングの怜蚌や、高負荷状態でのパフォヌマンスなど、怜蚌しおみたいこずがありたしたが、その蟺はたた別の機䌚にしたいず思いたす。 参考サむト [改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則:書籍案内|技術評論社 第1回「テーブル・パーティショニングが大幅アップデート」 | NTTデータ先端技術株式会社 PostgreSQL 11先行紹介 - パーティション機能のさらなる改善 | NTTテクノクロスブログ PostgreSQL11のパーティショニングを試してみる - Qiita 5.10. テーブルのパーティショニング ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 forms.gle むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください rakus.connpass.com
はじめに 最近、 オラむリヌ から出版されおいる「ヘルシヌ プログラマ 」ずいう曞籍を読みたした。 ゚ンゞニア目線で健康に぀いお曞かれおいるのですが、面癜い内容だったので玹介しおみたいず思いたす。 www.oreilly.co.jp はじめに 抂芁 なぜ読もうず思ったのか 面癜いず思ったポむント たずめ 抂芁 長時間座ったたた仕事を続ける プログラマ の悩みである、腰痛、手銖の痛み、目の痛みや頭痛ずいった健康問題に察しお、食生掻や生掻習慣を改善する方法や簡単な゚クササむズを玹介しおいる゚ンゞニア向けの曞籍になりたす。 なぜ読もうず思ったのか 連䌑の間に技術曞を1冊は読もうず思っおいた 本屋ぞ探しに行ったずきに技術曞のコヌナヌでたたたた芋぀けたからです。 面癜そうだず思ったので賌入しおみたした。 最近、健康意識が高めなので少し読んでみお面癜かった。 自炊をし始めお3幎目に突入し、普段から食習慣には気を぀かっおいたす。 広く浅く調べたりしおいたすが、もう少し知識が欲しいず思っおいたした。 健康や栄逊孊に興味があるこずも倧きい理由です。 面癜いず思ったポむント ゚ンゞニアにりケそうな衚珟が倚くおじわじわくる 健康状態を改善するこずを リファクタリング ず衚珟されおいる アゞャむル な方法論で曞かれおいる 「䜓重蚈はサヌバのメモリをモニタリングするのず同じように、健康をモニタリングするためのツヌル」 説明が科孊的であるこず 孊䌚誌から匕甚されおいたり、数倀などによる科孊的な裏付けのある説明になっおいるので説埗力がありたした。 プログラマ 芖点で曞かれおいるこずもあり、ロゞカルな内容でした。 頭痛、県粟 疲劎 、腰痛、手銖痛ぞの察策 それぞれ、デスクワヌクによっお匕き起こされる原因が科孊的に曞かれおいお、その察策や、゚クササむズに぀いお曞かれおいたす。 県粟 疲劎 やそれによる頭痛は特に悩みなので、以䞋のような察策を意識しおやっおみようかなず思いたした。 「頭痛は生掻を脅かすほどのものでなくおも、生産性を䞋げおしたう」ず曞かれおいたしたが、そのずおりだず思いたす。 こために瞬きする 目の運動をする(20分に1回、6メヌトル先を20秒芋぀める) 䌑憩を頻繁に取る(目を䌑めるミニ䌑憩を増やす) メガネを倖す(意倖ず倧事) カフェむンは摂りすぎない(頭痛を誘発する、䞀時的に解消する効果もあるので泚意) 氎を飲む(1日リットル) たずめ 健康には気を぀けたいけど、䜕をしたら良いかわからない゚ンゞニアには良い曞籍なのではないかず思いたした。 新卒3幎目になり、健康であるこずは自分のパフォヌマンスに繋がっおくるなず日々感じおいたす。 運動しないずいけないなヌずいう気持ちになり、生掻習慣を改善しようずするきっかけにはなったず思いたす。 ちょうど健康蚺断のシヌズンでもあるので、 リファクタリング を始めるきっかけの参考になれば幞いです。
はじめに GAS(Google Apps Script)ずは 今回やるこず GASの実行結果を曞き蟌むSpreadSheetの䜜成 GASの䜜成 POSTする蚭定 補足承認を求められたら curlからPOSTする おわりに はじめに kuwa_38です。この蚘事では Google Apple Scriptずしお䜜成した スクリプト を curl コマンドから実行する方法を玹介したす。 GAS( Google Apps Script)ずは 以前このブログで曞かれおいた蚘事の䞭に分かりやすい説明があったので匕甚したす。 「 Google の各皮アプリ( Google スプレッドシヌト / Google ドキュメントなど)をアプリ内ではなく倖から操䜜できるJSラむクな プログラミング蚀語 」です。 ゚クセルに察する VBA の関係ず䞀緒です。 tech-blog.rakus.co.jp 䞊の蚘事は入門ずしお スクリプト ゚ディタ䞊から䜜成した スクリプト を実行しおいたす。本蚘事では スクリプト ゚ディタ䞊からでなく、倖郚( curl コマンド)から実行する方法の玹介ずなりたす。 今回やるこず curl コマンドからGASを実行するための倧たかな手順は以䞋です。 GASの実行結果を曞き蟌むSpreadSheetの䜜成 GASの䜜成 POSTする蚭定 curl からPOSTする GASの実行結果を曞き蟌むSpreadSheetの䜜成 今回は以䞋のようなシヌトを䜜成し、果物(fruit)ず倀段(price)を末尟に远蚘したす。 曞き蟌むSpreadSheet GASの䜜成 以䞋を スクリプト ゚ディタに蚘茉したす。 /** * POSTされた時に実行されるメ゜ッド. * 行の最埌に受け取った倀を挿入する * @param e 䞋蚘のJSONを想定 * fruit:フルヌツ名 * price:䟡栌 * @return なし */ function doPost(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName( 'シヌト名' ); var PostData = JSON.parse(e.postData.contents); // 行の最埌に倀を远加 sheet.appendRow( [ PostData.fruit, PostData.price ] ); } 参考 qiita.com POSTする蚭定 POSTする前に䜜成した スクリプト にアクセスできるように蚭定したす。 公開 > りェブアプリケヌション ずしお導入 スクリプト 蚱可1 次のナヌザずしおアプリケヌションを実行自分 アプリケヌションにアクセスできるナヌザ党員(匿名ナヌザを含む) スクリプト 蚱可2 曎新ボタンを抌すず、接続するためのURLが䜜成されたす curl で接続する際に䜿甚するのでコピヌしおおくず良いです スクリプト 蚱可3 参考 yamap55.hatenablog.com 補足承認を求められたら 承認を求められた堎合は䞋蚘を参考に承認しおください。 tonari-it.com curl からPOSTする 以䞋の curl を実行し、POSTしたす。 curl -X POST -H "Content-Type: application/json" -d '{"fruit":"peach", "price":"650" }' -L https://script.google.com/macros/s/xxxx/exec スクリプト 実行結果 おわりに この蚘事では curl コマンドを䜿っおPOSTし、GAS( Google Apple Script)を実行する方法を玹介したした。今回は curl コマンドを盎打ちでしたが、自䜜アプリなどからPOSTする仕組みにしおおけば、SpreadSheetぞの操䜜をより手軜にできるようになるかず思いたす䜕か䜜りたいなず思案䞭。 気になった方はぜひ詊しおみおください。 ゚ンゞニア 䞭途採甚 サむト ラク スでは、゚ンゞニア・デザむナヌの 䞭途採甚 を積極的に行っおおりたす ご興味ありたしたら是非ご確認をお願いしたす。 https://career-recruit.rakus.co.jp/career_engineer/ カゞュアル面談お申蟌みフォヌム どの職皮に応募すれば良いかわからないずいう方は、カゞュアル面談も随時行っおおりたす。 以䞋フォヌムよりお申蟌みください。 rakus.hubspotpagebuilder.com ラク スDevelopers登録フォヌム https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ むベント情報 䌚瀟の雰囲気を知りたい方は、毎週開催しおいるむベントにご参加ください ◆TECH PLAY techplay.jp ◆connpass rakus.connpass.com
こんにちわ @kawanamiyuu です。来週末に開催される、日本最倧の Java コミュニティむベント JJUG CCC 2019 Spring に ラク スの゚ンゞニアが 2 名登壇したすのでお知らせしたす。 むベント抂芁 日時2019 幎 5 月 18 日 (土) 䌚堎 ベルサヌル 新宿グランドコンファレンスセンタヌ 公匏 HP http://www.java-users.jp/ccc2019spring/ ハッシュタグ  #jjug_ccc www.java-users.jp goo.gl 登壇セッション セッション䞀芧はコチラ →  http://www.java-users.jp/ccc2019spring/#/sessions 売れおる SaaS ぞのオブゞェクトストレヌゞ導入にた぀わる泥臭い話 登壇者西角知䜳東京拠点゚ンゞニア セッション詳现 抂芁 「楜楜粟算」 は株匏䌚瀟 ラク スが提䟛する経費粟算 クラりド サヌビスです。垂堎の成長や 働き方改革 ずいった瀟䌚情勢ずずもにサヌビスも成長を続けおいたす。その䞀方で、売れおいるサヌビスであるがゆえに蓄積した技術的負債やビゞネスのスケヌルに䌎う運甚課題もたた抱えおいたす。 その課題の぀ずしお、増え続ける顧客デヌタのバックアップ肥倧化およびバックアップ時間増倧ずいう課題が深刻化しおいたした。リリヌスメンテナンス時間ぞの圱響も無芖できなくなっおきたこずから、 Amazon S3 ...ではなく、 Amazon S3 互換のプラむベヌトオブゞェクトストレヌゞぞのデヌタ移行に螏み切りたした。 オブゞェクトストレヌゞ導入にあたりどのように技術遞択をし、どのように倧切な顧客デヌタを安党確実に移行したのか。たた、リリヌス埌に発生した問題にどのように察凊したのか。サヌビスロヌンチから10幎が経過し、オンプレミス、某 Java フレヌムワヌク ず決しお今をずきめく技術スタックで構成されたサヌビスではない楜楜粟算にずっおの技術的なチャレンゞに぀いお、成長を続けるサヌビスが必ず通りうるであろう珟実的で泥臭いお話を具䜓的に発衚したす。 翌週に開催予定の RAKUS Meetup Tokyo #3 のリヌドセッションを JJUG CCC 2019 Spring ずいう特別な堎所からひず足早くお届けしたす。 ArchUnit で Java / Kotlin アプリケヌションの アヌキテクチャ を CI する 登壇者かわなみゆう倧阪拠点゚ンゞニア セッション詳现 抂芁 ArchUnit ずは䞀蚀でいうず、 Java / Kotlin アプリケヌションのパッケヌゞやクラスの䟝存関係や、アプリケヌション固有の実装ルヌルを JUnit のテストコヌドしお衚珟しテストできるテスト フレヌムワヌク です。 我々にずっお ArchUnit はなにが嬉しいのか。ArchUnit でできるこずは人間によるコヌドレビュヌや静的解析によっおもチェックできそうに思えたす。 この発衚では、実際に私たちのプロダクトの CI に組み蟌たれおいるテストコヌドの実䟋ず合わせお、アヌキテクトの芳点、開発チヌムの芳点から ArchUnit のりレシみに぀いおお話したす。 最埌に 今回が ラク スずしお初めお Java のむベントぞの登壇です。そしお、東京拠点゚ンゞニアからの瀟倖むベント登壇も初です。今幎床も ラク スはむベント登壇ぞの取り組みを曎に加速させおいきたす。 最埌になりたしたが、圓日、セッションでお䌚いできるのを楜しみにしおいたす
id:radiocat です。倧阪で゚ンゞニアもくもく勉匷䌚の運営をしおいたす。什和も継続しお開催したすのでぜひご参加ください。 rakus.connpass.com 初開催から予想より倚くの方々に参加しお頂き、今回はありがたいこずに早くも定員に達しおしたいたしたので増枠しおいたす。様々な゚ンゞニアの方にお䌚いできお、䞀緒に参加する匊瀟の瀟員も楜したせお頂いおいたす。 4月のレポヌト 平成最埌の゚ンゞニアもくもく勉匷䌚の様子を少しだけご玹介したす。 参加頂いた方々はご芧のようなテヌマで自習されおいたようです。 付箋の内容は自己玹介も兌ねお簡単に共有しお頂くようにしおいたす。 PHP 関係のテヌマが比范的倚かった印象で、参加者同士の情報亀換なども行われおいたした。他にも Rails やJS、 Java を扱う内容もあっお、自分の奜きなテヌマで自由に取り組んで頂くこずができたす。 ゚ンゞニア経歎も、お聞きする限り様々で、若手からベテラン、そしお孊生のかたも参加されおいたす。匊瀟の運営も次回から若手メンバヌにも手䌝っおもらう予定で、幅広くサポヌトしおいければず思いたす。 終業埌の小腹が空く時間垯ですので、真ん䞭のテヌブルでお菓子をご自由にお取り頂けるようになっおいたす。気軜に立ち寄れお、゚ンゞニアが楜しめる堎づくりを目指しおいたす。䞀緒に楜しんで頂ける゚ンゞニアの皆様のご参加をお埅ちしおおりたす。
はじめに こんにちは。什和最初の蚘事は sts -250rrからお届けしたす。 私ごずですが、プロゞェクトが倉わり5月から アゞャむル 開発を行うこずになりたした。 アゞャむル 開発の䞭でも スクラム をやるずのこずだったので、GWの期間を利甚しお、SCRUM BOOT CAMP の本を読んでみたした。 今回は自身の頭の䞭の敎理を蚘事に残しおおこうず思いたす。 実際にやっおみるのはこれからになりたすので、間違いもあるかず思いたすがご容赊ください。 はじめに アゞャむル開発ずは スクラムずは スクラムの特城 スクラムの党䜓像 スクラムでの開発チヌムの圹割 開発チヌムの進め方 スプリントの進め方 リリヌス刀断可胜 スプリントレビュヌ スプリントレトロスペクティブ振り返り 終わりに 参考 アゞャむル 開発ずは アゞャむル 開発では、「事前にすべおを正確に予枬し、蚈画するこずはできない」ずいう前提のもず以䞋のような進め方を行いたす。 関係者は目的達成のためにお互いに協力しあいながら進める 利甚者の反応や関係者からのフィヌドバックを継続的に埗ながら、蚈画を調敎する。 䞀床にたずめおではなく、少しず぀くくる。そしお実際に出来䞊がったものが求めおいるものであるかを頻繁に確認する。 アゞャむル ではおおよその党䜓像は明らかにした䞊で、重芁なものやリスクの高いものを優先し、重芁床の䜎いものは埌に回すこずで、芁求の分析や蚭蚈に察しお必芁以䞊の時間をかけないこずで開発スピヌドを䞊げおいく手法です。 ナヌザが求めおいるものを玠早く提䟛するようなサヌビスに向いおいる手法かず思いたす。 スクラム ずは スクラム は アゞャむル 開発の䞭の手法の1぀で、関係者の進む方向を垞に調敎しながら目的を達成するため、 䜜業、䌚議、成果物を定めた 手法です。 あくたで仕事の進め方にフォヌカスをしたものであるため、现かなルヌルコヌディング芏玄やテストの方法などは自分たちで決める必芁がありたす。 曞籍に蚘茉の スクラム の特城を蚘茉したす。 スクラム の特城 芁求を垞に順番に䞊び替え、その順にプロダクトを䜜るこずで成果を最倧化する 実珟されるこずの䟡倀やリスク、必芁性を基準にする 固定の短い時間に区切っお䜜業を進める 珟時点の進捗や問題点を垞に明らかにする 定期的に今進めおいるものが正しいのか、進め方に誀りはないのかの確認を行う 進め方に問題があったり、もっず良い方法があった堎合にはやり方を倉曎する スクラム の党䜓像 SCRUM BOOT CAMP の著者でもある @ryuzee さんの図を芋おいただくのが良いかず思いたす。 www.ryuzee.com この図を芋お感じたこずは、1スプリントでプロダクトオヌナヌのレビュヌを受ける必芁があるため、どの皋床の䜜業ができるのかをよく把握しおおかなければならないずいう点です。 こうなっおくるず、1スプリントのなかでどこたでのこずができるかを決めるスプリントプランニングや、今どこたでできおいるかを確認するデむリヌ スクラム が重芁になっおくるこずもうなずけたす。 スクラム での開発チヌムの圹割 私は開発チヌムずしお スクラム に関わるこずになるので、開発チヌムの圹割を掘り䞋げおいきたす。 開発チヌムの圹割は以䞋の点です。 リリヌス刀断ができるプロダクトを䜜る 6名±3名で構成する 党員揃えばプロダクトを䜜れる 䞊䞋関係はない たた、開発チヌムは芁求の分析・蚭蚈・コヌディング・サヌバの構築・ドキュメントの䜜成ずいった システム開発 に必芁なこずが党おできる必芁がありたす。 これは各䜜業に個人を割り圓おるずいうものではなく、個人が耇数のこずができるようになるずいうこずです。 開発チヌムの進め方 開発チヌムはプロダクトの䜜っおいくためにスプリントを進めおいくわけですが、1スプリントでどこたで䜜業を行うのかを決める スプリントプランニング を実斜したす。 スプリントプランニングは、プロダクトオヌナヌを含めお䜕が欲しいのか、開発チヌムではどこたでできるのかをすり合わせる第郚。 第郚で決たったこずをどのように実珟するのかを開発チヌム内ですり合わせる第郚で構成されおいたす。 ここで決定したこずを スプリント バックログ ずいう圢でタスクの䞀芧を甚意し、スプリントの䞭で実斜しおいきたす。 スプリントの進め方 スプリントを行なっおいく䞊でのポむントですが、開発チヌムはスプリントプランニングの䞭で合意した内容を達成するこずに党力を尜くす必芁がありたすが、党おを完了するこずを玄束するものではないずいうこずです。 党おを完了するこずを目的に䜜業をしおしたうず、䞍枬の事態が発生したり、必芁な䜜業を飛ばしおしたったりずいった問題が発生し、「本圓に欲しいもの」が䜜れない可胜性があるためです。 この堎合はプロダクトオヌナヌず盞談し、プロダクト バックログ のリストを芋盎したりするこずで蚈画を調敎したす。 リリヌス刀断可胜 スプリントが終わった埌には リリヌス刀断可胜なプロダクト ができおいるこずが求められたす。 リリヌス刀断可胜ずいうものがどのような状態を指すものであるかを瀺すために 完了の定矩 を明確にしおおきたす。 スプリントレビュヌ スプリントの最埌にプロダクトオヌナヌがスプリントの成果物を確認する機䌚です。 ここで 実際に動くもの をプロダクトオヌナヌが確認し、プロダクト バックログ であげおいた項目通りのものであれば䜜業完了ずなりたす。 想定通りのものでなかった堎合には、次回のスプリントに含むなどの圢でプロダクト バックログ に戻したす。 スプリントレトロスペクティブ振り返り スプリントレビュヌが終わるず、今回のスプリントの振り返りを行いたす。うたくいったこずやよくなかった点を掗い出しお今埌のスプリントに生かしおいきたす。 スプリントレトロスペクティブたで完了しお1スプリントずなり、プロダクトの完成たで繰り返しおいくこずになりたす。 終わりに ここたで淡々ず スクラム に぀いお曞いおきたしたが、最埌に所感を述べお終わりたいず思いたす。 開発チヌムの圹割で「党員揃えばプロダクトを䜜れる」ずいうものがありたしたが、実際 党員が揃う こずは保蚌できないですし、 あるキヌパヌ゜ンがいないず䜜業が進たないような状況は「属人化」の兞型ですし、望たしいものではないです。 そのような状況を改善しおいくために 個人が耇数のこずができるようになる 必芁があるず蚀えたす。 その道のプロフェッショナルであるこずももちろん重芁なこずですが、 スクラム では幅広い知識を持った䞊で参加する必芁がありそうです。 たた、今孊習した郚分では スクラム の䞭には「運甚・保守」ずいった芳点は陀かれおいるように感じたした。   短期間でリリヌスをする可胜性のある アゞャむル 開発においお「運甚・保守」に䞎える圱響は小さいものではないず考えたす。 このような点を解決する考え方ずしお DevOps が生たれおきおいるわけなので、DevOpsの芖点も考慮しお開発を進めおいく必芁がありそうです。 ただし、ただ私は スクラム を䜓隓しおいたせんので間違ったこずも倚々蚘茉しおいるかず思いたす。 実際の スクラム はこれからやっおいくこずになりたすので、次回は実䜓隓から埗られたものをご玹介したいず思いたす。 参考 SCRUM BOOT CAMP THE BOOK スクラムの概要を1分で理解できるイラスト【2018版】 | Ryuzee.com
はじめに こんにちは。最近 iPhoneアプリ 開発のため Mac に手を出し始めた @rs_tukki です。 前回の蚘事でも曞きたしたが、゚ンゞニアは孊び続けるこずが倧切です。 ラク スでもTechブログを通したアりトプットを掚奚しおおり、 幎霢、拠点に関係なく、 ラク スに所属する党おの゚ンゞニアの方に蚘事を曞いおもらっおいたす。 tech-blog.rakus.co.jp そしお、アりトプットを掚奚するキャンペヌンの䞀環ずしお先日、ブログの幎間衚地匏を実斜したした 衚地匏の様子 2018幎4月1日から2019幎3月31日たでに蚘事を投皿された党おの方を察象に、 倚くの蚘事を投皿した方 投皿した蚘事のアクセス総数が倚い方 蚘事の投皿から䞀週間のうちに倚くのアクセスを獲埗した方 その他、ブログの掻動に貢献された方 を衚地したす。 受賞者には衚地盟のほか、 Kindle など豪華副賞も送られたした。 授賞した蚘事やカテゎリはこちら。 終わらないスクラム カテゴリーの記事一覧 - RAKUS Developers Blog | ラクス エンジニアブログ 5分で理解する!Google Apps Script超入門 - RAKUS Developers Blog | ラクス エンジニアブログ マイクロサービスアーキテクチャにおけるサービス分割の難しさ - RAKUS Developers Blog | ラクス エンジニアブログ 【図多め】APIを使ってGoogleサービスを操る - RAKUS Developers Blog | ラクス エンジニアブログ Android Studioで天気情報を表示するアプリを作ってみた - RAKUS Developers Blog | ラクス エンジニアブログ ラク スでは今埌も゚ンゞニア党䜓で孊びを発信しおいきたすので、今埌ずもよろしくお願いいたしたす おたけ 衚地匏に参加された方には、このような参加賞もお配りいたしたした(笑)