Rustでバイナリを読み書きするのに必要なクレート3選

f:id:aptpod_tech-writer:20200929185853j:plain

研究開発グループの大久保です。

当社の製品の中にはC/C++で書かれたものが存在し、その中には独自のバイナリフォーマットを取り扱うものが存在します。既存のコードとやり取りするようなRustのプロジェクトを起こすためには、その独自のバイナリフォーマットをRustで取り扱えるようにしなければなりません。しかしながら、Rustの標準ライブラリの機能だけでは、バイナリの読み書きは意外と面倒になります。そのため、今回はRustでバイナリを扱うのならぜひ知っておきたいクレートを3つご紹介します。

続きを読む

CIの動的テストでclang sanitizerを使う

f:id:aptpod_tech-writer:20200924215032j:plain

はじめに

こんにちは、製品開発グループの落合です。主に エッジサイドミドルウェア(intdash Edge)の開発を担当しています。このintdash EdgeはC++で作成しているのですが、言語が何であろうと「面倒な事は自動化したい」ですよね。そして、特に面倒なのは「テスト」じゃないでしょうか?

そんな訳で、intdash Edgeのプロジェクトで使用している「CIでの動的テスト」を紹介させて頂こうと思います。「CIでテストなんて当たり前でしょ」と言われる気もしますが、clangsanitizerを使っている記事は意外と少ない気がするので今回記事にしてみました。
え、なんでvalgrindではなくsanitizerを使っているかですか?単純に検知できるエラーが多いのが理由です。

続きを読む

入社後に経験したアプトポッドの文化とキャッチアップの取り組み

f:id:aptpod_tech-writer:20200916195207p:plain

はじめまして、今回記事を書かせていただきますSREチームの金澤と申します。よろしくお願いいたします。

自己紹介

前職はとある会社の情報システム部門に在籍して自社のサーバやネットワークの管理といった社内インフラのあれこれを担当していました。

そんな中、社内インフラの更改を担当する機会がありました。更改先として候補に挙がっていたパブリッククラウド(AWS)に触れ、パブリッククラウドが持つサーバ資源調達の迅速性やリソース変更時の柔軟性を文字通り身をもって体験し興味を持つようになりました。

更改以降も自主的に学習を続けていましたが、次第に自分のキャリアもそちらに寄せていきたいと考えるようになりました。そして今、アプトポッドとご縁がありましてSREチームとしてインフラ構築・運用業務にあたっています。

入社のきっかけ

  • HW設計~アプリケーション開発・デザインを統合し製品提供する難易度の高さ
    • 成長できそう
  • 製品が持つ社会貢献性の高さ
  • モダンな技術の採用
  • 製品がカッコよい

の箇所を魅力的に感じ入社を決めました。製品のカッコよさは重要ですよね。製品の詳細は製品紹介をご覧ください。

キャッチアップの必要性

前職は管理が主な担当業務だったため、開発も含む本職に携わるにあたりキャッチアップの必要性があると感じていました。

本記事では、弊社のコミュニケーション・開発環境を簡単にご紹介するとともに、私自身がどのようなキャッチアップに取り組んでいるかご紹介できればと思います。 私のようにキャリアチェンジに取り組んでおられる方や、弊社に興味をお持ちの方に対して参考となれば嬉しいです。

続きを読む

intdashとオリジナル治具を使って動画エンコード遅延測定をしてみた

f:id:aptpod_tech-writer:20200910090943j:plain

はじめに

動画ストリーミングサービスにおいて、動画の遅延を測定したいというニーズは多いと思います。

動画が遅れる要因として以下3つが主に考えられると思います。

  • ネットワークの遅延
  • アプリケーションで行う処理による遅延
  • 動画エンコード遅延
  • 動画デコード遅延

これらをすべて含んだ遅延の測定は比較的簡単に計測可能ですが、要因を切り分けて測定するのは工夫が必要かと思います。

今回、弊社製品 intdashの特徴である、複数のデータソースでタイムスタンプ管理ができることと、オリジナル治具を利用して、この動画エンコード遅延の測定をしてみた話をしたいと思います。

ハードウェアチームの塩出が担当します。

続きを読む

React開発のコンポーネント構成とテストツールの紹介

f:id:aptpod_tech-writer:20200819161724j:plain

はじめに

こんにちは、aptpodに入社しそろそろ1年になりますWebチームの松本です。 aptpodでは日々フロントエンドエンジニアとしてReact/TypeScriptを用いた、お客様向けアプリケーションのUIを実装しています。 Reactは実は入社してから初めて触ったフレームワークでしたが、頼れる先輩方のサポートもありつつ日々成長を感じながら開発に励んでいます。
入社当初から開発に関するノウハウやコードに関する考え方など、具体的なプログラムのプロジェクト構成やコンポーネントのファイル分け、コード全体の品質を担保できるよう様々な工夫があり、入社する前から知っていれば…と思うことも多くありましたのでそれらについて今回ご紹介しようと思います。

コンポーネントのファイル構成

まずコンポーネントとはWebページのビューを切り出した部品、つまりボタンやアイコン、またそれらを含む集合体であるヘッダーやメニューを指す言葉です。 コンポーネントと一口に言ってもコードとして記述するには色々な情報を詰め込む必要があります。
ボタンのコンポーネントであれば、ボタンの色形といったスタイル情報や、ボタンを押したときの日時の変換や文字列のフォーマット、またそれらのコードがちゃんと想定通りに動いているかチェックするためのテストコードなどになります。これらを一つのファイルにまとめて記述した場合、コードの可読性が著しく損なわれるため、コンポーネントで利用する基本的なファイル構成をテンプレート化し、それぞれのファイルに対し記述を行います。
以下の図はコンポーネントのファイル構成になります。共通で使うものや、ファイルとして大きくなってきた場合などは外出しすることもありますが、基本的にはこれを使っています。

続きを読む