2020-02-01から1ヶ月間の記事一覧

CloudFormationテンプレートを書いてスタックを作成する方法初級

CloudFormationのテンプレートを作成するとき、 はじめての人は何をすれば良いのかがよくわからない気持ちになるものです、たぶん。 なのでテンプレートについての簡単な解説を。。。 CloudFormationについて CloudFormationとは、AWSのリソースを簡単に構築…

SAM CLIでサーバレスアプリケーションを作ってみる【API Gateway + Lambda + DynamoDB】

SAM CLIでAPI Gateway + Lambda + DynamoDBを使う AWSでのサーバレス構築を考えた時に最も無難でポピュラーな構成(悪く言えばあまり面白みのない)として挙げられる、 API Gateway Lambda DynamoDB の構築を、SAM(Serverless Application Model) で行います…

CodePipelineでS3にデプロイしてCloudFrontでコンテンツを配信する

CodeStarでさくさくCI/CD作りもいいのだが、とりあえず一旦はCodeCommitからDeployまでCodePipelineで連携する方法を理解しておこうと思ったので、軽く試してみた。 CloudFrontで配信するところまでやってみる。 やること CodePipelineを利用して、CodeCommi…

ReactとReduxで複数のReducerを組み合わせてみる

簡単な機能を実装する場合にはreducerは一つだけでも問題はないですが、 機能が増えるとreducerをモノリスにしておくわけにもいかなくなります。 複数のreducerを機能別に分けて使うにはreduxのCombineReducersを使う方法があります。 使い方のまとめとして…

API GatewayとLambdaとDynamoDBでサーバーレス環境を構築する

API Gateway + Lambda + DynamoDB = Serverless AWSでサーバーレスを構築するアーキテクチャを考えた時に、もっとも基本的でわかりやすい構成は、API Gateway + Lambda + DynamoDB(ないしはS3)の組み合わせだと思います。 このエントリーで触れること Lambda…

Gormでトランザクションを実装する

Gormでトランザクションを利用する時の覚書。 DBとの接続およびトランザクションの開始 以下ではTranscation関数を定義し、その中でCRUDの処理を実行するようにしている。 そして、deferでは最終的にTransaction関数から返ってきたerrがnilかどうかを見てロ…

Amazon ECSにGoサーバとMySQLのコンテナをデプロイする

Elasctic Container Service Dockerコンテナをいい感じにさばいてくれるコンテナオーケストレーションサービスです。 GoのEchoで作ったサーバとMySQLがやり取りする構造を作りたいとき、ECSでどのように実現すれば良いのか調べてみました。 変なことを書いて…

ReactとAmazon Cognitoで認証機能を作ってみる

Amazon Cognitoを使ったのでその覚書ついでに:pencil2: 細かい説明とかはないです:relaxed: ユーザー管理機能を設定する前に Amazon Cognitoでユーザーを管理できるようにしますので、とりあえず、Reactのアプリを作成します。 $ npx create-react-app react…

EC2のNodeサーバーと連携するReactクライアントをS3にデプロイしてみる

AWS Summitに参加してからAWS関連でなんかしたいなあと思っていたので、 S3にReactで作ったクライアントを、EC2にNodeのサーバーを置いて、 簡単にアプリをデプロイしてみます:desktop: 以下の準備が整っていることを前提とします。 ・Reactでクライアントア…

styled-componentsで再利用可能なグリッドレイアウトを作る

やること Reactでコンポーネントを組み立ててUI作っていくのも楽なんですが、 styled-componentsでグリッドレイアウトのコンポーネントを作って、 それらを組み合わせて使うと非常に楽だということに気がつきました。 一度作ったやつを取っておけば再利用す…

Goのmgoで$lookupと$projectを使って結合したデータを取得する

mongoDBでの結合とフィルター mongoDBはドキュメント型のNoSQLですが、左外部結合ができます。 で、左外部結合したうえでフィルターにかけ、要求されたデータを返すことができます。 前半の説明は以下のページを参考にしています。 Mongodb Join on _id fiel…

React HooksでReducerを使ったグローバルステイト管理

Reduxを使わずに、useReducerなどの機能だけを用いてReactでグローバルに値を管理します。 コーディングはTypeScriptでやります。 reactのプロジェクト作成 TypeScriptでReactのプロジェクトを作るなら、 create-react-app my-app --typescript こいつを一発…

Reactで無理やり関数コンポーネントの親子間のprops受け渡しをしてみた

Reactで親コンポーネントから子コンポーネントへ値を渡すのは以下のようすれば十分だったが、子コンポーネントから親コンポーネントに値を渡す方法がわからなかったので調べてみた。 import React from 'react'; const App = () => { const greeting = 'Hell…

GoでGraphQLのMutationを実装する

このエントリーではGolang + MongoDBでGraphQLを使ってみるに書きつぐ形で、GraphQLのMutationについての説明を行います。 一度改めて、まとめを兼ねたGraphQLの説明をします。 GraphQLとは GraphQLでは、これまでRESTfulで作ってきたように複数のエンドポイ…

GoとMongoDBでGraphQLを使ってみる

GraphQLとは すでに紹介されている記事があるので、その辺を参考にしてみてください。 GraphQL入門 - 使いたくなるGraphQL アプリ開発の流れを変える「GraphQL」はRESTとどう違うのか比較してみた GraphQLはRESTの置き換えではない GraphQLは何に向いている…

TruffleとVue.jsとTypeScriptでブロックチェーンアプリを作ってみる

自分の備忘録としてDappの作り方の手順をまとめてみました。 最近やり始めたので間違いもあるかもしれません。ご承知ください。 環境構築 Macでやっています。 solidityのインストール $ brew install solidity truffleのインストールとプロジェクトの作成 $…

Vue.jsとExpress.jsでSPAを作ってみる

フロントエンドにvue.jsを利用し、バックエンドにexpress.jsを利用しました。 前提 私の環境ではそれぞれのバージョンは以下のようになっています。 一応OSはmacOS mojave バージョン10.14です(2019年1月の時点での状態です)。 $ node -v v10.1.0 $ npm -v…

Azure FaceAPIでアイドルの顔を見わけさせる

Azure FaceAPIの利用 AzureのFaceAPIを利用するには、まずAzureにアカウントを作成しなければなりません。 アカウント作成は無料で行えます。 https://azure.microsoft.com/ja-jp/ 登録後、ポータルへ入り、リソースの作成を行ます。 AI + Machine Learning…

Express.jsサーバでSequelize.jsを使ってMySQLデータベースとやりとりさせる

Nodeにはrailsのようにデータベースを管理できるモジュールであるsequelizeがあります。 expressで開発をやっていると、railsがどれだけ便利だったのかを思い知らされますね笑 expressでアプリケーション開発 https://gist.github.com/mitsuruog/fc48397a8e8…

Express.jsとMySQLを使って認証機能を実装する

expressでは、passportの認証機能を利用するのが便利です。 twitterやfacebookなどとも連携できます。 ここではローカルでの認証について、アウトプットとしてまとめました。 expressアプリの作成 # terminal $ npm install -g express-generator $ express …

Nuxt.jsで簡単なログイン機能をつくってみる

nuxt.jsでアプリを開発する案件があり、勉強することになったのですが、結局はnode.jsのexpressで開発することになったので、nuxtの知識を応用することがあまりできませんでした。 でもせっかく勉強したのでここら辺で一旦、気楽にアウトプットしておきたい…

Rubyのアラウンドエイリアスとメソッドラッパー

アラウンドエイリアス Rubyでは、メソッドにエイリアス(別名)をつけることができます。 # sample.rb class Sample def sample_method "abcdefg" end alias_method :old_sample, :sample_method end obj = Sample.new puts obj.sample_method # => "abcdefg…

RubyのブロックとProcとLambdaについて

Rubyをはじめると、ブロックとかProcとかLambdaとか、 みんな似たような雰囲気をしているから、うまく理解しづらいですよね。 復習も兼ねて、余計な説明抜きで、ブロック・Proc・Lambdaについて説明していきます。 ブロック ブロックはクロージャです。 です…

Rubyのスコープとクロージャ

Rubyで、スコープとクロージャについてまとめてみました。 スコープとは スコープとは、プログラム1行1行が住んでいる環境のことです。 # sample.rb x = 1 def calc x += 1 end puts calc # => undefined local variable or method "x" 上の例では、トップ…

instance_evalとclass_evalについての備忘録

メタプログラミングRubyを読んで書いています。 ちょっとした備忘録です。 instance_evalとclass_evalの挙動の違いについて。 instance_evalとは何か? instance_evalは、オブジェクトの特異クラスにインスタンスメソッドを定義したり、そのオブジェクト自身…

RSpecでRailsアプリのコントローラーをテストしてみる

前回はRailsアプリのモデルテストについて書いたので、 今回はコントローラーのテストについて説明していきます。 コンローラースペックを書き始める 早速、コントローラーのテストを作成していきたいと思います。 # terminal $ rails g rspec:controller pi…

RSpecでRailsアプリのモデルをテストしてみる

railsであまりテストができていなかったので、rspecを学びました。 長々としていますが、あくまで初めてRSpecを触る人を意識して書きましたので、割と噛み砕いたつもりです。 まだまだ勉強中なので、問題点があれば、ご指摘ください。 RSpecの用意 # gemfile…

メタプログラミングRuby(動的ディスパッチと動的メソッド)

メタプログラミングRubyを読んだので、復習を兼ねて書きます。 問題点があればご指摘ください。 動的言語と静的言語 動的言語の例としては、 Ruby Python Perl など。 静的言語の例としては、 Java C Golang など。 違い1 動的言語は変数の定義時に型を宣言…