2016これが最高にロックでパンクで面白かったです。「えっ?なんすか?」みたいな顔でかごにそっとさつまいもを入れていたのも最高でした。弊社は採用活動を活発に行っています。その一環として、最近弊社ホームページのリクルートサイトを刷新しました!recruit.misoca.jp刷新前はWordPressの固定ページで作っていたのですが、刷新したものはS3に配置してホスティングしています。リクルートサイトにはエントリーフォームがあります。S3だけではエントリーフォームを作ることは出来ませんでした。そこで採用チームから何とかしてほしいと頼まれたのですが、Misocaではサーバサイドエンジニアが枯渇しているためたまたま手が空いていたサーバ全くわからないマンの僕が対応することになりました*1。Lambdaサーバレスというワードと一緒によく聞くLambda。aws.amazon.comこれを使えばサーバの管理をすること無く、任意のコードを実行できる!とのこと。これにJS(Node.js)かPython、Javaでコードを記述できます。4.3)でコードを書くことにしました。Lambdaを作るときにBluePrintというLambdaの設定例がいくつか出てきます。わからないので、HelloWorldがあるんじゃね?ってことで検索したところありました*3。いうことで「hello-world」や他のBluePrintを参考にこう書くのかと雑に認識をしました。install等で任意のパッケージを入れた後それらをzipでアップロードしないといけなくて、この時代に何故...という気持ちになりました。Gatewayを使います。aws.amazon.comこれを使うことで、入力されたデータをLambdaや他のサービスに渡すことができます。Lambdaにつなぐことができました。一つ問題がありました。エントリーフォームで添付した履歴書などのファイルが壊れてしまい、開くことができず辛い思いをしました。Amazonさんに問い合わせたところ、バイナリデータの入力は対応中とのことでした。これを回避するためにフロントでファイルをbase64エンコード*4し文字列でPOSTするようにしました。内でデコードしてやれば壊れること無く扱うことができました。SESを使ってメールを送信します。ファイル添付がわかりませんでした。ドキュメントみても特に書いてなさそうです...。JavaScript困りました。ドキュメントをもう少し眺めてみると、メールをrawデータにしてsendRawEmailで送ればできそうでした。JavaScriptなのでnpmパッケージにmailcomposerというのがあるのでそれを使ってrawをつくります。github.comこれを使うことで問題なくファイル添付もできました!はまったポイントフォームでファイルを添付してPOSTするにはformタグにenctype="multipart/form-data"とつけなければなりません。するとmultipart/form-dataというデータがわたってきます。これをパースしてやらないといけないのですがそんなライブラリはありませんでした。requestにモックして、formidableというパッケージを使うことでパースすることができました。function(){};って言うコードが入っててすごく面白かったです。Gatewayでファイルが壊れてしまうので無駄に時間を浪費して終わったということになって悲しかったです。実際に動いているのがこちら!エントリーフォーム|Misoca採用情報サーバレスの息吹を体感してみたい人は送信してみるといいと思います!おまけで弊社のオフィスを見学できる権利もついてきます!ということで、サーバ全くわからないマンがサーバをレスしてエントリーフォームをつくった話でした。Misocaでは新しい技術をどんどん取り入れています。そんなMisocaではサーバサイドエンジニアを募集しています。サーバレスを活用したいエンジニアも募集しています。recruit.misoca.jp*1:ネタです。笑ってください*2:ネタです。2020の1日目の記事です。docker-compo...2019-03-15開発環境のECSリプレイスとterraformでのコード化こんにちは、Misoca開発チームの黒曜です。弥生は第23回Quesに協賛します。引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。