Ponz Dev Log

ゆるくてマイペースな開発日記

Pythonによる新しいデータ分析の教科書 読了後感想

今回は自分にしては珍しいPythonの読書記事です。 データ分析と機械学習を使った予測モデル構築のお仕事をすることになり、 基礎練習として翔泳社から出版されている『Pythonによる新しいデータ分析の教科書』を読んだのでその感想になります。 Pythonによる…

メッセージング基盤のNATSを超ざっくり解説する

システム間を疎結合に保ちつつ非同期で通信しようとすると、必然的にメッセージング基盤が必要になります。 もしメッセージング基盤を手っ取り早く使うのであれば、クラウドベンダーのサービス、例えばAmazon SNSやGoogle Cloud Pub/Subを使うのが一番です。…

AWSによるサーバーレスアーキテクチャ 読了後感想

サーバーレスアーキテクチャのまとまった書籍ないかなと探して見つけた一冊を読んでみたので、感想を含めてメモ書きです。 AWSによるサーバーレスアーキテクチャ作者: Peter Sbarski,吉田真吾,長尾高弘出版社/メーカー: 翔泳社発売日: 2018/03/14メディア: …

ブラウザからREST APIでAmazon S3にファイルをアップロードするときに気をつけること

書籍『AWSによるサーバーレスアーキテクチャ』(翔泳社)を読み進めているときにS3のファイルアップロード関連でつまづいたところが多々あったので、気をつけるべきところとして手順と一緒にまとめます。 AWSに関わる動的な処理を全てJavaScriptで実装すること…

技術書典6 Knative本 読了後感想

実はタイトルの技術書展6には実は行けなかったのですが、 気になっていた本があったので思わずBoothでポチって読んで、手を動かした感想です。 感想を書く対象の本はこちらになります。 『Knativeの歩き方 KubernetesからServerlessを訪ねて』 toshi0607.boo…

Node.jsアプリでもAngularみたいにDIしながらアプリを作る

AngularではDependency Injection(DI)で自分で定義したServiceを各コンポーネントで使えるようにできます。Javaの世界でもSpring Frameworkを筆頭に、インターフェイスに対してどのような実装を紐づけるかをDIで実現しています。 ただ、、、サーバーサイドや…

Serverless FrameworkでKotlin & LambdaのサーバーレスAPIを作る

朝活.Kotlinで作ったServerless Framework × Kotlin × LambdaのサーバーレスAPIまとめです。 justincase.connpass.com serverless.com 概要 題材 松屋のメニューの写真をひたすら貼るSlack Bot. (ちょっとしたジョークアプリです) 上記のSlackBotのバックエ…

CloudWatch EventsからAWS Batchを叩くCfnテンプレートが書けないからCLI使う

CloudFormationテンプレートのYAMLファイルからAWS Batchを叩くCloudWatch Eventsのルール・トリガーを作ろうとしたらダメだったから代案としてCLIで作った話です。 CloudWatch Eventsのルールに対して、どのサービスをどのようなイベントに反応して/時間間…

JAWS DAYS 2019 参加レポート

日本のAWSユーザーグループであるJAWSが主催の "JAWS DAYS 2019" に行ってきました。お昼の時点で参加人数1,500人を超えていたこともあって、200人収容できるセッションでも立ち見が出るほどの盛況っぷりなのが印象的。 忘れないように会場で実際に聞いてき…

AWS Batchに渡したCommandがプログラムの引数に渡らない時はDockerfileを見よう

お仕事でも使ってるAWS BatchでCommandに渡した値がプログラム(Javaだとmain関数のargs部分)に渡ってこなくてハマった時の対象方法メモ。 AWSの公式ドキュメントが分かりずらいので、Dockerのドキュメントも参照しながら解決しました。 Commandとコマンドラ…

GCP Professional Data Engineer認定取得しました

GCP Professional Data Engineer認定試験に合格してきました! 認定取得にあたり、取得するまでのポイントや試験のことを書いておきます。 cloud.google.com 事前に準備したこと Coursera - 各サービスのコンセプトやらユースケースを細かく詳しくレクチャー…

BuildKitを使って docker build のビルド時間を半分以下にする

元ネタはAWS CodeBuildでBuildKitがサポートされたという話。 dev.classmethod.jp BuildKitとは、Docker v18.06から搭載された "次世代 docker build" のようです。BuildKitを使わないよりも圧倒的にビルドパフォーマンスが高くなる&セキュアにビルドできる…

GCP BigQueryチュートリアルお触りメモ

GCPのData Engineer認定試験に向けて、データウェアハウスに分類されるBigQueryのチュートリアルを一周したのとドキュメントを読み漁った時のメモです。最近メモ続きで今回はコードは一行も出てきませんが、試験直前に見直すために書き残します。そろそろパ…

JavaScriptの2次元配列の展開・重複削除・集約をLodashを簡潔に書く

2018年末に書いたSlack Botを少しリファクタリングした時の話。2次元配列と配列要素の重複削除ってよく使いそうで意外とベストなやり方ってよく分からないですよね。自分の場合は2次元配列は map と foreach、重複削除は Set オブジェクトで実装していました…

JavaScriptのクロージャって結局なんだよ

JavaScriptでは初歩的なコードでは現れないけれどふとした拍子に出てくる単語っていくつかいるような気がします。 特にカリー化、高階関数、クロージャ、ファンクターあたり。関数型プログラミングを進めていたら最初の方に出てきて戸惑ったのが クロージャ …

Gradleを使ってIBM Cloud Functions with Javaの関数を実装する

あけましておめでとうございます。新年一発目はサーバーレスです。 昨年はNode.jsしかほとんど触らなかったIBM Cloud Functions(OpenWhisk)をJavaで実装します。 ただし、公式のチュートリアルだと自力でgsonにCLASSPATH通してデプロイしてねと雑にしか書い…

2018年振り返りと2019年の抱負

今年の年末エントリーです。 2018年は部署異動があったおかげで、仕事環境も私生活もガラッと変わった1年でした。 心のゆとりができたこともあってジムに通い始めたり技術書読んだりと社会人1〜2年目の時にはできなかったことにも手を出せて初めて社会人楽し…

Trello APIとSlackで今週の頑張りをめちゃくちゃ褒めるボットを作る

モチベーション 仕事のタスク管理って基本めんどくさいですよね。僕はTrelloで仕事(+一部の業務外のToDo)のタスクを管理しているんですが、Trelloは期限やチェックリスト, コメント残しにカレンダーと機能が豊富でとても便利です。 ただ、年末の自分の評価シ…

AWS認定 デベロッパーアソシエイトに合格してきました

TL; DR 遅ればせながら、9月末にAWS認定 デベロッパーアソシエイト試験(2018/6リリース)に合格しました! AWS 認定デベロッパー – アソシエイト 認定取るためにとにかくサービスを弄り舐め回しましたし、普段は触らないであろうサービスに色々触るいい機会に…

AWSの各サービスを舐める (3) - Amazon S3

AWSのサービス舐めるシリーズその3。今回はS3です。 Kubernetesの検証の時にお世話になったので、今回はちょっとしたメモ程度で。 以前どんなことに使ったかは過去記事をご参照ください。 特徴と制約 レコードを格納するようなDBではなく、ファイル(CSV, JS…

AWSの各サービスを舐める (2) - DynamoDB

AWS舐めるシリーズその2。 今回はAmazon DynamoDBです。前回は文字ばかりだったので、チュートリアルを元にプログラム(Node.js)からも操作してみます。 docs.aws.amazon.com ちなみに、ローカルマシンのTerminalから弄るので、アクセスキーとシークレットキ…

AWSの各サービスを舐める (1) - IAM, EC2, RDS

今年の目標としてAWS 認定デベロッパー - アソシエイト(2018 June)を取ることを目標にしたので、 A CLOUD GURUのコースに沿って各サービスを舐めて回ることにしました。 気になるやつはGetting Startedをなぞって「へー( ˙꒳​˙ )」となるばかりだったので、…

AWS Lambda with Node.js を叩いてKubernetesにアプリをデプロイしてみる

Kubernetesへのアプリのデプロイ方法を検討したことがあったのでちょっとまとめてみる。 AWS CodePipelineからKubernetesにビルドしたDockerイメージをデプロイするときは、Lambdaでやるパターンがあるみたいですね。 aws.amazon.com また、ECSだとCodeDeplo…

Amazon EKSがGAになったので触った所感

AWSでKubernetesのマネージドサービス Amazon EKS がGAになりました。 今まではAWSでk8sをいじるときはkops経由でクラスターを作って、権限設定してと手間がかかっていましたが、EKSはどれくらい楽になるのかなという観点で触ってみました。 www.atmarkit.co…

npm v6が自動的に脆弱性を見つけるようになった

Node 10.0と合わせて自分のMacのnpmもv6にバージョンアップさせました。 色々いじってた時に脆弱性を教えてくれるようになったので、メモとして残します。 例えばnpm install でnodemonを入れると、以下のように脆弱性があるよと警告を親切に出してくれます…

Goで簡易Webアプリ作成&Dockerコンテナにまとめる

ご無沙汰してます。約2ヶ月ぶりの投稿になります。 ここ2ヶ月くらいは社内のイベント向けのアプリを作ったり、Kubernetes勉強会に参加して初めてAWS触ったり、コンテナ周りで新人向けに講師としてスピーカーやったりと技術(特にDockerコンテナ)漬けの日々を…

自分の勤怠状況を Kubernetes, Slack, Metabaseで可視化

システム構成はタイトル通りで、Slackから飛ばした出勤・退勤をKubernetesにデプロイしたアプリ経由でDBに登録して、 Metabaseから可視化したよって話。 タイトルだけ見ると、いや勤怠管理のアプリ使えよとなるかもしれない やったことと 狙いとしては、Dock…

MongoDBでのmongoとmongod以外のクライアントプログラム

DBって基本のクライアントプログラム以外にも、クライアントプログラムが入ってるって最近気づきました。 NoSQLのMongoDBも同じようなクライアントプログラムがないか確認しました。MySQLも同様にたくさんあるようですね。 今回はMongoDBのクライアントプロ…

ES6からのトランスパイルするときのBabel 7 対応

タイトル通り、Babelの話。 JavaScript書いていると、避けて通れないのがES6からのトランスパイル。 このとき使うデファクト・スタンダードになったBabelで最近つまづいたのでメモです。 ことの発端 MochaでES6のコードを実行させるために babel-core, babel…

Mongooseの処理が非同期であるのを忘れてはいけない(戒め)

Node.jsのMongoDBのORMといえば、Mongoose。APIドキュメントをよく読んで使用されている方ならお分かりかと思いますが、よく使う.save(ドキュメント保存)や.find (ドキュメント検索)といった処理は非同期で実行されます。 これ、意識してないと処理はあって…