Tech Bytes

短くて分かりやすい技術情報を記事として共有します。みなさんにとって学びになれば幸いです。

Linuxでファイル内の文字を置換して保存する方法

Linuxでファイル内の文字を置換して保存する方法

Linuxでファイル内の文字列を置換して保存する方法はいくつかありますが、一般的にはsedコマンドを使用します。
以下に具体的な手順を示します。

基本的な使い方

1. sedコマンドを使用する

例えば、ファイルexample.txt内の文字列"foo"を"bar"に置換する場合、以下のようにします:

sed 's/foo/bar/g' example.txt

このコマンドは置換結果を標準出力に表示します。
ファイル自体を変更する場合は、-iオプションを使用します:

sed -i 's/foo/bar/g' example.txt
2. perlコマンドを使用する

perlコマンドを使用しても同様の置換が可能です。
例えば:

perl -pi -e 's/foo/bar/g' example.txt
3. awkコマンドを使用する

awkでも置換できますが、基本的にはsedやperlの方が簡単です。
それでも、以下のようにして置換可能です:

awk '{gsub(/foo/, "bar"); print}' example.txt > temp && mv temp example.txt

具体的な例

以下に、各方法の具体例を示します。

sedでの置換例

1. ファイルexample.txtの内容を確認します:

cat example.txt
# 出力例:
# This is a foo example.
# Another line with foo.

2. sedを使用して文字列を置換します:

sed -i 's/foo/bar/g' example.txt

3. 再度ファイルの内容を確認します:

cat example.txt
# 出力例:
# This is a bar example.
# Another line with bar.
perlでの置換例

1. perlを使用して置換します:

perl -pi -e 's/foo/bar/g' example.txt

2. ファイルの内容を確認します:

cat example.txt
# 出力例:
# This is a bar example.
# Another line with bar.
awkでの置換例

1. awkを使用して置換します:

awk '{gsub(/foo/, "bar"); print}' example.txt > temp && mv temp example.txt

2. ファイルの内容を確認します:

cat example.txt
# 出力例:
# This is a bar example.
# Another line with bar.

まとめ

sedやperlを使用する方法が最も一般的で簡単です。
特にsed -iやperl -piを使用することで、ファイル内の文字列を直接置換して保存できます。
用途や好みに応じてこれらのコマンドを使い分けてください。

Wordpressで人気記事を表示する方法

Wordpressで人気記事を表示する方法

WordPressで人気記事を表示する方法はいくつかあります。
プラグインを使う方法が最も一般的で簡単ですが、テーマやカスタムコードを使用して実装することも可能です。
以下に、いくつかの方法を紹介します。

1. プラグインを使用する方法

1. プラグインのインストール

  • WordPressダッシュボードにログインします。
  • 「プラグイン」 > 「新規追加」をクリックします。
  • 「WordPress Popular Posts」と検索し、プラグインをインストールして有効化します。

WordPress Popular Postswordpress.org

2. ウィジェットの設定

  • 「外観」 > 「ウィジェット」に移動します。
  • 「WordPress Popular Posts」ウィジェットをドラッグしてサイドバーやフッターなどの適切なウィジェットエリアに配置します。
  • ウィジェットの設定を調整し、「保存」をクリックします。
b. Jetpack プラグイン

1. プラグインのインストール

  • 「Jetpack」をインストールして有効化します。

2. 設定のカスタマイズ

  • 「Jetpack」 > 「設定」 > 「トラフィック」タブに移動します。
  • 「人気の投稿」セクションを探し、設定を有効にします。
  • 「外観」 > 「ウィジェット」に移動し、「Jetpack Popular Posts」ウィジェットを追加して設定します。

Jetpackja.wordpress.org

2. テーマでカスタムコードを使用する方法

a. functions.php にコードを追加

以下のコードをテーマの functions.php ファイルに追加することで、カスタムクエリを使用して人気記事を取得できます。
ここでは、記事の閲覧数に基づいて人気記事を表示します。

function set_post_views($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if ($count == '') {
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    } else {
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

function track_post_views ($post_id) {
    if (!is_single()) return;
    if (empty($post_id)) {
        global $post;
        $post_id = $post->ID;
    }
    set_post_views($post_id);
}
add_action('wp_head', 'track_post_views');

function get_post_views($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if ($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 View";
    }
    return $count.' Views';
}
b. 人気記事を表示するテンプレートタグを作成

以下のコードを使用して、人気記事を表示するテンプレートタグを作成します。

function display_popular_posts() {
    $args = array(
        'posts_per_page' => 5,
        'meta_key' => 'post_views_count',
        'orderby' => 'meta_value_num',
        'order' => 'DESC'
    );
    $popular_posts = new WP_Query($args);
    if ($popular_posts->have_posts()) {
        echo '<ul>';
        while ($popular_posts->have_posts()) {
            $popular_posts->the_post();
            echo '<li><a href="' . get_the_permalink() . '">' . get_the_title() . '</a> (' . get_post_views(get_the_ID()) . ')</li>';
        }
        echo '</ul>';
    }
    wp_reset_postdata();
}

このタグを適切なテンプレートファイル(例:sidebar.phpやfooter.php)に追加して、人気記事を表示します。

get_post_metaメソッドの処理内容

get_post_metaメソッドは、WordPressの関数で、特定の投稿に関連付けられたカスタムフィールド(メタデータ)の値を取得します。
この関数を使用すると、投稿ごとに追加された任意のデータ(例えば、投稿ビューのカウント、カスタム設定、追加情報など)を取得できます。

get_post_metaの基本的な使い方
$value = get_post_meta($post_id, $meta_key, $single);

- $post_id:
メタデータを取得したい投稿のID。
- $meta_key:
取得したいメタデータのキー(カスタムフィールドの名前)。
- $single:
メタデータが単一の値かどうかを指定するブール値。
trueの場合は単一の値を返し、falseの場合は配列を返します。

3. 外部ツールを使用する方法

Google Analyticsなどの外部ツールを使用して人気記事を追跡し、そのデータを基にカスタムウィジェットを作成する方法もあります。
ただし、これにはデータのインポートと表示のための追加のカスタムコーディングが必要です。

これらの方法を試して、自分のサイトに最適な方法を見つけてください。

wordpressで「何かうまくいかなかったようです。時間を置いてもう一度お試しください。」と表示される場合の対応

「何かうまくいかなかったようです。時間を置いてもう一度お試しください。」と表示される場合の対応

WordPressで「何かうまくいかなかったようです。時間を置いてもう一度お試しください。」というエラーメッセージが表示される場合、原因として考えられることは様々ですが、以下にいくつかの対処方法を示します。

1. キャッシュのクリア

ブラウザのキャッシュやWordPressのキャッシュが原因であることがあります。
以下の手順でキャッシュをクリアしてみてください。

  • ブラウザのキャッシュをクリアする。
  • キャッシュプラグインを使用している場合、プラグインのキャッシュをクリアする。

2. プラグインの確認

プラグインの競合が原因である場合があります。
一時的にすべてのプラグインを無効化し、問題が解決するか確認してください。
問題が解決した場合、プラグインを一つずつ有効化して原因を特定します。

1. WordPress管理画面にログインします。
2. 「プラグイン」メニューから「インストール済みプラグイン」を選択します。
3. すべてのプラグインを無効化します。
4. 問題が解決するか確認します。
5. 解決する場合、再度1つずつプラグインを有効化していけば、どのプラグインが原因か判断できます。

3. テーマの確認

テーマの問題が原因である場合もあります。
デフォルトテーマ(例えば、Twenty Twenty-One)に切り替えて問題が解決するか確認してください。

1. WordPress管理画面にログインします。
2. 「外観」メニューから「テーマ」を選択します。
3. デフォルトテーマに切り替えます。
4. 問題が解決するか確認します。

4. サーバーのリソース確認

サーバーのリソースが不足している場合、エラーが発生することがあります。
特に、メモリ不足が原因であることが多いです。

  • サーバーのリソース使用状況を確認します。
  • メモリの増加を試みるために、wp-config.phpファイルに以下のコードを追加します。
  define('WP_MEMORY_LIMIT', '256M');

5. エラーログの確認

エラーログを確認することで、具体的なエラーメッセージを特定できます。
サーバーのエラーログやWordPressのデバッグモードを有効にしてログを確認します。

  • wp-config.phpファイルに以下のコードを追加してデバッグモードを有効にします。
  define('WP_DEBUG', true);
  define('WP_DEBUG_LOG', true);
  define('WP_DEBUG_DISPLAY', false);
  • wp-contentフォルダに生成されるdebug.logファイルを確認します。

6. サーバー側の問題

サーバーの設定や一時的な障害が原因であることもあります。
ホスティングプロバイダのサポートに連絡して、サーバーの状況を確認してもらいます。

以上の方法で問題が解決しない場合は、より詳細な調査が必要となることがあります。
具体的なエラーメッセージや状況をホスティングプロバイダに提供して、サポートを依頼することをお勧めします。

デバッグモードを有効にした場合のエラーログの出力例

エラーログの出力例

1. PHP Notice
[16-May-2024 12:34:56 UTC] PHP Notice:  Undefined variable: my_variable in /home/user/public_html/wp-content/themes/my-theme/functions.php on line 123

このログは、functions.phpファイルの123行目で未定義の変数$my_variableが使用されたことを示しています。

2. PHP Warning
[16-May-2024 12:35:12 UTC] PHP Warning:  Division by zero in /home/user/public_html/wp-content/plugins/my-plugin/my-plugin.php on line 45

このログは、my-plugin.phpファイルの45行目でゼロによる除算が試みられたことを示しています。

3. PHP Fatal Error
[16-May-2024 12:36:45 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function non_existent_function() in /home/user/public_html/wp-content/themes/my-theme/header.php:27
Stack trace:
#0 /home/user/public_html/wp-includes/template.php(730): require_once()
#1 /home/user/public_html/wp-includes/template.php(676): load_template('/home/user/public_html/...')
#2 /home/user/public_html/wp-includes/general-template.php(48): locate_template(Array, true, true)
#3 /home/user/public_html/wp-content/themes/my-theme/index.php(1): get_header()
#4 /home/user/public_html/wp-includes/template-loader.php(106): include('/home/user/public_html/...')
#5 /home/user/public_html/wp-blog-header.php(19): require_once('/home/user/public_html/...')
#6 /home/user/public_html/index.php(17): require('/home/user/public_html/...')
#7 {main}
  thrown in /home/user/public_html/wp-content/themes/my-theme/header.php on line 27

このログは、header.phpファイルの27行目で存在しない関数non_existent_function()が呼び出されたことを示しています。
スタックトレースも含まれており、エラーの発生源を追跡するのに役立ちます。

エラーログの確認方法

1. WordPressの管理画面にログインします。
2. wp-contentフォルダに移動し、debug.logファイルを探します。
3. debug.logファイルを開き、エラーログを確認します。

エラーログを確認することで、問題の原因を特定し、適切な対処が可能になります。
例えば、未定義の変数エラーの場合は変数の定義を確認し、除算エラーの場合はゼロで割ることがないようにコードを修正します。

wordpressで360度画像を使用

wordpressで360度画像を使用する

WordPressで360度画像を使用するには、いくつかの方法があります。
以下はそのいくつかです:

1. 360度画像プラグインを使用する:
WordPressのプラグインディレクトリから360度画像用のプラグインを見つけてインストールすることができます。
これにより、管理画面から簡単に360度画像をアップロードして表示することができます。
例えば、「WP VR View」というプラグインがあります。

2. Embedコードを直接貼り付ける:
360度画像をホストし、その画像の埋め込みコードをWordPressの投稿やページに貼り付けることができます。
多くの場合、360度画像ホスティングサービスは、埋め込み用のコードを提供しています。
このコードをWordPressのビジュアルエディターで貼り付けるだけです。

3. カスタムコーディング:
WordPressのテーマやプラグインのカスタマイズに詳しい場合は、カスタムコーディングを使用して360度画像を表示する方法を作成することもできます。
これには、HTML、CSS、JavaScriptの知識が必要ですが、完全なカスタマイズが可能です。

どの方法を選択するかは、あなたの技術的なスキルや必要とする機能によって異なります。

WP VR Viewの使用方法

「WP VR View」プラグインを使用してWordPressで360度画像を表示する方法は、以下の手順に従います:

1. プラグインのインストール:
WordPressの管理画面にログインし、[プラグイン] > [新規追加] をクリックします。
検索バーに「WP VR View」と入力し、プラグインを見つけてインストールします。
インストールが完了したら、有効化します。

2. 画像のアップロード:
360度画像を準備します。
それをWordPressメディアライブラリにアップロードします。
[メディア] > [新規追加] をクリックし、画像をアップロードします。

3. 360度画像の挿入:
360度画像を投稿やページに挿入します。
投稿やページを作成または編集して、挿入したい場所にカーソルを置きます。
その後、メディアライブラリから360度画像を選択し、挿入ボタンをクリックします。

4. プラグインのショートコード:
画像が挿入されると、プラグインが自動的にショートコードを生成します。
このショートコードは、360度画像を表示するために使用されます。

5. プレビュー:
プレビューボタンをクリックして、投稿やページをプレビューします。
360度画像が正しく表示されていることを確認します。

以上の手順に従うと、WordPressで360度画像を簡単に表示できます。
WP VR Viewプラグインの設定やカスタマイズオプションを調べて、必要に応じて調整することもできます。

カスタムコーディングで実装する方法

カスタムコーディングでWordPressに360度画像を実装する方法を説明します。
この方法では、HTML、CSS、JavaScriptを使用して、360度画像を表示するカスタムな機能を追加します。

1. 360度画像の準備:
まず、360度画像を準備します。
これは、通常の画像とは異なり、特殊な形式の画像である場合があります。
一般的な形式は、equirectangular projection (正距円筒図法) です。
この形式は、縦方向に -90 度から +90 度までの全ての経度と、水平方向に -180 度から +180 度までの全ての緯度を含む画像です。

2. WordPressテーマ内にカスタムコードを追加:
WordPressテーマのファイル内で、360度画像を表示するカスタムなコードを追加します。
通常、これはテーマのページテンプレートファイル(.phpファイル)や、カスタム投稿タイプ用のテンプレートファイルに追加されます。

3. HTMLで画像を表示:
360度画像を表示するためのHTMLコードを追加します。
これは、要素を使用して画像を表示するコードです。
たとえば、次のようになります:

<img src="path_to_your_image.jpg" alt="360 Image" class="360-image">

4. CSSでスタイルを設定:
必要に応じて、画像のスタイルを設定するためのCSSを追加します。
これには、画像の幅や高さ、位置などが含まれます。

.360-image {
    width: 100%;
    height: 500px; /* 画像の高さを調整 */
    object-fit: cover; /* 画像を親要素にフィット */
}

5. JavaScriptを使用して360度ビューアーを実装:
360度画像をドラッグやタッチ操作で回転させるためのJavaScriptコードを追加します。
これには、サードパーティのライブラリやフレームワークを使用することがあります。
代表的なライブラリには、Three.jsやA-Frameがあります。
これらのライブラリは、360度画像やVRコンテンツをブラウザ上で表示するための豊富な機能を提供します。

<script src="path_to_your_js_library.js"></script>

これらの手順に従うことで、WordPressで360度画像をカスタムコーディングで実装することができます。
必要に応じて、WordPressテーマやプラグインの機能と組み合わせて、より豊かな体験を提供することができます。

wordpressの記事に「続きを読む」リンクを設置する方法

wordpressの記事に「続きを読む」リンクを実装する方法

WordPressの記事に「続きを読む」リンクを実装する方法はいくつかありますが、基本的な方法は以下の通りです。

1. 手動で続きを読むリンクを挿入する:
WordPressのブロックエディターを使用して記事を作成している場合、記事の中で「続きを読む」リンクを挿入することができます。
以下の手順に従ってください:

  • 記事を編集し、「続きを読む」したい部分で改行を挿入します。
  • 挿入した改行の上にカーソルを移動し、「+」アイコンをクリックして新しいブロックを追加します。
  • ブロック検索バーに「More」と入力し、「More」ブロックを選択します。
  • 「More」ブロックを挿入すると、その位置に「続きを読む」リンクが表示されます。

2. 「続きを読む」タグを使用する:
WordPressには、「続きを読む」機能を手動で挿入するための特別なタグがあります。
これを使用すると、記事の表示がカットオフされ、続きを読むリンクが自動的に挿入されます。
以下の手順に従ってください:

  • 記事を編集し、「続きを読む」したい部分の終わりにカーソルを移動します。
  • ツールバーの中で、「続きを読む」アイコン(ペーパーカットアイコン)をクリックします。
  • クリックすると、「続きを読む」タグ()が挿入されます。

どちらの方法を選んでも、記事を保存してプレビューを確認し、続きを読むリンクが正しく表示されることを確認してください。

プラグインで実装する方法

WordPressのプラグインを使用して「続きを読む」リンクを実装する方法もあります。
その中でも、以下の2つの人気のあるプラグインを紹介します。

1. Advanced Excerptプラグイン:
Advanced Excerptプラグインは、記事の抜粋をカスタマイズするための多くのオプションを提供します。
これには、「続きを読む」リンクを自動的に追加する機能も含まれています。

  • WordPressの管理画面から「プラグイン」→「新規追加」を選択して、Advanced Excerptを検索します。
  • プラグインをインストールして有効化します。
  • プラグインの設定ページで、「続きを読む」リンクのテキストやスタイルなどをカスタマイズできます。

2. Read More Excerptプラグイン:
Read More Excerptプラグインも、記事の抜粋に「続きを読む」リンクを追加するための簡単な方法を提供します。

  • WordPressの管理画面から「プラグイン」→「新規追加」を選択して、Read More Excerptを検索します。
  • プラグインをインストールして有効化します。
  • プラグインは設定の必要はありません。

有効化するだけで、記事の抜粋に「続きを読む」リンクが追加されます。

これらのプラグインを使用すると、手動での設定作業が最小限に抑えられ、簡単に「続きを読む」リンクを実装できます。

GraphQLについてと実装例

GraphQLとは

GraphQLは、Facebookが開発したデータクエリ言語および実行エンジンです。
RESTful APIに代わるものとして設計されました。
RESTful APIでは、クライアントはリクエストを送信し、サーバーはそのリクエストに対して定義されたエンドポイントからデータを返します。
しかし、RESTful APIではクライアントが受け取るデータの形式が固定されているため、クライアントが必要とするデータに合わせて複数のリクエストを送ることがあります。

GraphQLでは、クライアントが必要とするデータの構造を定義できます。
クライアントは1つのリクエストを送信し、そのリクエストで必要なデータのみを受け取ることができます。
これにより、クライアントとサーバーの間の通信が効率的になります。
また、GraphQLのクエリ言語は、ネストされたフィールドやエイリアス、変数、フラグメントなどの機能を提供しています。

GraphQLは、Webおよびモバイルアプリケーション開発に広く使用されています。
特に、大規模なデータ要求が発生する場合や、クライアント側で柔軟なデータ取得が必要な場合に役立ちます。

GraphQLを使用する具体的な場面

GraphQLは、さまざまな場面で使用されています。
以下に、その具体的な使用例をいくつか挙げてみましょう。

1. ウェブアプリケーション開発:
GraphQLはウェブアプリケーションのバックエンドとして使用されます。
特に、クライアント側が異なるデバイスやビューに応じて異なるデータの要求がある場合に有用です。
GraphQLを使用することで、クライアントが必要なデータだけを取得できます。

2. モバイルアプリケーション開発:
モバイルアプリケーションでも、同様に異なるデバイスやビューに応じてデータの要求が異なります。
GraphQLを使用することで、モバイルアプリケーションも効率的に必要なデータを取得できます。

3. マイクロサービスアーキテクチャ:
マイクロサービスアーキテクチャでは、複数のサービスが連携してアプリケーションを構築します。
GraphQLを使用することで、異なるサービスからのデータを1つのクエリで取得できます。

4. リアルタイムデータの取得:
GraphQLはリアルタイムデータの取得にも使用されます。
たとえば、チャットアプリケーションやライブストリーミングアプリケーションなどで、リアルタイムのデータ更新が必要な場合に役立ちます。

5. APIの開発と提供:
GraphQLは、APIの開発と提供にも使用されます。
特に、外部開発者が利用するAPIを提供する場合に、GraphQLを使用することで柔軟性を提供し、開発者が必要なデータを簡単に取得できるようにします。

これらは一部の例ですが、GraphQLは柔軟で効率的なデータ取得のために広く活用されています。

GraphQLの実装例

GraphQLを実装する方法は、使用するプログラミング言語やフレームワークによって異なりますが、いくつかの一般的な実装例を挙げてみましょう。

1. JavaScript (Node.js):

  • Express.jsフレームワークを使用してGraphQLサーバーを構築する方法があります。

例えば、express-graphql ミドルウェアを使用してExpressアプリケーションにGraphQLエンドポイントを追加できます。
また、apollo-server-express パッケージを使用することもできます。

2. Python:

  • Pythonでは、grapheneやariadneといったライブラリを使用してGraphQLサーバーを構築することができます。

これらのライブラリを使用すると、PythonでGraphQLスキーマを定義し、リゾルバを記述してGraphQLサーバーを作成できます。

3. Java (Spring Boot):

  • Spring Bootフレームワークを使用してGraphQLサーバーを構築する方法があります。

graphql-javaというライブラリを使用して、Spring BootアプリケーションにGraphQLエンドポイントを追加することができます。

4. Ruby (Ruby on Rails):

  • Ruby on Railsフレームワークを使用してGraphQLサーバーを構築する方法があります。

graphql-rubyというGemを使用して、Ruby on RailsアプリケーションにGraphQLエンドポイントを追加することができます。

これらは一部の実装例ですが、さまざまなプログラミング言語やフレームワークでGraphQLを使用するためのライブラリやツールが提供されています。
それぞれの言語やフレームワークに合わせて、適切な方法でGraphQLを実装することができます。

REST APIの特徴と通常のAPIとの違い

REST APIとは

REST(Representational State Transfer)APIは、ソフトウェアアーキテクチャの一形態であり、ネットワーク上のリソースを操作するための手段です。
REST APIは、HTTPプロトコルを通じてクライアントとサーバー間で通信を行います。
RESTの原則に基づいて設計されており、リソース(たとえば、データやサービス)を一意のURI(Uniform Resource Identifier)で表し、HTTPメソッド(GET、POST、PUT、DELETEなど)を使用してリソースに対する操作を定義します。

REST APIは、ウェブアプリケーションやモバイルアプリケーションなど、さまざまなクライアントアプリケーションとサーバーアプリケーション間のデータの受け渡しを可能にします。
これは、クライアントとサーバーが疎結合であることを前提としています。
そのため、REST APIを使用することで、異なるプラットフォームや言語で開発されたアプリケーション同士が相互作用できるようになります。

通常のAPIとの違い

REST APIと通常のAPIの主な違いは、その設計原則と通信方法にあります。

1. 設計原則:

  • REST APIは、REST(Representational State Transfer)の原則に基づいて設計されます。

これには、リソースの一意の識別子(URI)、HTTPメソッドを使用した操作、状態を持たない(stateless)通信などが含まれます。

  • 通常のAPIは、特定のプロトコルや設計原則に従う必要がないため、さまざまな形式で実装されることがあります。

2. 通信方法:

  • REST APIは、HTTPプロトコルを通じて通信します。

一般的なHTTPメソッド(GET、POST、PUT、DELETEなど)を使用してリソースに対する操作を行います。

  • 通常のAPIは、HTTP以外のプロトコルを使用する場合があります。

たとえば、SOAP(Simple Object Access Protocol)やRPC(Remote Procedure Call)などのプロトコルを使用することがあります。

3. リソース指向:

  • REST APIは、リソースを中心に設計されています。

それぞれのリソースは一意のURIで表され、そのリソースに対する操作がHTTPメソッドを介して行われます。

  • 通常のAPIは、より手続き型のアプローチを取ることがあります。

つまり、操作や機能が中心になり、リソース指向の考え方が強調されないことがあります。

4. 状態管理:

  • REST APIは状態を持たない(stateless)通信を行います。

各リクエストは、必要な情報を含んでおり、サーバーはそれに応じて処理を行います。

  • 通常のAPIは、セッションを維持することがあります。

つまり、クライアントとサーバー間で状態を保持し、複数のリクエストにわたって情報を共有することがあります。

これらの違いにより、REST APIは特定の設計原則に従い、HTTPプロトコルを使用してリソース指向の通信を実現します。
一方、通常のAPIは、様々なプロトコルや設計パターンに基づいて実装されることがあります。