highlights

2019年10月11日金曜日

技術的負債だらけのDjangoをAWSのコンテナで動かすまでの取り組み

弊社のメインサービスの負債が溜まりすぎていて、採用活動でPython2を使っているというのに罪悪感を感じていたのでバージョンアップした。

取り組む前の構成

やったこと

  • Django1.4→1.11
  • Python2の撲滅
  • E2Eの自動化
  • Nginx、Djangoのコンテナ化
  • オンプレミスからAWSへの移行

Django1.4→1.11

テストコードがなければ無理だった。所要期間1ヶ月ちょっと。
  1. Django1.4からDjango1.6へのアップデート
  2. すべてのテストコードのオールグリーン化
  3. Django1.6からDjango1.8へのアップデート
  4. すべてのテストコードのオールグリーン化
  5. Django1.8からDjango1.11へのアップデート
  6. すべてのテストコードのオールグリーン化
ひたすら公式サイトのリリースノートを見てgrep、リリースノートを見てgrepの繰り返し。自社で使用しているRDBがSQLServerだったのでODBCドライバにも苦しめられた。DjangoとSQLServerはアンチパターンだと思う。

Python2の撲滅

文字コードの問題が多々起こった。所要期間2週間。
  1. Python2.7からPython3.7へのアップデート
  2. すべてのテストコードのオールグリーン化
Python2がなくなった!
Pythonの構文よりは依存しているライブラリ(標準、サードパーティ共に)の置き換えに苦労した。urllib2からrequestsへの書き換えが地味に数が多くて辛かった。後は例外と除算と剰余処理に気をつければなんとか。

E2Eの自動化

puppeteerはすごく楽で良い。所要期間1日。
  1. puppeteerでの画面キャプチャ
  2. OpenCVによる画像類似度で回帰テスト構築
JavaScriptの書き方に苦労した。スクレイピングはasync-waitの学習に最適。

Nginx、Djangoのコンテナ化

Dockerfileに苦しめられた。所要期間1週間。
  1. Djangoのコンテナ化(プロセスはsupervisord)
  2. Nginxのコンテナ化
Ansibleからの移行。Dockerの知識不足で現在イメージサイズは500MBオーバー...。軽くしないと。BuildKitやマルチステージを学べたのが良かった。docker-composeがbuildkitに対応しておらず(2019年10月11日現在)、ローカル環境向けのビルドで悩んでいる。

オンプレミスからAWSへの移行

AWSってなにそれおいしいの?所要期間2日。
  1. ECS、ECRの導入
  2. CodeBuildの導入
Jenkinsがなくなった!!
ECR初めて使ったんだけどめっちゃ楽だよこれなにこれ。


取り組んだ後の構成



所感

負債は早く払わないと、どんどん溜まる上に改修不可能になる。
同僚が「Python2じゃなくてPython3使いたい」って言った時「Python3使いたい、そんな言葉は使う必要がねえんだ。なぜならオレやオレの同僚はその言葉を頭に思い浮かべたときには!実際にPython3に上げちまってもうすでに終わっちまってるからだ!」って返事してた。

ただ、このバージョンアップの作業の間も新規機能やバグ改修もひっきりなしに行われていて、わりと高度なマージ操作が絶えず行われていて大変だった。それと負債を払う時間の確保が一番の課題だった。

「許可を求めるな謝罪せよ」の精神で取り組んだけど、謝罪して許してもらえるのは「すべてやりきった時」のみなので中途半端にあきらめず一気にやってしまうのがいいね。こんなことにモチベーションは何ヶ月も続かないし。

2019年10月3日木曜日

賃貸物件を作って最初の店子ができるまでにやったこと

いぬです。自宅に貸せるお部屋を1つ作って1人に貸しています。いわゆる賃貸併用物件です。だいたい月の住宅ローンを相殺できています。不動産業者を使っていないため余計な費用がかかっていません。
本記事では自力での賃貸運用の仕方についてシェアしたいと思います。


概要

  1. 作る前に
  2. 不動産業者を使わないのならSNSで勝負
  3. 暮らす人の立場で部屋を作る
  4. キャッシュフローを大事にする
  5. 周辺の賃貸は気にする必要はない
  6. 内覧から契約まで
  7. 法律やガイドラインを遵守する


作る前に

部屋を作る前に家を作らないといけません。最初で最大の難関だと思います。
1K6畳の部屋を作ろうとすると床面積で25㎡は必要です。25㎡の部屋を作ろうとすると建物の1フロアの内40㎡ぐらいは必要となります。そして、もし自分が借りる側で大家が一緒に住むのが嫌だという人には向きません。絶対に後悔します。
しかし、賃貸併用物件は住宅ローンの金利で賃貸物件を合法的に作れるという魅力があります。床面積的な余裕と家族との合意が得られるのならチャレンジする価値はあると思います。


不動産業者を使わないならSNSで勝負

賃貸は2年前に始めました。広告はすべてTwitterで行いました。(Twitter広告は利用せずに拡散力のあるフォロワーさんがRTしてくれました。超絶感謝。)賃貸の写真を100枚ほど撮って厳選したものをツイートしたりしました。問い合わせにすぐに応じたり、追加の写真を求められたらすぐに撮って返信するなどできるのはTwitterならではだと思いました。
不動産業者を使わない場合は指定流通機構(通称レインズ)は使えません。一体誰のためのシステムなんでしょうね。SNSで拡散できるアテがなければ不動産業者を使わざるを得なかったと思います。


暮らす人の立場で部屋を作る

賃貸に住んだことない人が賃貸を作ると人権のない部屋ができます。賃貸に住んだことがあれば理想の部屋というのが思い浮かぶでしょうからその部屋をイメージして作ればいいと思います。ネットとかでは何㎡に何部屋いくらで利回りうんぬんという記事が溢れていますけど全て無視していいと思います。自分だったら住みたいと思う部屋をとことん突き詰めていけば良いと思います。(でも、3回ぐらい作り直さないといい部屋できないと思います、まる)


キャッシュフローを大事にする

賃貸併用物件で儲けようとしても無理です。25㎡の部屋を1つ作ると500万円ほどかかります(かかりました)。想定家賃を月ごとに掛け算して修繕費 ・問い合わせ対応を引くと、元を取るのに何年もかかることが分かります。また、不動産業者を使わない分すべての問い合わせに対応する必要もあるので本業に余裕がないと無理です。
なるべく一度済んだら引っ越したくなくなるような家賃設定・設備を整えるのが大事です。


周辺の賃貸は気にする必要はない

嘘です。ちょっとは気にします。でも参考程度です。賃貸のサイトに載っている物件は売れ残っている物件です。それよりは魅力的なお部屋にしよう!ぐらいの気持ちで十分です。
(お部屋を作る前に業者が親切にも周辺の賃貸物件の調査書を作ってくれました。全く参考にしませんでしたが)


内覧から契約まで

契約のための基準づくりをします。どんな人に入居してもらいたいかを一緒に住む人とトコトン話します。そこから家賃、敷金などを決めていきます。
内覧ではすべての条件を文章で伝えることが大事です。あとは内覧者の質問がない限りは内覧の自由を邪魔しないように見守ります。喋りすぎる大家は嫌われます。


法律やガイドラインを遵守する

契約や敷金などのトラブルを起こさないために国土交通省のガイドラインをしっかり守りましょう。法律についても事前に勉強することは必須です。

あと、保険の計算がややこしくなる上に青色申告必須になります。


最後に

結果論ですが、不動産の経験値が非常に貯まるので貸し部屋を作ってよかったなと思います。最悪、だれも入居しなかった場合は自分の隠れ家にしようと企んでいました。入居募集の際RTしていただいたTwitterのフォロワーの皆様、感謝の気持ちでいっぱいです。ありがとうございました。

2019年9月30日月曜日

(追記あり)Panasonicの宅配ボックスは人類には早い(犬にも早かった)

お家帰ってきて宅配ボックスを開けようとしたら開かなくなっていました。

関連画像
(こういうやつです)

鍵を差して回しても開きません。
中には飼い主のランチジャーが入っています。

環境

 - 戸建住宅用 宅配ボックス COMBO CTNR4020R ミドルタイプ (参考)

原因

配送業者が荷物を詰め込みすぎた。

解決策

1万円を払う。(画像はイメージです)


対応フロー

  1. 修理依頼をWebで行う。https://sumai.panasonic.jp/support/repair/
  2. 必要事項を入力するとメールが届く。
  3. 電話がかかってくる。
  4. 出張作業員の日程を決める。(日・祝はNG)
  5. 金額について提示される。(私の場合は1万円だった)
  6. しぶしぶ了承する。

参考

Amazonサポートに連絡したらなんと修理費用を全額負担してくれることになりました!
なにそれこわい。ありがとうAmazon。

2019年9月27日金曜日

Virtualbox + vagrantでeth0のIP範囲を変更する

Virtualboxでvagrantを起動するとeth0に10.0.2.0/24のIP範囲が割当たります。
これを変更する方法を記します。

環境

Virtualbox 6.0.12 r133076 (Qt5.6.3)
vagrant 2.2.4
MacOSX Mojave 10.14.6

変更方法

Vagrantfileに下記の記述を追加します。(ipの範囲は任意で)
vb.customize ['modifyvm', :id, '--natnet1', '192.168.222.0/24']

こんな感じでしょうか。
config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.customize ['modifyvm', :id, '--natnet1', '192.168.222.0/24']
end

結果

eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
          inet addr:192.168.222.15  Bcast:192.168.222.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe5f:82b1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:886 errors:0 dropped:0 overruns:0 frame:0
          TX packets:639 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:107198 (107.1 KB)  TX bytes:113410 (113.4 KB)

参考

2019年8月15日木曜日

2019/08/14 No work No work...

スコールだった。

社員同士の懇親会の準備の手伝いで仕事が滞るのやめたい。

2019年8月7日水曜日

2019/8/7 No onion No soup

今日も暑くて溶けた。

ステークホルダーと話す機会を意図的に増やすことで、頑張っている雰囲気を出す取り組みしていた。システムが未成熟でもそれを運用する人が信用されていればシステムは使われるという心理を見た。難しいね。

今日は野菜スープを作った。明日からの昼飯になる。

統計のお勉強はカイの二条分布までやりました。あと3日ぐらいで入門終わりそう。
https://www.studyplus.jp/users/aa52ecedaf5c446aa8c31c2ede261370/events/577399150

Pyxel1.2.0が出ていたので、過去に書いたやつを対応させた。

https://github.com/inunekousapon/usapon_game

2019年8月5日月曜日

2019/8/5 No Sprint No Scrum

今日もめっちゃ暑かった。クーラーが無いと死ぬ。

納品物をチマチマと検収していたりした。こういう地味な作業は得意だったりするかも。

PO(プロダクトオーナー)が夏休みなのでリリースができない。細かな改善を溜めてたりしている。計画どおりとはいえつらい。何かいい方法はないものか。

午後からトラブルの連続だった。Windowsが勝手にログアウトしている問題が起きていてバッチ処理が動いていなかったんだ。なんだこのOS。

全然スプリントできてない。やばいやばいぞ。

今日の夕飯は、ご飯+味噌汁+コロッケ+千切りキャベツという昭和感を出してみた。明日は台風くるのかな。

今日のお勉強はお休み。遊んで夜ふかししていたので早く寝ます。