サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
TGS2024
blog.mmmcorp.co.jp
こんにちは、福圓です。 冬休み中に個人的に欲しいと感じてとあるWebアプリケーションを作っていました。その時に作成したアプリケーションの構成をメモとしてブログに残しておきたいと思います。実際に作成したものと内容は異なりますが、構成としてはWebアプリケーションからデータベースにアクセスして取得したデータの一覧を画面に表示する、といったシンプルなものです。一度に全てを書くと若干長くなるので2回に分割して掲載したいと思います。 使用する言語やフレームワーク、RDBMSは以下の通りです。 IDEはIntelliJ IDEAを使用しております。 Java11(OpenJDK) Spring Boot MySQL5.7 プロジェクトの雛形を作成まずはプロジェクトの雛形を作成します。 IntelliJで開発している場合はメインメニューからファイル | 新規 | プロジェクトを選択し、Spring In
株式会社MMM(エムエムエム)は2019年1月にAmazon Web Services(以下、AWS)より、AWS Partner Network(以下、APN)アドバンスドコンサルティングパートナーの認定を受けたことを、この度お知らせ致します。 AWSパートナーソリューションファインダー MMM Co., Ltd. APNアドバンスドコンサルティングパートナーとは 『APN アドバンスドコンサルティングパートナー』は、AWSに関する営業・技術体制があり、AWSを活用したシステムインテグレーションや、アプリケーション設計・開発の実績が非常に豊富な企業が受けられるAWS公式のパートナー認定です。 APN コンサルティングパートナーは2019年1月時点で、レジスタード(Registered)、スタンダード(Standard)、アドバンスド(Advanced)、プレミア(Premier)という4
JavaScriptを使って、ブラウザ上で、p12ファイルからpemの書式で証明書と秘密鍵を取得してみます。 forgeの使用 以下、forgeというライブラリを使って実装してゆきます。ブラウザで読み込むには、以下のようにminファイルを読み込む必要があります。 const forge = require('node-forge/dist/forge.min.js'); p12ファイルを読み込み p12ファイルはブラウザで添付される想定ですので、まずは、以下のようにして、ファイルを解読可能にします。 // p12Bufferは、添付されたファイルをBufferに変換したもの const p12String = p12Buffer.toString('base64'); // base64からデコード const p12Der = forge.util.decode64(p12String)
トランザクション機能の検証 New – Amazon DynamoDB Transactions https://aws.amazon.com/jp/blogs/aws/new-amazon-dynamodb-transactions/ ついにDynamoDBがトランザクション機能がつきました。 この機能を使う場合は、以下のAPIを利用することになります。 TransactGetItems (読み取り) TransactWriteItems (書き込み) 今回は TransactWriteItems について検証してみました。 さっそくですが、以下のコードでロールバックされるか確認してみました。 func rollbackTest(svc *dynamodb.DynamoDB, tableName string) { _, err := svc.TransactWriteItems(&dy
西藤です。入社してからは3ヶ月が経とうとしています。1年で見ると4分の1ですか・・・。 まだまだ、新しい環境に「慣れた」とまでは断言できませんが、引き続き試行錯誤していき、日々向上していければと思います。 さて、今回は前職でのことを思い出しつつ、私がやっている資料作成の方法をご紹介しようかなと思います。 Markdownのドキュメントを印刷する時の難しさ 私は前職では社内のIT資源の管理などをする「情報システム部門」的な役割を担っておりました。 社内のPCやプリンターなどの機器の配備、そして各機器の使用方法のレクチャーなどをすることが多かったです。そのため、社内の人々に説明できるように機材の使用手順書を書き留める方法として、手早く書き出せるMarkdownベースでの記録を採用し、部署内で運用していた wiki システムに蓄積していました。 そして、機器の使用方法の解説の支援が必要となったと
TL;DR ユニットテスト/結合テスト=>Jest UIテスト=>Storybookをベースに、Jestで足りない部分を補う プロジェクトの技術スタック Nuxt.js Vue.js Vuex TypeScript Docker 目次 テスト種別の整理 簡単に、今回登場するテスト種別の整理をしておきます。より詳しくは、ググったり書籍を読んだりするのをおすすめします。 ユニットテスト - 個別の関数やクラス、コンポーネントをテストする。 結合テスト - 複数の関数やコンポーネントをつなぎこんでテストする。 UIテスト - ブラウザを使って見た目を含めてテストする。 ブラックボックステスト - 機能の実際の振る舞いをベースにテストする手法 ホワイトボックステスト - 機能のロジックや入出力をベースにテストする手法 これに加えて、フロントエンドのテストではブラウザ環境かNode環境かという違いも
先日、Yahoo!ジオシティーズが、2019年3月31日でサービス終了するとのことが公式サイトで発表された。 サービス終了のお知らせ - Yahoo!ジオシティーズ このニュースに対して、ネットでは、 「ジオシティーズが終わると大量の黒歴史が消える」 「たくさんの黒歴史が闇に葬られることになりそう」 「35歳周辺の人々、黒歴史がインターネットから消滅するのでホッとしてるのでは」 などの声が上がっていた。 【黒歴史】Yahoo!ジオシティーズがサービスを終了 「黒歴史しか残ってない」「ホッとしてるのでは」 : まとめダネ! そんな状況を見て、 21年も続いたサービスが終了しちゃうのは寂しい感じがするな。ふーん。黒歴史ねぇ……。 なんて思って見ていたのだが……。 あーーーっ!!そういえば、大学生の頃、ジオシティーズ使ってたわ!……まだ残ってたりするんだろうか…… と思い出してしまった。 それで
エンジニアの内山です。 最近、安城市周辺エンジニアを対象としたGo言語コミュニティを作りました。 10月にはもくもく会を実施する予定です。 ご近所の方は、よろしければ、ご登録お願いします。 https://anjo-go.connpass.com/ 概要 プロジェクトの途中で、新たにエンジニアが増えることがあると思います。 その時に、スムーズにキャッチアップしてもらえるように、環境を整備しておきたいと考えています。 そこで、自分自身がプロジェクトに途中参加した時に、どのようにキャッチアップしているのかを思い起こしてみました。 そうすることで、環境を整備する立場として、どういった施策を行えば良いか考察してみました。 1. システムの全体像を把握する プロジェクトに途中で参加した場合、まずは全体像を把握します。 全体像を把握していれば、プログラムを書く際にどのようなことを考慮すべきか、想像しや
※障害ですので、最低でも優先としました。 原因切り分け・原因調査 自社で運用保守しているシステムにおいて、他社様と関連している部分もあるため、まずは原因を切り分けるのが最初のステップとなります。 自社側のシステムに問題があるのか、ないのか切り分けを行います。 自社側のシステムに問題がない場合は、適切な連絡先に通知して待機となる場合もありますし、自社側での回避策が取れないかできないか検討する場合もあります。 自社側にシステムに問題がある場合は、引き続き原因調査を行います。 暫定対処の検討 原因調査の一方で、お客様にビジネス影響が出ている場合、原因がはっきりしない状態でもサービスの復旧のため暫定対処ができないかを同時に考えていくことが重要です。例えば何らかのリソース不足が発生している場合に、根本原因の解明は後回しで再起動で復旧を試みるなど。ただし、暫定対処が原因で別の二次障害が発生することもあ
概要 Terraformを使ってRDSとLambdaの環境を作ることがあったので書いてみます。 今回作るもの 最終的に、以下のような環境を作る想定です。 VPC privateサブネット RDS LambdaとEC2からのみ接続を許可 publicサブネット Lambda EC2(踏み台用) 社内sshからのみ接続を許可 Subnet まずはサブネットから作っていきます。 RDSのサブネットグループを作るのにprivateサブネットを2つ用意します。 resource "aws_vpc" "default" { cidr_block = "10.0.0.0/16" enable_dns_hostnames = true tags { Name = "your_project" } } resource "aws_subnet" "private_a" { vpc_id = "${aws_v
MMMサーバサイドエンジニアの柳沼です。好きなAZはap-northeast-1aです。 2017年11月8日に、AWS VPCの新機能 AWS PrivateLink が発表されました。 まあまあ地味な機能なのであんまり盛り上がってはいませんが、使い方を紹介します。 なにができるのか? 要するに、 インターネットに出ずにEC2からKinesisに繋ぐ EC2やELBのAPIをインターネットに出ずに叩く などのことが実現できるようになります。 EC2からAWS CLIを使用してAWSのAPIを叩く際、APIのリクエストのトラフィックはインターネットを通ります。そのため、インターネットゲートウェイがないとインターネットに出られず、APIが叩けない事になります。 しかし、PrivateLinkを使えば、インターネットに出ずにEC2のAPIを叩くことができるようになります。 今まではS3・Dyn
AWS認定ソリューションアーキテクト(アソシエイトレベル)(以下SAA)に合格したので、試験を受けるにあたって、特に重要だと思ったポイントを箇条書きで絞ってサービスごとにまとめてみようと思います。 こんな会社に所属しながらも、筆者ががっつり実プロジェクトで触ったことがあるAWSサービスはLambdaとS3くらいで、アプリケーションのコアとなる、EC2やRDS、VPCなどの知識はほとんどありませんでした。それを踏まえて以下をご覧いただけるといいかなと思います。 EC2 Amazon Elastic Compute Cloud (Amazon EC2) は、セキュアでサイズ変更可能なコンピューティング性能をクラウド上で提供するウェブサービスです。 EC2インスタンスファミリー 汎用 T M コンピューティング最適化 C メモリ最適化 X R 高速コンピューティング P G F ストレージの最適
AWS SAMを使う機会があったので、今回は、AWS SAMとGolangでのLambda関数の開発環境を紹介いたします。 AWS SAMテンプレート まずはAWS SAMのテンプレートファイル(template.yml)から作成してゆきます。 今回は、API Gatewayへのアクセスをイベントとし、シンプルにレスポンスを返すだけの関数を作成しようと思います。テンプレートは以下のようになります(Parametersに関しては後に説明します)。 AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Parameters: ProjectName: Type: String Stage: Type: String AllowedValues: - prod - stg Default: stg R
こんにちは、下條です。最近、Webアプリケーションのログ出力の指針について改めて考えてみる機会がありました。弊社ではインフラはほぼAWSを利用していることから、多少汎用的でない記述もありますが、ある程度まとまってきたことからひとつの指針として公開いたします。 はじめに システム開発をする際、ログ設計は非常に重要な工程です。 しかしながら、ログというものは実運用に入って障害などがあってからようやく役に立ってくるもので、開発時には意識が向きにくいという部分があるのも事実です。 ログを適切に出力し、最大限に活用することで、障害時の調査コスト減、システム運用コストを抑えたり、よりよいサービスを提供する手掛かりにもなります。 アプリケーションや開発言語・フレームワークなどにより例外もあると思いますので本ドキュメントはあくまでサンプルとしてご利用ください。また、本ドキュメントはサーバサイドWebアプリ
ここ最近できていなかった社内のAWS勉強会だったが、今週からまた再開している。 過去の勉強会についてのブログ記事は下記のとおり。 社内AWS認定試験対策勉強会 | MMMブログ 社内のAWS勉強会のまとめ | MMMブログ AWS放課後勉強会 | MMMブログ 今回は、AWSを普段業務で触っているメンバーと、AWSにそれほど馴染みがないメンバー(主にフロントエンドチーム)と2人1組になり、カリキュラムに沿って、IAM、VPC、EC2などの基本的なマネージドサービスを実際に触ってみて理解しよう、という試みを行っている。 フロントエンドチームもAWSの知識があった方が業務をする上で良いので、AWS勉強会を通じてAWSの知識を深めてもらって、できればAWSの認定試験に合格してくれると嬉しいなーと思っている。 今回は、その社内AWS勉強会で、EC2のコンソールを触っているところでチラッとだけ話題に
弊社では、基本的にどのプロジェクトでも CircleCI を利用して、 CI/CD を行っている。 ただ、お客様によっては、AWS環境で CI/CD も完結させたいというご要望もある。 今回は、普段 CircleCI で行っている CI/CD を、 AWS CodeBuild を使って行う場合の注意点をまとめてみる。 前提 今回の前提条件としては下記のとおりとなっている。 開発環境は、 docker-compose で、アプリ用コンテナ、DB用コンテナなど複数のコンテナを使って開発を行っている CircleCI でも、複数のコンテナを使って、テストをしている AWS CodeBuild でも複数コンテナを使ってテストをしたい AWS CodeBuild で複数コンテナ使いたい CircleCI 2.0 では、Using Multiple Docker Images に記載があるとおり、 I
こんにちは、下條です。今日はSQLの軽い (しかし重要な) 話題について書いてみようと思います。 まずは以下の通りユニークでない col カラムを含む test テーブルを作成し、データを投入するSQLをご覧ください。 (MySQLでの例です。) create table test(id INT, col INT); insert into test values(1,1); insert into test values(2,1); insert into test values(10,1); insert into test values(3,1); そして、以下の2つのSQLを実行した場合、結果はどうなるでしょうか?ここで何が言いたいかが分かる方はこの先は読まなくてかまいません。 select * from test order by col limit 2 offset 0; se
ちょっと煽りっぽいタイトルをつけてしまった下條です。ごめんなさい。 最近はてなブックマークに上がっていた記事 そろそろコードレビューそのものの必要性について考えるときがきているのかもしれない を読んで、弊社内でのコードレビューが効率的に機能しているのか、よりよいコードレビューやペアプログラミングのやり方がないか考える良い機会となりました。 どうも「diffに対して行単位でコメントをつける」というUIの方式は表面的でnitpickなレビューを誘発しているようにおもえてなりません。 これには私も同感する部分があります。 昔話になりますが、以前の会社では修正したソースコードのファイル全体を紙に印刷して対面レビューを実施するということを実施していました。その後現在の会社に入ってGitHubやBitBucketなどでのプルリクエスト (PR) レビューになった際に若干の違和感を感じた記憶があります。
Amazon Elastic Container Service (ECS) で、 squid でプロキシサーバー構築した際に、いろいろと考慮する点があったので、備忘録も兼ねてまとめてみる。 Docker のイメージは alpine Docker のイメージとしては alpine を使った。 やはりサイズが小さいのが良い。 イメージが小さいと、 docker push や docker pull が早いし、デプロイも早くなるから。 今回構築したプロキシサーバーのイメージも、6MBほどの小さいものとなった。 FROM alpine squid ユーザーをコンテナ内で使用 Dockerfile 内で、 USER として squid ユーザーを設定。 コンテナ内での、実行ユーザーを squid とした。 USER squid squid ユーザーに sudo 権限を付与 squid ユーザーに、
株式会社MMMの柳沼と申します。好きなリージョンは東京リージョンです。 弊社ではGo言語をプロダクションで使っています。 Go言語の特徴のひとつに、 goroutine を使って並列処理を容易に書ける、ということがあります。しかし、並列処理って同時にいくつ走らせればいいのか?について考えました。 まだ試行錯誤している最中で、内容に間違い・もっとこうするといいよ!などがあれば教えていただけると助かります。m(_ _)m また、実際goroutineを使った処理を実装するときはsync.WaitGroupを使うことが多いと思うので、記事内でもちょこちょこ使っています。 よく見るやり方 CPU数を使う、というのを割りとよく見ます(たぶん)。 func main() { fmt.Println("Start") loop("A") fmt.Println("Finish") } // ヘビーな処理
今回、あるプロジェクトで API Blueprint を使って、API仕様書を書くことになったので、 API Blueprint について調べていたのだが、 Dredd というAPIのテストフレームワークが便利そうだったので、 CircleCI で簡単なテストするところまで触ってみた。 Dredd は、 apiary.io が提供しているAPIのテストフレームワークで、 API Blueprint だけではなく、 Swagger にも対応している。 試してみた API作成 まずは Golang で非常に簡単な API を作成。 /message にアクセスすると、 Hello World!! が返るだけ。 package main import ( "fmt" "net/http" "os" ) func main() { http.HandleFunc("/message", index
re:InventでさまざまなAWSの新サービスが発表されましたが、機械学習モデルの開発、学習、メンテナンスのライフサイクルに使える、Amazon SageMakerもありました。また、Amazon Rekognition VideoやAWS DeepLens、Amazon ComprehendなどのAIサービスもいくつか発表されています。 機械学習導入への需要が高まる中、今回は、Amazon Machine Learningを実際に使用しながら、東京都の不動産の取引価格を予測してみたので、ご紹介させていただきます。 Amazon Machine Learningについて Amazon Machine Learningとは、データ解析の専門的な知識がなくても機械学習によるデータ分析が行えるAWSマネージドサービスです。データ統計やモデルの作成、評価、予測などで手間のかかる部分を自動化してく
先日、Serverlessconf Tokyo 2017に参加して、いろいろなサーバーレスアーキテクチャの話を聞き、 AWS Step Functions を使って複数の AWS Lambda を管理しているという話がいろいろと便利そうだったので、触ってみた。 Step Functions を使うと、Lambda のアプリケーションを一連のステップとして視覚的に定義し、複数の Lambda をワークフローとして管理することができるとのこと。 さっそくやってみた。 ステップ 1: ステートマシンに名前を付ける ダッシュボードの ステートマシンの作成 をクリック。 ステートマシンに名前を付ける。とりあえず、定番の Helloworld で。 ステップ 2: 設計図を選択する Lambda の結果による分岐ステップを試してみたかったので、 Choice ステート を選択。 ステップ 3: コード
弊社では、全員がリモートワークを行っているため、オフィスで業務している会社に比べて、情報共有ということがより重要なものになっている。 チームメンバーの姿が見えないため、ちょっと気になったことを気軽に声をかけて聞くことができなかったりするし、メンバーがタイムゾーンが違う海外で働く場合もあったりするので、なおさらだ。 そういうこともあって、弊社では『暗黙知を形式知にする』ということを重視していて、積極的に esa.io に情報をまとめて共有することを行っている。 私もよくチームメンバーに 「これ、esaにまとめておいてください」 「これは後でいいので、 してくださいね」 などとお願いしたりする。 今回は、納品するドキュメントとは別に、私がいつもどんなときに「esaにまとめておいてくださいね!」とお願いしているか、ちょっと振り返ってみたい。 その技術情報や設定などが他の案件でも使いまわせそうだと
AWS IoT + Amazon Rekognition/Polly + Raspberry Piで映像監視&音声通知システムをつくる [株式会社MMMが2017年度下半期に注力している技術領域(サーバーレス、IoT/AI、クラウドセキュリティ)](https://blog.mmmcorp.co.jp/blog/2017/10/10/Second_half_of_FY2017_MMM/#2.AWS IoT・Amazon AIを初めとした先進技術)という記事で紹介したが、AWS IoT + Amazon Rekognition/Polly + Raspberry Piを使って、映像監視および、異常検知を音声で通知(不審者を威嚇)するシステムをつくってみた。ここでは、その際の設計や情報をまとめてみる。 設計概要 全体的なサービス設計は以下のようになる。 簡単なフローを以下にテキストで記す。 R
MMMサーバサイドエンジニアの柳沼です。お世話になっております。 北海道はもうだいぶ寒いです。 弊社ではシステム監視用ミドルウェアDatadogを活用した監視サービスを展開しております。 ・クラウド運用監視(Datadog) その中で、異常発生時に電話通知をする必要があるのですが、繋がらなかった場合に次の担当者に電話をしたい、ただし繋がった場合にはそこまでで電話をストップしたいという要件があります。 今回はAWS Lambda上のPython2.7と、Twilioを使ってこれを実現することができたので、やり方を紹介させていただきます。 シンプルに電話をかける 公式の通り、以下のように架電ができます。 from twilio.rest import Client account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" auth_token = "
弊社ではスケーラブルかつポータブルなインフラ基盤を実現するため、各種サービスでDocker/ECSを運用しています。以下のぺージでその取り組みをご紹介しています。 ・Dockerコンテナ基盤(AWS Fargate/Amazon ECS) 最近、ECSでのインスタンスタイプの変更を行う機会が多くあり、手順をまとめてみました。ECSではデフォルトでAuto Scalingを利用するため、基本的にAuto Scalingのインスタンスタイプ変更に沿った形で行っていくことになります。ただ、適当にやると意外とハマります ^^; 今回ご紹介するのは、2インスタンスのクラスタ、Auto Scalingを利用している場合で、一時的に1インスタンスでの縮退運転が許される場合の手順となります。 まず、Auto Scalingでインスタンスタイプを変更する際の一般的な方法に沿って作業します。 1. Auto
Jenkinsのパラメータ設定 Jenkinsのパラメータは、全ジョブ全体のグローバルパラメータと、ジョブ毎のパラメータがあります。 それぞれで同じ名前を設定した場合は、ジョブ毎のパラメータが優先されます。 ケースによって、どちらかに値を設定します。 グローバルパラメータの設定方法 Jenkinsトップ -> Jenkinsの管理 -> システムの設定 -> グローバルプロパティの「環境変数」チェックボックス 「追加」ボタンをクリックして、設定したいパラメータを設定していきます。 ジョブ毎のパラメータの設定方法 Jenkinsトップ -> 設定したいジョブを選択 -> 設定 -> 「ビルドのパラメータ化」チェックボックス 「パラメータの追加」 -> 「文字列」を選択し、「名前」にキー、「デフォルト値」に渡したいパラメータを設定していきます。 Ansibleジョブの設定 次にAnsible実
合計16時間の試験勉強でAWS認定ソリューションアーキテクト プロフェッショナルを取得した話 2017.09.11 AWS AWS認定ソリューションアーキテクト, クラウド, 試験勉強 2017年ラストの川でのキャンプも無事終了し、本格的に夏の終わりを実感しているMMM代表の国本です。 昨今、AWSへの移行(マイグレーション)や、新規導入について商談の機会がますます増えつつあり、個人的に前々から取得を狙っていた『AWS 認定ソリューションアーキテクト – プロフェッショナルレベル』を2017年9月8日に無事?取得(合格)致しました。(晴れてAWS Certified Solutions Architect Professionalホルダーに) 資格取得を決意した2017年7月上旬より学習時間をざっくり記録していて、最終的にトータルで約16時間を要しましたが、簡単ではありますが、学習の方針や
次のページ
このページを最初にブックマークしてみませんか?
『デロイト トーマツ ウェブサービス株式会社(DWS)公式ブログ|』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く