タグ

ブックマーク / note.com/qsona (5)

  • RESTful API との比較で GraphQL API を作ることの難しさ|qsona

    上の資料でも書いてるんですが、要点を言うと以下のようなことを主張している。 API の設計手法として、以下の2つのパターンが考えられる ・Resource-based API ・Usecase-based API Usecase-based というのは要はクライアントの要求にそのまま沿った形で API を作るということだ。しかし、UI やその他クライアントの要求というのは変わりやすいものなので、そのたびにいちいち API を変更しないといけないとか、API に一貫性がなくて使いにくいとか、1つの endpoint で多数の要求に対処する "神API" が作られてパフォーマンスが悪化する、というような問題が起こる。 したがって、注意深く RESTful API を設計すると Resource-based になる。ここで言っている Resource というのはテーブル設計にやや近いが、そのまま

    RESTful API との比較で GraphQL API を作ることの難しさ|qsona
  • 社内の人に軽々しく謝罪しないでほしい|qsona

    たとえば、管理ツールのオペレーションのミスが起こった時に、再発を起こしたくないという理由で、どういう手順で起きたのか、管理ツールに問題があるなら改善したいから言って欲しいというようなことを伝える。 あるいは、期待したアウトプットと違った時に、せっかくやってくれたことはありがたいが、ズレがあったことを伝えて、その目的からすり合わせようとする。 のようなケースで、自分としては、相手を責めるつもりなど一切なくて、とはいえそう捉えられないようにその目的から伝える努力をしているつもりなのだけれども、 ご迷惑をお掛けして申し訳ありませんでした。以後このようなことがないよう徹底いたします。 みたいな反応をされてしまうと、それ以上の発展は望めないし、ああ僕はこの人を謝らせてしまったんだなとなり惨めな気持ちになる。 確かにこういうのは大概他の部署の方とのコミュニケーションだし、事前に信頼関係が出来ているわけ

    社内の人に軽々しく謝罪しないでほしい|qsona
    hiroomi
    hiroomi 2019/09/05
    "改善したいから言って欲しいというようなことを伝える"改善する前提の習慣、文化じゃない限りそうなる。ネガティブに受け止められる話でもあるので、壁があるってことだろうな。
  • "クソコード"は人格攻撃ではないのか|qsona

    これは仮説というか自分がこうだという話なのだが、自分のアイデンティティを侵されると怒りが湧く。たとえば、自分が非常に大事にしている価値観に対して、同僚から「君のその価値観は間違っている」と言われたり、あるいは、作品とか、経歴とか、家族とか、そういう自分自身と非常に密になっていて同一視されるようなものをけなされたら、腹が立つということだ。 プログラマーにとって、ソースコードというのは一つの作品だ。仮に経験が浅い開発者であっても、あるいは経験が浅いからこそ、1行1行に時間をかけて考えながら作りあげる。それに対してこれはクソコードだと言われたらどうだろうか。考えてみる。 よく、クソコードというのはコードがクソだと言っているのであって、お前がクソだと言ってるわけではないから切り離して考えるべきだという言説がある。僕はこれには微妙に賛同できない。その人が生み出したコードは、少なくともその人のいくぶ

    "クソコード"は人格攻撃ではないのか|qsona
    hiroomi
    hiroomi 2019/08/15
    “それに向き合うのは確かに痛みしかないが、しかし向き合って自分自身が成長していかねばなるまい。”
  • ソフトウェア設計の言語化スキルを磨くこと|qsona

    たとえば設計について議論するときや、コードレビューで指摘をするときに、「なぜその設計が良いと思うのか?」について言語化するのが上手だと、確実に良いことがあります。 言語化が上手にできるかが一つの壁なのではないか、と感じることもあります。後輩を育てたりチームをリードするような立場になると、特に必要性を感じるのではないかなと。 自分も、うまく言語化できたことですんなり議論を進められていると感じることは多いですし、逆に直感的な良さを言語化できなかったことで直感に反する方向に進んでしまい、結果よくなかったというような苦い経験もあります。 前提: ソフトウェア設計の良さは静的には決まらない良い設計・良いコードとは何なのか。という質問に一言で答えるなら、「保守性が高い」ことだと思います。つまり、今後の変更・拡張を、高速にバグが少なく行えるような状態が良い設計・良いコードです。(一般的にはこれで70%く

    ソフトウェア設計の言語化スキルを磨くこと|qsona
    hiroomi
    hiroomi 2019/07/15
  • モバイルエンジニアのためのBFF入門 (1) 技術選定の軸|qsona

    とりあえず第一回として、iOS / Android のための BFF (Backends for Frontends) を作りたくなったときに、どういう技術で作るかを考えてみます。第二回があるかは未定。 そもそもBFFって何という方のために、手前味噌ですが自分の登壇資料をあげておきます。 言語とフレームワークの選定まず、いくつか観点を列挙する。 静的型付け or 動的型付け できれば静的型付けのが良いと思う。 iOS / Android が静的型付け言語を利用しているので、スイッチングコストが少ない。 あと、たぶんそんなに頑張ってテスト書かない(書くのが難しい)ので、極力型レベルでバグを検知したい。要はBackendのAPIをstubしないとテスト書けないんだけど、せっかくテストをしてもstubが間違ってると意味がないので、そこの(叩くAPIの型の)信頼性はどちらにしろ担保しなきゃいけない

    モバイルエンジニアのためのBFF入門 (1) 技術選定の軸|qsona
    hiroomi
    hiroomi 2019/01/11
  • 1