Raccoon Tech Blog [株式会社ラクーン 技術戦略部ブログ]

株式会社ラクーン 技術戦略部より、tipsやノウハウなど技術的な話題を発信いたします。

自動化やスクレイピングに使えるやつ XPath

開発チームの下田です。

XMLの特定の部分を指定するためのXML Path Language(以下、XPathと表記します)という言語があります。
HTMLを解析して自動テストの作成やスクレイピング、XML設定ファイルの書き換えに使います。簡単な割に、覚えておくと地味に便利なやつです。

とりあえず書いてみる

何はともあれ、覚えるためには書いてみます。

ブラウザが一番手軽なXPathの実行環境だと思います。FirefoxとChromeはXPathが実装されています。コンソールで次のコードを実行してみてください。コンソールはF12を押せば開きます。

document.evaluate('//html/head/title', document, null, XPathResult.STRING_TYPE, null).stringValue

正常に実行できれば、開いているページのタイトルが表示されます。
続きを読む

AWS LambdaとAPI Gatewayを利用し、PagerDutyのインシデント発生時にSlackに専用チャンネルを作成する #3

こんにちは、インフラ及びシステム運用を担当している田中です。

前回の記事ではPagerDutyのWebhookをLambda関数で受け、SlackのIncident専用のチャンネルを作成してメッセージをpostしたり、IncidentがResolvedになったら専用チャンネルをarchiveしたりするところまでご紹介しました。

大まかにまとめると、下記のシーケンス図のような仕組みになります。

sequence_1

しかし、専用チャンネルまで作成したのにpostしたメッセージは簡単なテキストだけで、見栄えもぱっとしなければ、大した情報も含まれていませんでした。

そこで今回は、Slackにpostするメッセージの見栄えを改善したり、障害対応に必要な情報をメッセージに含めるなど、前回作ったプログラムに機能を追加していきます。

また、せっかくLambdaを使用しているのに他のAWSの機能を使わないのはもったいないので、Node.jsのAWS SDKを利用してAWSの機能を利用する方法についても説明していきたいと思います。
続きを読む

ゼロから始める新人エンジニア研修

こんにちは。たむらです。
今回は、ラクーンで行っている「新人エンジニア研修」について書きたいと思います。
2016年春に入社した新人も今まさに受講しているホットなトピックになっています。

◆新人研修を用意した背景

 ラクーン技術部では数年前迄はほぼ新卒採用がなく、中途採用メインで仲間を増やしていました。その為、ある程度の開発力や調査力が新人さん側にあることも多くて、教育はいきなりOJT。「分からないところは聴くか、自分で調べていってね~」という感じでいわゆる研修にあたるものは無きに等しい状態(注.1)でした。「経験者だし、調査能力はエンジニアの能力としても必要だからその鍛錬を含んでいるんだ」と言えばそれっぽく聞こえますが、受け入れ側としてはやはり怠慢な部分が大きかったのではないかと思います。当然ですけど、環境面やラクーン独自の仕様・ポリシー、概要など始めに教えておけばすむことや、聴いた方が効率が良いことは沢山ありますもんね。

 そして時代は流れて、2015年度より技術部でも新卒採用を定期的に行うようになりました。さすがに中途採用メインだった時の様にいきなりのOJTではなく、誰もが必要最低限の知識を身に付け、成長の階段を素直に登れる仕組みを用意する必要があると考えられるようになりました。また、中途採用市場でも時代的な変化があり研修の必要性が高まっていることも後押ししました。というのは、昔であればSIerで開発を経験していればLAMPに代表されるような、何かしらのプログラム言語+RDBMS+Linux+HTMLを経験していることが多かったのですが、トレンドの技術も非常に多様になり、RDBMSは触ったことないけどNoSQLは知ってるなどという人材もでてきて中途採用でも一定の研修ニーズが生まれていたからです。

注.1 会社的な社会人研修やサービスについての研修は勿論あります。技術的なスキルを身に付ける体系だった研修がないという意味です。


◆研修のゴール

 上記の様な背景を踏まえて、研修のゴールを以下の様に定義しました。

最低限のプログラミング能力の修得ができる

 研修の主目的その1。弊社で実際に利用している言語やフレームワークを中心に研修します。研修にも時間的な制約がある中、知識の深さと広さのどちらをとっていくかも悩ましいところですが、より深い知識や理解をする部分は個人の努力で補える部分が大きいと思うので、どちらかといったら「広さ」をとる方向でいくこともポリシーにしています。

最低限のシステム開発の仕組みを理解できる

 研修の主目的その2。こちらも上記と同様弊社で実際に利用しているものをベースに研修します。開発フローや利用している開発ツールなどの他、テスト環境やCI環境など、実用的な知識を得る部分です。

エンジニアとしての問題解決の思考を習得できる

 どの職種でもそうだとは思いますが、業務では様々な問題に直面することになります。その際に自分で解決していける様に問題解決の方法を知っておくことも重要なことです。Webでの調べ方や問題の切り分け方などの他、ログの解析やデバッグの仕方などを研修を通して学んでもらいます。この問題解決能力は得てして経験やセンスで身につける部分だと考えられがちかもしれませんが、実際には学んで得る部分が殆どなんじゃないかと思っています。

成長を実感でき、自信を持てる

 やはり研修をやり終わった時には、自信をもって業務に臨める様な「やる気」が形成できていて欲しいと思います。当然スキル的な意味もありますが、周りのメンバーとのコミュニケーション関係が構築できることだったり、組織として受け入れる姿勢があることも重要なポイントなのではないかと思っています。

◆実際の研修の概要

 では、実際に研修はどの様にやっているかというと、一言で言ってしまえば「個別指導+スタンプラリー形式の研修」を行っています。

具体的には・・・

  • 1新人1ユニットチーム過去記事参照)で、ユニットチームがメンターになる
  • 学んでもらうべき項目は習得項目としてリストで管理
  • 習得項目がまんべんなく学べる研修課題を用意
  • 研修課題の区切りや終了時にはレビュー会を開き、フィードバックを実施
  • 習得項目を十分マスターできていたらメンターは終了印を押す
  • 苦手な部分や詰まっている部分があればフォローアップを行う
  • 全ての習得項目の終了印を集めたら研修修了

という様なものにしています。研修の進捗は個人に合わせたものになるので、できる部分はさっさと、余り知らない部分はじっくり取り組むことができます。また、新人さんの研修の進捗状況や質問内容、体調含めた様子などすべて記録を残し、研修後のフォローや研修自体のブラッシュアップができる様にしています。

習得項目リスト
0621_sheet
スタンプラリーシートとして本人にも渡していて、何を学んでもらいたいかの他、今の研修の状況や自分の成長が把握できるようにしています。タイトルは・・・まぁ遊び心で(笑)。


研修課題の準備
0621_make
シニアエンジニアが真・善・美に適った
(?)課題とその模範開発例を作ります。実業務ではなく研修課題をしっかり用意することで習得項目に沿った体系的な研修を実施することができます。また、業務の掛け持ちで実施するメンター側の負担を減らすことにも繋がります。


研修風景
0621_kensyu2
メンターのとなりで研修します。説明+KPT用のホワイトボードも近くに置いてます。

メンターとソースを確認しつつ振返り中
0621_kpi
朝会、夕会を日次で開き、メンターと本日やることの確認やKPTによる振返りを行っています。
KPTは最終的に自身の成長を視覚的にみせ、自信に繋がることを狙っています。


◆研修をやってみて

 実はこの研修ですが、昨年位から試行錯誤しつつ準備を始めて今年初めて運用しているできたてホヤホヤのものです。冒頭に書いた通り、6月現在で春入社の新卒エンジニアがまさに今受講しています。まだブラッシュアップどころか終わってもないのを偉そうに書いてしまいすみません
 ただ、感触としては研修の仕組みも教育としても概ね順調にいっているようです。勿論、改善点も今後色々出てくると思うので、適宜見直しつつより良いものにしていきたいと思っています。

 なお、今回弊社で用意した研修ですが、研修の骨子は2014/02/13 Developers Summit2014で登壇された関口亮一さんの講演「新卒エンジニア研修でできることすべきこと」をめちゃくちゃ参考にさせて頂いております。非常に洗練された研修と講演だったので是非そちらもご参照下さい。

 以上、ラクーンの新卒エンジニア研修についての紹介でした。
記事検索