tatsumackのブックマーク (439)

  • bimg (libvips Goバインディング) でサムネイル画像作成を高速化する - スタディサプリ Product Team Blog

    はじめに こんにちは、Webエンジニアの濱田裕太 (@yuuta) です。 Quipperが開発・運用している スタディサプリ のプロダクトでは、バックエンドの一部をGoで実装しています。そのサムネイル画像作成で利用する画像処理ライブラリを imaging から bimg (libvips のGoバインディング) に変更したことで、高速化・省メモリ化を実現しました。エントリでは、それによって得られた知見を共有します。 1. どのくらい高速化・省メモリ化したか 1-1. 検証コード 1-2. 処理時間 1-3. メモリ使用量 2. なぜ高速化・省メモリ化されるのか 2-1. libvipsの画像処理アーキテクチャ 2-2. SIMD対応 2-3. JPEGスケーリングデコード 3. 運用時の留意点 3-1. libvipsのパッケージサイズ 3-2. libvipsのオペレーションキャッシ

    bimg (libvips Goバインディング) でサムネイル画像作成を高速化する - スタディサプリ Product Team Blog
    tatsumack
    tatsumack 2021/03/01
  • 【Android】FlipperのCustomPluginを作成してデバッグ効率を改善する - Mirrativ Tech Blog

    Mirrativ Androidエンジニアのmorizoooです。MirrativではデバッグツールとしてFlipperを使っています。Flipperはモバイルアプリデバッグのためのデスクトップアプリケーションで、アプリ内のデータの整形や可視化を行うことができます。また、Flipperはネットワークの通信状況を確認するNetworkPluginなど、標準でいくつかの機能が用意されています。詳細についてはこちらをご覧ください。 tech.mirrativ.stream Flipperは標準機能だけでなく、独自のCustomPluginを作成することもできます。MirrativではCustomPluginを積極的に作成し、バグ調査や開発効率の改善に役立てています。一つ例を上げると、Mirrativではコメントやギフトの機能のために、WebSocketベースの独自のPubSubライブラリを使用し

    【Android】FlipperのCustomPluginを作成してデバッグ効率を改善する - Mirrativ Tech Blog
    tatsumack
    tatsumack 2021/02/24
  • <!-- "> '> --><title>

    <!-- "> '> --><title>
    tatsumack
    tatsumack 2021/01/30
  • CSS Variablesを使ってWeb LP制作のエンジニア作業時間を0にした話 - Mirrativ Tech Blog

    こんにちは。Webフロントエンジニアの駒木です。 Mirrativでは毎週の様に運営主催イベントやゲーム会社様とのコラボ企画イベント等が開催されます。 そのイベント情報をユーザーへお伝えするメディアとして、イベント毎にWebページ いわゆる LP ( Landing Page ) を制作・公開しています。 Mirrativで公開している多種多様なLP ですが毎週の様に新しいイベントが企画・開催されますので、LPをエンジニアが都度制作していてはとても追いつきません。 そこでミラティブではCSS Variablesを活用することで、イベントの魅力が伝わるWeb LPをエンジニアが作業することなく制作・運用できる体制を構築しています。 記事ではここまでに至った過程も含めお伝えします! 目指すはイベント運用の効率化と専門性の排除 遡ること半年ほど前、イベント企画チームの目標として『より多くのイベ

    CSS Variablesを使ってWeb LP制作のエンジニア作業時間を0にした話 - Mirrativ Tech Blog
    tatsumack
    tatsumack 2021/01/29
  • 【iOS】ミラティブにウィジェット機能を実装した際の開発Tips - Mirrativ Tech Blog

    こんにちは、iOS エンジニアの千吉良です。iOS14 にはウィジェット機能が新しく搭載*1されて、アプリ側で対応をすることで iOS 端末のホーム画面に独自のウィジェットを置けるようになりました。ミラティブでも、たまにはオシャレしたいよねということで昨年ウィジェット機能に対応しました。まだまだ対応しているアプリは少ないですが、ホーム画面に置いておくとアプリへの愛着も増すし、 SwiftUI での開発が経験できて今後対応していくであろう新しい開発環境を経験できるという点にもメリットがあります。今回はミラティブで導入したウィジェット機能について、いくつかの実装に触れてご紹介します。 ウィジェットの機能 ミラティブのウィジェット上では、フォローしている友だちの最新の配信情報を確認することができます。ウィジェット上にはユーザーのアイコンと名前が並び、アイコン上に設置されているマークによって対象の

    【iOS】ミラティブにウィジェット機能を実装した際の開発Tips - Mirrativ Tech Blog
    tatsumack
    tatsumack 2021/01/27
  • 「スーパーで買える2000円前後のウイスキーレポ」に呑兵衛が集まって『推し酒』を語る展開へ。「ミズナラはいいぞ」「手軽さならジャックダニエル」他

    鈴華御前 @xxdiablo__ @furunomitama 私もミズナラの炭酸割好きです!ジャパニーズウイスキーと比べても日人の好みよく分かってんな…という感じで 2021-01-21 10:29:08

    「スーパーで買える2000円前後のウイスキーレポ」に呑兵衛が集まって『推し酒』を語る展開へ。「ミズナラはいいぞ」「手軽さならジャックダニエル」他
    tatsumack
    tatsumack 2021/01/24
  • Goで開発した配信サーバーのメモリ使用量問題に向き合う - Mirrativ Tech Blog

    こんにちは。ストリーミングチームの松です。 Mirrativのストリーミングチームは、低遅延配信や、通知ぼかしというような機能を追加するため、配信のorigin serverの前段にtranscoder serverというものを導入してきました。 tech.mirrativ.stream tech.mirrativ.stream transcoder serverはGoによる内製のミドルウェアであり、主に映像の変換を行う目的で作られました。現在は配信プロトコルの変換(既存プロトコル -> 低遅延プロトコル)などを行っています。また、実際にはサーバー上のDockerコンテナ内で動作しています。 transcoder serverを展開していくにあたり、メモリ使用量が常に増え続ける問題が起きていたため、その際に直面したGoの実メモリ使用量に関する話を書きたいと思います。 メモリ使用量の増加問

    Goで開発した配信サーバーのメモリ使用量問題に向き合う - Mirrativ Tech Blog
    tatsumack
    tatsumack 2021/01/21
  • 独身だけど新築戸建てを買った話(コメント返信を追記2).md

    独身だけど新築戸建てを買った話(コメント返信を追記2).md 独身だけど新築戸建てを買った話 この記事は Mobility Technologies Advent Calendar 2020 の2日目の記事です。 はじめに みなさんこんにちは。tetsukayです。 株式会社Mobility Technologies でソフトウェアエンジニアAndroid, Flutter)として働いています。 突然ですが、私は先日家を購入しました。この記事は家を購入するまで考えたことや流れを赤裸々に ただ殴り書き しているだけですが、だれかの参考になればと思います。 動機 弊社は今年4月にDeNAのオートモーティブ部門とJapanTaxiが統合して誕生しましたが、DeNAだった時から週2程度のリモートワークが認められていました。 そんな最中新型コロナウィルスが猛威を振るいだしたわけですが以前から制度と

    独身だけど新築戸建てを買った話(コメント返信を追記2).md
    tatsumack
    tatsumack 2021/01/16
  • 2021年新刊予告『Webブラウザセキュリティ ― Webアプリケーションの安全性を支える仕組みを整理する』

    2021年新刊予告『Webブラウザセキュリティ ― Webアプリケーションの安全性を支える仕組みを整理する』 2020年12月28日 ご来店ありがとうございます。 2021年の新刊第1弾の発売予告です。 来る1月5日(火)より、米内貴志著『Webブラウザセキュリティ ― Webアプリケーションの安全性を支える仕組みを整理する』の発売を開始いたします。メールによる「発売開始しました」通知を受けたい方は書籍ページでメールアドレスを登録できるようになっています(予約ではないので注意してください!)。 現代のWebブラウザは、HTTPのクライアントとしてWebページを表示するだけのソフトウェアではありません。 現代社会を支える多様なアプリケーションのプラットフォームとして、そのユーザーを守るためのセキュリティ機構が幾重にも組み込まれています。 もしそれを理解しないままアプリケーションが作られれば、

    2021年新刊予告『Webブラウザセキュリティ ― Webアプリケーションの安全性を支える仕組みを整理する』
    tatsumack
    tatsumack 2020/12/28
  • OAuth2の次に来ると言われる認可プロトコルGNAPとはなにか | メルカリエンジニアリング

    Merpay Advant Calendar 2020、23日目の記事は、趣味で認証認可をやっている @nerocrux が送りいたします。 最近 GNAP という認可プロトコルのワーキンググループドラフトが出ていて頑張って細かく読みましたので、(次回はいい加減に仕事でやってることについてお話しますが)今回はその GNAP について紹介させてください。 GNAP とはなにか? GNAP は Grant Negotiation and Authorization Protocol の略で、認可のプロトコルです。Justin Richerさんという方を中心に策定しています。作者によると、GNAP の発音は げなっぷ になります。 認可(Authorization)プロトコルと言えば、OAuth 2.0 (RFC6749) が広く知られ、運用されています。GNAP は OAuth 2 の後継とし

    OAuth2の次に来ると言われる認可プロトコルGNAPとはなにか | メルカリエンジニアリング
    tatsumack
    tatsumack 2020/12/24
  • 【インフラ】Mirrativのデータベースを最小限の影響で切り替える運用の紹介 - Mirrativ Tech Blog

    こんにちは、ミラティブのインフラを担当している清水です。 今回はミラティブのデータベースのマスタをどのようにフェイルオーバさせているかノウハウをお伝えしようかと思います。 ミラティブではデータベースにMySQLを利用しており、マスタ・スレーブ構成で冗長化しています。 マスタ・スレーブ構成の優れている点はデータをフルダンプすればデータベースを完全に複製でき、マルチマスタ構成で発生しうるデータ不整合を気にかけなくて良い点です。 データベースのクラスタリングには MySQL Cluster や GaleraCluster などもありますが、マスタ・スレーブ構成はストレージエンジンに依存せず素のMySQLで運用できるので、クラスタ固有の制約にハマったりせずシンプルに運用できるのも強みです。 ただし、マスタ・スレーブ構成の鬼門となるのがマスタのフェイルオーバです。 スレーブは参照のみリクエストを処理

    【インフラ】Mirrativのデータベースを最小限の影響で切り替える運用の紹介 - Mirrativ Tech Blog
    tatsumack
    tatsumack 2020/12/23
  • ドメイン駆動設計を導入するために転職して最初の3ヶ月でやったこと[DDD] - little hands' lab

    この記事は ドメイン駆動設計 Advent Calendarの記事です。 今年の9月にログラスというスタートアップに転職しました。 ログラスは元々DDDについて講師として勉強会をさせてもらっていた会社であり、DDD自体は社として取り組んでおりある程度進んでいました。ですが、講師ではなく中の人になったからこそできる色々な取り組みがあり、3ヶ月である程度形になりました。 記事では、DDDを広めるための取り組みについて、極力再現性がある形を意識しつつ、ご紹介したいと思います。 入社時の状況 なにをしたか テストの話が多い理由 実施内容詳細 TDD Boot Campの@t_wadaさんの基調講演観賞会を行った Serviceクラスを1パブリックメソッドにした レイヤーごとのオブジェクトの依存関係を整理 レイヤーごとのテスト方針 クラス名の重要性 参照実装を作成した 「責務」と「テスト」の重要性

    ドメイン駆動設計を導入するために転職して最初の3ヶ月でやったこと[DDD] - little hands' lab
    tatsumack
    tatsumack 2020/12/23
  • 【Go】profefeでContinuous Profilingをやっていく話 - Mirrativ Tech Blog

    こんにちは、サーバーエンジニアの牧野です。 今回はGoで開発しているアプリケーションでContinuous Profilingを実践するために導入した profefe を紹介したいと思います。 Continuous Profilingとは Continuous Profilingとは、ざっくり言うと番環境で継続的にプロファイリングすることを指します。Continuous Profilingができると、番環境でのみ発生するパフォーマンスの問題を捉えることができたり、継続的にプロファイリングすることで問題が発生する前後の状態を比較することができます。 Goには pprof というプロファイリングのための標準パッケージがあり、プロファイリング自体は容易に行うことができますが、Continuous Profilingを実現するとなると、以下のような課題と向き合う必要があります。 番環境でオー

    【Go】profefeでContinuous Profilingをやっていく話 - Mirrativ Tech Blog
    tatsumack
    tatsumack 2020/12/18
    書きました
  • 技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita

    はじめに 稿は、ソフトウェア開発を進める際に直面する様々な技術的な意思決定やライブラリ・フレームワーク・XaaS等を選択し正しく活用していくのかについての考え方をサポートすることを目的としています。「すべてにおいてこのようなワークフローを通じて検討すべきである」という主張ではありません。読者の抱える問題領域に応じて、必要な箇所を取捨選択するための1種の考え方を提供するものです。 そもそもアーキテクチャ・技術選定に時間をかけるべきか まず第一に伝えておきたいことは、技術選定やアーキテクチャ設計に常に慎重であるべきではないということです。ソフトウェアの規模やライフサイクルに応じて、そもそも時間をさく必要がないということも多くあります。書き捨てのシェルスクリプトにも読みやすいコードを求めて書くことは非常に重要ですが、だからといって組織だって議論・検討するようなものでもないのです。一方で、5年も

    技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita
    tatsumack
    tatsumack 2020/12/15
  • Mirrativ の Android アプリで使っているライブラリを紹介する! - Mirrativ Tech Blog

    こんにちは、Androidエンジニアのもりぞーです。今回は Mirrativ の Android アプリで使っているライブラリをご紹介します。 こちらの記事のAndroid版になります! tech.mirrativ.stream ライブラリ一覧 Google開発ライブラリ 公式ライブラリでありAndroid開発のスタンダードになっているので、Googleが提供しているライブラリは必要に応じて積極的に使うようにしています。 Android Jetpack Mirrativでは現状以下のライブラリを使っています。 "androidx.appcompat:appcompat" "androidx.annotation:annotation" "androidx.browser:browser" "androidx.cardview:cardview" "androidx.constraintla

    Mirrativ の Android アプリで使っているライブラリを紹介する! - Mirrativ Tech Blog
    tatsumack
    tatsumack 2020/12/11
  • 大規模リポジトリで高速にgit cloneするテクニック - DeNA Testing Blog

    ニッチな話題ですが、業務におけるCI/CDの現場では避けることのできない大規模リポジトリと戦うためのgit cloneのテクニックを紹介します。 この記事はDeNA Advent Calendar 2020の10日目の記事です。 CI/CDマニアの@Kesin11です。SWETではCI/CDチームの一員として、CI/CDの啓蒙活動やJenkinsを必要とするチームのサポートなどの業務を行っています。 はじめに おそらくどこの会社でも1つぐらいは巨大なリポジトリが存在しているかと思いますが、歴史あるリポジトリはgit cloneするだけで数分を要し、checkout後のリポジトリサイズがGB単位になることも珍しくないでしょう。業務で古くから存在するプロジェクトのリポジトリを触ったことがある方はきっと経験があるかと思います。 git cloneを実行するのは最初のセットアップ時だけなのであまり

    大規模リポジトリで高速にgit cloneするテクニック - DeNA Testing Blog
    tatsumack
    tatsumack 2020/12/11
  • ミラティブのサーバサイドをGo + Clean Architectureに再設計した話 - Mirrativ Tech Blog

    こんにちは、テックリードの夏です。 今年4月にCTOからテックリードに肩書が変わり、ガリガリコードを書くようになりました。 背景については、こちらをご覧ください。 www.wantedly.com 普段はプロダクト側の機能開発と、サーバ側の基盤開発を半々ぐらいの割合で仕事しています。 一口にサーバ側の基盤開発といっても定義が曖昧なのですが、基的にはこんな感じのタスクをやっています。 インフラコストの最適化 不正なアクセスからの防御 障害の再発防止 新技術の導入やアーキテクチャの整備 今回はこのうち「新技術の導入やアーキテクチャの整備」の中で、サーバサイドをGo + Clean Architectureで再設計したことについてお話したいと思います。 背景 ミラティブは2015年春頃に開発が始まり、同年8月にサービスがリリースされ、2020年8月で5周年を迎えました。 その過程で組織やプロダ

    ミラティブのサーバサイドをGo + Clean Architectureに再設計した話 - Mirrativ Tech Blog
    tatsumack
    tatsumack 2020/11/30
  • Mirrativ の iOS アプリで使っているライブラリを紹介する! - Mirrativ Tech Blog

    こんにちは、iOSエンジニアのちぎらです。今回は Mirrativ の iOS アプリで使っているライブラリをご紹介します。 Mirrativ ではどんなライブラリを使用していますか?と質問されることが時々あります。設定画面のライセンス情報に一覧で表示はされているものの、ライブラリ名だけでは用途が分かりにくいものもあるので、説明を添えて一覧で確認できるようにしようというのが今回の趣旨です。 ライブラリ管理には CocoaPods、Carthage を使用しています。最新のライブラリに追従できるように、一部のライブラリでは CI(Bitrise)上で定期的にバージョン更新のためのプルリクを作成しています。Swift Package Manager はまだ導入していませんが、タイミングを見て集約していけたらいいですね。 ライブラリ一覧 HTTP通信/ストリーミング Alamofire HTTP

    Mirrativ の iOS アプリで使っているライブラリを紹介する! - Mirrativ Tech Blog
    tatsumack
    tatsumack 2020/11/26
  • ネットワーク越しリトライ考 - その手の平は尻もつかめるさ

    ここ最近では何らかのインターネットサービスを構築・運用するにあたって、ネットワーク越しのリトライを考えることは避けられなくなりつつあります。 micro services のようなアーキテクチャを採用している場合はサービス間のメッセージのやり取りはまず失敗する前提 (つまりリトライをする前提) で組む必要がありますし、たくさんのクライアントがいてそのクライアントが定期的に何かを処理してセントラルにデータを送ってくる IoT のようなシステムを構築する時もその処理のリトライをよく考える必要があります。 というわけで「ネットワーク越しのリトライ」についてここ最近考えていることをざっくりと書き留めるものであります。 前提 リトライをする側をクライアント、リトライを試みられる側をサーバと呼称します リトライにおいて、サーバおよびネットワークはクライアントよりも弱者です クライアントはリトライをコン

    ネットワーク越しリトライ考 - その手の平は尻もつかめるさ
    tatsumack
    tatsumack 2020/11/17
  • 脊柱側湾症の矯正手術をうけた - memo_md

    タイトルにある通り、脊柱側湾症と呼ばれるものの矯正手術を受けて、最近ようやくまともに活動できるようになってきた。 似た症状でどうしようかな〜って思ってる人のためになるかもしれないので、色々と記録として残しておく。 脊柱側湾症とはなんぞや 簡単に言うと、背骨が横に曲がっている病気。 普通の人はこう 自分はこうなってた 手術を受けることになるまでの経緯 まず、毎年健康診断を受けており、その際のレントゲン検査で毎回「側湾症」と記載されてたので、自分が側湾症であることは知ってた。 自覚症状は無いの?と言われるとバッチリあって、 壁に背中がぴったりつかない(右の肩甲骨より上がつかない) 肩の高さがよく見たら違う 横腹に若干の張りを感じる 両腕を無意識に前に伸ばすと長さが違う みたいな感じで、冷静に考えると普通ではない。 ただ、 健康診断の総合判断的にも「経過観察」的な扱い 普段の生活では特別支障がな

    脊柱側湾症の矯正手術をうけた - memo_md
    tatsumack
    tatsumack 2020/11/10