😼

疑問解消編①

2024/02/22に公開

明けましておめでとうございます!

オアシステクノロジーズの中村です。

2024年一発目の投稿です。

昨年はPMから始まり厳しいプロジェクトをなんとか終わらせて初のSESといった感じの一年でした。

言語はPHP-Laravel&FliutterからのJava-Spring bootって流れでまたも新しいFWを触りました!

Javaは6年間経験ありますがFWがSeasar2というものでWebの経験は初めてとなります。

今回の投稿は新しいWebの現場を経験し疑問点がいくらか沸いたので、疑問点や知らない単語をChatGPTに聞いてみた!編です。

今回のトピック

  1. BFF
  2. ディレード処理
  3. ポーリング

BFF

我「BFFってなんですか?」

ChatGPT君

「"BFF"は、「Best Friends Forever」の略で、日本語では「親友」「最良の友達」といった意味になります。この用語は、親しい友達や仲の良い友人を指すときによく使われます。「BFF」という言葉は、友情や親友関係を強調するために、テキストメッセージやソーシャルメディアなどのコミュニケーションでよく見られます。」

これは多分違いますね(笑)

聞き方を変えましょう!

我「IT用語のBFFってなんですか?」

ChatGPT君

「IT(情報技術)の文脈では、"BFF"は通常、「Best Friends Forever」の略ではなく、「Backend For Frontend」の略として使用されます。これは、特定のフロントエンド(ユーザーインターフェースやクライアントサイドアプリケーション)のために設計されたバックエンドの部分を指します。

BFFは、異なるプラットフォームやデバイスに適したデータ提供や処理を行うために使用され、クライアントサイドの特定のニーズに合わせてバックエンドを最適化する役割を果たします。これにより、フロントエンドとバックエンドがより効果的に連携し、ユーザーエクスペリエンスが向上します。」

なるほど。

今のPJではバックでAPIを意味のある単位で作成し、フロントが要求しているリクエストとレスポンスを加味してバックのAPIを組み合わせて一つのAPIを作成することをしています。

フロントとしてはBFFのAPIを一つ呼ぶだけで良く、バックとしてもある程度の意味がある単位でAPIを作成すればよくなるのでそれが効率良くなるってことかなと思いました。

ディレード処理

我「ITのディレード処理ってなんですか?」

ChatGPT君

「「ディレード処理」(英: Deferment)は、ITの文脈で複数の意味を持つことがあります。具体的なコンテキストによって異なる解釈があるため、文脈によって異なる意味を持つ可能性があります。以下に、一般的な意味のいくつかを挙げてみます。

データの延期処理(Data Deferment): データのディレード処理は、データの処理や更新をある時点から遅らせることを指します。これは、ネットワークの混雑やリソースの制約などの理由から、データの処理を遅らせることが有用な場合があります。

プロジェクトのディレード処理(Project Deferment): プロジェクトマネジメントの文脈では、プロジェクトの一部や特定のタスクを後回しにすることを指すことがあります。これは、プロジェクトの進捗や優先度の変更によって、特定の作業を後で行うという戦略を指します。

関数のディレード処理(Function Deferment): プログラミングのコンテキストでは、関数のディレード処理は、関数の実行を遅らせることを指すことがあります。これは非同期プログラミングやイベント駆動型の処理で一般的です。」

ふむふむ、むっず!!!

けど今回のプロジェクトでは一番下の関数のディレード処理が該当しそうです。

非同期プログラミングのことかあ、うん、もう少し詳しく聞いてみました。

我「関数のディレード処理をもう少し詳しく教えてください」

ChatGPT君

関数のディレード処理(Function Deferment)は、プログラミングのコンセプトで、関数の実行を遅らせる手法を指します。これは通常、非同期プログラミングやイベント駆動型の処理で使用されます。ディレード処理を行うことで、プログラムは他のタスクを実行でき、関数が実行される条件が揃ったときに適切なタイミングでその関数を実行することができます。

以下に、関数のディレード処理に関するいくつかの一般的な概念を示します:

非同期関数: ディレード処理は、通常、非同期関数と一緒に使用されます。非同期関数は、他のコードがブロックされないように、関数の実行を非同期に行います。関数が非同期である場合、その関数が実行を完了する前にプログラムが他のタスクを実行できます。

コールバック関数: ディレード処理を実現する一般的な方法は、コールバック関数を使用することです。関数が遅れて実行されるときに呼び出されるコールバック関数を指定します。これにより、関数が完了したときに特定の処理を実行できます。

タイマーを使用したディレード: 関数のディレード処理は、タイマーを使用して一定の時間経過後に関数を実行する方法もあります。これは、特定の条件が発生するのを待つ代わりに、時間の経過を利用して関数を遅らせるものです。

以下は、JavaScriptでの簡単な例です。この例では、setTimeout関数を使用してディレード処理を実現しています。

この例では、delayedFunctionは3秒後に実行されます。このようなディレード処理は、非同期プログラミングやイベントドリブンな状況で、特定の条件や時間の経過を待ちながら他の処理を進めるためによく使用されます。

function delayedFunction() {
    console.log("This function is delayed!");
}

// 3秒後に関数を実行
setTimeout(delayedFunction, 3000);

非同期処理は組んだことあるけど時間を指定できるのは知らなかった~

我「コールバック関数ってなんですか?」

ChatGPT君

コールバック関数(Callback Function)は、プログラミングにおいて、ある関数が別の関数を引数として受け取り、あるイベントや非同期の処理が完了したときにその関数を呼び出す仕組みです。コールバック関数は主に非同期プログラミング、イベント駆動型の処理、または他の関数が実行された後に特定の処理を行いたい場合に使用されます。

// 非同期な処理を模した関数
function fetchData(callback) {
    // 何らかの非同期処理(例: APIリクエスト、ファイルの読み込み)
    setTimeout(function () {
        const data = "This is the fetched data";
        callback(data); // コールバック関数を呼び出す
    }, 1000);
}

// コールバック関数を定義
function processFetchedData(data) {
    console.log("Processing the fetched data:", data);
}

// fetchData関数を呼び出し、コールバック関数を渡す
fetchData(processFetchedData);

この例では、fetchData関数が非同期な処理を模しています。この関数は、データの取得が完了した後に引数として受け取ったコールバック関数を呼び出しています。processFetchedData関数はデータを受け取り、それを処理するためのコールバック関数として使われています。

コールバック関数の利点は、非同期処理が完了したときに実行される特定のロジックを柔軟に指定できることです。これにより、コードの効率的な実行や、非同期な操作が完了した後の処理を制御することが可能になります。

ほえー!!

非同期処理後に処理を実行とかできるんや。

どんな使い方があるか思いつかないけど知っとくと今後活用できそうな気がしまする。

ポーリング処理

我「ポーリング処理ってなんですか?」

ChatGPT君

「ポーリング」(Polling)は、コンピュータサイエンスおよびネットワーク通信の文脈で使用される用語で、ある状態やイベントの変化を定期的に確認する手法を指します。これは通常、リアルタイム性が求められるシステムやアプリケーションにおいて、状態の更新を待ち受けるために使用されます。

具体的な例としては、以下のようなものがあります:

デバイスポーリング: デバイス(例:センサー、ハードウェアデバイス)の状態やデータを一定の頻度で定期的に確認すること。これにより、デバイスの変更や新しい情報を迅速に把握できます。

ファイルシステムのポーリング: 特定のディレクトリやフォルダ内のファイルが変更されたかどうかを、定期的に確認すること。これは、新しいファイルが追加されたり、既存のファイルが変更されたりする場合に役立ちます。

ネットワークポーリング: 特定のネットワークリソースやサーバへの接続状態を一定の間隔で確認すること。これにより、ネットワークの可用性や応答時間を監視できます。

ポーリングは継続的にリソースを監視する手法ですが、一方でイベント駆動型の手法や非同期プログラミングなど、よりリアルタイムで効率的な手法も存在します。ポーリングの利点はシンプルで実装が容易であることですが、適切なポーリング間隔の選択や無駄なリソースの使用による効率の低下などの懸念も考慮する必要があります。

ネットワークポーリングってヘルスチェックのことかな?

非同期プログラミングも手法の一つってことはさっきのコミュニケーションと組み合わせて、状態を監視して変化があったら処理をするとかできる感じを想定。

Lineとかのリアルタイムチャットも使ってるのかなー?

色々と想像が膨らみますな。

今回はここまで!

他にも知らない単語が沢山出てきたので、今後も調べていきます!

Discussion