3分で読めるSQLアンチパターンまとめ #sqlap

発売されてしばらく経ちましたがまとめました。

SQLアンチパターン

SQLアンチパターン

電子書籍はこちら https://www.oreilly.co.jp/books/9784873115894/

ご存じない方に概要を説明すると、DBを扱う際の「やってはいけないこと」集です。

まとめにあたっては、各章1行で終わることを重視して、アンチパターンのみを否定文の形式で記載し、解決策については省きました。

論理設計

タイトル 一言まとめ
1. Jaywalking 一つのフィールドにカンマ区切りで複数の値を格納するな
2. Naive Trees 再帰的に参照する親を直接参照するな
3. Id Required すべてのテーブルでId列を設定しようとするな
4. Keyless Entry 外部キーを避けるな
5. Entity-Attribute-Value 汎用的な属性テーブルを作成するな
6. Polymorphic Associations 複数テーブルを参照しようとする外部キーを作るな
7. Multi-Column Attributes Tag1,Tag2,Tag3...のような列挙のために複数の列を作成するな
8. Metadata Tribbles テーブルの行数を減らすために列やテーブルを分割するな

物理設計

タイトル 一言まとめ
9. Rounding Errors FLOATデータ型は避けろ
10. 31 Flavors ENUMデータ型は避けろ
11. Phantom Files 画像ファイルを必ずしも外部に格納するな
12. Index Shotgun インデックスを全くしない、またはテキトーに設定するのやめろ

クエリ

タイトル 一言まとめ
13. Fear of the Unknouwn NULLとその他の一般値を混同するな
14. Ambiguous Groups 単一値の原則に反するクエリを書くな
15. Random Selection データをランダムにソートするな
16. Poor Man's Search Engine パターンマッチ述語を使用して全文検索するな
17. Spaghetti Query 無理に一つのクエリにまとめるな
18. Implicit Columns Select * やめろ

アプリケーション開発

タイトル 一言まとめ
19. Readable Passwords パスワードを平文で保存するな
20. SQL Injection 動的SQLクエリの入力に対する検証を省くな
21. Pseudokey Neat-Freak 欠番は埋めるな
22. See No Evil 例外処理をおろそかにしたり、最終的に発行されたSQLを確認しようとしないのやめろ
23. Diplomatic Immunity データベース開発を特別扱いしてアプリケーション開発から切り離すな
24. Magic Beans データベースアクセスクラスをモデルクラスとして使用するな
25. 砂の城 サービスの長期的な安定稼働のための施策を怠るな

この書籍では一つのアンチパターンを簡潔にワンフレーズで言い表しています。すると、二人とも内容を身に着けている場合、以下のようにコミュニケーションを洗練できます。例えばジェイウォーキングの場合、

「このテーブルのこの列、データをカンマ区切りで複数入れられるようになっているけど、これって良くないよね。なんでかっていうとえーっと…」

「このカラム、ジェイウォーキングだね」

補足

天元突破グレンラガン(ネタバレ)

とにかく気合と根性でなんとかなるタイプの熱血ロボットアニメ

しかし、このアニメの出来が良いところはこれでもかと燃えたぎる要素がある。

  • だんだん上がっていくスケール
  • テンポの良い展開
  • BGM
  • 合体
  • どんどん巨大化するロボット
  • 完璧な人間性を持ち合わせていたアニキの死
    • それを乗り越えていくシモン
  • どん底からの復活
  • 仲間の死を乗り越えて強くなる
  • 最終形態がタイトルと同一

とりあえずでかくなるのは単純だが結構有効だということがわかった。

第三部(七年後の前半パート)がすごい好き。ピンチ感がロシュの悲壮感のせいで最も強く感じたため。

若干ラストバトルで失速した感があったのがマイナスかな。「天元突破グレンラガン」の宣言が最高潮。

良作だと思います。

CodeIQ感謝祭に参加しました。 #codeiq39

codeIQ感謝祭に参加しました。

codeiq.jp

ちなみにこのイベントを知ったのはしがないラジオの湊川あいさんゲスト回です。

shiganai.org

パネルディスカッションや講演が合わせて5つありましたので、それぞれ感想を書こうと思います。

1. 多様化するエンジニアのキャリアパス、その先を考える

ここで僕が大事だと思ったことは一点、

「例え辛くても楽しく見えるように仕事しよう」

です。これはプログラマがなぜマネージャーを目指さないかという問いに対し、マネージャーが辛そうだからという答えがあることについての及川さんのコメントです。実際辛いかどうかは置いておいて、部下や同僚はマネージャーのことをしっかり見ているので、それを意識するだけでも違ってくると思います。

2. エンジニア採用担当者が読みたくなる職務経歴書のポイントは?

A:そんなものはない(AA略

ここで身につまされたのは、「ツイッターアカウントなんてググれば分かるんだぞ、変なこと書くんじゃないぞ」という話です。

鍵を掛ける、公式っぽいアカウントを用意するといった対策もありますし、そもそも僕はキツい内容は書いてないので見られても問題ありません。

一方で、営業ガシガシやってます、戦略的に運営しています、なアカウントを見ると、こういう意識が大事なのかなあとちょっと思います。

個人的には、そのような運営方針のアカウントは人間味がないなと思いますが。

スライドも貼っておきます。

Three points to write resume that recruiters will want to read // Speaker Deck

3. スタートアップを支える、入社一人目のエンジニアの想い

題名の通りスタートアップに創業間もないころから参加して成功したエンジニアの話です。

この段階ではどのようなサービスを作っていくかが大事だということはもちろんですが、僕が重要だと感じたのは下記の点です。

・そのサービスを生み出そうと思った原体験は何か

僕はそういうの上手く言語化できてないので、やっていかないとなと思いました。

4. ヨッピーさんがインターネット広告の未来を探る

ここ1年くらいでヨッピーさんのファンになったので生で見れて良かったです。

スライドで紹介されたネット広告業界図(カオスマップ)が非常に興味深かったです。

ネット広告嫌い!ってざっくり切り捨てている人が多いなというイメージでしたが、ちょっとだけ認識が正確になった気がします。

5. 新しい言語、開発ツール、どれが使える?

最後の方なので疲れててあんまりメモ取れてなかった。

結局のところ、新しい言語・フレームワークを身につけるにはそれが求められている仕事に就く(もしくは作る)のが一番だという話がありました。

しかし、例えば仕事に就く場合、新しい技術とかをこれからやります!では信用力がないので、その技術である程度やれることを示すか、新技術を導入するのが得意だというアピールが必要だと思いました。

リンク

CodeIQ感謝祭に参加して #ドラレコ を初めてしたら思ったより楽しかった件 #codeiq39 - めも

I begin listening to a lot of Rebuild.fm episodes

実家で(自分用のPCがなくて)ヒマなので書きたかったブログを書きます。

友人がポッドキャストを始めたのが大きくて、

しがないラジオっていうんですけど、そこで初めてポッドキャストを聞くようになりました。

その影響で、かねてから噂は聞いていたRebuild.fmを聞き始めました。

最初は聖杯問答回やSHIROBAKO回などをピックアップしていたんですが、先月半ばくらいにエピソード1から聞き始めました。

初回は2013年2月なので、

現在までおよそ4年半にわたって続いていることになります。つまり大量のエピソードがあります。2017年8月25日現在、エピソード189まであります。めちゃくちゃ多いですね。通勤途中やぼーっとしたいときはいつも聞いているんですが、今60を回ったくらいです。今年中に最後まで行けたらなあと思います。

情報のシャワーという感覚がすごくあって、

プログラミング言語、開発ツール、働き方、マネジメント、セキュリティなど、話題は多岐にわたるうえ、1.5倍速で聞いているのでめっちゃ濃密です。雑談風の講義みたいな。

まあでも一番詳しくなるのは

Appleの動向ですね。WWDCの話は毎年数回のエピソードでするので頭に入っていきます。今iOS8まで来て現在のiOS10まであと二つ!

現在とのギャップを感じられるシーンも

面白くて、列挙すると

  • Swift登場とObjective-Cの終焉
  • Goの隆興/流行
  • Dockerの登場
  • 電王戦

あたりですかね。もちろんiPhoneなどのデバイスのバージョンもあります。

ありがたいことに最近は落ち着いた公開ペースなので、どんどん聞いていきます。

Digitize my (lonely) life

家計簿アプリのマネーフォワードを導入して1月弱経過したのでそれについての所感です。

なぜ導入しようと思ったか

  • ひとり暮らしに伴い支出が多様化するのを把握する。

  • とりあえずいちばん有名なアプリを導入してみた。

導入前

導入にあたっては銀行口座等のデータを連携する必要があります。

僕はスマートフォン含むWEB上でそのようなデータをやり取りするのに抵抗があってやっていませんでしたが、今回は連携しました。

口座残高くらい別にバレてもいいや~という感覚もあります。

導入後の感想

良い点

  • 食費が月いくらくらいかかっているか把握できるようになった。

  • 節約志向になった。

  • ICカードを用いた交通費のデータが別アプリを使えばほぼ手間いらずで取得できる。

悪い点

  • レシート撮影が全く使い物にならない。

  • 1日でも記録を忘れるとリカバリーが困難になる。

    • 習慣化が強制されるので悪いばかりでもない気もする。

家計簿アプリの得意分野・苦手分野

家計簿アプリの得意分野は何か。それは、様々な金融資産の情報を連携し、収支を算出することだと思います。

逆に、従来の手書きの家計簿のように、支出を細かく分類して、何にいくら使ったか正確に把握するのには向かないでしょう。

長所の方は、口座の入出金を自動で入手してくれることに起因します。僕は普通預金口座しかもっていないのでありがたみを感じにくいですが、証券口座や定期預金など、いくつかの種類の資産を持っている場合はかなりありがたい存在だと思います。

短所の方は、支出の分類を手動で記入しなければならないことから来ています。例えば、Suicaでコンビニの商品を買うと、分類不明とされるため、何を買ったかを思い出して手動で更新しないといけません。

Digitize my life

興味深いと思ったのは、これらのアプリを最大限に生かそうと思った場合、支払いに関する生活スタイルと、お金に対する考え方を変えるよう促されることです。

具体的に言うと、

  • 支払いはなるべくクレジットカードで済ます。

  • 収入や支出は総額さえわかればよく、具体的に何に使ったかはそこまで気にしない。

  • 証券投資をする。複数の口座を持つ。

なお、自分の資産を増やしていく上で、収支の正確な把握が重要であることは広く知られていることだと思います。

雑に始めるひとり暮らし

実家を出ました。

なぜ引っ越したか

  • 実家暮らしは飽きた。
  • ちょっと会社まで遠かった。
  • 実家クンwwwwwと煽られることが多々あった。
  • 友人の不動産屋さんへ気軽にアポを取れた。

始まり(6月中旬金曜日夕方)

不動産屋に「一人暮らしするんでここらへん・これくらいの値段で物件探して」とラインする。

物件絞り(翌日)

リストが15件くらい届く。全部チェックして候補を絞り込む。 内見の予約を取り付ける。

内見(翌週土曜日)

当日提案された物件含め、3件見に行くことに。

  • 1件目:1階、日が当たらない1R。まあまあ暮らせそうな感じ。
  • 2件目:1件目から値が上がってベランダのある部屋に。おっいいじゃんという感じ。
  • 3件目:1件目と2件目の間くらいの物件。なぜかくっそ汚い冷蔵庫が置いてあって微妙な感じ。

一晩悩んで2件目に申し込む。

この後どっかの審査があったらしいが、俺は特に何もしていない。 そうこうするうちに引越し日が決まる。

家具調達

ベッド、冷蔵庫、洗濯機あたりは必須なので買いに行った。

全部で10万円くらいで買えるだろ~って思っていたらベッドに8万円かかってしまった。

家電量販店やリサイクルショップに足を運んだ。暑さで死ぬかと思った。

引越し日の前の週に買いに行ったが、ベッドの到着だけ相当遅い(3週間~1ヶ月)のが誤算だった。

引越し準備

風呂・トイレ・台所周りはよくわからないなあと思っていたら母にほぼ全部やっていただきました。 あとベッド到着までの一時的な布団をいただきました。

自分で選別したのは衣服・書籍くらい。

手続き関係

  • 引越し業者:不動産屋から紹介してもらった業者を使った。
  • ISP光回線のものを適当に。
  • 契約書:言われるがままに印鑑を押した。
  • 家賃等の振込:めっちゃ金減った。

引越し当日、翌日

週末に引っ越し敢行。一人できた運送屋の兄ちゃんの手際が良かった。

ネット回線工事が引っ越しの翌週になったので、ポケットwi-fiを手配した。

翌日は自宅待機して家具の受取、および電気水道ガスの開始手続き。

引っ越し翌週末

  • 初めて郵便ポストを開けたら、やってない手続きの催促の封筒など、郵便物が大量に入ってて鬱になった。
  • インターネットを開通。しかし数日後にPCのネットワーク周りがぶっ壊れてしばらく繋がらなくなった。

その後

  • 必需品でない家具を買った。

良かった点

  • 家がすぐ決められた。
  • 不動産屋へラインすると70%くらいの確率で一瞬で返って来た。
  • 運送屋の兄ちゃんの手際
  • 立地

悪かった点

  • インターネットは当日から使えるよという話(3回位聞いた)だったのに工事が必要だった。
    • ポケットwi-fi等で一時しのぎは可能
  • ベッドの配送に1ヶ月くらいかかる。

反省点

  • やるべきことが思ったよりたくさんあった。
  • 主要な家具については早めに買うべき。
  • 意外と床は傷があるので内見のときに見ておくべき。
  • 予算は考えるべき……?

予想外の影響

  • やや寂しい。
  • 実家に帰ったときQoLが10倍位に上昇した気分になる。
  • 金銭感覚が雑になって支出をケチるのが面倒になる。

友人の不動産屋さんは東京の東側だったらかなり強いっぽいのでそのへんで探している人は聞いてみてはいかがでしょうか。

僕の周りだと、不動産仲介業者の評判ってすごい悪くって、仲介手数料たけーよとか、時代に合わないとか、対応が悪いとか色々聞いてました。

幸い僕の場合は親切に対応してくださったので満足しています。何かあったときは聞くつもりですし。

物件の探し方を工夫することで、仲介手数料を減らすことは可能だと思いますが、初心者の僕にとっては金を払ってある程度任せる、というスタンスでした。

あるいは、金で知識を買う、リスクをヘッジする、という感覚でしょうか。

あと最悪実家に帰ればいいやって考えると思い切っていけますね。

色々書き忘れている気がするけど、まあこんなところで。

吉田尚記『なぜ、この人と話をすると楽になるのか』

コミュニケーションに関する書籍。1~2時間でサクッと読めます。 筆者はラジオ番組のパーソナリティをしていますが、「自称コミュ障」です。そんな筆者が仕事を通じて磨いていったコミュニケーション技術が紹介されています。

以下、筆者の主張とそれに対する私の感想です。

  • コミュニケーションの目的はコミュニケーションそのものである。全員協力型のゲームであり、全員が楽しめたら勝利である。

 裏を返すと、何かを伝えるということではないということです。雑談こそコミュニケーションということです。

 飲み会に参加するとして、参加直前に行きたくなくなることってよくあるじゃないですか。でも結局楽しめたことってそれなりにあるもんだと思うんですけど、それはなぜかというとコミュニケーションそのものが楽しく終われることが多いということだと思うんですよね。

  • 自己顕示欲を捨て、相手に興味を持って答えやすい質問をし、相手に喋ってもらおう。

 ちなみにこれは聞き上手とも重なります。聞き上手って自分が喋ってて楽しくなる相手のことなので、上記の技術を実践すると、聞き上手に近づけるとのことです。

 結構相手に対してもてなしの心をもって臨むことを要求しているなと思いました。ただ、自分の提起した話題で盛り上がっていったら面白いな、とも。

  • コミュニケーションは後天的に磨くことのできる技術である。

 人は生まれながらにして自転車にはのれないということです。日本に生まれ育つと当たり前に日本語を聞き取り発話できるようになりますが、コミュニケーションは実はそれほど簡単ではないということです。    練習すればなんとかなるというのは勇気をもらえる話ですね。