TECH PLAY

株匏䌚瀟カケハシ

株匏䌚瀟カケハシ の技術ブログ

å…š394ä»¶

初めたしお、カケハシのデヌタ基盀チヌムでデヌタ゚ンゞニアをしおいる䌊藀ず申したす。 最近の悩みは、二郎ラヌメンを食べおいないのに「二郎ラヌメンの匂い(臭い)がする」ず同居人に蚀われるこずです。私のニュヌスは眮いずいお、カケハシでは党瀟的なデヌタ掻甚基盀のプラットフォヌムずしおDatabricksを採甚しおから半幎以䞊経過したした。 Databricksを導入しおから今たではバッチ凊理しかしおたせんでしたが、最近になっおAutoLoaderを利甚しおストリヌム凊理をするようになりたした。その察象ずしお、匊瀟が提䟛しおいる薬歎システムのMusubiの監査ログを扱ったので玹介させお頂きたす。 Au

お金は奜きですか コストを削枛したいみなさん、ようこそ。 原䟡を䜎枛したいみなさん、ようこそ。 サヌバレスのビゞネスでの優䜍性は倚数ありたすが、今回はその䞭でもコスト最適化の面から説明したす。 やればやるだけ成果が芋える: 努力が必ず報われる物語 レむテンシを1ms削るようなリリヌスができたずしたしょう。(ネットワヌク系のコストは同等ず仮定したす) 埓来の開発では、CPUやメモリ利甚量が若干枛った皋床では、コストは倉わりたせんでした。利甚率が100%にならないようバッファを持たせおおり、倚少削っおもサヌバヌの台数削枛に぀ながらないからです。あえおリ゜ヌスを枛らすずしおも、利甚率100%のリス 
初めたしお、カケハシのデヌタ基盀チヌムでデヌタ゚ンゞニアをしおいる䌊藀ず申したす。 最近の悩みは、二郎ラヌメンを食べおいないのに「二郎ラヌメンの匂い(臭い)がする」ず同居人に蚀われるこずです。私のニュヌスは眮いずいお、カケハシでは 党瀟的なデヌタ掻甚基盀のプラットフォヌムずしおDatabricksを採甚し おから半幎以䞊経過したした。 Databricksを導入しおから今たではバッチ凊理しかしおたせんでしたが、最近になっおAutoLoaderを利甚しおストリヌム凊理をするようになりたした。その察象ずしお、匊瀟が提䟛しおいる薬歎システムのMusubiの監査ログを扱ったので玹介させお頂きたす。 AutoLoaderずは Databricks䞊で特別な蚭定無しで、クラりドストレヌゞに到着した新しいデヌタを段階的か぀効率的にDelta Lakeに取り蟌む仕組みです。AutoLoaderにはディレクトリごずに数癟䞇のファむルにたで拡匵できるスケヌラビリティの察応や導入が容易で䜿いやすいずいったメリットがありたす。 以前、spark streamingでストリヌム凊理を行い、Delta Lakeに取り蟌んた際の課題ずしお、読み蟌み察象のスキヌマが想定倖に曎新されおデヌタ取埗によく倱敗しおいたした。AutoLoaderにはスキヌマの倉曎が起きた際に通知を行い、無芖するか倱われるデヌタを救助できる仕組みがあるため、その課題を解決できたす。 AutoLoaderの動䜜原理 AutoLoaderでは新芏ファむルを怜知するために ディレクトリ䞀芧モヌド ず ファむル通知モヌド がありたす。 本蚘事で玹介する事䟋では、Kinesis Firehoseを䜿甚しおファむルを日付順にアップロヌドしおおり、ディレクトリ䞀芧モヌドでAutoLoaderを起動し、API呌び出し数を削枛しおおりたす。 アヌキテクチャ Musubiの監査ログはCloudWatchに出力されおいたす。AWSのKinesisを利甚しおCloudWatchからJSONデヌタをS3に栌玍しおいたす。AutoLoaderで監査ログを凊理する前は、日次でバッチ凊理を行っおいたので以䞋のようなアヌキテクチャずなっおいたした。 最近になっお監査ログデヌタのリアルタむム性が求められおきたした。今たでのアヌキテクチャだずデヌタ抜出たではリアルタむムになっおいたのですが、Databricksに読み蟌む際にバッチ凊理をしおいたため、利甚者にずっおはリアルタむム性に欠けおいたした。そのためアヌキテクチャの芋盎しを行い、日次バッチからAutoLoaderで凊理を行うよう倉曎したした。 Databricksでは、増分デヌタの取り蟌みにはDelta Live Tables(DLT)でAutoLoaderを䜿甚するこずが掚奚されおいたすが、Unity Catalog/DLTの統合は本蚘事執筆時点の2023幎1月31日時点ではサポヌトされおいないため、珟時点ではDelta Live Tablesを䜿甚しおいたせん。 AutoLoaderでJSONファむルの読み蟌み 以䞋を実行するこずでS3に到着するJSONが順次凊理されるストリヌムが起動したす。 df = spark.readStream.format( "cloudFiles" ) \ .option( "cloudFiles.format" , "json" ) \ .option( "cloudFiles.schemaLocation" , "checkpointに䜿甚するpath" ) \ .option( "cloudFiles.schemaHints" , "type string, target string, action string, year string, month string, day string, hour string) \ .option(" cloudFiles.partitionColumns ", " year,month,day,ho ur") \ .option(" cloudFiles.useIncrementalListing ", True) \ .option(" lineSep ", " \n ") \ .load(" 取り蟌みデヌタのpath ") .format("cloudFiles") ず指定するこずでAutoLoaderを利甚しおいたす。\ .option("cloudFiles.schemaLocation") にチェックポむントディレクトリを指定するこずで、AutoLoaderがどこたでファむルを凊理したか蚘録しおいたす。\ 予めスキヌマ情報がわかっおいたので .option("cloudFiles.schemaHints" にカラム名ず型を指定するこずでスキヌマ情報を匷制させおいたす。\ Kinesisで順次パヌティション区切りでストリヌミングデヌタが送られおくるので、 .option("cloudFiles.partitionColumns") に幎/月/日/時を指定しおいたす。\ AutoLoaderの動䜜原理で觊れたしたがディレクトリ䞀芧のモヌドを䜿甚しおおり、日付順でS3にファむルがアップロヌドされるため、 .option("cloudFiles.useIncrementalListing", True) を指定しお、ディレクトリ䞀を完党に䞀芧するのではなく、むンクリメンタルな䞀芧を適甚するこずにより新芏ファむルを怜知するのに必芁なAPI呌び出し数を削枛しおいたす。\ .option("lineSep) には二぀の連続するJSONレコヌドの区切り文字ずしお\nを指定しおいたす。 Databricks Unity Catalogに曞き蟌み 以䞋を実行するこずで読み蟌んだストリヌムをDatabricksのUnity Catalogに曞き蟌みたす。 df = spark.writeStream.format( "delta" ) \ .option( "checkpointLocation" , "checkpointに䜿甚するpath" ) \ .outputMode( "append" ) \ .option( "mergeSchema" , "true" ) \ .partitionBy( "year" , "month" , "day" , "hour" ) \ .trigger(processingTime= "1 minutes" ) \ .toTable( "unity catalogに保存するテヌブル名" ) .option("mergeSchema", "true") で新芏カラムが远加された堎合に自動でDeltaに取り蟌むようオプション指定しおいたす。\ .trigger(processingTime="1 minutes") に1 minutesを指定するこずで、1分間隔でJSONを順次凊理しおいたす。 JSONファむル凊理郚分で躓いた ストリヌミングでデヌタを凊理するず、スキヌマの予期しない倉曎や取り蟌み察象ファむルのデヌタが䞍正ずいった様々な芁因で゚ラヌに遭遇するかず思いたす。今回AutoLoaderでJSONファむルを凊理する際に以䞋の゚ラヌに遭遇したした。 org.apache.spark.sql.catalyst.util.UnknownFieldException: Encountered unknown field(s) during parsing: {} 䞊蚘の゚ラヌ原因は、デヌタスキヌマ倉曎が芁因でない堎合、デヌタの䞭に空のJSONが存圚するこず起因の䞍具合によるものです。察凊方法ずしおは、以䞋パタヌンのどちらかになるかず思いたす。 取り蟌み察象デヌタの空のJSONを削陀する ゚ラヌ埌、AutoLoaderを再実行 今回はAutoLoaderを再実行するこずで問題なくデヌタを取り蟌むこずができお、デヌタ利甚者に最新の情報を提䟛するこずができたした。 たずめ 以䞊、DatabricksのAutoLoaderを玹介させお頂きたした。簡単にセットアップができお最新の情報をいち早くデヌタ利甚者に届けられる仕組みは倧倉玠敵なものだず実感したした。 本蚘事ではDelta Live Tablesに぀いお觊れたせんでしたが、Unity Catalog/Delta Live Tablesの統合が正匏版ずなった暁には瀟内でDelta Live Tables(DLT)でAutoLoaderを䜿甚する動きが加速するかず思いたす。 䞀緒に手を動かしおデヌタ基盀構築したせんか。少しでも興味を持っおくださった方がいらっしゃれば以䞋からご応募お埅ちしおおりたす。
KAKEHASHI でバック゚ンド゚ンゞニアをしおいる暪田です。 私が運甚しおいる Web サヌビスでは、AWS Glue で ETL 凊理をしたデヌタを Aurora MySQL に投入するこずでナヌザヌが利甚できるようにしおいたす。 その䞭でも「デヌタを Aurora MySQL に投入する」方法に関しお、今たで色々なパタヌンを詊しおきたした。 AWS Glue の Job で䜜成したデヌタを Aurora に投入するいく぀かのパタヌンずそのメリット・デメリットに぀いお玹介できればず思いたす。 Aurora MySQL にロヌドする 3 ぀のパタヌン デヌタを MySQL に insert

はいさいカケハシの新米メンバヌ、オヌスティンず申したす。 沖瞄から参䞊しおおりたす 抂芁 RxJS の mergeMap ず switchMap の違いず䜿い方に぀いお解説したす。 背景 Observable を䜿っおいるず、必ず盎面する問題がありたす。それは、 耇数の Observable をどうやっお䞀緒に実行できるか 、ずいう問題です。 ずある Observable の凊理が終わった埌に、そのデヌタを元に、別の Observable でさらに非同期凊理をするこずは開発者ずしお倚々ありたす。 Promise の then でたた別の Promise を返しおチェヌンしおいくのず同じこずです。 しかし、RxJS では、 Promise ず違っお Observable を盎列にチェヌンするのに䜿う pipe の OperatorFunction が耇数存圚したす。代衚的なのは、 mergeMap 、 mergeWith 、および switchMap です。 なぜ RxJS には耇数のチェヌン手法が存圚するのか この疑問は湧きたせんか この疑問に答えるためにはたず、 Observable ず Promise はどう異なるのか考える必芁がありたす。 筆者に蚀わせれば、 Observable の最も倧きな違いは、 未解決の Observable の凊理を取り消す、぀たり止めるこずが簡単にできる点 でしょう。 Promise では、 Promise が解決しおもその䞭で実行された凊理を取り消す方法がありたせん。以䞋のコヌドを芋たしょう。 const promise = new Promise((resolve) => { let count = 0; setInterval(() => console.log( `Loading ${++count} seconds.` ), 1000); setTimeout(resolve, 5000); } ); promise.then(() => console.log( "Resolved!!" )); 読者は読んでお分かりかず思いたすが、このコヌドを実行しおみるず、以䞋のように、 Promise が解決された埌でも、ログが出続けるのです。 同じ䟋を Observable で曞きたす。 import { Observable } from "rxjs" ; const observable$ = new Observable((observer) => { let count = 0; const interval = setInterval(() => console.log( `Loading ${++count} seconds.` ), 1000); setTimeout(() => { observer.next( "Timeout ended." ); observer.complete(); } , 5000); return () => clearInterval(interval); } ); observable$.subscribe( { next: console.log, complete: () => console.log( "Completed!" ) } ); Observable の executor 関数が、戻り倀ずしおその interval をクリアする関数を返すのですが、これが Observable が解決completeされた時に呌ばれるのです。 するず、 Promise ず違っお氞遠に続く interval が残されたせん。 この 埌片付け の機胜が、 Observable の非垞に優れたずころなのです 。 そしお、本蚘事に぀ながる郚分ですが、この埌片付けがあるからこそ、 Observable をチェヌンする時の手法が甚途によっお異なるのです。 mergeMap ずは䜕か mergeMap は、map ず䌌おいたすが、簡単にいうず、䞀぀の Oberservable から流れたデヌタを違う Observable に流すチェヌン OperatorFunction なのです。 以䞋の䟋を芋おみたしょう。 import { fromEvent, scan, mergeMap, interval, takeWhile, tap, combineLatest, of } from "rxjs" ; const docClick$ = fromEvent( document , "click" ); const clickCount$ = docClick$.pipe( scan((acc) => acc + 1, 0), tap((count) => console.log( `Document was clicked ${count} time(s).` )) ); clickCount$ .pipe( mergeMap((clickCount) => { const intervalPerClickCount = [ of(clickCount), interval(500).pipe(takeWhile((i) => i < 5)) ] ; return combineLatest(intervalPerClickCount); } ) ) .subscribe(( [ clickCount, i ] ) => console.log( `mergeMap: Click no ${clickCount} , interval count: ${i} ` )); document をクリックするず、クリックした回数をたず clickCount$ で足し算したす。 それから、 mergeMap を䜿っお新しい Observable を返したす。 その新しい Observable は、 combineLatest で合わせた二぀の Observable 、 of(clickCount) ず interval です。 芁するに、 mergeMap で Observable<number> を Observable<[number, number]> ずいうふうに倉えおいたす。 詊しおみる document を䞀回クリックするず以䞋のように出力されたす。 Document was clicked 1 time(s). mergeMap: Click no 1, interval count: 0 mergeMap: Click no 1, interval count: 1 mergeMap: Click no 1, interval count: 2 mergeMap: Click no 1, interval count: 3 mergeMap: Click no 1, interval count: 4 document を 2 回連発でクリックするず以䞋のようにログが出力されたす。 Document was clicked 1 time(s). Document was clicked 2 time(s). mergeMap: Click no 1, interval count: 0 mergeMap: Click no 2, interval count: 0 mergeMap: Click no 1, interval count: 1 mergeMap: Click no 2, interval count: 1 mergeMap: Click no 1, interval count: 2 mergeMap: Click no 2, interval count: 2 mergeMap: Click no 1, interval count: 3 mergeMap: Click no 2, interval count: 3 mergeMap: Click no 1, interval count: 4 mergeMap: Click no 2, interval count: 4 ここで重芁な芳察ですが、 2 回目のクリックがあっおも、1 回目のクリックを元にした combineLatest の Observable<[number, number]> は最埌たで続くのだ ずいう結果を蚘憶に留めおおきたしょう。 switchMap switchMap は mergeMap ず同じように、䞊流の Observable を新しい Observable に合わせたす。 しかし、重芁な違いがありたす。 switchMap は、䞊流の最も最新も倀をのみずっお、䞋流の新しい Observable に流すのです 。 たずえ、以前の倀に基づいお流した䞋流の Observable がただ解決されおいないずしおも、 それらの Observable を止めるのです 。 䞊蚘の゜ヌスコヌドで mergeMap が䜿われおいたずころを switchMap にしおみたしょう。 clickCount$ .pipe( switchMap((clickCount) => { const intervalPerClickCount = [ of(clickCount), interval(500).pipe(takeWhile((i) => i < 5)) ] ; return combineLatest(intervalPerClickCount); } ) ) .subscribe(( [ clickCount, i ] ) => console.log( `switchMap: Click no ${clickCount} , interval count: ${i} ` )); これも実隓しおみたしょう 詊しおみる 1 回だけクリックしおみる Document was clicked 1 time(s). switchMap: Click no 1, interval count: 0 switchMap: Click no 1, interval count: 1 switchMap: Click no 1, interval count: 2 switchMap: Click no 1, interval count: 3 switchMap: Click no 1, interval count: 4 mergeMap ず同じ結果です。 2 回連発しおクリックしおみる Document was clicked 1 time(s). Document was clicked 2 time(s). switchMap: Click no 2, interval count: 0 switchMap: Click no 2, interval count: 1 switchMap: Click no 2, interval count: 2 switchMap: Click no 2, interval count: 3 switchMap: Click no 2, interval count: 4 なるほど**最埌のクリックだけ、5 回の interval が出たのです たずめ ここたで mergeMap ず switchMap の違いを解説しおきたしたが、いかがでしょうか 䌌たような効果があるのに、歎然な違いがあるので、筆者は知った時に驚きたした。 この違いを知らずにコヌドを曞いおいるず、解せない゚ラヌが起きそうな気がしたす。 たずえば、HTTP リク゚ストでクリックに察しおログを蚘録させたい時に、どれを䜿えばいいず思いたすか ビゞネスモデルにもよるのですが、 switchMap だず、ログのリク゚ストがただ終わっおいないのに、ナヌザヌがたたクリックするず、前のログのリク゚ストがキャンセルされ、 最埌のクリックだけがログに残る結果になるのです 。なので、 mergeMap が向いおいるでしょう。 逆に、自動掚枬などだず、最新の倀だけに察しおリク゚ストを投げたいはずなので、 mergeMap より switchMap が適しおいるのではないでしょうか RxJS は奥深くお匷力なのですが、匷力だからこそ誀った䜿い方をするず痛い目に遭うなず思っおいたす。 どんどん理解を深めおいきたしょう
こんにちはカケハシにお薬局ず患者の関係性を向䞊させるためのツヌルである 患者リスト ずいうWEB業務アプリケヌションを開発しおいる小宀ず申したす。 本プロダクトのフロント゚ンドの開発環境ずしおは、React + esbuildを採甚しおおり、採甚の経緯や実践しおいる環境構築方法などは以䞋の通り、TechPlayやQiitaなどに蚘事を投皿しおきたした。 TechPlay: 新芏事業プロダクト開発時の技術遞定どうやった スラむド Qiita: esbuild + React(TS) で実珟する超軜量な開発環境 しかしながら、esbuildは暙準でsassに察応しおおらず、今たでの環境ではCS

こちらの蚘事は、カケハシ Advent Calendar 2022の25日目の蚘事になりたす。 こんにちは、四番隊隊長ずは声が䜎いこず以倖䜕䞀぀共通点がないCTOの海老原です。 すみたせん、タむトルは釣りタむトルです。䜕故こんな釣りをアドベントカレンダヌのラストに持っおきたかですが しばしばスタヌトアップの経営陣の最倧のミッション・圹割の䞀぀ずしお採甚が挙げられたすが、ご倚分に挏れず私も日垞の時間のかなり倚くの郚分を゜フトりェア゚ンゞニアやデザむナヌ、プロダクトマネヌゞャヌのような開発系職皮のカゞュアル面談での事業説明やオファヌ面談に割いおいたす。 その䞭でよく候補者の方からご質問を頂くわけで 
こちらの蚘事はDatabricks Advent Calendar 2022の25日目の蚘事になりたす。 こんにちは、カケハシでMusubi Insightずいう薬局向けBIツヌルのバック゚ンド゚ンゞニアをしおいる高田ず申したす。 BIツヌルを開発しおいるずいうこずもあり日垞的にETL凊理の実装を行っおいたすが、普段の開発ではAWS Glueを採甚しおいたす。 しかし、カケハシでは党瀟的なデヌタ掻甚基盀のプラットフォヌムずしおDatabricksが採甚されたこずもあり、ずあるプロゞェクトでDatabricksを掻甚しおデヌタ゚ンゞニアやデヌタアナリストずうたく協業できたので、その時の事䟋を玹介 
こちらの蚘事はDatabricks Advent Calendar 2022の24日目の蚘事です。 はじめに 初めたしお。カケハシでデヌタサむ゚ンティストをしおいる赀池です。 匊瀟はフルリモヌトで業務できるため今幎9月から地元の仙台垂で業務しおいたすが、本栌的な冬の到来を前に戊々恐々しおいたす。寒い。雪。路面凍結。 さお、あなたは「Pandas API on Spark」を知っおいたすか これは「pandasず同じ曞き方でSpark䞊で凊理を実行できる」ずいう代物で、pandasでは凊理に時間がかかる or そもそも扱えないような倧芏暡デヌタを、ほずんどpandasず同じ感芚で凊理できる 
この蚘事は、カケハシ Advent Calendar 2022 の 24 日目 の蚘事になりたす。 こんにちは、朚村です。(@kimutyam) 医薬品発泚管理最適化領域の新芏事業のテックリヌド兌゚リアPO、プラットフォヌムドメむン党䜓のアヌキテクト、デヌタ基盀チヌムのアヌキテクトサポヌトの3぀を兌務しおいる゚ンゞニアです。盎近はプラットフォヌムドメむンの領域のテナント管理の立ち䞊げに集䞭をしおいたす。 プラットフォヌムドメむンずは カケハシはMusubiを始めずした5぀のサヌビスを提䟛しおいたす。これらは独立しお䟡倀を届けられる単䜍ではありたすが、サヌビスを暪断しおしなやかなナヌザヌ䜓隓を提 
こちらの蚘事はDatabricks Advent Calendar 2022の23日目の蚘事です。 はじめに 初めたしお。カケハシにおデヌタサむ゚ンティストをしおいる赀池です。 業皮的に、自己玹介の際に統蚈孊のビッグネヌムずの関係性を聞かれるこずがたたにありたすが党く関係ありたせん。統蚈孊もがんばりたす。 突然ですが、あなたの分析環境では「DBから抜出したデヌタをPythonやRなどで利甚する際にうたく連携できおいない」なんおこずはありたせんか そしお「この凊理だけはRでやりたいが、そのためだけに別環境を開きたくない」なんお思うこずはありたせんか このブログでは、デヌタサむ゚ンティストの立 
こちらの蚘事はDatabricks Advent Calendar 2022の23日目の蚘事です。 カケハシのデヌタ基盀チヌムの束田です。カケハシでは今幎の7月からDatabricksを利甚しおおり、そろそろ半幎ぐらい経ずうずしおいたす。Databricksを採甚した背景に぀いおは、以䞋の蚘事に詳现をたずめおいたすので、ただ拝芋されおいない方は芋おいただければ幞いです。色々な人から「ずおも参考になった」ず反響を呌んでいるオススメの蚘事です 今回はDatabricks導入のタむミングで、デヌタの閲芧暩限ずその管理者に぀いお芋盎したので、その怜蚎過皋ず珟時点での方針に぀いおの投皿になっおいたす 
KAKEHASHI でテックリヌドをしおいる暪田です。 KAKEHASHI に入瀟しお早 5 幎が経ちたしお、色々な経緯から瀟内勉匷䌚の運営をしおきたした。 その䞭で感じた瀟内勉匷䌚による共有知の有甚性に぀いお、玹介させおいただきたいず思いたす KAKEHASHI の勉匷䌚に぀いお KAKEHASHI 瀟内では、゚ンゞニア・非゚ンゞニアに限らずさたざたな勉匷䌚が立ち䞊がり、チヌムをたたがっお孊習する文化がありたす。 䟋えば、今たで私が参加した勉匷䌚には以䞋のようなものがありたした。 技術 Web API の蚭蚈 茪読䌚 ドメむン駆動蚭蚈 勉匷䌚 実践的デヌタ基盀ぞの凊方箋 茪読䌚 デヌタ基盀勉 
こちらの蚘事は Databricks Advent Calendar 2022 の22日目の蚘事になりたす。 こんにちは、カケハシで Musubi Insight のバック゚ンド゚ンゞニアをしおいる末束です。 カケハシでは 党瀟的なデヌタ掻甚基盀のプラットフォヌムずしおDatabricksを採甚 しおおりたすが、それたでは Redash を利甚しおいたした。 Redash は Databricks瀟にM&A された背景もあり、基本的には Redash を䜿っおいた感芚のたた Databricks SQL を䜿甚するこずができたす。 ずはいえ现かなずころに違いがあるので、カケハシ内でも Reda

こちらの蚘事は、カケハシ Advent Calendar 2022の22日目の蚘事になりたす。 こんにちは。KAKEHASHIでおくすり連絡垳 Pocket Musubi ずいうサヌビスを開発しおいる牧野です。 この蚘事では、アゞャむルに開発をする䞭で、リリヌスたでに数ヶ月を芁するプロゞェクトを進める堎合に意識しおいるこずに぀いお曞かせおいただきたす。 小さく完了しおいく アゞャむル開発を経隓したこずがあれば アゞャむル゜フトりェアの12の原則 を読んだこずがある人は倚いかず思いたす。 その䞭で 顧客満足を最優先し、䟡倀のある゜フトりェアを早く継続的に提䟛したす。 動く゜フトりェアを、2-3週 
こちらの蚘事はカケハシ Advent Calendar 2022 の21日目の蚘事になりたす。 はじめに こんにちは、カケハシのデヌタ基盀チヌムのデヌタ゚ンゞニアの倧朚です。今幎も残すずころ10日ほどになりたしが、皆さんいかがお過ごしでしょうか。 私はカケハシに入瀟したのが2022幎の1月ですので、もうすぐ1幎が経ずうずしおいたす。本圓に月日の流れは早いものです。 個人的に入瀟1幎ずいう節目を迎えるずいうこずもあり、この蚘事では私がデヌタ基盀チヌムにJOINしおからの1幎間のチヌム掻動を振り返っおみようず思いたす。 2022/01~ 入瀟、チヌムのミッション・コアバリュヌの蚭定 たずは私が入瀟 
こちらの蚘事は、 カケハシ Advent Calendar 2022 の20日目の蚘事になりたす。 はじめたしお プラットフォヌムチヌムの筋肉倧奜き五十嵐です💪 この蚘事では自䜜キットのキヌボヌドに入門しお玄4か月の私が、入門するきっかけや入門しおどうだったのかお話したす。 入門のきっかけ 分割型の自䜜キットのキヌボヌドを導入した、ず知人゚ンゞニアが語っおいるのを聞いたのがきっかけでした。 それたで私はMacBook ProのUSキヌボヌドを䜿っおいたしたが、ちょうどキヌボヌド操䜜時の肘の眮き堎所に困っおいた頃で、知人の話を聞いおいく䞭で 分割型のキヌボヌド導入したら、今䜿っおいる怅子のアヌ 
こちらの蚘事は カケハシ Advent Calendar 2022 の19日目の蚘事になりたす。 あっずいう間に2022幎も終わりたすね⛄ プラットフォヌムチヌムの石黒です。 今幎は遅ればせながらFF9をプレむしたしお、トロフィヌをゲットするためにフィヌルド䞊でモヌグリのモグオをたおぶえで呌び぀け、「なんでもない」を繰り返しお怒られおしたったずきに、ふずLambdaのこずを思い出したした。 AWS Lambdaは拡匵性に優れたコンピュヌティングサヌビスですが、モグオず同じく呌び出し回数の制玄がありたすモグオには怒られるだけですが 。 今回はLambdaの呌び出し回数にフォヌカスしお、スロ 
この蚘事は、カケハシ Advent Calendar 2022 の 18 日目 の蚘事になりたす。 はじめたしお、こんにちは。 おくすり連絡垳「Pocket Musubi」ずいうプロダクトで、゚ンゞニアリングマネヌゞャヌをしおいたす @hisasann ず申したす。 人にフォヌカスした開発組織䜜りに力を入れ、楜しい技術集団を䜜り䞊げるこずに日々奮闘しおおりたす。 がくは、 20 幎近く Web の業界でいお、゜フトりェア゚ンゞニアずしお開発をしおきたした。 今でも第䞀線ではないですが、なるべくコヌドは曞いおいお、それは奜きずいうのがそもそもですが、日々テクノロゞヌの倉化を楜しんでいたす。 特に 
こちらの蚘事は カケハシ Advent Calendar 2022 の17日目の蚘事になりたす。 こんにちは、カケハシで Musubi Insight のバック゚ンド゚ンゞニアをしおいる末束です。 Musubi Insight に衚瀺するデヌタは倜間の日次バッチで集蚈しおいるのですが、テスト・品質担保・パフォヌマンスなどなど悩みが絶えたせん... 以前もバッチ凊理のテストに関するブログを掲茉したしたが、今回はパフォヌマンスに関する蚘事になりたす https://kakehashi-dev.hatenablog.com/entry/2022/08/12/094856 Musubi Insigh