Labとは、アスタミューゼのエンジニアとデザイナーのブログです。アスタミューゼの事業・サービスを支えている知識と舞台裏の今を発信しています。Web開発どうもみなさまおはこんばんちわー。度目の登場になります。年が経ちましたが、最近はエンジニアだけに限らず、様々な分野で専門を持つ方々が弊社に入社してきてくださっていて、そんな方々の自己紹介を聞くたびに、世の中には知らない世界がまだまだたくさんあるなぁ、と思う刺激的な毎日です。年の心配事は、オリンピックによる混雑ですねぇ。あまりに混雑するようなら、どうせなら期間中はリモートワークで切り抜けようかな、とか密かに思っています。いいぞさて、今回は何を書こうかと考えた時に、前々回、前回と技術的なことを書いていなかったことを思い出して、今回は素直に技術に関することを書くことにします。使うプロジェクトもちらほら出てきました。開発はできるなぁ、という感触を持ちました。ようなフルスタックなフレームワークではないため、初めから色々揃っているものではありません。その分解決したい問題に対して自分で使う道具を取捨選択できるため、いわゆる「薄い」フレームワークのようなものを好む方にとってはこちらの方が肌に合うように感じます。1実際使って作ってみた感触としては、「書いたようにしか動かない」という感覚を持ちました。これはどちらかというとポジティブな感覚で、要はハマっても予測可能である、ということです。エラーが出ても自分がそう書いていないからエラーになるのであって、エラーの内容とスタックトレースを元に地道に調べれば必ず答えはそこにあります。個人の感覚ですが、実際他のフレームワークと比べて、フレームワーク固有のお作法などによる原因の分からない問題に振り回されることは少なかった気がしています。以下はサーバを起動させる部分のコードの最小のサンプルです。エンドポイントからレスポンスが返ってくるサーバが立ち上がります。プログラムですので、ソースコードを追う際もエントリポイントが明確なため調査がしやすいところも気に入っています。ついて、サーバを起動させることは簡単なのですが、サーバの終了処理について少し悩みました。呼び出せば、起動したサーバは停止します。これは起動中のプロセスに対して割り込みで停止させるため、通信中のコネクションも問答無用で切断します。いったコンテナベースのアプリケーション運用も多くなってきていますし、そうなるとカジュアルにサーバプロセスが停止することもままあります。コネクションなど)は丁寧に解放してから、サーバを終了したくなってきます。実現するにはどうしたらよいのでしょうか。ついてのページがあり、こちらに割と詳細に記載があります。コネクションを終了させるには有効な方法です。バックエンドとの通信を閉じるなどリソースの終了処理を挟み込みたくなるのですが、その方法については記載がありませんでした。仕込むような形にしたいのです。ログを見るとやはり途中でバッサリ切れているように見えました。ついての記載があります。ごとに任意のタスクを挟み込むことができることが分かりました。以下のようなコードでそれが実現できます。接続の終了を待ってから、バックエンドリソースへの接続を終了する処理を挟み込むことができそうです。この方針で終了処理を実装してログを見てみました。SIGTERM)うまく終了フェーズごとにタスクが実行されている様が確認できますね。実装できそうな気がしてきましたが、まだ確信が持てなかったので、もうちょっと当たりをつけたく、直接ソースコードも見に行きました。終了処理が追加されています。終了処理のフックを登録しています。実装は以下のようになっています。以下のような実装になっています。終了処理が登録されます。終了してしまうようだ、ということが分かりました。フェーズで各種リソースの開放処理をすれば良さそうだ、ということが分かります。フェーズで終了の確認をしてみました。SIGTERM)良さそうですね。ついて記載されているページがあります。当たり前といえば当たり前ですね。利用はしているが、完全には依存していないとも記載があります。ApplicationLifecycleでの終了の方法もあり、移行も可能だそうです。実際に、ソースコードも確認してみました。ユーザー定義の停止時のフックを実行するような実装になっています。処理を実行すればよい、ということに自信を持つことができました。振る舞い自体は設定である程度変えることができます。本体のドキュメントに記載があります。生かしたままにする、といった振る舞いにすることもできます。登録する必要がありました。登録してサーバ停止するように実装しました。具体的には以下のような実装になりました。該当箇所だけ抜粋して抜粋します。実装を行うにあたり、調査したことをまとめてみました。ライブラリという位置づけもあって何から何までよしなにやってくれるフレームワークではありませんが、その分ソースコードを読めば何をやっているか把握しやすく、ハマった時に対処しやすいというメリットも感じています。したところからコードリーディングをしていく、といったことを私はよくやります。いったコードリーディングの方法は、体系的な方法や情報源はあまりないとは思いますが、もし問題にぶつかった時の切り抜け方として参考になれば幸いです。使って問題解決が開発がしたいエンジニアや、デザイナー、プロダクトマネージャーなど絶賛大募集中です。等でご連絡いただければと思います。Specificationを出力する。開発部のyanagitaです。Framework...2019-03-13働きたくないのでコードを自動生成してみたよこんにちは、開発部のNishikawaです。CMSの夜明けを感じるデザイン部でフロントエンドエンジニアをしているkitoです。Labとは、アスタミューゼのエンジニアとデザイナーのブログです。アスタミューゼの事業・サービスを支えている知識と舞台裏の今をブログとTwitterで発信しています。@astamuseLabアスタミューゼで働きませんか?アスタミューゼでは現在エンジニア、デザイナーを募集中です。興味のある方はぜひご応募ください。(1)@astamuseLabさんのツイートastamuseサービスサイトastamuse世界中のinnovatorのために、創造活動を可視化し未来を創るためのプラットフォームです。活用や新規事業に役立つ様々な機能を提供します。ビッグデータ分析から情報提供し、あなたの知らない未来を発見するメディアです。reserved.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。