AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。

HANDS LAB

HANDS LAB ENGINEERS BLOG

ハンズラボエンジニアブログ

新人研修(技術以外のところ)を考えて、やってみた話


田部井です。

ハンズラボには今年4月から、初の新卒が4人入社しました。

新卒は初めてということで、研修を組み立てるところから検討する必要があり、研修担当者で色々頭を悩ませました。
親会社の東急ハンズの研修に一部混ぜてもらったり、社外研修に行ったりというのはあるんですが、いわゆるビジネスマナーや社会人としての心構えとかを教わるくらいでしょうか。

ハンズラボのように、規模の大きくないIT企業として知っておくべき知識としては、ちょっと物足りないところもあるのでは・・・
というところから、ハンズラボオリジナルで追加の新人研修を考えることにしました。

こういうのをエンジニアが考えて構築するという機会はなかなかないと思うので、やってみたことをメモ的に書いてみたいと思います。
エンジニアリング観点からの研修については(https://www.hands-lab.com/tech/entry/1531.html)にあります。
この記事では、それ以外の部分についての記録です。

一般的な研修・講義

ハンズラボの話

まずは自分の会社について、また会社が置かれている状況についての話をしました。

  • ハンズラボは東急ハンズの子会社で、東急ハンズは東急不動産ホールディングスの子会社であって、ハンズラボはそのグループ内でどういった役割なのか?
  • ハンズラボの設立経緯や東急ハンズ情シスとしての仕事
  • これから求められる外販としての仕事、今後の目標
  • そして現状のプロジェクトチーム構成

等々、基礎的な情報、バックグラウンドの説明です。

会社の歴史には興味が無いとか、会社の目標はよくわからないけどチームは頑張る、なんてこともあると思うのですが、
そこは少人数の会社ですから、全員に目的意識を持って欲しかったので、1ワク設けて説明をしました。

プロジェクトの話

仕事をするときは、プロジェクトって組織・チーム単位でやることが多いよ、ということでプロジェクトの話。

ここでは分かりやすく、ウォーターフォールな受託案件を例にして、営業・提案から開発、テスト、運用までの流れを説明。
また、プロジェクトごとにPMやPL等、役割(≠役職)が割り当てられるよ、という話をしました。

制度の話

弊社の場合、設立4年目ということもあり、まだまだ入社時の説明が確立していない点があります。
特に入社時点での総務系の説明はあるのですが、以下の点について補足的に話をしました。

  • エンジニアとして身につけて欲しいスキル
  • もしくは組織のメンバーとしての心構え(情報発信等)
  • それにともなう役職と評価方法
  • 評価による給与・賞与への影響

IT業界のお話

プロジェクトの話と関連して、IT業界にはどういう企業があり、どういうエンジニアがいるのか、という話。
主にはIT企業をエンタープライズ系、オープンWeb系に分けて、ステレオタイプに説明しました。
(例えば、エンタープライズといえばスーツで保守的、Web系といえばTシャツで新しもの好き、みたいなw)

ハンズラボはエンタープライズな親会社のシステムをやる一方、Webな考え方で最新技術に突っ走ることもできる、とても楽しい会社だよ、という結論を伝えるのも狙いでした。

会社とお金の話

自社の話は上記でしたのですが、そもそも会社ってなんだっけ?というお話です。

  • 株式会社?
    • 株って?
    • 子会社?グループ会社?
    • 株主?会社は誰のもの?持ち分って?
    • じゃあ何のためにお金を稼ぐ?
  • 会社のお金
    • どういう見方があるか
    • どうなっていたらOKなのか

入社時点で「会社とお金」の話はしておきたいっていうのは、以前から考えていたことでした。(前に元弊社エンジニアの臼井氏が新卒のときに経験したらしく)
特に、会社に入ると「お金お金」と上司や先輩が言っているのを聞いて、違和感を覚えたりしないように・・・(お金は汚くないよ!)

また、会社は株主のものということが頭でわかっている人は多いですが、

  • そうは言っても様々な構成員がいて成り立っている
  • ただし株主の意向に沿わなくてはならない

という観点を忘れてはいけない(戒め)ということも知っておいて欲しかった。

マナー研修

弊社が誇る人材会社出身の元女帝青木から、振り返りを兼ねてマナー研修をしました。

追加的な研修・講義

さて、上記は比較的必須に近い知識の講義でしたが、以下のようなちょっと面白い研修も取り入れました。

企画PJ

弊社は完全シフト制勤務で、新人はゴールデンウィークの中3連休が休みではなかったため、息抜きがてら「企画を作る」仮想PJをやってもらいました。
4人を2チームに分けて、それぞれ外出してもらい、目についた世の中の課題を解決するシステムを企画する、という趣旨。
システム的な制約は考えずに、自由な発想で企画し、最後にプレゼンをすること!という制約にしました。

ここでは、以下のポイントを知ってもらい、今後の仮想プロジェクト研修につなげる意味合いがあります。

  • 企画する
    • ブレスト、打ち合わせ、議事録
    • 課題洗い出し、解決策検討
  • プロジェクト運用
    • 目標を設定し、複数人で課題・タスクを分担し解決する
    • リモートでのコミュニケーション
  • 成果物の準備とプレゼン

デザイン基礎

弊社にはデザイナー/フロントエンドエンジニアが2名いるので、せっかくなのでデザイン・UI/UX基礎編を説明してもらいました。
これは正直、エンジニアとして、管理者としての勉強しかしてこなかった私には、新卒が羨ましい!という内容でした。

(詳細は別途デザイナーがブログ書いてくれるかな・・・?)

先輩社員の話

これもちょっと面白いなと思っているんですが、弊社はけっこう多彩なバックボーンを持った社員が多く、
その中から4人ほどピックアップして、どういう経歴なのか、ITでどういうことをやってきたのか、などを語ってもらいました。
基本的には内容は自由としたのですが、皆さんアツイ思いを新人に投げてくれました。

仮想PJ

そして研修の総仕上げとして、4人での仮想プロジェクトをやってもらっています。
こちらは大石の記事に詳しいです。(https://www.hands-lab.com/tech/entry/1628.html
まだ半ばですから、完了後にレポートが出てくることでしょう!

終わりに

新人研修カリキュラムを悩みながら考え、実際にやってみるというのは、自分自身いい経験になりました。
会社とは?の話なんかは、私も勉強不足を実感しましたし、説明も下手だなぁと実感・・・

またこのメモは来年の担当の役に立つのではないかと期待しているのと、
皆さんの会社ではどのような面白い研修をしているのか、ぜひ教えて下さい!


AWS Summit Tokyo 2016 参加レポート


こんにちは。加藤です。

「エグゼクティブからデベロッパーまで 10,000 人以上が集まる 3 日間」
AWS Summit Tokyo 2016
が、6月1日〜3日に東京品川のグランドプリンス新高輪で開催されまして、

私なんと3日間フルで堪能してきました!

もちろん他のエンジニアも多数参加!
公式無料Wifiも完備されているので合間に仕事をしつつ、夜にはパーティーやらJAWS界隈の方やらとAWS愛の語らい(という名の飲み会)もありーので、なかなかにハードではありましたが、とにかく内容の濃い3日間を過ごせました。

知識も意識もアゲアゲでございます。

約70あるセッションも出来れば全部見たいけど選ばなければならないフジロックフィスティバル、という事で個人的にはサーバレスの可能性を追求 (`・ω・´)キリッ したく、そのあたりのセッションを追いかけましたが、メイン会場と飛天会場は何回往復したのか分からないあるあるでした。
ちょっとキャパ的にもそろそろ限界を感じたんですけど来年も同じ会場なんでしょうかと思いつつ、具体的なセッションのレポートはどなたかにお任せするとして、全体を通して感じた事を上げていきたいと思います。

昨年はニューノーマルがテーマだった様な印象がありましたが、今年はクラウドジャーニーを全面に出してきておりました。AWSの企業利用という事においてざっと一通り回った印象を受けました。
それぞれの企業のサーバレスやDevOps(DevSecOps)、はたまたIoT やビッグデータ等、ただオンプレから移行するだけじゃなく、AWSの特性に合わせた事例が多く出てきてました。
来年はAlexaの事例とか出てきちゃうんじゃないでしょうか。日本語対応が待たれますね。

ちなみに昨年は弊社から社長・エンジニア2名と3セッションもあったのですが順番でしょうか。残念ながら今年は弊社セッションはありませんでした。
AWSパートナー中から選ばれるArchitecture of the Year 2015を受賞したのに!ぐぬぬ。
APN Architecture of the Year 2015を受賞しました!

そして弊社のジャーニーについて気になる方は不定期に開催される
ハンズラボようこそ手羽の会」へ。(宣伝しろと言われた気がした)
https://handslab.doorkeeper.jp/

話を戻しますが、唯一残念だった事と言えば新たなサービス発表があまりなかった事でしょうか。
キーノートで発表!その場でウェーイ!とかを期待して、ワクワクしながら正座して待ってた事もあり少し残念でした。
もちろんいくつかの発表はありましたが、会場での盛り上がりがあまりなかったような。。。
(一部の人達は歓喜だった様です)
Summitの半月前に発表したCertificate Managerの東京対応を合わせれば盛り上がったのにと思いましたが、そこはサービスを待っている人たちを優先するAWSの素晴らしさですね。

さて、あまり中身の無い投稿で怒られそうなので、Summitで発表があったまとめ。

  • Import/Export Snowball Tokyo Region → By the end of this year
  • RDS for SQL Server MultiAZ Tokyo Region → 2week → 2016/06/09 Done!
  • Scaling Amazon ECS Services Automatically Tokyo Region → Q3
  • EC2 Container Registry Tokyo Region → Q4

※過不足や間違いがありましたらご指摘頂けますと幸いです。

Summitの後はJAWS-UGのナイトイベントという事で、司会を弊社社長の長谷川とマーケティング青木が担当!
ナイトイベントのレポートについては、ななななんとこれまた青木がJAWS-UG広報としてASCIIへ寄稿しているのでよろしくお願いします。
これがなくっちゃ終われない!JAWS-UG Nightレポート

という事で来年は再び皆様に直にお届けできる様に、
2年連続の受賞を目指してジャーニーしちゃうぞ☆


新卒新入社員だけで仮想プロジェクトやってます


4月に新卒としてハンズラボに入社した大石と申します。
大学の専攻は応用化学でしたので、ハンズラボ初のIT未経験の新卒ということになります。
一応大学では文化祭のホームページを作成していたのでHTMLとCSSは書けなくもないというレベルです。JavaScript?なにそれおいしいの?
また、文化祭やアルバイトにおいて、ポスターやロゴ、POPや地図など様々なものを、AdobeのIllustratorやPhotoshopを使って作る4年間を過ごしました。
これだけは一言言わせてください。Adobe先輩まじ最高!!

さて、今回は4月に入社した新卒新入社員計4名で行っている仮想プロジェクトの話を書こうと思っています。
以前、ハンズラボ 初の新卒新人研修やってます 講師の視点から編
という記事の中で最後の方にちょろっと触れられていますので、ぜひそちらもご覧いただけたらと思います。
そのうち、新卒視点から新人研修の話も書いていけたらな〜と思います。

仮想プロジェクトとは?

「4人で自由に何らかのシステムを作ってください!」と言われ、ほぼ制約無しに放りだされました。
(ま じ か よ…)
課された制約といえば、

  • 新卒4名で開発を行う。プログラミングは全員行うこと
  • 締め切りは6月末
  • 先輩方をあっと言わせるようなものだとなお良し

くらいなもので、あとは展示会行ってみてもいいよ〜とか、こんなもの使うといいよ〜とか、選択肢が増えるようなアドバイスばかりでした。
逆に難しくないですか!?

蔵書管理システムをつくろう

さて、数日間新卒同士であれやこれやと話し合い、「オフィス特化型蔵書管理システム」を作ろう!ということになりました。
続きを読む 新卒新入社員だけで仮想プロジェクトやってます


AWS WAFの導入


戦闘員の吉田です。

(eb後半ネタ、必ず書くので少々お待ちください。。。)

先日、JAWSーUGのイベントで Security-JAWS というイベントが開催されました。
Security-JAWS 【第1回】2016年5月17日(火)
最終的に、参加待ちが100名近くなったと話を聞きました。
それだけ皆さんセキュリティに対して関心を持っているのだということですね。

そんなセキュリティ関連のサービスが、2015年10月にリリースされました
【AWS発表】新サービス: AWS WAF

そう、AWSが提供するマネージドWAF、AWS WAFです。

aws-waf

AWSがとうとうWAFを出した!と、一時盛り上がったものの、WAFを使った、使っている、AWS WAFに関連した記事というのは実はあまり見かけません。

ハンズラボのコーポレートサイトにはAWS WAFが導入されています。

コーポレートサイトにWAFを導入する際に経験した内容について書いていきたいと思います。

AWS WAFについて

まず、AWS WAFについて簡単に確認します。

WAF(Web Application Firewall)

aws-black-belt-tech-2015-aws-waf-10-638
AWS Black Belt Tech シリーズ 2015 – AWS WAF
このWAFの機能をCloudFront上で利用できるのが、AWS WAFです。
AWS WAFはアプリケーションの防御のために以下の5種類を用意しています。

  • IP match conditions
  • String match conditions
  • Size constraint conditions
  • Cross-site scripting match conditions
  • SQL injection match conditions

これらのルールを指定することでWAFを機能させることができます。

AWS WAFでは

  • condition
  • rule
  • ACL

の3つの塊から構成されています。
具体的には、各防御ルールの詳細をconditionに定義し、そのルールが定義されたconditionをruleにまとめ、まとめられたRuleをACLにひも付けます。

イメージ図

waf

ACLではこのRuleを評価して、Ruleに記載した条件マッチしたリクエストにを拒否/許可/cloudWatchでカウントする、と言った設定が可能です。

注意点

AWS WAFではクロスサイト・スクリプティング(XSS)やSQLインジェクション等の防御を細かいルールを設定すること無く実施することが出来ます。

ここが、AWS WAFを利用する際の最大の注意点です。

AWS WAF では、condition中で設定する、「URI」や「Body」などの特定の値について、オプションで指定した処理(URL encodeなど)を実施したうえで「SQLインジェクション」や「クロスサイトスクリプティング」と判断されるようなコードが含まれていないかをチェックします。
その上で、Allow や Block といったアクションを設定することができます。

この、脅威の判定については、AWSが内部で実装している仕様に基づくのですが、執筆時(2016/05現在)で、公開されている情報はありません。

また、この内部ルールに関しては、他の機能同様に、今後の機能追加や改善によりまして適用個所や適用方法など変更される可能性があるそうです。

これが非常にクセモノで、そのリクエストの何がダメで弾かれたのかよくわからないのです・・・

ブロックされた情報はWAFコンソール内のRulesで確認が可能ですが、IPやHTTPのヘッダー情報が確認できるのみで、リクエストのどこがダメなのかといったログは出力されません。

WAFのログはCloudFrontログに統合されて出力されますが、クライアントIPや対象 URI、403 レスポンスが返されたことは確認できますますが、具体的にどういった理由で WAF がブロックしたなどの情報は確認できません(2016/05現在)

マネージドでAWSに任せる事が出来るのは非常に魅力的なのですが、実際に運用しようとするとなかなか難しい問題も多く残っています。

ハンズラボブログを例に上げると、更新や新規エントリーは問題ないのに、一部の記事のみWAFにより弾かれ更新出来ないといった問題が発生しました。
いろいろとためしてみると、記事内に styleタブ を使用した結果XSSと認識されて弾かれていた・・・といった事がありました。

しかし、IPのブロッキングが手軽に出来るのはかなりいいと思います。

IPブラックリスト

AWS Solutions Architect ブログで紹介されているように、Lambdaを用いたWAF のIPレピュテーション設定自動化を導入することで、IPブラックリストを最新の状態で利用することが出来ます。
IPブロッキングが手軽に利用できる。というだけでも利用する価値は有るのではないかと思います。

総括

AWS WAFはAWSが提供するマネージドWAFということで、手軽に利用することができますが、マネージドであるがゆえ、実際に使用する場合運用上かなり困ることも多々起こると思います。
しかし、DOS対策をしてくれることやIPのブロッキングを手軽に利用できる点で、AWS WAFに全て任せて防御する。のではなく、多段に防御する。
WAFで弾けるものを弾き、バックで別の防御策を講じる。といった使い方であれば有用なツールだと思います。

ハンズラボのサイトクラスなら良いのですが、ちょっと大きなサービスで利用するにはまだまだWAFのアップデートを待ったほうが良いかと思います。


DynamoDBのパーティション分割問題について


こんにちは、井上です。

DynamoDBを使用していて、スループットは十分なはずなのに、書き込み/読み込みエラーが発生する、というケースはありませんでしょうか。

ハンズラボでは以前からこの問題に悩まされており、原因が分からないまま必要以上に高いスループットを設定したりしてお茶をにごしていたのですが、サポートやSAの方に相談したところ、パーティションの分割による問題であることが分かりました。

このパーティション問題は結構ハマりどころだと思うので共有しておきます。

続きを読む DynamoDBのパーティション分割問題について