サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
techblog.recochoku.jp
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 この記事はレコチョク Advent Calendar 2021の23日目の記事です。 自己紹介 株式会社レコチョクでQAを担当している清崎(きよさき)と申します。 社内では独立したQAチームが組織横断として存在しており、自社サービス、toB向け、toC向けと展開しているサービスに対して、ビジネスチーム/開発チームとQAチームが協力しながらテストを実施しております。 はじめに とあるアプリのスクラム開発へQAとして参画したとき、どのようなテストを実施したのかその経験を紹介いたします。 本投稿ではGherkin記法を中心に説明しており、自動テストに関する部分は割愛してます。 状況 自身はスクラム開発やアジャイルQAとしての経験もなく、どのようなテストを行えばいいのか正直ゼロから考
WIZY の開発では、Python + MySQLの構成でORマッパーに SQLAlchemy を使用しています。 SQLAlchemyは高機能なのですがまとまったドキュメントがなく、また「どのようにコードを記述したらどのようなクエリが発行されるのか」というのはDB設計やユースケースがサンプルとは異なるので、運良くマッチした情報が出て来ない限り自分でクエリ(を生成するコード)を組み立てる必要があります。 パターン1) loggingでログに出力する SQLAlchemyを利用しているアプリケーションで以下のコードを記述することでクエリをログに出力することができます。
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 大久保です。 今回はウェブフロントの技術とかではないけど結構な時間ハマっていた「〜」事件について。 書くことになったきっかけ APIに値を送る際に「〜」が入っている値だけエラーになってしまっていました。 仕様書通りに書いているし間違っていないはずなのに…みたいな現象が起こり…。 結論から言うと、APIで許容している記号が「~」で入力していた記号が「〜」だったことが判明しました。 「〜」と「~」 「〜」と「~」は(こう見えて)違う文字らしいです。 1つめの「〜」:波ダッシュ (ウィキペディア) またの名を「波線」といい、ダッシュ記号として使われたり長音符として使われたり。 2つめの「~」:全角チルダ(ウィキペディア) 数学の「漸近的に近い」を示したりホームディレクトリを意味した
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 Amazon EFS API(2019年3月時点の情報です) 用意されているAPIは公式に記載の通りです。 createFileSystem createMountTarget createTags deleteFileSystem deleteMountTarget deleteTags describeFileSystems describeMountTargets describeMountTargetSecurityGroups describeTags modifyMountTargetSecurityGroups updateFileSystem DescribeLifecycleConfiguration PutLifecycleConfiguration バー
iOS13からデフォルトのModal遷移がシート型に変更になりました。 スワイプでVCをDismissできたり遷移元の画面が見えたりといい感じにはなりましたが、 Dismiss時に遷移元のライフサイクルメソッドが呼ばれません。 printした結果
UIScrollViewはAutoLayoutのみでスクロールできるよう設定できますが、 Xcode 11でその方法が少し変わりました。 作りたいもの 画面幅と同じサイズのViewを2枚横に配置し、スクロールできるようなものを作ります。 Xcode 10.3 違い Xcode 11では Content Layout Guide と Frame Layout Guide が追加されています。 Xcode 10.3(今まで)ではScrollViewの直下にViewを配置、そのViewの子としてスクロールさせたいViewを配置し、制約をかけることでスクロールできるようになっていました。 Xcode 11ではScrollViewの直下にViewが Content Layout Guide と Frame Layout Guide に置き換わったようです。 そのため、Xcode10.3(今まで)でS
はじめに 1対多の関係を持ったテーブル同士をJOINしてGROUP BYして取得したときに、 多の方のデータをどうにかしてすべて取得したかったときの話です。 どんなテーブルだったか わかりやすいように簡潔なテーブルにします。 userテーブル ユーザ情報のテーブル
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 [2019/10/17 追記] リンク切れを修正しました。 誰しも、いい環境で仕事したいですよね。 Windows Subsystem for Linux とは? Windows 10には Windows Subsystem for Linux(以下、 WSL) という機能が提供されています。 これを使うと Windows 上で Linux のプログラムを動かす事が出来ます。Windows で開発や運用やってると、とても便利で手放せないツールです。 これは元々 Bash on Windows と呼ばれていたものですが、名前が誤解を招きやすい物だったからなのか、いつの間にか WSL に名称変更されていました。 最近は着実に進化しています ベータ版のころは ping も使えなかっ
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 イヤホンを接続してもAndroid端末本体スピーカーからしか音が出ないという質問を受けて調査したところ、どうやらイヤホンプラグの規格違いよるものだという事が分かりました。 イヤホンに採用されているプラグには、様々な規格や用途がありますので、簡単ですがまとめた内容を紹介します。 世間では、2016年の「iPhone 7」からイヤホンジャックが廃止され、Lightning端子接続やBluetooth対応のワイヤレスイヤホン/ヘッドホンを利用されている方も多いと思いますが、そんなワイヤレスが普及している時代ですが、用途ごとに規格があることを理解いただくと、どこかで役に立つと思います。 プラグとは? イヤホンプラグとは、イヤホンのケーブル先端にある棒状の金属部分のことで、それを差し込
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 近頃は実装の仕事よりもその周りの援護的な仕事が多い江藤です。その中の一環で行った CI 環境の整理について、今回は記事にします。 WIZY のこれまで WIZY では Jenkins で自動テストを走らせていました。 流れを図にするとこんな感じです。 開発者は開発が終わると Pull Request を 出す マージ権限のある人がPRをレビューをして、問題があれば修正 問題がなければ権限のある人がマージを行う マージされると、自動テストが走り出す(単体テストの後で結合テスト)、同時にマージを行った人がEC2のサーバに入り手動デプロイを行う 自動テストで問題があれば、再修正を行い最初からやり直す 全てのテストがパスしていれば、次の開発に入る このフローにはいくつか問題がありまし
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 AWS WAFで簡単にDoS攻撃を防いでみよう DoS攻撃流行ってますね。もぐら叩きになりがちなDoS攻撃対応ですが、IPアドレスでのブロックだけなら、AWS WAFに実装された [rate-based limit] を使って割とお手軽に対応が出来そうです。 という事で、ちょっと試してみました。 今回の環境 こんな感じで簡単に構築。 EC2はそれぞれBaseAMIから作成。 攻撃は単純にApacheBenchで代用してみます。 ですので、攻撃元・攻撃先それぞれにapacheを入れておきます。 攻撃先には上流にALBを設定しておきます。 ALBでないとAWS WAFを活用出来ないので、ここは必須です。 CloudFrontを被せる手もありますが、今回はお手軽にこっち。 AWS
はじめに エンジニア研修中に私用PCでAmazon Linuxを触りたいと思い、何かないかと調査すると仮想環境構築ツールのVagrantがヒットしました。 名前だけは知っていたので、この機会に使ってみました。 ちょっと古めのツールですが、便利だったので紹介します。 インストール OSに合ったVirtualBoxとVagrantをインストール https://www.virtualbox.org/wiki/Downloads https://www.vagrantup.com/downloads.html この2つをインストールしたら、Vagrantを使って簡単にVirtualBox上に仮想マシンが構築できます。 Amazon Linuxの仮想マシン構築 まずコマンドから
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 GitHub.com で管理していたリポジトリを、GitHub Enterprise(GHE) へ移行する手順になります。 概要 Issue や Pull Request 等の内容を含めてリポジトリデータを移行するには、ghe-migrator機能を使用する必要があります。 本記事では、GHEバージョン 2.11 系で実施した際の手順をまとめました。 ※ 2018年4月現在のGHE最新バージョンは 2.13 になりますが、大きな変更はないかと思います。 公式ドキュメントも併せてご確認ください。 ※ GHEバージョン 2.10 系未満ですと、一部機能の移行に対応していません。ご注意ください。 GitHub Enterprise 2.10.0 Release notes Use
AWSCli で音源をS3に格納しました。 その際、ローカルのMD5値とS3のETag値を比較し確認をしましたが、一致しないケースが多数ありました。 どうにか確認できないかと調べてみました。 例) 音源ファイル :xxxxxx.3gp ETag値 :396321df76a1493be6856ef7180541de-2 MD5値 :7cdfe2bcd8652d4686dbc0e294997186 そもそもETag(エンティティタグ)とは… HTTPのレスポンスヘッダの一つ。キャッシュの有効性確認に使われる値。 URLにあるリソースに何かしらの変化があればETagも新しい値となる。生成方法は特に規定がない。 参考URL:RFC2616、wiki AmazonドキュメントのETag値の説明 S3の共通レスポンスヘッダーに説明ありました。 Common Response Headers シングルパ
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 Vulsを使った脆弱性チェック運用はじめるよ という事で、背景は前の記事で書いた通りですので、実際に環境を構築してみます。 複数アカウントにまたがる環境、且つIPアドレスが結構変動する環境では通常通りのconfigではすんなり動いてくれないため、力業で解決しているところもあります。 当面はIPアドレスが変動してもconfigに反映出来る仕組み作りです。 では、実際に今どんな環境で動いているか見てみましょう。 基本は、公式の内容通りで環境構築をしていますが、レコチョク内での運用を加味しています。 目的 稼働中サーバのOSパッケージ脆弱性を可視化し、特に対応が必要なものをあぶりだす。 環境構成 環境Directory /home/vulsuser/ ※()内はPermission
Web の勉強を2012年頃にしたのですが、そこから知識のアップデートをしていなかったので完全に取り残されていました。 たまに担当システムの要件で JS を書くことがあり、その過程で今風な書き方を色々と勉強しました。 一番驚いたのは、2012年当時は「素のJavaScriptで書くのは罰ゲーム」みたいなイメージだったのですが、 そこからかなり進化していて、jQuery などのライブラリがなくても複雑な処理が書けるようになっていることでした。 いくつか印象に残ったことについて、この記事にまとめたいと思います。 なお、今風の書き方を実践すればするほど、IE や Safari では動かなくなります。 要素に値を保持させるには data 属性を使う data 属性とは フロントやってる人からしたら「知らなかったの!?」と言われるレベルの常識らしいのですが、最近まで知りませんでした。 data 属性
書いていて観点漏れとかそういうレベルではない気がしてきましたが、、、 私は毎回、これで問題ないと思ってコミット&プッシュをしていたので、 この開発によって ローカルもリモートも git のコミットログに不要な物が残りました。 一連の開発を追えた段階でこのブランチのコミットログはこのようになっていました。 この中で本当に必要なコミットは、たった2つだけです に URLのバリデーションを追加 にメッセージ長バリデーションを追加 このように、コミットが沢山あったときに 本当に必要なコミットはたった一つだけだったとすると そんな時にコミットの履歴を作り直したいと思いました。どうやら、 rebase という機能を使うと、それが実現できるみたいです。 ということで、今回初めて rebase という作業を行いました。 折角なので、その記録を記事として残します。 IntelliJ での rebase 作業
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 今までもクラムシェルモード無効にしていたが、Sierraになったらこれまでの手順に一手間加える必要があってプチハマりしたので共有。 結論 手順 「command + R」を押しながらMacを起動し、復元モードへ ターミナルを開く クラムシェルモードを無効にするコマンド実行 nvram boot-args="niog=1" シャットダウンし通常起動すると以降無効な状態 解説 クラムシェルモードとは Mac ノートブックにて、内蔵ディスプレイを閉じた状態でも外付けディスプレイに映して操作ができる状態をクラムシェルモードと呼ぶ。 ようは外付けキーボードとマウス、ディスプレイを用意して、デスクトップ型のような使い方をできる機能。 公式サポート https://support.appl
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 游ゴシック・游明朝とは 游ゴシックおよび游明朝とは、字游工房さんで販売されているフォントです。 ディスプレイで見ても、印刷してもとても綺麗なフォントで、私もよく使います。 (メイリオは、ディスプレイでの映りを重視しすぎて、印刷するとなんか微妙です) このフォントは2013年ごろより急激に知名度が上がりました。その切っ掛けは Windows 及び Mac に標準でバンドルされたことです。 Windws であれば Windows 8.1 以降に、Mac であれば OSX Marverics 以降に標準で入っています。 Windows にも Mac にも入っている綺麗なフォントというのは、Web サイトを作成する人にとって素晴らしいものです。 とりあえず游ゴシックや游明朝を指定して
Firebaseについてはこちら 要件 Webブラウザ + Firebaseのみで動作すること ログインが不要で投票ができること 1ユーザ1投票であること Cookie等クリアでの再投票は許容する 投票結果をリアルタイムで表示できること リロードしなくても最新の状態を表示する DB設計 Firebaseのデータベースは所謂ドキュメント型DBなのでJSONでスキーマを定義します。
シェルの環境変数を Dockerfile 内で参照したい シェルの環境変数を Dockerfile 内で使いたい、という状況がありました。 Dockerfile の公式ドキュメントで環境変数の項目を見ると、次のように書いてありました。 Dockerfile は環境変数( env 命令 で宣言)も解釈できます。命令文字(ステートメント・リテラル)中では、変数の様な構文でエスケープ・シーケンスも扱えます。 Dockerfile の中では、環境変数を $variable_name または ${variable_name} の形式で記述します。これらは同等に扱われます。固定用の構文として典型的に使われるのは、空白スペースを変数名に入れず ${foo}_bar のような変数名で割り当てることです。 正直何を言ってるのかよく分かりません。ドキュメント語って難しいですね。 とりあえず、環境変数は ${変
dockerのアプリをホスティングする環境を探していたら HerokuでdockerのPrivate Registryを作れるようになっていたので試してみました。 https://devcenter.heroku.com/articles/container-registry-and-runtime 今回は単純なPythonのWebアプリなので以下のようなDockerfileを作成。
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 WIZYではAPI開発にSwaggerを利用しています。 採用に至った経緯と実際どのように利用しているか。 どのようなメリットがあるのかというのを紹介したいと思います。 Swagger採用に至った経緯 Swaggerに初めて出会ったのはre:Invent 2015のBootcampでした。 そのときはAPI Gateway + Lambdaでサーバレスなアーキテクトを学ぶ場だったのですが、 Swagger API Gateway Importerというものがツールとして使用されました。 これはSwagger Spec(YAML形式で書かれたAPI仕様)から自動的にAPI Gateway + Lambdaを作成してデプロイしてくれるというものです。 現在はサーバレスのフレームワ
タイトル通り間違って git reset --hard (softではなく)した時にコミット直前の編集内容がまるっと消えて、嫌な汗と罪悪感が流れ出た時に使える方法を自戒の意味も込めてここに記載します。 目的 git reset ---hard でコミット直前まで戻った編集内容をコミット時の編集内容に戻す コマンド
ちまたではA successfull git branching model(通称git-flow)というやり方が推奨されているようです。 しかし、少人数で運用する際には無駄が多かったり、煩雑だったりするため、 プロジェクトの初期段階から熟成段階に進むにつれて徐々にこの形にしていくのがおすすめです。 基本ルール ・コードラインの本流となる「メインライン(gitではmaster)」を決定し、ファイルを修正したら必ず修正した部分をメインラインに戻す(マージする)こと ・メインラインは常にビルドできる状態を保つ ・ブランチは必ずメインラインから作成する ・ブランチのブランチは作成せず、必ずメインラインから派生させる 下記のようなブランチを作成して運用します ●master ブランチ ・デフォルトで存在するブランチ ・直接コミットは禁止 ・他のブランチを作る際はここから行う ●release ブラ
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 いきなり結論 記事が長くなってしまったので、最初にこの記事で言いたいことを書いておきます。 さいあく、ここだけ読んで貰えれば大丈夫です。 Amazon Linux で Docker をインストールする際は amzn-updates リポジトリを用いる Docker 公式のリポジトリは Amazon Linux では使用不可 公式リポジトリを用いる際は /etc/yum.conf ファイルの releasever オプションが古いバージョンになっていないか気をつける Docker Compose は Amazon Linux のリポジトリになりので、Github からバイナリを持ってくる 配布元はこちら Jenkins から docker コマンドの実行に失敗した場合、調べるべ
最新のIT技術を駆使して音楽関連サービスを展開しています。 日々の活動内容から得た知識をお届けする開発ブログです。 こんにちは、絶賛iOSの修行中の福成です。 今回はLINEアプリとの連携をやってみました。 Swift2.xまでの情報はネットに沢山はあるのですが、Swift3になって色々と書き方が変わっているらしく、 いざ実装しようとしたらハマりまくったのでこちらで共有することにしました。 URL Schemeとは ざっくり言うとiOSアプリに対してこのURLSchemeを独自に設定することで、 別のアプリからURLSchemeが呼ばれたときにそのアプリを開くことができるというものです。 例えばGoogle Maps アプリの場合ですと、 comgooglemaps:// のようなスキームを使うことで Google Maps アプリを開くことができます。 実際にブラウザアプリのURL入力欄
次のページ
このページを最初にブックマークしてみませんか?
『レコチョクのエンジニアブログ | 最新のIT技術を駆使して音楽関連サービスを展開し...』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く