サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC24
qiita.com/shunjikonishi
前文 フリーランスでエンジニアをしています。(何でもやるけど主にbackend) 比較的短期でいろいろな会社さんのお手伝いをすることが多いのですが、複数の会社で共通的に課題となっている部分について私見をまとめておきます。 ※ ちなみに一年位前にもRailsで同じような記事を書いています。今回はその発展版です。 Layered Architectureとは 近年、Clean Architectureの流行で、設計にLayered Architectureを取り入れるプロジェクトが多くなってきています。 自分の勝ちパターンも下敷きにしているのはClean Architecuteです。 Layered Architecture(= 階層化構造)とは、簡単に言えば処理を役割ごとに分解して役割ごとに階層を分離するプログラム設計のことです。 DDDやClean Architectureの登場によって大
Railsのアプリケーションの設計について考える機会があったのでその過程で考えたこととをまとめておきます。 (2022/03/22) 追記 この記事の発展版、Layered Architectureの勘所という記事を書きました。 Railsをやってた頃はActiveRecordの便利さについ流されてしまいましたが、今やるなら ActiveRecordのモデルとEntityの分離する Entityはimmutableにする というあたりをもっと徹底するのが良いと思います。 背景 Railsをメインで使用している企業で新規のWebアプリケーションを0ベースで作ることになった。 その企業はRailsでかなり大規模なアプリを運用しており、Rails自体の知見は十分。 一方で伝統的なRailsでの開発手法に大規模開発の限界も感じており、この機会に設計のPrcaticeを模索したいという要望もあります
みたいなエラーに遭遇します。 これはわりと有名な問題で検索すると色々な情報がひっかかるんですが、「結局どうすればええんや?」というところがわかりにくかったので整理してみます。 調査自体は趣味の範疇ですが、調査に使ったコードは仕事のものなのでコードサンプルはありません。ごめんよ。 何が起こっているのか? VueJSで画面(またはコンポーネント)を作る場合、独自にprops, state, methodなどを定義していくわけですが、その際に型推論が効かなくなって「そんなメソッド(プロパティ)知らんがな」と、言われているのがこのエラーです。 同じようにコードを書いていても型推論が効いたり聞かなかったりするのでやっかいです。 ちなみにこのエラーが出ても実行自体には問題ありません。 安直な解決方法 手っ取り早く解決するなら型を無視するのが楽です。
RDBからデータを取得する際には lmit/offsetをつけてデータ取得のSQLを発行する それとは別に同じ条件のcount(*)を発行する という2ステップが必要とずっと思っていたが、なんとそれを一発でやる方法があるということを今日知った。 select *, count(id) over() as full_count from table1 where id < 30 offset 0 limit 10;
この記事はHeroku Advent Calendar 2015の6日目の記事です。 もともとは、DataClipの応用的な活用を試みようと思ってたんだけど、すっかり忘れていた予定外に体壊したりしてやってる暇がなかったので、もう一個のネタについて書きます。 それはwebpackについてです。 webpackとは 一言で言えばフロントエンドJSのbuildツールです。 複数のJSファイルをひとつのファイルにまとめてくれます。 といっても、ただ単に複数のファイルをコンカチしてるだけではありません。それぞれのファイルの名前空間は分かれており、requireを使ってmoduleベースの開発を行うことができるようになっています。 結合対象のファイルは自分で開発したファイルだけにとどまらず、JQueryやReact.jsなどのフレームワークも含むことができます。 また、驚いたことにデフォルトではCSS
課題 現在、作っているサービスではsocket.ioを使って作ったWebSocketサーバをELB経由で使っています。 開発環境はELB配下にEC2が1台で、本番環境は複数台です。 これ、どちらも正しく動いているように見えていたんですが、最近セットアップした本番環境の方でWebSocketへのUpgradeがうまくいっておらず、pollingで動いていることに今日気がつきました。 サービスとしてはまぁ一応問題はないんですが、WebSocketで動いていると思っていたものが実はPollingだったというのはわりかし衝撃です。 原因 なんでやねんと思ってググるとわりと簡単に原因に行き当たりました。公式ドキュメントで思いっきり説明されています。 日本語だとこの辺でが参考になります。 Express / Socket.IO をスケールアウトしてみよう Socket.IO or WebSocket
6/8にPlay 2.4 ソースコードリーディングに参加するので、その前にとりあえず試しにPlay2.4アプリを作リ始めてみた。 なんか、色々と変わっていてなかなか衝撃的。。。(-- 現在、仕事で開発しているアプリはリリース(今秋予定)までには、2.4に置き換えるつもりだけどわりかし不安。 以下、自分のぶつかった問題のメモ。(と勉強会を受けての追記) WS asyncHttpClientが1.19.21になった asyncHttpClientは1.18から1.19でメソッド名等が大幅に変更になったため直接使っている場合要注意 WSを使う場合はWSClientを@Inject()する @InjectはJavaのAnnotationがScalaクラスのコンストラクタについているだけという理解 @Injectがobjectに使えないのはコンストラクタ引数がないから? あるいはそもそもobject
次期プロダクトでReact.jsを使ってみようと思っていて、その設計をどうすれば良いのかと試行錯誤した結果、それなりにイケてる結論に辿り着いたので、そのメモ書きです。 作ってみれば、Fluxとはこういうことか!というのがわかります。(若干アレンジはされてると思うけど。) それまで漠然と「ふーん、なるほどね。。」みたいな感じでなんとなくしか理解してなかったFluxが実は超画期的なパラダイムシフトであったことに気がついて結構衝撃を受けています。(^^; ちなみにプログラミングの文脈でeと言ったらまず思いつくのがEventかExceptionのどちらかだと思うけど、この場合はもちろんEventのことです。 すべてがExceptionになるのなら、即刻使うのを止めた方が良い。(^^; Fluxとは Fluxの説明では必ずと言って良いほど参照される図なので見たことある人も多いと思うけど、こういうアー
GitHubのIssue検索でできること チームメンバのタスク消化量をIssueの検索だけで可視化できないかと思ってIssueの検索についてざっくり調べました。 ざっくりとまとめておきます。 基本 スペース区切りで複数条件を指定可。 AND条件。 指定した条件は基本的にはその文字列の全文検索 「:」で区切られた各種フィルターを指定できる in 文字列がどのフィールドに含まれているかを指定する。 指定できるのはtitle, body, comment。カンマ区切りで複数指定可 in:title in:title,body in:comment is:public / is:private リポジトリ横断で検索する場合にpublicのみ、privateのみを指定できる 当然、privateは自分がアクセス権を持っているリポジトリのみ is:public is:private author Is
このページを最初にブックマークしてみませんか?
『@shunjikonishiのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く