Folioscope

AWS GameDay Tokyoに参加してきた

AWS GameDay Tokyoに参加してきました。 詳しいコンテンツ内容の説明は控えますが、イベントの概要や所感などを簡単にお伝えしたいと思います。

AWS GameDay Tokyo

AWS GameDayとは

AWS GameDayとは、AWS上に構築したサービスの改善や、障害対応などでポイントを競う、ハッカソン形式のDevOpsのコンテストです。 AWS GameDayは毎年re:Inventで開催され、AWS GameDay Tokyoは日本人向けに翻訳されたコンテストです。 テーマは基本的に、本家のre:Inventの内容がそのままで、今回は”Microservices Madness”でした。 コンテストはチーム戦で行われ、あらかじめ運営によって振り分けられたチームで構成されました。

ポイントの計算方法は、単純に説明するとサービスが安定してるとポイントが加点されま …

もっと読む…

WebExtensionsのE2Eテスト自動化ツールを作った

WebExtensions WebDriver

WebExtensionsのE2Eテスト自動化ツール『lanthan』を作りました。 元々はVim VixenのE2Eテストを自動化するために開発を始めたのですが、独立したモジュールとして切り出したため、様々なWebExtensionsのE2Eテストに利用できます。

lanthanのスクリーンショット

以前、WebExtensionsのE2Eテスト自動化の取り組みについて記事を書きました。

この仕組みは、テスト実行をKarmaなどを使ってブラウザ上で実行する必要があり、制限が多くメンテナンス性も乏しかったです。 この記事で紹介するlanthanは別のアプローチでWebExtensionsのE2Eテストを実行できます。 lanthanは設計を見直して1から作り直したライブラリで、現在のVim Vixen …

もっと読む…

Vim Vixenの2年間を振り返る

Vim Vixen

Vim Vixenのスクリーンショット

本日、2019年10月11日は、Vim Vixenリリースからちょうど2年が経過します。 昨日リリースした0.25が最新バーションで、今後も引き続き開発を続けていく予定です。 現在はおかげさまでユーザー数は12,000を超えて、GitHubスター数も1,500を超えました。

この2年間のVim Vixenを振り返って行きたいと思います。

2年間の実績

まずは2年間の開発実績を見ていきます。 最初のコミットは2017年8月11日なので、この日が開発開始と言えるでしょう。

この2年間でリリースした回数は25回で、コミット数は1,285です。 現在はTypeScriptで記述しており、コード量は本体コードが8,795行、テストは7,263行になりました。 このコードには自分以外に30人のコントリビューターから送られたPull Req.も …

もっと読む…

curlで覚えるWebDriver (2/2)

curlで覚えるWebDriver、第二段です。 前回の記事はこちら。

前回に引き続き、Seleniumのコア機能であるWebDriverをcurlで叩いてみます。 この記事では要素の取得やクリックの送信など、より実践的なAPIを使ってみます。 この記事の最後に、シェルスクリプトによる簡単なE2Eテストの例を紹介します。

サンプルアプリケーション

まずこの記事で使用するサンプルアプリケーションを作ります。 以下のHTMLはボタンを押すと画面上の数値が+1されるシンプルなアプリケーションです。 このHTMLを適当な名前で保存します。

<!doctype html>
<html lang="en">
  <body>
    <button id="button">++</button>
    <span id="counter">0</span> …
もっと読む…

curlで覚えるWebDriver (1/2)

WebDriverについて調べる機会があったので簡単にまとめました。 この記事ではcurlを使って、WebDriverによるブラウザ操作をしてみます。

WebDriverとSeleniumの歴史

Seleniumは現在最も広く使われている、Webブラウザの自動化・テストフレームワークです。 多くの言語をサポートしており、JavaやC#などの言語から、Webページを開いたり要素の検証ができます。 そのためWebサービスのEnd-to-end (E2E) テストの自動化で主に利用されています。

Selenium 1 (Selenium RC) と呼ばれていた時代は、ブラウザを操作するためにSelenium CoreというJavaScriptをブラウザ上でロードしてました。 しかしブラウザのセキュリティ強化により、Selenium CoreのJavaScript実行が難しくなったため、モダンブラウザではSelenium Coreが動かなくなりました。

SeleniumのヘビーユーザーだったGoogleは、Selenium Coreとは別のアプローチをとるため、WebDriverと …

もっと読む…

Builderscon Tokyo 2019 2日目 参加レポート

朝食

Builderscon Tokyo 2019の2日目に参加してきました。 本日も朝から晩まで参加しました。 その中でも個人的に気になった3セッションを紹介します。

OSS Security the hard way

1つめは@hsbtさんによる発表です。 Rubyを例にした、オープンソースソフトウェアとセキュリティに関する発表でした。

OSS Security the hard way from Hiroshi SHIBATA

Rybyの脆弱性が報告された後の対応が特に興味深かったです。 OSSであっても報告された脆弱性は修正されるまでは外部に公開できません。 Rubyも同じで、脆弱性に関するやり取りや修正コードも対応が終わるまで公開されません。 レビューもトピックブランチを切るのではなく、昔ながらのパッチのやり取りで進めるという味わい深いものでした。

オー …

もっと読む…

Builderscon Tokyo 2019 1日目 参加レポート

オープニング

Builderscon Tokyo 2019の1日目に参加してきました。 本日は朝から晩まで参加しましたが、その中でも個人的に気になった3セッションを紹介します。

Open SKT: メルペイ開発の裏側 (@kazegusuri)

1つめはメルペイの@kazegusuriさんによる発表です。 Open SKTはメルペイで行われているアーキテクチャ研修の名称です。

メルペイのアーキテクチャはマイクロサービスで構成されます。 それぞれのサービスが協調して各サービスの一貫性を保証して、システム全体での一貫性を保証する必要があります。

各サービス間の整合性は2相コミットしてるとのことです。 それに加えてサービスは他のサービスのデータを確認して、サービス感で発生した差分を吸収しています (reconsile)。 前者の2相コミットだけでも各サービスの一貫性は(理論上は)保証 …

もっと読む…

JVMのヒープサイズとコンテナ時代のチューニング

Java

最近JVMのヒープ領域とパラメータ、そしてコンテナの関係について調べてました。 案外まとまった情報が少なかったので簡単にまとめました。

Javaのヒープサイズを設定

まずはJavaのヒープサイズについて簡単なおさらいです。

本番環境でJavaアプリケーションを運用する上で、JVMのヒープサイズを決定するのは非常に大事なポイントです。 ヒープ領域の最大サイズを大きくすればガベージコレクション (GC) の回数は減らすことができますが、 必要以上に大きくしすぎると無駄にリソースを消費したり、OOM killerでOSにプロセスを終了させられます。

JVMが使用できるヒープサイズは、Java APIの Runtime.getRuntime().maxMemory() で確認できます。 また java の起動オプションに -XX:+PrintFlagsFinal オプションを付与すると、JVMの各種パラメータを取得できます。 この記事では後者の -XX:+PrintFlagsFinal オプションで取得する方法で解説を進めます。 また実行するJavaプログラムが無くても、 …

もっと読む…

複数Podでコマンドを実行できるツールを作った

Go Kubernetes

Kubernetesの複数コンテナ上で、並列のコマンドを実行できるツール bow を作りました。 英語で bow は船首を意味します。

スクリーンショット
ueokande/bow Exec a command on multiple pods for Kubernetes github.com

なぜ作ったの?

kubectl exec コマンドは、Kubernetes上のアプリケーションのデバッグや、障害調査に役立てることができます。 しかし水平スケールが柔軟にできるKubernetesでは、特定のコンテナでコマンドを実行するというのはあまり適切ではありません。 規模によってはコンテナの数が数個から数十個になることもあります。 そういった環境でコンテナ1つずつkubectl execするのは大変だというのが容易に想像ができる …

もっと読む…

Kubernetesのログビューアを作った

Go Kubernetes

KubernetesのログビューアLogbookを作りました。 Kubernetesやその周辺ツールは船に関する名前から由来されることが多いです。 英語で logbook は航海日誌のことを指します。 航海日誌のようにログをパラパラとログを閲覧できる、そんなツールを作りました。

スクリーンショット
ueokande/logbook Another log viewer for Kubernetes github.com

なぜ作ったの?

Webサービスにおいてログは大変重要なものです。 Kubernetesでもログを閲覧するコマンドkubectl logsコマンドがあります。 しかしログを追う時、kubectl podskubectl logsを何往復もすることが割と面倒です(自分だけかも知れませんが)。

複数コンテ …

もっと読む…
Page 1 of 25 >