Image for post
Image for post
akka

お久しぶりです。最近は社内ですら「最近何やってるんですか?」って聞かれるので、最近ちょっと試していたAkkaHTTP で LINE bot を作るやり方をご紹介します。

LINEの提供するMessaging APIを使えば、LINE@で作成したLINEアカウントを使ってユーザーに任意のタイミングでメッセージを送ったり、ユーザーからのメッセージに返答することができます。

Messaging APIは登録してシークレットとアクセスキーさえ発行できれば、あとはJSONでやり取りする普通のAPIなので、AkkaHTTPがあれば簡単にbotが作れてしまいます。もちろんビジネスロジックはこっちで考えないといけないけど、細かいことはいいからまずは動くものをサクッと作って見てから考えるのはいかがでしょうか?

できること


はじめに

ナイル株式会社 開発室のMaldiniです。
3/17(金)に株式会社オプト様主催のScalaMatsuriの余韻トーク〜祭りの余熱〜というイベントにLT枠として登壇させて頂いたので、人生初の外部イベント登壇をして意外と良かった点、辛かった点とイベントの様子について今回は話したいと思います。
これを読んで「登壇経験はないけどイベントに登壇してみたい」と思ったエンジニアの方が一人でも増えればと思います。
そして、登壇してみたい!と思った時にもし「ネタはあるけどまずは気軽な勉強会で発表してみたい」などの要望があれば、弊社では勉強会や交流会を共同で開催する企業様を絶賛募集中なので以下のリンクから是非お問い合わせください。

勉強会・交流会お問い合わせ窓口

どんなイベントだったか

ScalaMatsuriという恐らく国内最大級のScalaイベントの後夜祭として、Scalaに関するLTを13個もするというイベントでした。 弊社はScalaMatsuri 2017スポンサー枠としてLTをさせて頂きました。

(イベントの様子はこちらと以下の写真を参照)

Image for post
Image for post

はじめに

こんにちは、ナイル株式会社 開発室のはちわれです。
この度、株式会社フルスピード様と合同勉強会を開催させて頂きました!!
今回は、その勉強会の様子についてブログを書かせて頂きます。

勉強会の様子

多くのエンジニアの方々にご参加頂き総勢20名程度の勉強会となりました!!
それぞれの会社からScalaやakka、スクラムや機械学習などについて講演を行いました。

Image for post
Image for post

ナイルのLT

勉強会の内容として、弊社からはScalaや以前のブログでも取り上げているakkaなどについてLTを行いました。

「PHP開発者がScalaに入門して苦しんだ話」

PHPからScalaを使い始めるにあたって苦労した点やハマった所などを紹介しました。


はじめに

こんにちは皆さま師走の折、いかがお過ごしでしょうか。
クリスマスも年末年始も特に予定がなく、どう引きこもり生活を満喫しようか思案中の開発室はちわれです。先日、株式会社ネットマーケティング様、株式会社ヒトクセ様と一緒に合同イベントを行わせて頂きました。そのイベントで登壇させて頂いたので、今回はその時に発表させて頂いた「akka-streamのマイクロサービスへの適用」について記事を書かせて頂きます。
イベントについては、こちらの記事をご覧下さい。

akka-stream

akkaについては今までブログでakka-clusterやakka-persistentなど取り上げて来ましたが今回はakka-streamを取り上げ、マイクロサービスへのどう適用させるかを説明して行きたいと思います。まずは、akka-streamを …


Image for post
Image for post

先日行われた 【ヒカ☆ラボ】明日からはじめるマイクロサービス~サーバレスインフラ、実機テストからクローラー、レピュテーションリスクチェックまで~WEBサービス3社が実務に導入してみたというイベントで、弊社から2名のエンジニアが登壇しました。

イベント概要

このイベントはヒトクセ様、ネットマーケティング様との三社合同で行ったもので各社それぞれの視点からマイクロサービスの業務利用について語ったものです。

各社2名づつ登壇、ということで計6名の発表があったわけですが、技術的な話から組織的な話まで、生々しい「ここだけの話」も含みつつバラエティに富んだイベントとなりました

発表内容

マイクロサービス構成を活かしてフロントエンドの開発を加速する

スライド

ログ収集システムの新規追加を、マイクロサービス構成で導入したそうです。既存の管理画面を使ってるユーザーに影響が出ないように、直接的な統合を避けたとか。

マイクロサービスへの取り組みのほか、サーバレスな感じだったのが非常に印象的でした。コスト的にも優位なようで、弊社でもちょっとああいうやり方検討しようと思います。

マイクロサービス化の障壁

スライド

弊社から、マイクロサービス化で躓いたところを大きく四つほどにまとめて発表しました。技術的な話というより、心構えだとかが中心です。社内で共有した際にも「生々しい内容ですね」なんて言われていました。

『業務に負担なく風評をチェックしたい』というリクエストに応えた話

スライド

Google AlertでチェックしてChartWorkによる通知を行う風評チェック。システムの話でした。Google Alertの話とても珍しいと思うので、聞いていてかなり新鮮でした。

複数サービスを共存させるために 試行錯誤したこと

スライド

「状況によってシステムの結合度を変えていく必要がある」ということで、複数の状況下におけるシステム結合度のメリット・デメリットを比較することができました。

マイクロサービス覚えたての頃はついつい何でもかんでも結合度を下げて分割して行きたくなるので、こうやって冷静に分析して最適な結合度を探ることは重要ですね。実例も交えて非常にわかりやすかったです。

akka-streamのマイクロサービスへの適用

スライド

akka-streamを活用してのクローラーの実装を、動作原理の説明とサンプルコードを合わせて紹介したものです。サービス間のデータの受け渡しとか連携とか結構頭を悩ませるんですが、akka-stream便利なので積極的に活用して行きたいですね。

うるう秒対策


こんにちは、久しぶりに投稿します。ナイルでインフラ担当をしています。

Zabbix Advent Calendar 2016 9日目の記事になります。参加したのに忘れていたので、急遽書いた(公開数時間前)ので文章拙いですが勘弁ください。小ネタに近いですが、実際導入すると死活監視やリソースのモニタリングなどが捗ります。

Grafanaとは

b18f9904295df3252d80911bc95d7145
b18f9904295df3252d80911bc95d7145

kibana等でも使用されているOSSのダッシュボードツールです。zabbixだけでなく、ElasticsearchやGraphite、AWS CloudWatchなど複数のデータソースのものを可視化することができます。ライブデモもあるので、実際どういうものか気になったらまずは見てみてください。

Zabbix + grafanaについて

zabbix3系はUIがモダンになったという話も聞きますが、2.4系など従来のUIのzabbixを使用していることが多いのではないでしょうか?しかもUIのためだけに既存のzabbixのバージョンを上げるのもなかなか大変です。

死活監視のツールとして古くからあるzabbixとgrafanaを組み合わせることで、従来の死活監視の運用を変えることなく見やすいダッシュボードが簡単に作れます。

またいろいろな制約によりプロダクトごとにzabbixを使い分けていたり、プロダクトとイントラでzabbixを使い分けているなど、複数のzabbixをデータソースとして1つのダッシュボードに集約することも可能です。実際弊社では、イントラとプロダクトで複数のzabbixを使用しています。またAWS上にプロダクトがありRDSなどの専用サービスも使用しているのでCloudWatchのデータも頻繁に参照することが有ります。

従来であれば、それぞれのzabbixやAWSのコンソールにログインして確認、またはCloudWatchからAPI経由でzabbixに飛ばすようなことを行うでしょう。ちなみに、最近CloudWatchのデータ保持期間が延長されたので、わざわざzabbixに飛ばすというモチベーションがそこまで高くないかもしれません。

そこで弊社ではgrafana1つで、すべてのzabbix、AWSのCloudWatchのデータを閲覧できるようにしています。


はじめに

開発室のはちわれです。ナイルに転職して約3ヶ月、Scalaの経験も転職してから本格的にコードを書く様になったのでまだ3ヶ月です。普段はScala、Akkaを使って開発を行っています。今回は、Scala試用期間中の私でも出来たakka-clusterとakka-persistentを使った「Event Sourcing+CQRS」を実現する方法について書かせて頂きたいと思います。

今回やること

最初に書かせて頂きましたが、今回はakka-clusterとakka-persistentを組み合わせて
「Event Sourcing+CQRS」を実現する一例を紹介させて頂きます。
本題に移る前に、Event SourcingとCQRSについて軽く触れさせて頂きます。

Event Sourcing

ステート(状態)ではなく、イベントを中心に考えら …


開発合宿とは

ナイル開発室では今年も開発室合宿に行ってきました。
もうすっかり恒例行事になった気がしていましたが、まだ3回目なんですね。

開発合宿とは、旅館やホテルといった会社以外の場所に泊まって、合宿形式で何らかの開発を行うというもの。
新しいサービスを作り上げたり新機能の開発機会に使ったりするケースもあるようですが、弊社では普段の業務を持ち込まず新しい挑戦の機会や技術習得のきっかけにしてもらっています。

わざわさ「合宿」という形で会社から離れるのには利点があります。
まず時間の自由さ。オフィスに居るとどうしても人に声をかけられたり会議が入っていたりと、集中した時間を取ることが難しいです。
そして環境。普段と違う環境でインスピレーションを刺激することによって、より自由な発想で色々なことを試すことができます。

今年の会場

今年の会場は千葉県南房総にあるコミュニティスペース「まるも」を利用させていただきました。こちらでは開発合宿プランというものを提供しており、作業スペースとしての「まるも」以外にも、近隣の宿泊施設の予約までセットでお願いすることができます。

『まるもの開発合宿プラン』

もともとがコミュニティスペースということもあり、おしゃれな空間で、その上インターネット環境等がしっかりしており、調べ物をしながら開発するのにも何ら不都合はありませんでした。

まるものようす
まるものようす

やや都心から遠いのが気になりますが、駅からも近く電車に乗ってさえしまえばそれほど不都合は感じません。(1時間に一本とかなので、時刻表は確認しておきましょう)
飲食店もちゃんとあるし、スーパーも近いし、ついでに宿泊施設も近くてお風呂に入って戻ってきても全然苦になりませんでした。お店の閉店時間はやたら早いですが、目の前なので閉店時間直前に駆け込んだりできます。

何をしたか

去年はScalaをテーマにしましたが、今年は特に条件を設けずにチームだけ作り、「発表できるものを作ってくれ」とだけ伝えて実施してみました。

社内のプロダクトのScala化もだいぶ進んできましたが、まだ残されてる領域ももちろんあります。その一方で、私自身を始め最近ずっとScalaをやり込んできたメンバーにはあえて一旦Scalaから離れてみることで、見えてくるものがあるのでは?と期待したところもあります。

結果として、JavaScriptでグラフ構造の可視化に取り組んだり、言語混合でレコメンドエンジンを作ってみたりとなかなかに面白い結果になりました。

合宿の様子

ともかく会場がオシャレすぎて写真ばっかり撮ってきたので、幾つか紹介します。(うっかり300枚以上撮ったので、ほんの一部ですが)


開発室のエンジニアリングサポートの五十里です。普段は情シスのような事やRを書いたり、サーバーをいじったり、部署内の開発系関連のツール等を管理したり、gasを書いたり何か色々やってます。

ナイルに来るまでは、自社開発自社運営のアクセス解析ツール屋でアクセスログの解析をしていたり、重機(25tラフタークレーン)の模型につられて建設関連会社で働いてました。安易な転職ダメ絶対です。

ナイルでは部署を超えた様々な社内勉強会が開催されており、過去にはデザイナーによるUX勉強会や、エンジニアによるSQL勉強会などがありました。そこで、先日は社内の非エンジニア向けにJupyter NotebookとRを使っての統計学の勉強会を開催しました。

Jupyter Notebookとは

Jupyter Notebookは、様々なところで話題になっていますが、ブラウザ上で動く対話型のデータ解析環境です。

現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ

Jupyterがすごい勢いでやってくるからお前ら備えとけ

様々な言語のカーネルと連携させる事で、ブラウザ上でコードを書いてその結果を記録・共有するのに非常に向いています。そこで社内の統計学の勉強会やプログラミングの勉強会に使ってみましたので、いかにJupyter Notebookが統計学やプログラミングの勉強会に向いているかを社内勉強会の様子とともに説明したいと思います。

事前の準備

今回はインフラチームに、リモートサーバーを準備してもらいその上にJupyter Notebookをインストールしてもらいました。これでURLを共有する事でみんなで同じNotebookを見られ、さらに各自でNotebookを作成できるようになりました。

JupyterNotebookのキャプチャ
JupyterNotebookのキャプチャ

(もちろんScalaで書く事もできます)

勉強会の流れ

今回の勉強会の参加者は、インターン、役員から人事、サポート、コンサルタントやディレクターなど様々な人達にご参加頂き、予想以上の人数でした。

また、統計学と言っても範囲が広いのでひとまずは記述統計学の範囲に絞り、細かい部分は色々端折ってざっくりと前半は30分ほど統計学(記述統計学、推測統計学)とデータマイニング、機会学習のざっくりした関係を説明して、記述統計学の基本の代表値とグラフの説明をしました。

後半は60分ほどで前半のスライドで説明した代表値やグラフを出すコードとコードの説明が書いてあるNotebookを見本に、各自に自分のNotebookを作成してもらいコードをコピペしていってもらうという流れでした。


はじめに

マイクロサービスアーキテクチャで設計されたシステムを開発をしていると、複数のサーバーをもっと自由に使って試すことができたらいいなと感じることがあります。

実際の運用においては複数サーバーにそれぞれサービスを立ち上げて、相互にやりとりさせることでシステム全体を構築することになります。ところが開発中は開発者のPC一台が実行できる環境で、テスト用に本番と同じ数だけサーバーを用意できることはそう多くないと思います。

そうすると、開発中には問題にならなかったことに複数サーバーにデプロイして初めて気がつくことがあります。そもそもー台だけでは正しくテストできないものもあるでしょう。

そこで、1台のコンピューター上でも複数のサーバーでの動作を模倣させたくなります。そうです、仮想化です。

そこで、今回は仮想化 …

Nyle

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store