サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
system.blog.uuum.jp
おはようございます こんにちは こんばんは。 UUUMのシステムユニットのmatsumotoです。 先日、RubyCriticという静的解析ツールを導入しましたので紹介します。 RubyCriticとは? RubyCriticはrubyコードを静的解析するツールです。rubygemで提供されています。 ファイル毎の複雑度や重複した記述などを指摘してくれます。 解析結果はブラウザ上で確認できます。 導入に至った経緯 自分が担当しているシステムには既にメジャーな静的解析ツールであるRubocopが導入されており、コーディング規約に準拠してるかのチェックは行えていました。 しかし、より可読性、保守性が高いコードを書くためにもコーディング規約のチェックに加え、ファイル毎の複雑度や重複箇所などもチェックされるようになると良いと思いました。 また、RubyCriticを導入する事によってレビュー前にコ
システムユニットのt_u_a_kです。ブログ登場は初めてです。私は業務で少々大きめのデータの集計ということをやっていますが、その際にはAWSのAthenaとGlueを試しました。手軽でよかったので紹介します。 AthenaとGlueについて まずAthenaについてですが、これはS3上のデータに対するクエリサービスです。データベースに対するクエリサービスではなく、S3上のテキストファイル(もしくはそれらを圧縮したりしたもの)に対してデータ構造を定義し、いわゆるSQLを使って普通にクエリが書けます。この時点でAthenaのようなサービスや仕組みに触れたことがない人にとっては「は?」って感じですね。AthenaはPrestoというFacebookが開発したクエリエンジンを使っていて、大きなデータでも爆速で結果が返ってきます。Presto公式ではFacebook自身が300PB以上のデータの分析
こんにちは、分析チームの門脇です。 日頃クリエイターに関するデータ分析業務を行う際、環境ごとのライブラリの管理が面倒だったり、形態素解析エンジンの導入、notebookの設定をやり直す必要があるなど何かと不便でした。 そこで今回は、Dockerを利用して、簡単にクリエイター分析環境を構築してみました。 Dockerについて Dockerはコンテナ型の仮想化環境のことで、Dockerfileに仮想環境に取り入れたいものの処理を記述することで、簡単に同一環境を再現でき、環境ごとに設定をやり直さなくて済むといったメリットがあります。 Dockerによる環境構築ついて詳しく知りたい方はこちらにわかりやすくまとめられています。 今回は記事の中でも紹介されているKaggleが提供しているDockerイメージをベースにDokerfileを作成していきます。 MeCabについて クリエイターについて分析を
10月25日(金)にワイクル株式会社の角 征典様( @kdmsnr )をお招きし、LEGOブロックでスクラム入門の勉強会を行いました。 弊社ではスクラム開発しているプロダクトとそうでいないプロダクト双方あり、私が担当しているプロダクトではスクラムを導入していなかったため、いろいろ発見のある勉強会でした。 第1部:スクラムの歴史〜基礎の説明 第1部ではアジャイル開発の歴史から始まり、現在の複雑化したシステム開発の実態、スクラム開発とはどういったものなのか、わかり易く説明がありました。 その中でアジャイルとは傘に喩えられるように骨組みであり、特に中身は無いものであると言うこと。それを補完すために様々な開発手法が存在し、スクラムもその中の一種であると説明がありました。 また、スクラムをすることでチーム内の知識・経験を蓄積することができ、より強固なチームへ進化させていくものだということがわかりまし
皆さんは普段、WEBでAPIを作っていますでしょうか? 最近はリッチなUIやスマートフォンアプリの開発が当たり前になってきたので、 APIを作ることが多いのではないでしょうか。 APIの開発を楽にするために、GraphQLを使ってみませんか? 現状のAPI開発の悩み 現在APIを作るときは、REST設計で開発を行うことが多いと思います。 実際開発中に以下のような悩みを持ったことはないでしょうか? API多すぎ 仕様がよく変わる ドキュメントがメンテできない もうRESTのAPI作るの飽きたよ… そんなあなたにぜひGraphQLを! GraphQLを使えば楽しいAPI開発が待っているかも! GraphQLって何? 答: A query language for your API. (出典: GraphQL ) 以上です!(^o^) ……要するに、SQLみたいにクエリを書いて、サーバにリクエス
nazoです。現在は厳密には攻殻機動隊(システムユニット)ではないのですが、開発に関する大きな動きがありましたのでまとめてみたいと思います。 何の話? LMND というシステムがあるのですが、これの開発を急ピッチで進めたいという事で急遽移動することになり、快適な開発環境になるまでに行ったことについての話になります。 LMNDのサービスの詳細についてはここでは割愛させて頂きますが、システム的にはRails4系にMySQLという、少し古いものの一般的な構成で作られたものになっております。2018年9月に吸収合併を行ったのですが、その際に開発体制が完全内製に切り替わってしまったため、引き継ぎがほとんどない状態から体制が切り替わってしまったという状態になります。社内の開発者が先に割り当てられていたのですが、困っているので助けてくれということで私が途中から入ることになりました。 作り直すかどうか 事
おはこんばんちは!! 尾藤 a.k.a. BTO です この記事は、UUUM Advent Calendar 2018 12日目の記事です。 (だけど遅れて13日目に公開しました。ごめんなさいごめんなさい) UUUMでは新入社員に会社の事業を理解してもらうために、各ユニット長が自分たちが何をやっているのか新入社員に説明する事業説明会というのがあります。 そこでシステムユニットの説明をするのですが、1時間という限られた時間の中で技術のわからない人たちに僕ら開発部隊がやっていることを理解してもらうのには無理があります。そうすると結局開発しているツールの説明になってしまうのですが、会社の状況がよくわかってない新入社員にいきなりツールの説明しても理解できませんし、自分の職種に関係のないツールの説明を聞いてもわかりません。で、結局何もわからずに終わってしまいます。 せっかく新入社員の人に時間をとって
前置き この記事は、UUUM Advent Calendar 2018 8日目として書きました。 序文 JavaScript の「なんだこれ・・・」シリーズの第一弾は、「タグ付きテンプレートリテラル (Tagged Template Literal)」です。 仕様 ES6 で追加された仕様に、テンプレートリテラル (Template Literal) があります。他の言語ではよく見られる機能です。この機能を使えば、変数の値を文字列中に埋め込みたい時に文字列連結演算することなくスマートにコード化できます。 色々な言語のテンプレートリテラルを見てみましょう。自分が業務で扱ったことのある言語の例を挙げてみました。 # Ruby love = '最愛の' "#{love}嫁さん (^-^)" # '最愛の嫁さん (^-^)' // PHP $love = '最愛の'; "{$love}嫁さん (^
おはこんばんちは!! 尾藤 a.k.a BTO です おかげさまで UUUM のエンジニアも増えて賑やかになってきて、なんとアドベントカレンダーも始められるようになってきました!! そこで初日の今日は UUUM の開発部隊であるシステムユニット(社内では通称攻殻機動隊)の紹介をしてみようと思います おっと、申し遅れましたが、UUUM 攻殻機動隊ではバトーを担当しております。 UUUMって? UUUM は Hikakin、はじめしゃちょー、Fischer's のようなトップ YouTuber が所属する事務所です。事業はそれだけに留まらず Instagram, Twitter のような他の SNS プラットフォームへの展開や、イベント、グッズ販売、動画制作など多岐にわたっています。 2017年8月31日に東証マザーズに上場。おかげさまで業績も好調で売上も100億円を超え、営業利益も7億円を超
こんにちは! Hipster フロントエンドエンジニア ごーです。 弊社では、ランディングページなどの単発で必要になるサイトを実装することがよくあります。 そういった案件の場合は、各開発者がローカルに開発環境を持ち画面実装を行うか、 制作会社様へマークアップとスタイルを発注して納品して頂く流れになります。 しかし、属人性を少なくしていきたいと常々考えるところがありました。 本件では、Web制作環境を誰でも短時間で整えられる仕組みを構築した件についてご報告させていただきます。 また、本件の内容で扱うリソースは、こちら からダウンロードできます。 静的サイトとは サーバーサイドでは特に処理を行わず、ブラウザからのリクエストに対して、そのままファイルをレスポンスするサイトのことです。 誰が静的サイトをつくるのか マークアップエンジニアや、Web制作会社のような発注先の作業者が静的サイトを実装する
こんにちは。日が経つのは早いものでもう会社に入って6ヶ月になります、UUUMシステムユニットの赤根谷です。 はじめに 弊社ではRailsを利用したプロジェクトが多いのですが、一部でマイングレーションツールとしてridgepoleというrubyのライブラリ(gem)を使っております。 この度私がこの「ridgepole」について社内向けに勉強会を行なったので、ブログにもまとめたいと思います。 環境 なお、弊社ではrubyを利用したプロジェクトの場合の技術スタックとしてRails + MySQLの採用率が高いため、例は全てその環境が前提となります。ただ試していませんがDBはMySQLの代わりにPostgreSQLでも動きそうです。 またridgepoleのバージョンは現在(2018/11/11)で最新の0.7.4、Railsは5.2.1、MySQLは5.7.24です。 Ridgepoleとは
こんにちは!エンジニア(仮)のめる(@c5meru)です。 最近はもっぱらバックエンドエンジニアとしてお仕事しているのですが、一方でVue.js 日本ユーザー会のスタッフとしてVue Fes JapanやVue.js Meetupのお手伝いに参加しているので、もうちょっとVueのキャッチアップをやったほうがいいかも😨...と思い、今回は表題のテーマで発表しました。 Vue CLI とは Vue.jsプロジェクトのひな形を作成するための、コマンドラインツールです。 Node.js をインストールした状態で、以下のコマンドを実行すると動かせるようになります。 $ npm install -g @vue/cli 爆速でプロジェクトを作る vue create <プロジェクト名> でプロジェクトを作成できます。 presetで、 default (babel, eslint) を選択すると爆速で
AWSの監視といえばCloudWatchですが、CloudWatchの中に、CloudWatch Logsというログ管理用のサービスがあります。 特にECSとの連携が強力なので、そこに焦点を当てて紹介したいと思います。 CloudWatch Logsの概要 簡単に言えば、そこにログを出力しておいて、コンソール等からログを確認できるサービスです。 ログ分析といえばSplunkやTreasure Dataといったサービスを思い浮かべますが、それらよりはもう少しシンプルで、基本的には現在時刻近辺のログを見ることに特化しております。過去のログから集計というような機能はありません。 本格的に使うには物足りないところも多いですが、AWSで手軽かつ低予算でログを管理するにはお勧めです。 ECSからコンテナのログをCloudWatch Logsに出力する ECSというかDockerには logging d
はじめまして はじめまして!先月よりUUUMに入社した新米エンジニアの赤根谷です。 会社に入るまでPromiseやasync, awaitについてほとんど触っていなかったのですが、会社で必要になったのでこの度勉強しました(既存のプロジェクトにたくさん使われていました)。 Promise、async, awaitについて学んだことを社内の勉強会で共有したので、今回はそのうちのPromise部分についてブログにまとめようと思います。 一応の目標は、Promise学習の初期段階でつまづかない土台を作ることです。 注:Promise, async, awaitについて全く知らないという以前の僕のような方のためにざっくり言っておくと、これらは新しいJavaScriptで使えるようになってきた言語の機能です。 注:この記事ではPromiseについての基本的なことしか扱いません。また、具体例については自
こんにちは!エンジニア(仮)のめるです。 今回は社内勉強会にて、表題のテーマで発表したのでブログに書きたいと思います。 Firebase とは firebase.google.com モバイルとウェブ開発に特化した、クラウドプラットフォームです。 Googleが2014年に買収しました。そして、機能がいっぱいあります! 今回は、Authentication と Realtime Database を使いました。 Authentication FirebaseのAuthenticationの特徴は、ユーザーが各種アカウントで簡単にログインできることです。 対応しているログインプロバイダも、さまざま。 こちらの記事を参考に、メールアドレスとパスワードでを用いたログインを実装してみましたが、とても簡単でした。 qiita.com 以下は、Vue.js内のログイン処理の抜粋です。 import f
こんにちは、タナカです。 夏は花火を見ながら飲むビールが最高ですね。 さて、本日はRubyをある程度使いこなせるようになった方へおすすめの「メタプログラミングRuby」を紹介したいと思います。 メタプログラミングRuby 第2版 作者: Paolo Perrotta,角征典出版社/メーカー: オライリージャパン発売日: 2015/10/10メディア: 大型本この商品を含むブログ (3件) を見る メタプログラミングとは? そもそもメタプログラミングとは何でしょうか、本書籍には以下一文で説明されています。 メタプログラミングとは、コードを記述するコードを記述することである。 Javaのソースコード上で使用できるアノテーションや、C++のテンプレートのようなコードを思い浮かべるとわかりやすいかもしれません。 これらのように、プログラムの一部を自動生成するものをメタプログラミングと呼びます。 た
設計と実装で 抑えておきたい サービスクラスと例外 from Takuya Sato nazoです。 最近はUUUMもエンジニアを含む開発チームもメンバーが増えてきました。メンバーが増えてきた時に、どうしても技術力にムラがある(単純に高い低いという話ではなく、得意な点や考え方が個人により異なるということ)という問題が生じます。 個別の細かい技術についてはその場で説明すれば良いのですが、「設計」と言うと単純に説明するのは難しく、そもそも人によって考え方にも違いがあります。とはいえここは抑えておいてほしいというところはあるので、社内で勉強会を開催して説明した内容を社内向け文書も兼ねて公開したいと思います。 今回は「サービスクラス」の作り方について紹介したいと思います。サービスクラスという概念はバックエンドに限らず、フロントエンドやその他様々なアプリケーションで応用できる概念かと思います。資料に
こんにちは、Railsエンジニア見習い補佐のナカハシです。 新しくRailsアプリ開発環境を立ち上げるに辺り、Ruby層まで含めたDocker化をしてみたときのあれこれを残しておきます。 今回の構成 新しく作るRailsアプリは、他のUUUMのRailsアプリのよくある構成と同様、Rails + MySQL + Redis(主にセッション用)の構成にしました。 こういった複数のミドルウェアと組み合わせた動作環境を作る場合、それぞれのDockerコンテナをいい感じに動かすためにDocker Composeを使います。公式ページに Quickstart: Compose and Rails というサンプルがあるので、これを元に設定ファイルを書きました。( rails new までの手順もここの通りに実施していますので、主な手順もこちらを参照して下さい) MySQLコンテナとの接続 (ほとんどコ
UUUMに入社して1年が経ったエンジニアの北畠です。 Railsも使い始めてもう半年経ちました。 そこで、Railsのジョブキューのgemで有名なSidekiq。 UUUMのプロダクトでもかなり使っているんですが、 どのように動いているかよくわかっていないので調べてみました。 基本的な使い方は Getting Started · mperham/sidekiq Wiki · GitHub から まずはエンキュー ActibeJob.perform_later キューに入れたい処理はActiveJob::Baseを拡張したクラスのperformメソッドに実装し、 perform_laterを呼び出すと、エンキューの処理が走る。 Class SampleJob < ActiveJob::Base def perform p "Hello!" end end ... SampleJob.perf
どうもエンジニアのやまぐちです。 年末はビルドツールを触る機会が多かったため寝ても覚めてもWebpackな感じでした。 そんな中で単一ファイルコンポーネントでSCSS共通の変数やmixinを使う場合に少し悩んだので、 同じように苦労している方がいれば参考にしていただけたら幸いです。 https://github.com/webpack-contrib/sass-loader ディレクトリ構成 ディレクトリ構成は以下で進めていきます。 /example ├ webpack.config.js ├ dist │ ├ app.js │ └ index.html └ src └ assets ├ script │ ├ app.js │ └ App.vue └ style ├ global.scss ├ _mixins.scss └ _variables.scss /src/assets/style
フロンエンドエンジニアごーです。 vue-test-utilsのドキュメントを読んでいて、Jestというテストフレームワークが紹介されていたので、どんな機能があるのか試してみました。 Jestとは Facebook社製の快適なJavascriptのテストを実現するためのフレームワーク。 Reactアプリケーションを含む全ての JavaScriptコードのテストに利用可能で、複雑な設定ナシで高速に動作する。 githubのstar: 13,840 (2017/12/04の時点で) 2014年から開発が行われている facebook/jest 単一ファイルコンポーネント(SFC)をテストする 事前コンパイルが必要 Jestプリプロセッサを使用するので、テスト過程でwebpackは不要 基本的なSFC(StatelessFunctionalComponent)機能をサポートしているがvue-lo
nazoです。 kubernetesの勢いが強い昨今ですが、AWSではやはりECSが便利です。 ECSは簡単に使えるものの、より便利に使うにはいくつか抑えておくポイントがあります。今回はその点をいくつか紹介したいと思います。 前提知識 ECS ECSには「クラスタ」「サービス」「タスク定義」という概念があります。 1つの「クラスタ」には複数の「サービス」が入り、「サービス」は「タスク定義」で定義されたタスクが起動、常駐します。 「クラスタ」には複数のEC2インスタンスが登録され、登録されているEC2インスタンスの中でサービスは起動します。どのEC2インスタンスがどのクラスタに登録されるかは、EC2内にいるecs-agentコンテナがクラスタに通知する仕組みになっています。通常はEC2のユーザーデータでクラスタ名を指定します。 ALB ALBは、リスナーポートをターゲットグループに割り当てる
nazoです。 Elasticsearchを運用する際に、マスタデータはMySQLで持ちたいという場合にどうやって同期をするかというのが問題になります。また、Elasticsearchはバージョンの互換性が厳しく、別バージョンをクラスタに混ぜることは基本的にできず、さらに辞書の更新などを行う場合はインデックスを全て更新しなくてはいけないなどの運用上の課題があります。 今回は社内向けに使っているElasticsearchを、これらの問題を解決しつつどのように運用するかを考えてみましたので、紹介したいと思います。 簡単に MySQLとElasitcsearchの同期は go-mysql-elasticsearch を使います。 無停止のためのデータコピーは elasticsearch-dump を使います。 MySQLとElasitcsearchの同期 go-mysql-elasticsear
エンジニアのタナカです。 ライブ配信というとReal Time Streaming Protocol(RTSP)が有名ですが、 AbemaTVやFresh!といった最近のサービスでは、HTTP Live Streaming(HLS)というHTTPベースのプロトコルでライブ配信 を行っています。 従来のRTSPでは、転送プロトコルにUDPを使用することが多く、配信には専用のサーバーが必要でした。 ところが今回紹介するHLSならば、転送プロトコルにHTTPを使用し、ApacheやNginxといった一般的なサーバーを使って動画配信できるようになります。 また、HTTPベースなのでCDNも利用可能で、同時接続数を増やすのも容易なようです。 HTTP Live Streamingについては、こちらのサイトがわかりやすいので、ぜひ見てみてください。 did2memo.net 今回は、このHLSを使用し
おはこんばんちは!! 尾藤 a.k.a. BTO です。 最近の若い人で Makefile を書く人が増えているそうじゃないですか。 そしたらもう、ウホ、これはオサーンの出番ってなるわけですよ。 僕みたいな老害はこんな場面でしか幅を利かせられないってことで、ええ、やりましたよ make 入門を社内勉強会で。 makeとは 様々な実装 サンプル ルール やってみる ファイルを一部だけ更新してみる 変数 自動変数 Suffix Rule(古い) Pattern Rule Phony Target まとめ makeとは 最近はタスクツールとしても使われることの多い make ですが、元々はビルドツールで、ライブラリや実行ファイルのビルドに使われるツールです。 UNIX環境で使われることが多く、調べてみると最初のリリースは 1976年4月で、 Stuart Feldman というベル研の方によって
どうも、新人エンジニアのハトネコエです。 株式会社ハートビーツさんからお誘いいただき、 8/4(金)、株式会社ハートビーツさんとUUUM株式会社のエンジニアが集って合同勉強会をおこないました。 ハートビーツさんの技術ブログはこちら → インフラエンジニアway - Powered by HEARTBEATS 株式会社ハートビーツさんに到着 とてもいい感じのウェルカムボードで出迎えてくださいました! そして、ウェルカムボードの前で集合写真をパシャリ! 温かく迎え入れてもらいつつ、会場となるハートビーツさんのフリースペースへ移動しました。 乾杯! イベント開始! レンガ模様がオシャレなフリースペースに案内していただき、しばしの準備のあと乾杯です!! (左:UUUM株式会社 CTO 尾藤さん、右:株式会社ハートビーツ 代表取締役 藤崎さん) 今回のイベントはこのお二人によって開催されました。 下
ロードバランサーってあれでしょ? いい感じに通信を分散してくれるんでしょ? くらいの知識しかなかった執筆者、ハトネコエです。 ふわっとしすぎている知識から一歩進んで、もうちょっと詳細を知りたくなったので、 以前から気になっていた部分を調べ、社内勉強会で発表してみました。 〜〜お品書き(ここが謎だよロードバランサー)〜〜 1. ロードってなに? 道? 2. どんな仕組みで振り分ける先を決めるの? 2-1. DNSラウンドロビン 2-2. RFC 3484 に従ったクライアントに対して従来のDNSラウンドロビンは使えない 2-3. コマンドで確認 2-4. AWSのELBはどの仕組み? 3. 複数のロードバランサを立てたとき、それらへの振り分けは誰がするの? 4. データはどんな道のりでサーバーからクライアントに渡されるの? 5. 専用の機械を使わなくてもロードバランサーって立てられるの? お
nazoです。 UUUMでは2017年3月時点で4000チャンネルを抱えており、日本最大のマルチチャンネルネットワーク(MCN)となっております。 これだけのチャンネル数があり、さらに多くのチャンネルは毎日のように動画を投稿しており、1日に増える動画の数だけでも相当な数になっています。 以前はこれらのデータの取得をPHPで行っていたのですが、最近Goによる新システムの運用を少しずつ始めており、大きな変化が生まれています。 今回はそのあたりについて解説したいと思います。 現在の構成 それまで動いていたPHPによる解析システム(こちらは今回は話しません)があるのですが、これはUIとデータ取得部分が、そもそも他のシステムと同居しており、改修が難しくなっていました。また、PHPは並列処理が苦手で、やろうと思えばいくつか手段はありますが、並列化に対して大きくリソースを割いていませんでした。そのため、
おはこんばんちは!! 尾藤 a.k.a. BTO です。 みなさん、Google Apps Script 書いてますか〜。 Cybozu の Kintone 使ってますか〜。 Cybozu の Kintone ってちょっとした業務アプリを手軽に作るのに便利なんですよね。 弊社でも社内の情報を管理するのに Kintone 使ってます。 一方で、 Kintone ってプログラミングは必要ないんだけど、やっぱりシステムの知識がある程度ないと使いこなすのは難しいですよね。 なので、情シスで対応できないところは Google Spreadsheet でデータの管理をしていたりします。 そうすると欲しくなりますよね。 Kintone とデータ連携するためのツールが!! というわけで、Google Apps Script で Kintone API 用のライブラリを作りました〜!!(パチパチパチパチ G
次のページ
このページを最初にブックマークしてみませんか?
『UUUMエンジニアブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く