読者です 読者をやめる 読者になる 読者になる

@neiraza

2匹の怪獣が寝た後にプログラマーしてる、最近はサイバーエージェントでゼミ長もしてる僕のネタ帳

INSPIRED 顧客の心を捉える製品の創り方

booklog

INSPIRED を読んでみた

Inspired: 顧客の心を捉える製品の創り方

Inspired: 顧客の心を捉える製品の創り方

ネタバレを多分に含んでいますが、読んでいた時のメモを連々と。

17章くらいまで

1章から41章までと長いけど、僕は17章くらいまで読んで満足したった。 プロダクトマネージメントって何だろ?ってのが、その辺で満足した。

マネージメントとマーケティング

プロダクトマネージャーの役割は、エンジニアリングチームが作り上げる製品を詳細に定義することである。コレに対して、プロダクトマーケティングの役割は、正解に対して製品を語ることである。(1章)

マネージメントとかマーケティングとか、分けて考えたことなかったし。たとえば、こんなのとか。

プロダクトマネージャーの役割は、作りたい製品のプロフィールを細かいところまで決めることと、実際の顧客やユーザーとともに製品を検証することである。プロダクトマーケティングの役割は、世界に向けて製品について語ることだ。この任務には、市場での製品の位置づけを明確にすること、製品に関する情報発信、価格設定、新製品の発売の管理、販売チャネルから製品を売り込むためのツールの提供、そして、オンラインマーケティンや市場関係者に対するマーケティングといったマーケティング活動の主なものを指揮することも含まれる。(2章)

下記とか「あー」ってなった。 (過去に)ダメな製品てのに、「雰囲気だけはイケてる感じがするので作ってみた」とか「直近の売上は良いので振り切ってみた」とかだと微妙だなと思うことったあったし。 あと、「ストーリだけはよく出来ているけど、プロダクトの中身は空っぽ」だったりとか(苦笑)

ダメな製品が無駄に世に送り出されるいちばんの原因は、ほんとどの場合、会社の中でプロダクトマネージャーの役割が明確にされていないこと、プロダクトマネージャーとなる人に対する教育が不十分なことにある。(1章)

プロダクトとプロジェクト

この2つを兼任して、市場に送り出しやすいものしか考えなくなることが怖いなっと思うので、他の人の話しがよく気になったりする。

プロダクトマネジメントの役割が、価値のある、使いやすい、実現可能な製品を見つけ出すことにあるのに対して、プロジェクトマネジメントの役割は、製品を市場に送り出すことに尽きるからだ。(3章)

(とくに非エンジニアに)注意してほしいこと

エンジニアは道具でも作業員でもない。そう思っていなくても依頼の仕方1つで、そう感じてしまうことがある。 結果、そこが製品開発の場にならなくなったことを思い出した。

プロダクトマネージャーの方も、製品開発というのは、自分が思いついた最新のアイデアや最高のアイデアを試す場ではないことを忘れてはないらない。(3章)

製品理念を考え続ける

下記の2つに陥ることがあるので、注意しなきゃなってことが言語化できた。

多くのチームが、さあ製品理念を決めよう、というときにやってしまう間違いについて指摘しておこう。1つは、あまりにも一般的すぎて、さっぱり役に立たない原則を入れてしまうことだ(たとえば、「信頼性の高いものでなければならない」など)。もう1つは、製品理念とデザイン理念を混同してしまうことである。たとえば、共通のデザイン理念は、操作をわかりやすくするためのものである(そのおかげで、ユーザーは次になにをやればいいかがよくわかる)。でも、これは、製品理念ではない。(13章)

さいごに

自分たちの勝ちスジってなんだ?って迷った時に、もう1回原点に戻るってことを強く意識するようになったかも。 僕は失敗したなーって思うことが、この本を読んで自分の中で説明がつくことがたまにあるので、実践は難しいけど、良かったかな。。

プロダクトマネジメントというのは、要は、何かを選択すること、これに尽きる。どの市場機会を追求するべきか、解決するべき課題はどれか、どんな機能がいちばん大きな過価値につながるのか、製品化までの時間との折り合いをつけるために最適なポイントはどこか、どの顧客がいちばん重要なのか、といったことを決めるのである。(17章)

おしまい

今年もアドテクスタジオ内でゼミ活動しました!

この記事は「CyberAgent Developers Advent Calendar 2016」22日目の記事です。

こんちわ!アドテクスタジオの小栗です。 f:id:redogu:20161013121550j:plain

全てのメディア様の収益を最大化することを目標に、ネイティブ広告に特化したSSP事業「CA ProFit-X」の盛り上げ役をやってります。 いちおう現役エンジニアとして、今年もモノづくりもしてました。

f:id:redogu:20161222214035p:plain

今年は数多くのメディア様やデマンド様、そして内外の広告事業者様に大変お世話になりました。 来年もよろしくお願いします!

さて、本題へ。

CyberAgent Developers Advent Calendar

昨年のAdvent Calendarに引き続き、アドテクスタジオの素晴らしい制度である スキルアップゼミ の活動について、僕のゼミ活動を通し紹介いたします。

スキルアップゼミ?

アドテクスタジオでは、大学のゼミと同様に少数メンバーにて研究を行うスキルアップゼミを行っております。 スキルアップゼミは通常の勉強会とは異なり、研究の成果を事業に活かすことを目的とした制度です。 半期ごと各ゼミにてテーマを決めて、業務とは別で研究活動を行います。

その中で、私が主催する「スマートデバイス向けアプリのマネタイズ研究と実践開発ゼミ」では、

  • エンジニア x マネタイズに適した人材の育成
  • 海外で活躍(登壇)するための準備

をゴールに活動してます。 f:id:redogu:20161222210022j:plain

活動報告 2016

多くの方のお力添えを頂き、今年もなんとか活動することができました! f:id:redogu:20161222210239j:plain

イベント主催/出展

来年も僕からイベント開催を持ちかけていきますが、逆にイベントのお誘いもお待ちしております(笑) f:id:redogu:20161222210301j:plain

ゼミ内勉強会テーマ

週イチで活動しています。No準備 & 1時間限定で挑んでます。 f:id:redogu:20161210175053p:plain

活動トピック

いくつか活動内容をご紹介させて頂きます。

HTC Vive & Oculus Touch 体験会

社内の友人(株式会社VR Agent 稲村さん)がOculus Touchを入手したと聞きつけ、どうしたも体験したく、イベントを開催しました。 f:id:redogu:20161222210544j:plain

こいつが噂の・・・ f:id:redogu:20161222210654j:plain

設営から操作のアテンドまで、株式会社VR Agentの稲村さん、張さんありがとうございました! f:id:redogu:20161222210727j:plainf:id:redogu:20161222210712j:plain VR関連事業子会社の株式会社VR Agent設立について

ABC 2016 Spring

NPO法人「日本Androidの会」主催イベントに、去年に引き続き出展してきました! f:id:redogu:20161222210500p:plain

今年も多くの方にブースへ足を運んで頂きました。また、学生部のアカデミックな発表に対する寸評などもさせて頂きとても勉強になりました。 f:id:redogu:20161222210312j:plain

SDK開発者座談会

アプリ開発者の感覚ではやっていけない様々な闇を抱えるSDK開発者たち。 iOS/Androidのアプリ開発力だけでは作りきれない闇のSDK。その闇を吹き出した素晴らしいイベントになりました。 f:id:redogu:20161222210939j:plain

今後の活動について

次は世界進出? f:id:redogu:20161222210858j:plain

締め

入社して3年目になりました。今年も多くのチャンスを頂き、撮影慣れしてきました(笑) 技術力と発信力を武器に、手をあげた数だけチャンスをつかめる土壌がある会社なので、我こそはという方はぜひ僕たちの仲間になってください!

おまけ「Hack」がテーマの新オフィス!

2016/10より、アドテクスタジオはオフィスをリニューアルしました! f:id:redogu:20161222210923j:plain f:id:redogu:20161222211000j:plain

ここで一緒にイベント開催しませんか!? テーマは「Hack」だそうです。詳しくはコチラ

【Appium】モバイルSafari上でテストを実行してみた

Appium iOS

先日、iOSでAppiumを試してみたんですが、今回はiOSでやってみました。

お題

実機/シミュレータ上でモバイSafariを起動しテストを実施する。

Appiumって?

実践 Appium

実践 Appium

Appiumとは、iOSおよびAndroidプラットフォーム上で動く - ネイティブアプリ - モバイウェブサービス - ハイブリッドアプリ 等を自動化するオープンソースのツールです。

よくまとめられているコチラの記事をご参照ください。

Design(公式)

http://appium.io/slate/en/master/?ruby#appium-design

Concepts(公式)

http://appium.io/slate/en/master/?ruby#appium-concepts

なぜ必要に?

現在、広告配信タグ(モバイウェブサービス用)のE2EテストにNightmareを使用しています。 しかし、 バイSafariでしか発生しない事象Mac Safariでも再現しない)にぶち当たり、実機(シミュレータ)を使用したE2Eテストの必要性が出てきました。 また、せっかくなら広告配信SDK(ネイティブアプリ用)のテストにも使っていきたいと思い。 そこで、SeleniumぽくてWebDriberの流れを組むやつをチームメンバーに紹介されたので試してみました。

Appium環境を構築するさいにiOSで注意すべきこと

  • Mac環境のあるサーバーをたてないと実機/シミュ−レーターでのテストができない
  • Xcode8に対応していない(時間の問題なんだろけど)

必要な条件

http://appium.io/slate/en/master/?javascript#requirements

Appiumサーバを用意する

CUIでやるなら

githubからappiumをcloneしてくる。

その上で下記からOS毎のセットアップにうつる http://appium.io/slate/en/master/?javascript#appium-platform-support

僕はなかなかうまくいかなくて・・・・

GUIでやってみる

githubで生成するよりも、GUI版をダウソしてくると少しバージョンが古い。 実践 Appiumで紹介されているバージョンに近いのはこっち。

ダウソ

latest versionをダウンロードする

Appium GUIを起動

v1.5.3のAppium GUIを起動してみた。 f:id:redogu:20161215022701p:plain

Appium GUIの設定

  • Basic

    • Device SettingsiOS用シミューレータの名称とOSバージョンを入力する(Xcode上から確認可能) f:id:redogu:20161215022705p:plain
  • Adbanced

  • XcodePath Xcodeを複数入れている場合は使用するやつに変更する f:id:redogu:20161215022708p:plain

Appium GUIよりAppiumサーバを起動

Launch ボタンをタップする。ダーッと出てくるので待つ。

テストを実行する

下記動かせるように適当にNode.js環境を整備した上で、mocha で動かしてみてください。 元ネタは、関数を分割してしまっているのですが、見通しを良くするために僕のお試し版は、下記をご覧の通り1つの関数に全部つめこんじゃいました。

"use strict";

var wd = require("wd");

require('colors');
var chai = require("chai");
var chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
var should = chai.should();
chaiAsPromised.transferPromiseness = wd.transferPromiseness;

describe("ios safari", function () {
  this.timeout(300000);
  var driver;

  before(function () {
    var serverConfig = {
      host: 'localhost',
      port: 4723
    };

    driver = wd.promiseChainRemote(serverConfig);

    var desired = {
      browserName: 'safari',
      'appium-version': '1.6',
      platformName: 'iOS',
      platformVersion: '9.3',
      deviceName: 'iPhone 6s',
      app: undefined
    };
    return driver.init(desired);
  });

  after(function () {
    return driver
      .quit();
  });

  it("should get the url", function () {
    return driver
      .get('https://www.google.com')
      .sleep(1000)
      .waitForElementById('lst-ib')
      //.waitForElementByName('q', 5000)
        .type('cyberagent')
      .waitForElementByClassName('kpgrb')
      //.waitForElementByName('btnGNS')
        .click()
      .waitForElementByLinkText('サイバーエージェント')
        .click()
      .sleep(5000)
      .saveScreenshot('test.png');
  });

});

https://github.com/toguri/sample-code/blob/master/sample-code/examples/node/ios-safari-google.js

締め

まだ、うまくテストコードが書けてないけど、テストを実行するとシミュレータが起動してテストコードに書いて有る内容通りに、勝手に動きます。

実践 Appium

【iOS10】ATSのおさらい 2016年末

AdTech ATS iOS iOS10

この記事は「iOS その2 Advent Calendar 2016」10日目の記事です。
テーマは、 2016年中iOSにおけるATSをおさらいしよう! です。

自己紹介

私は、株式会社サイバーエージェント CA ProFit-X という広告プロダクトで、メディア様の収益を最大化することを目標にエンジニアをやってます。
CA ProFit-X は、モバイル向けネイティブ広告(主にインフィード広告)専業のSSP事業者なのです!

お題

バイルアプリ/モバイウェブサービス上で広告運用時に気にしておきたい ATS について、今回は最新OSである iOS10 にターゲットを絞り、お話ししたいと思います。

ATSとは?

ATSは、App Transport Securityの略で、2015年にiOS9がリリースされた際に導入されたセキュリティ仕様です。
詳しい仕様は コチラ(Apple Developer Library)です。

簡単に言うと、アプリとWEBサービス間の接続のプライバシーと、データの整合性を向上を目的に、セキュリティ仕様に準拠していない接続は認めないってことです。
例えば下記とか。

サーバー証明書に関する要件

Webサーバーに関する要件

  • HTTPSについて
  • SSL/TLS のバージョンについて
  • Forward Secrecy に対応している暗号化スイートについて

2017年からは対応が必須になる

原則対応が必須になります。新規アプリ/既存アプリ問わずApp Storeに提出するには ATS有効化が必須条件 です。

対象

まぁ、ほとんど全部ですね。

  • iOS9.0以上
  • WKWebView
  • UIWebView
  • NSURLSession
  • NSURLConnection

ATSを無効化するには?

基本的に、セキュリティ仕様に準拠しとけば良いのですが、いちおう。
細かいキーの仕様についてはコチラです。

NSAllowsArbitraryLoads

  • デフォ値は No
  • Yes に設定した場合
  • NSExceptionDomains に設定したドメインのに対するネットワーク接続がATS無効化されて可能になる
  • App Storeへアプリを提出する際にAppleに対する説明が必要になる
  • (後述する)NSAllowsArbitraryLoadsInWebContentが Yes の場合、このキーは無効になる

NSAllowsArbitraryLoadsInWebContent

  • デフォ値は No
  • Yes に設定した場合
    • 下記のネットワーク接続がATS無効化されて可能になる
      • WKWebView
      • UIWebView
    • つまり、NSURLSession/NSURLConnection接続はATS有効化のまま、WebViewのみATS無効化が可能
  • iOS10以上が対象、iOS9以下については本キーを Yes にした上で、NSAllowsArbitraryLoads も設定する


(´ε`;)ウーン…

まとめ

iOS10なら、WebViewでATSを無視できるっちゃできるのね。
でも、これはAppleの独断とかではなく、セキュリティ的に安全な配信をしていこうぜって大きな流れの1つなわけで。
GoogleHTTPSサイコー!って言ってるわけだし。

ATS対応ができねーとかケチくさいこと言わずに、堂々とやってやりましょうよ!

Appiumに手を出してみた

Appium Android

この記事は「Qiita Advent Calendar 2016 Android その2」の10日目の記事です。

自己紹介

私は、株式会社サイバーエージェント CA ProFit-X という広告プロダクトで、メディア様の収益を最大化することを目標にエンジニアをやってます。
CA ProFit-X は、モバイル向けネイティブ広告(主にインフィード広告)専業のSSP事業者なのです!
また個人的には、今年から 日本Androidの会 の運営メンバーにも入ってたり。

お題

今回はテスト自動化を目標に、 Appium に手を出し始めた話しをしたいと思います。

Appiumって?

Appiumとは、iOSおよびAndroidプラットフォーム上で動く - ネイティブアプリ - モバイウェブサービス - ハイブリッドアプリ 等を自動化するオープンソースのツールです。

実践 Appium

実践 Appium

実践 Appium

なぜ必要に?

現在、広告配信タグ(モバイウェブサービス用)のE2EテストにNightmareを使用しています。
しかし、 バイSafariでしか発生しない事象Mac Safariでも再現しない)にぶち当たり、実機(シミュレータ)を使用したE2Eテストの必要性が出てきました。
また、せっかくなら広告配信SDK(ネイティブアプリ用)のテストにも使っていきたいと思い。
そこで、SeleniumぽくてWebDriberの流れを組むやつをチームメンバーに紹介されたので試してみました。

GUI vs CUI

お試しくらいならGUIの方が分かりやすいかなと思い、今回はGUIで試しました。
結構、ハマった。。。
後から公式を読んでいて分かったのはGUIはバージョンが古く更新されてなかったので、Android/iOSの対応バージョンが古いのかも。

ウェブブラウザとネイティブアプリの起動

いちおう、両方ともやってみた。

環境準備

環境変数を定義する

GUIでAppium Doctorを立ち上げるbashが起動するので、~/.bashrcJAVA_HOMEANDROID_HOMEをかきました。
書かないとエラーが出て先に進めず・・・。

AVDで適当に用意する

実機より簡単かなと思い、適当に3端末分用意してみた。 f:id:redogu:20161210175004p:plain

Launch AVD

なぜかAVDで設定した3端末中2端末しか出てこない。意味分からん。 f:id:redogu:20161210175008p:plain

ウェブブラウザを起動してみる

Use Browser

なぜかChromeが起動できない。
Chromeがインストールされていない端末なら分かるけど、インストールされていても起動できない。
Browserならできた。意味分からん。

f:id:redogu:20161210175011p:plain

ブラウザ起動に失敗すると

手がかりすくな!

f:id:redogu:20161210175014p:plain

コンソールには・・・?

f:id:redogu:20161210175018p:plain

なるほど。ウェブブラウザ起動するだけなのに、アプリパスを指定しろと。なんでだよ!

f:id:redogu:20161210175021p:plain

たしかに置いていないので・・・

f:id:redogu:20161210175046p:plain

適当に置いた上でリトライすると・・・

f:id:redogu:20161210175025p:plain

キタ━━━━(゚∀゚)━━━━!!

ネイティブアプリを起動してみる

こんなかんじ。 f:id:redogu:20161210175050p:plain

広告配信SDKを開発する際のサンプルアプリが自動で起動した!!! f:id:redogu:20161210175053p:plain

ここまでの感想

GUIでやる意味がなかた。GUIだとAppium上に画面が出てきてそこにフォーカスをあてると、どのようなviewかわかる(インスペクタ機能)ものの、CUIでよかた。
iOSは最初からCUIでお試しに入ろうと思う。

最後に

E2Eテストが充実するとリリース前の確認はもちろんですが、リリース後に大きなメリットがあると思っています。
例えば、僕たち広告配信側としては僕らの知らないところで発生しているメディア様の変更に、追従していけると他事業者様との競争にも優位になれそうな気がしています。
なので、ウェブサービス/ネイティブアプリ問わず、同じ仕組みで全てのテスト自動化の仕組みを構築していくことが重要かなと思っており、今後もE2Eテストを充実させていこうと思っています。

実践 Appium

実践 Appium

次は、 Selenium Grid をかけ合わせてみたい。

『HARD THINGS』

booklog

2015年に流行った書籍(たぶん)で、他の書籍に浮気しつつ半年かけて読了しました。
購入時、6月のサンフランシスコ出張時に読み切ろうと思っていたのが、気づくともう11月に・・・(笑)

※以下、書籍の内容を紹介しており、ネタバレあるよ

HARD THINGS

書籍の内容構成

ベン・ホロウィッツという起業家、CEOを経てベンチャーキャピタリストを努めている方の半生?を、
ビジネスシーンにおける窮地に陥った時(ほとんど窮地)、それを乗り越えた時の経験について教訓と共に描かれている。

総括

僕自身がテクノロジー・ビジネスに携わっているため、

  • 魔術的に素晴らしい製品を創造すること
  • 製品を開発する為に必要なチームを維持し続けること(お金を稼ぐこと)

の狭間で揺れることがあり、どこかに良い答えがあるんじゃないかと思うことがある。

その幻想をぶち殺す!! 」ばりに、本書は「 困難な問題を解決する答えなどない 」ということを教えてくれる。
しかし、ネガティブな事象を乗り越えるための助言を貰えるし、
結局のところ考えに考え抜いた上で「 やってやんよ 」しかねーなという結論にいたれたので、読み終わりは満足な一冊だった。

章ごとの振り返り

以下、目次ベースに簡単に振り返りってみる。

第1章 妻のフェリシア、パートナーのマーク・アンドリーセンと出会う

ベン・ホロウィッツという人物について、高校時代、奥さんとの出会いを紹介されいていくうちに、話しに引き込まれていった。

特に高校のフットボール監督の最初の訓示、

「お前らの中には、いい加減な気持ちでここへ来た者がいるはずだ。そういうヤツらは、べらべらと愚にもつかんクソな無駄話をして、クソな時間を潰し、まともなことはやらん。フットボールのユニフォームを着ればかっこよく見えるだろうなんて思っている。そんなヤツらはどうなるか知っているか? 辞めちまえ!」

監督が受け入れられない行動について詳しく説明している場面、

「練習に遅れて来る? 辞めちまえ! ぶつかり合いが嫌だ? 辞めちまえ! 全力で走らない? 辞めちまえ! オレをチコと呼ぶ? 辞めちまえ!」

など、ウダウダ言ってるくらいなら「辞めちまえ!」て思うことあるよなーとか思いつつ(笑)

また、そのちょっと乱暴な表現(原著もかな!?)も第2章以降のタイトルも自然と受け入れられていく感じ。

第2章 生き残ってやる
第3章 直感を信じる

ネットスケープ創業者 マーク・アンドリーセンと立ち上げたラウドクラウドが紆余曲折を経て倒産が視野に入った後、

「会社の方向性に関する提言はいらなかった。今は戦時なのだ。」

平時のCEOから戦時のCEOへ変わった様が、とても臨場感に溢れていた。

「勝てる製品を持たない限り、生き残る道はない。...(略)... 銃には一発だけ弾が残っていて、標的に命中させなくてはならない」

とか、僕自身も過去に「結構大きな投資をして貰っていたプロダクトをお蔵入り」にしたり「会社ごと消えてなくなる」などの経験があり、ベンの思惑通り? 感情移入し読めました。まぁ、ベンに比べたら僕なんて(笑)。

第4章 物事がうまくいかなくなるとき
第5章 人、製品、利益を大切にする ー この順番で
第6章 事業継続に必須な要素
第7章 やるべきことに全力で集中する
第8章 起業家のための第一法則 ー 困難な問題を解決する法則はない

ベンの実体験からくるアドバイスに真剣に耳を傾ける章です。 僕個人的には、第5章と第7章が好きでした。プロダクトを作るには!?ってことを真剣に考えることができたし、1点に集中していたく感じは好きです。

第9章 我が人生の始まりの終わり

テクノロジー・ビジネスでは、事前によそうができることは非常に少なく、凡庸な製品と魔術的に素晴らしい製品との差は、社員に厳しく責任を求める会社運営と、社員が創造性を発揮するためなら必要なリスクを取ることを許す経営との差にある。

最後に

この内容で、1,800円はお得だと思う。

HARD THINGS

HARD THINGS

攻略!お風呂をピカピカに掃除する

風呂掃除

祝日である今日、子供たちを近所に住んでいる妻の実家に預け、夫婦で思い思いの場所を掃除することにした(自然発生)。

僕は前々からやってみたかった(悲願)、お風呂ピカピカ構想に着手することにした。
かれこれ、今のお風呂ユニットを入れてから8年。これが失敗したら、お風呂のユニット毎かえてやろう。

用意するもの

f:id:redogu:20160922102825j:plain

cf. 愛用のバスクロスとは?

毎年、1−2枚は購入しているやつで、こいつと水だけで毎日洗っているので大抵の汚れは問題ない。 aisen バスクロス トレピカ グリーン BF823

aisen バスクロス トレピカ グリーン BF823

aisen バスクロス トレピカ グリーン BF823

ただし、今回は午前中の1時間ほどしか使いたくないので、次の週末も含めて工程を数回に分けることにした。

攻略 初日

排水溝

重曹をふりまき、お酢をたらしシュワシュワさせる。 いまいちコツがつかめず、お酢がドボドボと排水溝に流れていった。 重曹もシュワシュワしてるけど、この酸性の存在は役に立ってんのかな。

浴槽

酸性からのアルカリ性で撃退がかっこいいと思い、重曹で全体を洗った後よく洗い流してからアルカリ性でトドメを刺すことにした。 酸性とかアルカリ性とか勉強しないと分からんな。

重曹が残りわずかだったのでダーッと水にいれて溶かしてゴシゴシ、その後、クエン酸も同様にゴシゴシ。

いつもより、ピカピカしている気がする。 物足りないので、今夜はお風呂の湯を捨てずに、重曹をぶっこんで色んなものを漬け置きしてみよう。

と思ったら重曹を使い切ってしまったので、冷蔵庫にあった重曹を奪取した。今夜が楽しみ。

水垢があんましないので、浸けるパターンではなく、クエン酸を水で溶かしで磨いてみた。 もともと、キレイなので違いが分からん。

蛇口

最近、顔が映らなくなってきたので、クエン酸を水で溶かしゴシゴシした。 顔が映るようになったので満足した。

天井

あまった、クエン酸の水で天井もまんべんなくゴシゴシ。

感想

次回は、ゴムパッキンとかをハイター&片栗粉でペタペタしてやっつけたい。