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

そーだいなるらくがき帳

そーだいが自由気侭に更新します。

SourceTreeを実際に使ってエンジニア以外の人にGitを使って貰った話

タイトルのことを第21回 Tokyo Atlassian ユーザーグループで話してきました。

augj.connpass.com

登壇資料はこちらです。

speakerdeck.com

ざっくり言うとエンジニア以外の人にGitを使ってもらうにはGUI大事って話と僕たちは問題を解決したいわけで、なのでツールはそのための手段なので手段が目的になるのは駄目とは言わないけど本質は見失わないようにしましょうって感じです。

もうちょっと具体的に話すと、Gitというとコードを管理するモノってイメージ強いと思いますけど、実は色々と便利になります。
例えば定例MTGの議事録だって良いと思うし、手順書だってテキストで管理していいと思います。
そこにGithubやBitbucketを組み合わせると履歴が可視化されるし、プルリクエストを使うとより差分が明確になります。
こういうエンジニア向けの技術を柔らかくして、エンジニア以外の人にも使ってもらうことで全体の効率を上げることができるので、みなさまも是非チャレンジしてみてください!!

ということで今回AUGで久々にDB以外の話をしましたがこういうのも楽しいですね!
機会があれば他のイベントにもガンガン登壇したいと思いますのでお気軽にお声掛けください。

ほんとAtlassian、ユーザライクでコミュニティの楽しみ方知ってて大好きな会社です。

SoftwareDesignの連載をはじめました。

タイトルそのままにSoftwareDesignの連載をはじめました。

gihyo.jp

RDBアンチパターンと題してRDBの設計についてお話していきます。
なかなか胸に刺さる話となってますので今後の内容にもご期待ください!!

寂しかったのでブログ書きました。
現場からは以上です。

PostgreSQLで排他制約がめっちゃ便利!!

中国地方DB勉強会っていう控えめに言っても最高の勉強会があるんだけどそこで排他制約について教えてもらいました。

ikkitang1211.hatenablog.jp

排他制約って雑に説明すると重なりを拒否する制約です。 僕は使った事なかったのですが勉強会の中で事例紹介を受けて、めっちゃ便利だったのでここでご紹介します。

どんなときに使うの?

実際にはどんなときに重なりを制御したいかというとよく使うのは次の2つ。

  • 図面の重なり
  • 時間の重なり

1つ目は幾何学的な図面を表現するときです。 実際にPostgreSQLは円や四角をSQLで表現できます。例えば地図上で特定の座標から半径100メートルの円を書き、その中に特定の円(場所)があればErrorにするような制約が書けます。 そもそもSQLで位置計算もめっちゃ便利なので是非使ってみてください。

soudai1025.blogspot.jp

そして2つ目が時間の範囲での重なりの表現です。 PostgreSQLには範囲型というのがあります。 これは時間や数値の範囲を1つのカラムで表現できます。 例えば有効期限を表現する時、一般的にはstart_atとend_atのそれぞれのカラムを作成するのではないでしょうか。 この場合、 今日が有効期限に含まれるかどうか の点と線の比較は簡単ですが 特定の期間が有効期限に含まれるかどうか という検索は非常に面倒です。 しかし範囲型を使うと 5 <@ int4range(1,7) のように <@ で範囲と範囲の含有が簡単に検索できます。このように色んな演算子を用意しているので簡単に表現できます。

soudai1025.blogspot.jp

9.19. 範囲関数と演算子

実際の使い方

さて、ここまで読んで範囲型めっちゃ便利!!と思っていただけたと思います。 そこで例えば会議室の予約システムを作る時に範囲型を使うと次のように表現できます。

CREATE TABLE schedule
(
    schedule_id SERIAL PRIMARY KEY NOT NULL,
    room_name TEXT NOT NULL,
    reservation_time tsrange NOT NULL
);

demo=# SELECT * FROM schedule;

 schedule_id |  room_name  |               reservation_time
-------------+-------------+-----------------------------------------------
           1 | soudai_room | ["2017-04-16 11:30:00","2017-04-16 12:00:00")
           4 | soudai_room | ["2017-04-16 12:00:00","2017-04-16 12:30:00")
           5 | soudai_room | ("2017-04-16 12:30:00","2017-04-16 12:40:00")
           8 | soudai_room | ["2017-04-16 14:30:00","2017-04-16 16:00:00")
(4 行)

demo=# SELECT * FROM schedule 
          WHERE reservation_time @> '2017-04-16 15:30:00'::timestamp;

 schedule_id |  room_name  |               reservation_time
-------------+-------------+-----------------------------------------------
           8 | soudai_room | ["2017-04-16 14:30:00","2017-04-16 16:00:00")
(1 行)

demo=# SELECT * FROM schedule
         WHERE
    reservation_time && '[2017-04-16 11:45:00, 2017-04-16 12:10:00]'::tsrange;

 schedule_id |  room_name  |               reservation_time
-------------+-------------+-----------------------------------------------
           1 | soudai_room | ["2017-04-16 11:30:00","2017-04-16 12:00:00")
           4 | soudai_room | ["2017-04-16 12:00:00","2017-04-16 12:30:00")
(2 行)

しかしここで大きな課題として会議室は1つしかないので会議室の予約時間(reservation_time)が被ったらErrorになって欲しいですよね。 そこでお待たせしました排他制約の出番です。

EATE TABLE schedule
(
    schedule_id SERIAL PRIMARY KEY NOT NULL,
    room_name TEXT NOT NULL,
    reservation_time tsrange NOT NULL,
    EXCLUDE USING GIST (reservation_time WITH &&) ←排他制約を追加
);

demo=# SELECT * FROM schedule;
 schedule_id |  room_name  |               reservation_time
-------------+-------------+-----------------------------------------------
           1 | soudai_room | ["2017-04-16 11:30:00","2017-04-16 12:00:00")
           4 | soudai_room | ["2017-04-16 12:00:00","2017-04-16 12:30:00")
           5 | soudai_room | ("2017-04-16 12:30:00","2017-04-16 12:40:00")
           8 | soudai_room | ["2017-04-16 14:30:00","2017-04-16 16:00:00")
(4 行)

demo=# INSERT INTO schedule
  (room_name, reservation_time)
     VALUES
  ('soudai_room', '[2017-04-16 15:30, 2017-04-16 17:00)');
ERROR:  conflicting key value violates exclusion constraint "schedule_reservation_time_excl"
DETAIL:  Key (reservation_time)=(["2017-04-16 15:30:00","2017-04-16 17:00:00")) conflicts with existing key (reservation_time)=(["2017-04-16 14:30:00","2017-04-16 16:00:00")).

demo=# INSERT INTO schedule
 (room_name, reservation_time)
  VALUES
   ('soudai_room', '[2017-04-16 17:30, 2017-04-16 18:00)');
INSERT 0 1

ちゃんと弾いてくれてますね! これでUPDATEの設計にしてロックがアプリケーションパフォーマンスのボトルネックになったり、INSERTで表現する際のファントムーリード起因のbugとかを防ぐ事が出来ます。

まとめ

RDBに入っているデータは常に正しいといえる状態は精神衛生上もアプリケーションのロジック的にも平和なので排他制約使えるシーンは色々とあるな!と考えています。 とは言え僕も今回知ったばかりでまだまだ実務で使っていないので面白い使い方を模索したいと思います。

—- 2017/04/16 追記 —–

PostgreSQLで排他制約がめっちゃ便利!! - そーだいなるらくがき帳

CREATE EXTENSION btree_gist; して、EXCLUDEに (room_name WITH =, reservation_time ...) ってすると、同一room_name内で時刻が重複してたらはじくとかもできますよ!(room_nameが違えば通る)

2017/04/16 20:31
b.hatena.ne.jp

めっちゃ便利!!!!!

—- 2017/04/16 追記 2 —–

PostgreSQLで排他制約がめっちゃ便利!! - そーだいなるらくがき帳

単純な幾何学情報はともかく、地理的位置情報はPostGISも入れて扱うべきだというのはあまり知られていないのだろうか。

2017/04/16 22:05
b.hatena.ne.jp

みんなPostGISめっちゃ便利なのに知らない可能性あるのかって思ったので合わせて紹介します。

PostGISを使ってみよう | Let's Postgres

農研機構最高だぜ!(久々の定期ポスト

雑に説明するとPostGISは良い感じに幾何学的なことを出来るようにするPostgreSQLの拡張ライブラリの一つです。 例えば地球は球では無く楕円なので緯度経度から距離を計算する時に近似値計算ではズレが生じます。 なのでそこを正確に計算するためにはアレをコレしてと大変なのですがそこを良きに計らってくれたりします。 つまり正確な地図を表現したり、例えば町田は東京都に含まれるのか?みたいな複雑な形の確認も表現出来るようになります。 というわけで正確な地図を表現したい時にPostgreSQLPostGISは最強なのでオススメです。 あと皆さんも知ってると思いますがMySQL 5.7からInnoDBでもGIS型をサポートしてます。 こちらは機能的にはまだまだPostGISほどでは無いものの、光る部分も沢山あるので将来楽しみな機能です。 ということで地図などで座標を扱う時にPostgreSQLめっちゃ便利ですのでこちらも合わせて覚えてください!!

Mackerel Drinkup #4 Tokyoでサービスメトリック便利ってLTしました

先日Mackerel Drinkup #4 Tokyoが開催されました。

mackerelio.connpass.com

サービスメトリックなので実際はPluginじゃないんだけどPlugin作るつもり始めたら落とし所がPluginじゃなかったっていう背景があるので許してください。
何かの参考になればと思うのでサンプルとしてコードも置いておきます。

speakerdeck.com


github.com

ドリンクアップには色んな方に来ていただけて交流できたので最高に楽しかったです!
次回もLTをするかはわからないのですがネタは色々思いついたので頑張っていきたいです。

とりあえずこれ使うとクエリの実行回数を明確に可視化できる!みたいな事思ったけどそもそもpg_stat_statementsのプラグイン書けって話ですね。
みたいな事を次回までにやりたいなーって思ってます。
定期的に開催していくのでMackerelユーザの人もそうでない人も是非遊びにきてください!

敢えてアウェーで戦う事に意味があるって話

YAPC::Kansaiで id:takesako さんからすごくいい話を聞いたのでみんなにおすそ分け。

yapcjapan.org

スピーカー控室。
多分10:00くらいの1時間、みんなセッションを見に行ってて竹迫さんと二人っきりになりました。

発端

僕はSECCONの人として竹迫さんの事を一方的に知っていて今回のゲストスピーカーのしかも基調講演ですし「うぉー二人っきりだ!どうしよ!!」ってドキドキの中、同郷をネタに話かけました。すると竹迫さんは柔らかく応えてくれました!
その中で色々と地元トークをしてる中で僕が「僕は今回東京に引っ越して右も左もわからないんですよね。今日もPerlのイベントで僕は普段からPerl書かないし、すごくアウェー感あります。」とボヤきました。そこで竹迫さんは「それめっちゃチャンスだよ!やったじゃん!!」とすかさず返してくれました。それからアウェーに敢えて飛び込みことについて教えていただきました。

アウェーで戦うということ

竹迫さんはアウェー、つまり自分が普段活動していないコミュニティに飛び込むことは沢山のメリットがあると教えていただきました。

  • メリット
    • 自分が普段いないコミュニティこそ新しい出会いの場所
    • 自分が普段通りの事をアウトプットしてもアウェーでは新しい風になる
    • 新しい場所に行くことは自分の成長に大きく関わる

みたいな感じの内容でした。僕は普段データベースのコミュニティにいてそこでアウトプットすると共感も得やすいし、コンテクストを共有する必要もなく本題に入れるので非常に楽で心地良いです。でもそこで「若者にデータベースに興味を持ってもらいたい!」って問題提起しても問題は改善しません。設計出来る人たちに設計の話をしても「うんうん、そーだいさんは正論マンだからな」ってyoku0825さんに諭されたりするわけです。だけどアウェーに飛び込めば新しい人達にデータベースを興味持ってもらえるかもしれないし、仕事で僕達DBAが苦労するような設計を減らすことができる可能性が増えます。そう考えると「アウェーに飛び込む」ということは何か伝えたいことがあるならばより大切にしないといけないことだと強く感じました。

セールスエンジニアとして

僕は今、はてなのMackerelチームでセールスエンジニアをしています。はてなのセールスエンジニアの定義は無限に広く、明確には定まっていません。ですので僕はエバンジェリストのような活動もダイレクトセールスもする必要があると思っています。そこでMackerelを知ってもらうためにこそ、はてなのネームバリューが届かないような世界に飛び込むことがとても大切だなと思ったりしました。

まとめ

僕はありがたいことに今回のYAPC::Kansaiでベストトーク賞をいただきました。これはあの時、竹迫さんに背中を押していただいたことがとても大きな要因になっています。あそこで「そうか今チャンスなんだから精一杯やろう」と気持ちを切り替えれなかったら、この結果になっていなかったと思います。そう考えると気持ちの持ち方というのはとても大切です。皆さんも「あぁここは苦手な分野だな…」「自分の住む世界と違うな」と感じたときこそチャンスだと思えればそれは本当にチャンスになると思いますし、それを掴めば大きなブレイクスルーになると思いますので是非とも色んな世界に飛び出してほしいです。




ということで今年は色んなコミュニティに飛び込みたいと思いますので是非色々お誘いください。
僕に出来ることなら精一杯お手伝いさせていただきます。

叱ってくれる人は大事だよねって話

会社のランチ中に色んな人と話が聞けて楽しいです。

その中で叱ってくれる人って大事だよねって話題が出たのでメモとして残しておきます。

歳を取ると面倒事を避けてしまう

賢い人ほどその傾向が強いと思います。 というか年関係なく若い人でも賢い人はスッと面倒事を避けますよね。 人生は有限なので当然です。 でその面倒事の一つに「他人に叱る」ってのがありますよね。 叱る行為が原因で相手に嫌な思いをさせることもありますし、それ起因でお互い感情的になっても得しないし、相手が怒ったりしたらそれこそ時間の無駄じゃんって事で争いを避けるのは必然です。 なので歳を取るとなかなか他人を叱るって行為をしなくなったりしませんか?

そもそも怒ると叱るの違い

  • 怒る = 感情を外に爆発させること
  • 叱る = 相手によりよい方法を教示すること

叱るだとまぁ部下だったり後輩だったり自分の子供だったりで叱ることもあると思います。 この叱るべきところで怒る人はまぁ駄目だなって思います。 とはいえ、感情的にならずにかつ相手に適切に叱るのは至難の業です。 なので最初は良かれと思って叱っててもなかなかコストが合わず叱らなくなるのではないでしょうか。

じゃあどんな場面で叱ってくれる人が必要なのか

ここで怒ってくれる人って言うのは友人を指します。 友人と知人の違いは人それぞれですが一部の意見では

  • 友人=本音で話する人
  • 知人=建前で話する人

と言われてました。 僕も大体そんな感じの認識です。 で本音で話出来る中でも自分を叱ってくれる人は超貴重です。 なぜならそれが無いと自分の常識が非常識であることに気付け無いからです。 特に社会人になると交流関係が固定化されるのが一般的だと思います。 そうなるとその会社の文化では常識のことが世間一般では非常識なこともあり得ます。 または単なる無知で損をするケースもあります。 その時に率直に叱ってくれる友人はとてもとても貴重な存在です。

でどうしてそんな事言いだした?

そんな本音で語れ、叱ってくれる友人が沢山居たとしましょう。 そこに利害関係が生まれたり、育ってきた環境の違いだったり、家族が出来たなどのステージの違いだったりで意外とアクティブな交流がある友人は減っていきます。 僕も若かりし頃から(現在進行系)色んな人に御指導御鞭撻頂いてきたのですが会わなくなって久しい恩人が増えました。 だからこそ、今こそそういう友人を大切にしたいなって思った次第です。

今のつながりだけでいいの?

新しいつながりも欲しいですよね。 だから僕は自分が友人だと思ってる人には積極的に本音でトークしたいと思いますし、場合によっては叱る側に立つことも大事だなって思いました。 また僕の場合、お酒が入るとめんどくさい系男子になってしまうのですがそういった時に叱ってくれる人を大募集中です。

おまけ

完全に表参道のOLがランチ中に言ってたセリフのパクリですが「相手を叱る(Disる)ときと下ネタを言うときはオシャレ大事」です。 オシャレな一言で場を和ませながらも鋭い発言。 周囲から信頼される事間違いなしです。 僕も相手を気遣いながらもお洒落な一言を出せるように日々精進したいと思います。

まぁなんていうか縁って大事ですね。

地方の家族持ちが都内近辺に引っ越す時に考えておくと良さそうな事まとめ

地方の家族持ちが関東に引越すなんて一大イベントですよね。 なので今回、僕が福山→都内と転居する際に気付いたことを纏めておきます。

対象

大前提として

  • 転職、転勤など仕事都合での転居
  • 家族全員で引越す
  • 小学生から園児くらいの子供が数名いる

って感じです。 それではまず事前に色々調べて気づいた事書きます。

子育て支援について

自治体によって結構違います。 例えば子供の医療費。 横浜は1歳以上から所得制限があって給料多い人は受けれなかったり。 都内は大体無制限で中学生まで無料になります。 千代田区と北区に至っては高校生まで無料です。 他にも自治体によってサービスが結構違うので調べて見るの大事です。 杉並区は「子育て応援券」と言う一時保育や子育て講座、親子参加イベントなど有料の子育て支援サービスに利用できるチケットを発行してます。 子育て支援は結構大切で特に医療費などはインフルエンザなどで家族全員が倒れた時とか目も当てれなくなるので大事です。 あとは私立幼稚園の入園に対する補助とかも随分違います。 広島県福山市では幼稚園は

  • 14時が基本で延長保育で18時まで延長可能
  • 入園児が2人目で半額、3人目で無料

なので幼稚園と保育所でカリキュラム以外の部分での差があまりありませんし、待機児童の問題などもありません。 しかし都内の幼稚園は延長も無いですし、3人目無料みたいな支援も無いようです… なので子供が小さく複数名いる場合は都内での子育てはコスト的には大変そうだなと思いました。 ただ確かに共働きするための保育所は大変そうですが幼稚園はすんなり入れるようです。 我が家もまだ末っ子が園児なのですが幼稚園には特に問題なく転入出来ました。 例えば妻が専業主婦とかパートのみの場合は幼稚園でもいいかもしれませんね。

車について

車を維持するメリットよりもコストのデメリットの方が多いので手放しましょう。 車に愛着があるととてもつらいのですが趣味としてやっていく以外の強い理由はありません。 要らない理由として

  • 普段は電車かバスでなんとかなる
  • 買い物はネットで解決
  • 子供が熱を出したとか、車がほしい時はタクシー(しかもすぐ病院がある
  • 遠出したい時はレンタカー

と言った感じですね。 都心からかなり離れるような場所に住むのであれば車を持っていくのもありだと思います。 そのへんは通勤時間とか住居の場所に依存しますが基本的に手放す感じですね。

子供の教育について

これは正解がないなと感じてます。 特に熱心な教育をされる方は学校に頼らず塾に行くのが一般的なようです。 そうなると中学受験するので通学は電車になります。 そのため学校が近いなどで選ぶメリットはあまり無いようです。 そうではなく、公立の小中学校を卒業するルートの場合はある程度調べて置いたほうが良いと思います。 ただ公立の教師は転勤もありますし、当たりハズレは年単位で違うと思いますんで「明らかに荒れた地域」を外せば大体大丈夫かなと思ってます。 ちなみにうちは本人が希望しない限りは公立の小中学校を卒業する予定です。 高校は高専とか行ってくれると助かるなぁ(遠い目

習い事について

我が家の長女はバレエをしており、それを継続する予定です。 しかし東京はバレエ教室が無限にありどれにいけばいいのかわかりません… なので私は今通っている先生に相談してバレエ教室を選びました。 (三鷹、大宮の教室を進められました) 習い事も塾同様定期的に通う場所になるので通いやすさは大切です。 特に子供がやりたい!と思っている事は応援したいのが親心。 事前にしっかり決めておくことをオススメします。 またバレエに限らずスポーツなどもチームによって大きく変わります。 強いチームに行きたい!とお子さんが思っているなら近くに住んだほうが良いと思います。 ちなみに次女はサッカーをしており、広島はサッカー大国なので女子サッカーも力を入れていたのですが都内だと何処がいいんでしょうね… ここは本人のやる気と相談なのですが情報待ってます。

治安について

家族持ちにはとても大切ですよね。 これはネットだけじゃなくて地元に知り合いがいる人は積極的に聞いてみましょう。 僕も色んな方に聞いて勉強になりました。 一般的に安全と言われてるところも場所によってはちょっと危険と言われたり、ネット上では危険と書かれてても場所を選べば大丈夫だったりします。 日本は治安がとても良いと言っても小さな子どもが居ると心配ですのでしっかりヒヤリングしましょう。 杉並区や世田谷区、港区などの人気の場所はやはり比較的治安が良いそうです。 ただ人気の地域=時価も高いので難しい所。 探すコツとしては建物自体の安全性や周辺の施設など(風俗店やパチンコ屋などが無い)が大切です。

次に実際に転居先を決める時に気をつけたことです。 大体住む場所を決めたら次は家探しです。 家探しの際に気をつけたところはこの辺です。

場所について

多少歩く前提ですが

  • 通勤ルートが複数ある
    • 人身事故などでメインのルートが封鎖されても帰るルートがある
  • 自転車置場が十分にあるマンション
    • 妻、自分、子供と自転車に乗るとキャパ量が大事になるので
  • 近くにコンビニなどの夜までやってるお店がある
    • 近くに明かりがある店があると防犯上良い
  • 公園が近くにある
    • 子供が遊べる場所が近くあるってのは大事にしました
    • 子供が大きい場合は気にしなくても良いかもしれません

などを重視しました。 まぁコンビニは大体どこでも通勤ルート上にあるので気にしないし、いきなり夜買いに行くことあまり無い想定です。 買い物は車で行ってガッツリ買うという地方のスタイルから毎日自転車で買いに行くみたいなスタイルに変わると思います。 場所が山の上とかだとこの辺辛いかもしれません。 ただ車の所にも書きましたがAmazonを始めとするネットで多くの事が解決出来る便利な時代です。 日常品などもAmazonで買うと考えると買い物で外出する機会は減ると思います。 また食料品も最近はイトーヨーカドーさんなどがサービス化してるのでそのへんは楽できそうです。 一人暮らしだと駅前で食べて帰って寝るみたいな事が出来るのですが家族だとそうは行かないのでライフスタイルを意識した場所決めが重要ですね。 ただ関東は大抵駅に東急などのスーパーがあり、帰りに買い物をするのは簡単そうです。

更新料について

地方だと敷金・礼金すら無い場所だってあるのですが更に都内だと更新料があります。 2年経つと更新料として1月分の家賃を支払うみたいなやつです。 例えば子供が小学校を卒業するまで8年位居る前提だと4ヶ月分の家賃が上乗せします。 月10万の家賃でも40万、年5万の上乗せなので月換算だと4000円ちょっと上乗せがあるということです。 独身だとこのタイミングがわりと良い転居のタイミングになるようですが家族だと頻繁な転居は難しいので考慮しましょう。 ちなみに僕は比較した時に多少家賃が高いけど更新料が無いところにしました。 総負担額はあまり変わらないのであればそういう選択肢もアリだと思います。

周囲の状況

候補を絞ってきたら周囲の状況を見るのをオススメします。 良く、朝・昼・夜の時間帯の3回訪れた方が良いといいますが僕はそこまではしませんでした。 ただ訪問は数回はしたほうがいいと思います。 例えば騒音も時間帯によって違いますし、人の流れも変わります。 昼は賑やかでも夜になると急に人が居なくなる地域もありますし、逆も然りです。 また理想を言えば平日と休日でも違います。 この辺はどこまで拘るかと下調べのコストがトレードオフだと思うので自分で納得出来る落とし所を見つけましょう。 ただ地方から出てくるとどうしても不安なので不安を払拭するためには大事だと思います。 あとある程度候補を絞った後に行ってみるオススメとしては

  • メインで使う予定のスーパー
    • 時間帯で品切れが出るかとか品揃えとか
  • 子供を連れて行く公園
  • その他、利用予定の施設
  • 子供が利用する幼稚園や小学校
  • 区役所などの自治体の施設
    • ここで金持ってるなぁとかちゃんとしてるなぁとか見えるのでオススメです
    • 港区とか休日もやってるらしい
  • メインで利用する駅の近くの商店街
    • 駅の近くはその地域の人柄が多く見えます
    • 歩く人以外にもお店によってターゲットが見えてくるのでその辺意識するとどんな人が多いのか見えてきます

とかオススメです。 僕は隣駅まで1駅歩いてみたりしましたが散歩になって楽しかったですよ!

結局決め手は勢いとフィーリング

大事。 あとは巡り合わせは縁なので最悪もう一回引越すか…くらいの気持ちの余裕があるといいと思います。 賃貸だとそのへんはメリットですよね。 それに20年も住む事はあまりない(それまでに家を購入する人が多そうだし子供が出ていくと引っ越しする)ので何年くらい住むかってところであまり未来を見すぎないのもコツだと思います。 仕事が落ち着いてくれば家を買ったりする人が多いですし、それなら深く考えなくてもその時引越しますしね。 あとは引越した後の地元ネットワークに如何に混ざるかが大切だと思います。 PTAだったりママ友だったり。 そういうところは東京は希薄と言われていますが0では無いので上手く活用したいですね。

というところでまとまっては無いのですが誰かの参考になればと思います。