タグ

ブックマーク / dev.classmethod.jp (39)

  • WebSocket のチャットサーバを Akka Streams の MergeHub と BroadcastHub で実装する | Developers.IO

    ストリームの流れ、来てますね。私も先日のScalaMatsuri2017へ参加したのですが、「Scalaのエコシステム業務利用してみた」という話が多かった印象です。その中でも、Akka Stream はかなり実務レベルで活用されているようでした。今回は、今ノッてる Akka Streams を実際に使ってみて、よくあるサンプルのひとつ、チャットサーバを作ってみたいと思います。Akka Streams の中でも、グラフの動的な操作を行うための MergeHub と BroadcastHub を使ってみましたので、利用を検討している方の参考になれば幸いです。 こんな方を想定しています Akka Streams に興味がある MergeHub と BroadcastHub を使ったコードがどんなふうになるのか知りたい バージョン情報 ライブラリ バージョン コード全文はこちらです。 cm-wad

    WebSocket のチャットサーバを Akka Streams の MergeHub と BroadcastHub で実装する | Developers.IO
  • Akka と Amazon ECS で構築するワーカー基盤:1万件のメッセージを処理させてみた | DevelopersIO

    この記事は Scala Advent Calendar 2016 - Qiita19日目の記事です。私は普段、クラスメソッド株式会社でサーバーサイドエンジニアとして働いています。業務のかたわら、「ScalaAWSを使ってなにができるか」ということを主なテーマにブログを執筆しています:和田祐介 | Developers.IO 今回は、AkkaとAmazon ECSを触ってみたいと思い、実際にワーカーを構築して処理させてみましたので記録を残します。 なにがしたいか ScalaおよびJavaの並列分散処理フレームワークである Akka におけるアプリ実行環境として、Amazon ECSが選択できることを示します。また、ECSのTask数(コンテナ数)によって処理性能がどう変わるか、ひとつの例を出します。どちらも、単純に使ってみたかったというのが動機です。ただ、Akkaは分散環境で動作することを

    Akka と Amazon ECS で構築するワーカー基盤:1万件のメッセージを処理させてみた | DevelopersIO
  • WebSocketでかんたんキーボードセッション | DevelopersIO

    クライアント・サーバー間の双方向通信を実現する技術として注目されているWebSocketですが、だいぶ仕様が固まって各ブラウザの実装も進んできたようですので、そろそろ試しておこうと思いサンプルアプリを作ってみました。今回作成したサンプルは、「かんたんキーボードセッション」アプリです。ブラウザ内の鍵盤をマウスで操作すると音が鳴り、なおかつ、複数クライアントで一緒に演奏できるようになっています。キーボードの音はWeb Audio APIを、複数クライアントによるリアルタイム演奏はWebSocketを利用して実現します。 Web Audio APIは、ブラウザでの高度な音声処理を実現するものですが、これについては、以前弊社の中村のエントリで紹介されています。 Web Audio APIをつかった音声処理 今回のサンプルでは、生成したサウンドデータから音声を出力する機能を利用してキーボードの音を鳴

  • 開発環境で使うDocker入門 | DevelopersIO

    モバイルアプリサービス部の五十嵐です。 Dockerは軽量でポータビリティに優れ、環境を汚さないので開発環境には無くてはならない存在ですよね!今回はまだDockerを使っていない人向けに、私が自分が辿ってきた経験を元に、『こういうシーンでDockerを使うと便利』というのをステップ・バイ・ステップで説明していきます。 対象読者 Dockerはなんとなく知っていて興味はあるけど、使い所や導入するメリットが分からないという人を対象にしています。 環境 Docker for MacDocker 1.12.3) Dockerについて Dockerは複数のコンポーネントからなるプラットフォームですが、記事では主にDocker EngineのことをDockerと呼びます。 Dockerはコンテナと呼ばれる仮想化技術を用いています。従来の仮想化技術と異なる点は、ホストのカーネルをコンテナと共有し、ホ

    開発環境で使うDocker入門 | DevelopersIO
  • ElixirとPhoenixでWebSocketを使ったChatアプリケーションを作る | DevelopersIO

    昨今のWebアプリケーションでは、クライアント、サーバが常時接続してメッセージ通信をすることが求められてきています (リアルタイムWebアプリケーションと呼ばれたりします)。 このアプリケーションには以下の特徴があります クライアント、サーバが常時接続 クライアントからではなく、サーバから接続しているクライアントへ情報をプッシュする 通信の頻度が多い 今回はこのような常時接続型のアプリケーションを実現するために作られたWebSocketの説明と、PhoenixでWebSocketをどのように使って常時接続のアプリケーションを作るか説明します。 WebSoketが必要とされてきた背景 今までのWebアプリケーションのリクエスト/レスポンス処理は以下のようなアーキテクチャでした。 全てのリクエストは状態を持たない サーバはリクエストを毎回新しいものとして扱う(HTTPはもともとステートレスなプ

    ElixirとPhoenixでWebSocketを使ったChatアプリケーションを作る | DevelopersIO
  • Redisのsetnxを使ってマルチサーバ環境での Web API ロック機構を実現する | DevelopersIO

    「これ、同時にリクエスト飛んできた場合って、どうなるの?」 「2つ登録されちゃいますね…」 はじめに Web APIは、リクエストを受け、処理を終えた後レスポンスを返します。モバイルアプリやウェブアプリとセットで開発しているとつい忘れがちになってしまいますが、同時に同じリクエストが飛んできた場合にどういう挙動をするか ということは常に考慮しておかなくてはなりません。「UI上同時にリクエストが送れないから問題なし」では Web APIの設計が不十分です。別の端末から同時に同じリクエストを送ることも可能ですので、UIとは切り離して考えるべきです。 さて、この状況、GETリクエストについては大きな問題にはならないでしょう。いくらリクエストが来てもサーバ側の状態に変化はないので、負荷対策だけしておけば大丈夫そうです。問題はPUTリクエストやPOSTリクエストといった、サーバ側のリソースに変化を及ぼ

    Redisのsetnxを使ってマルチサーバ環境での Web API ロック機構を実現する | DevelopersIO
  • sbtのコンパイル時間やテスト時間を短くする方法について調べてみた | DevelopersIO

    モバイルアプリサービス部の五十嵐です。 最近scalaプロジェクトにアサインされたのですが、scalaのコンパイルにマシンパワーを使うため周囲からMBPのファンの音がうるさいとクレームをもらうようになりました。また、コンパイルやテストの度に数十秒〜数分かかると集中力が切れて、ついついポケモンGoをさわってしまうのでよろしくありません。 そこで、sbtのコンパイル時間やテスト時間を短くする方法について調べてみました。 なお、この記事で対象としているプロジェクトの構成は以下のとおりです。 sbt 1.0.3 scala 2.11.7 コンパイル時に不要なArtifactを作成しない build.sbt ファイルにArtifactの生成に関する設定をすることができます。 // disable publishing the main jar produced by `package` publi

    sbtのコンパイル時間やテスト時間を短くする方法について調べてみた | DevelopersIO
    u_engine
    u_engine 2016/08/06
  • [Apache Spark]RDDについて簡単にまとめてみた | DevelopersIO

    はじめに t.hondaです。前回の最後に書いたように、今回はRDDについて書いてみたいと思います。 RDD(Resilient Distributed Dataset) RDDとは、以前にも書きましたが「不変(イミュータブル)で並列実行可能な(分割された)コレクション」です。Apache Sparkのプログラミングでは、このRDDにデータを保持して操作することがメインとなります。RDDの操作には用意されているメソッドを使うことで、Sparkは自動的に分散処理を行い、開発者は分散処理を意識することなくプログラミングできます。 RDDのメソッドの種類 RDDに保持したデータを操作するメソッドは大きく分けて2つに分類されます。「Transformations」と「Actions」です。「Transformations」はRDDを操作し、結果を新しいRDDとして返します。「Actions」はRD

    [Apache Spark]RDDについて簡単にまとめてみた | DevelopersIO
  • 高生産性、高信頼性、高速のElixir製Webアプリケーションフレームワーク、Phoenixを始める | DevelopersIO

    めちゃくちゃ早いですね!現在のバージョンとは異なりますので現在の数値とは若干異なるとは思いますが、 それを差し引いても素晴らしい性能です。 今回はこのPhoenixアプリケーションの環境構築とアプリケーションの起動までを試してみます。 (macOS限定の説明となります、ご了承ください)。 事前準備 Phoenixアプリケーションを開発するためのソフトウェアをインストールしていきます。 Elixirのインストール 前回書いた、以下の記事を参照にインストールしてください MacにElixir環境を構築する PostgresSQLのインストール Phoenixは初期設定でPostgreSQLを使用します。Homebrewでインストールしてください。 インストール $ brew install postgresql 起動、終了 インストールできたらpostgresqlを起動しましょう。 pg_ct

    高生産性、高信頼性、高速のElixir製Webアプリケーションフレームワーク、Phoenixを始める | DevelopersIO
  • 第3回 Elasticsearch 入門 ドキュメント管理は意外と高度なことができる | DevelopersIO

    今回は「ドキュメント管理は意外と高度なことができる」というテーマで、そのドキュメントを追加・更新・削除する操作について解説します。 きっと、他の検索エンジンと比べ、その高機能ぶりに驚くはずです。 直感的に分かりやす API Elasticsearch は検索をはじめ、各種設定やサーバの状態取得など、ほとんどの操作を API として提供しています。もちろんドキュメントの追加・参照・更新・削除の API も提供していて、その仕様はとてもシンプルで直感的に使いこなすことができます。 ドキュメントをあらわす URL スキーマは以下のようになっています。 /{index}/{type}/{id} 基的には、各種ドキュメントのエンドポイントに対して、GET PUT POST DELETE HEAD メソッドで追加・更新・削除などの操作が可能です。 例えば、posts というタイプを持つ blog イ

    第3回 Elasticsearch 入門 ドキュメント管理は意外と高度なことができる | DevelopersIO
  • 【Scala】Play! の Guice による Akka Actor の DI | DevelopersIO

    はじめに PlayFramework のバージョン 2.4 以降(以下 PlayFramework)には DI コンテナとして Guice が採用されています。 また、PlayFramework は Scala で書かれたフレームワークで内部的には Akka を利用しています。そのため、PlayFramework のアプリケーションからは Akka Actor を比較的簡単に使用でき、弊社のプロジェクトでもよく利用されています。 Guice による制御の反転を実践している PlayFramework のプロジェクトで Akka Actor を使用する際には、 Guice による Actor の生成 を行うのが良いでしょう。 というわけで、今回は Guice で Akka Actor の生成と Inject を行う方法についてご紹介します。 目次 Actorの準備 ActorのDI 注意すべ

    【Scala】Play! の Guice による Akka Actor の DI | DevelopersIO
  • Apache Drill 1.0がリリースされたのでAmazon S3と連携してみた | DevelopersIO

    はじめに Apache Drill 1.0がリリースされました! Drill 1.0 Released Apache Drillは、NoSQL向けのSQLクエリエンジンで、ファイルシステム上のJSON/CSV/Parquetなどのファイル、Hiveソース、HBase、MongoDBなどに直接SQLクエリを投げることが出来ます。 何はともあれ、触ってみないとどんなモノなのかわかりません。早速試してみました! やってみた 試した環境はEC2(on Amazon Linux 2015.03)です。 セットアップ Drillの動作にはJDK 7が必要になりますので、インストールされていることを確認します。 $ java -version java version "1.7.0_79" OpenJDK Runtime Environment (amzn-2.5.5.1.59.amzn1-x86_64

    Apache Drill 1.0がリリースされたのでAmazon S3と連携してみた | DevelopersIO
  • 【初心者向け】各OSのTCP通信チェックコマンド入門 | DevelopersIO

    最新版は以下となります。 https://dev.classmethod.jp/etc/ec2-tcp-port-check-command-2018/ こんにちはコカコーラ好きの梶です。 EC2では色々なOSが構築できますよね。構築後の通信確認はどのように実施してますか? 各OSで他のインスタンスへTCP通信確認のために、ツールをインストールしたり、ICMPなどの別なプロトコルで確認するためにSecurity Groupを一時解放していませんか? 構築直後の状態で、簡単にTCPポート疎通確認可能なコマンドをご紹介します。 Amazon Linux,Ubuntu,Windows2012R2,CentOSについて自分も忘れやすいのでまとめてみました。 どなたかのお役に立てれば幸いです。 Amazon Linux 動作確認AMI:amzn-ami-hvm-2014.09.2.x86_64-eb

    【初心者向け】各OSのTCP通信チェックコマンド入門 | DevelopersIO
  • [Apache Spark]ストリーミング処理で直近の人気ハッシュタグを取得する | DevelopersIO

    はじめに Apache Sparkの用途の一つとして、ストリーミング処理があります。今回はその例として、Twitterから直近の人気のハッシュタグを取得する処理を取り上げてみたいと思います。 処理の流れと用語について ソースをお見せする前に、大まかな処理の流れと、用語について説明したいと思います。先ず処理の流れですが、以下のようになります。 Streamの作成 ハッシュタグを持つRDDの取得 DStreamの取得 DStream内のRDDよりハッシュタグを取得 見慣れない用語ばかりかと思いますが、以下で処理の流れに沿って解説したと思います。 1.Streamの作成 データを連続して取得するためのStreamを作成する処理です。今回はTwitterよりデータを取得するストリームを作りますが、他にも Kinesis、Kafka、Flume、ZeroMQ、TCPなどから取得することが出来るようで

    [Apache Spark]ストリーミング処理で直近の人気ハッシュタグを取得する | DevelopersIO
  • これからAmazon Redshiftを始める技術者が注意すべき11つのポイント | DevelopersIO

    更新版がこちらにありますので、こちらもぜひご覧ください。 これからAmazon Redshiftを始める技術者が注意すべき22つのポイント Amazon Redshiftを使った実案件を経験してこれは注意したほうがいいなというポイントをまとめました。自分が経験した範囲で書いているので多少偏っているかもしれませんが、参考になれば幸いです。データウェアハウスって何?という方は以前入門記事を書きましたのでこちらの記事をご覧ください。 気軽に始めてみよう!クラウド時代のデータウェアハウス超入門 注意事項一覧 PostgreSQLと違う点に注意! 1件ずつINSERTするととても遅いので注意! 主キー制約、一意制約、外部キー制約は違反してもエラーにならないので注意! COPYコマンドは全件INSERTなので注意! CSVでアップロードする場合の注意点! サポートしているデータ型に注意! エンコーディ

    これからAmazon Redshiftを始める技術者が注意すべき11つのポイント | DevelopersIO
    u_engine
    u_engine 2014/10/07
  • Hadoopソースコードリーディング 第17回に参加してきました | DevelopersIO

    Hadoopソースコードリーディング 第17回に参加してきました。今回のテーマは7月にApacheのTop-Level Project入りしたばかりのApache Tezについてでした。なお、全体的にApache Sparkと比較する形での説明が多かったので、Sparkについてご存じない方は前回のHadoopソースコードリーディング 第16回に参加してきましたをご参照下さい。 NTTデータ濱野さんの冒頭の挨拶 今日は別のイベントも多いためいつもの半分ぐらいの参加者だが、その分Deepにやれれば いつもの会場だと途中からピザとお酒だが、今回の会場は飲禁止なので最後までシラフで Tezに関する勉強会は初回なのにいきなりタイトルがInternalsとかになってますねw Tez Internals (@oza_x86 さん) @oza_x86 さんからはTez Internalsということで、S

    Hadoopソースコードリーディング 第17回に参加してきました | DevelopersIO
    u_engine
    u_engine 2014/09/11
  • 【初心者向け】MacユーザがAWS CLIを最速で試す方法 | DevelopersIO

    こんにちは、虎塚です。 聞くところによると、最近 AWS コマンドラインインターフェイス(以下、AWS CLI)の人気が再燃しているそうですね。なんとAWS CLIがテーマのイベントまで開催されているではありませんか。これはすごい。 JAWS-UG CLI | Doorkeeper というわけで、今日はAWS初心者のMacユーザが最速でAWS CLIを試す手順を書いてみます。えっ、Windowsしか持ってない? Get Mac or Linux! 以下の作業は、AWSアカウントをすでに持っていることが前提です。また、Mac OS 10.9.3 (13D65) で動作確認しました。 pipのインストール まず、pipをインストールします。pipとは、Pythonのプログラミング環境で使われるパッケージ管理システムです。 pipのインストールには、easy_installコマンドを利用します。

    【初心者向け】MacユーザがAWS CLIを最速で試す方法 | DevelopersIO
    u_engine
    u_engine 2014/08/08
  • これからAWSを始める人は一読すべき「AWS運用チェックリスト」を読んでみた | DevelopersIO

    はじめに こんにちは植木和樹です。AWSでは各種ホワイトペーパーなどの資料を多数公開しています。 AWS アーキテクチャーセンター | アマゾン ウェブ サービス(AWS語) 今回は上記ページからダウンロードできる「AWS 運用チェックリスト(PDFファイル)」を読んでみました。運用チェックリストという名前ではありますが、AWSを利用する方は一度目を通しておくのをお勧めする内容でした。 チェックリストは大きく3つ「ベーシック」「エンタープライズ」「セキュリティ監査」に分かれています。このうちベーシックは15項目程とコンパクトにまとまっていて、簡易チェックリストとしてお手頃です。 残念ながらまだ日語訳がされていないようですので、今回ベーシック部分だけをザックリ読んで簡単なコメントを書いてみました。 ベーシック運用チェックリスト 原文は「我々は〜〜〜を設定しています(理解しています)」

    これからAWSを始める人は一読すべき「AWS運用チェックリスト」を読んでみた | DevelopersIO
    u_engine
    u_engine 2014/07/27
  • 気軽に始めてみよう!クラウド時代のデータウェアハウス超入門 | DevelopersIO

    始めに 私は8年ほど前に情報処理試験でデータウェアハウスというものがあるということを知りました。当時は4択問題で問題文に 意思決定支援 というキーワードが出てきたら何なのかよく分かんないけど選択してました。それからずっと興味がありながら実物に触ったことはなかったのですが、クラウド型のデータウェアハウスが登場し触る機会を得ることができました。以前に比べデータウェアハウスはかなり身近なものになってきたのではないでしょうか。弊社でもAmazon RedshiftというAWSのサービスを利用した案件が増えてきています。 クラスメソッド、POSデータ数十億件をリアルタイム分析する基盤を「Amazon Redshift」「Tableau」で開発 この記事ではデータウェアハウスの知識から分析ツールを使ってAmazon Redshiftに接続するところまで簡単にまとめています。実際にどんなものか、触ったこ

    気軽に始めてみよう!クラウド時代のデータウェアハウス超入門 | DevelopersIO
    u_engine
    u_engine 2014/05/14