//技術記事
WordPress
1. WordPressとは? ◆ WordPress は、PHP(Hypertext Preprocessor)で書かれ、MySQLデータベースを使用するオープンソースのソフトウェアです。WordPressは、2003年5月27日に、Matt Mullenweg と Mike Little によって最初に公開されました。現在、WordPressはSan Francisco, Californiaに本社を構えるAutomattic社によって所有・開発されています。 ◆ WordPressは、PHPで書かれたオープンソースのソフトウェアで、個人ブログを作成するために非常に人気があります。その使いやすさと多くの便利な機能により、多くのユーザーに支持されています。時間が経つにつれて、ユーザー数が増加し、開発者たちがこのオープンソースプロジェクトに参加して、さらに素晴らしい機能を追加しています。現在(2017年の時点で)、WordPressは非常に優れたコンテンツ管理システム(CMS – Content Management System)として、多種多様なウェブサイト(ブログ、ニュース/雑誌サイト、企業紹介サイト、オンラインショップ、ホテル予約、レンタカー、不動産プロジェクトなど)を作成するためのプラットフォームとして広く使用されています。ほぼすべての中小規模のウェブサイトは、WordPressを基盤として構築できます。 ◆ しかし、WordPressは小規模なプロジェクトだけに適しているわけではなく、現在、世界で最も訪問者数が多い100のウェブサイトのうち約25%がWordPressを使用しています。例えば、TechCrunch、Mashable、CNN、BBC America、Variety、Sony Music、MTV News、Bata、Quartzなど、多くの有名なウェブサイトがWordPressを使用しています。 2. WordPressのインストール手順(XAMPP Windows) ステップ1. WordPress.orgからソースコードをダウンロード ◆ まず、WordPressの最新のソースコードをhttps://wordpress.org/latest.zipからダウンロードします。 ◆ ダウンロードが完了したら、解凍して「wordpress」という名前のフォルダが作成されます。このフォルダは、バージョン番号が付いた別のフォルダ(例:wordpress-x)に含まれていることがありますが、最終的には「wordpress」というフォルダを見つけることができます。 ◆ 次に、WordPressフォルダにアクセスすると、wp-admin, wp-includes, wp-contentという名前のサブフォルダと、index.php, wp-config-sample.phpなどのファイルが見つかります。これらがWordPressのソースコードです。 ステップ2. WordPressソースコードをローカルホストにコピー ◆ 次に、WordPressのすべてのファイルとフォルダを、ローカルホストのウェブサイトディレクトリにコピーします。例えば:C:\xampp\htdocs\demoです。つまり、WordPressのソースコードのみをコピーします。wordpressフォルダ全体をコピーすると、ウェブサイトのURLがhttps://localhost/demo/wordpress/になってしまいます。 ステップ3. 新しいデータベースを作成 ◆ WordPressを動作させるには、ローカルホストにMySQLデータベースが必要です。このデータベースに記事や設定などのデータが保存されます。 ステップ4. インストールを実行 ◆ すべてコピーしたら、XAMPPのコントロールパネルを開き、ApacheとMySQLを起動します。その後、ウェブサイトにアクセスしてhttps://localhost/demoを開きます。 ◆ すると、インストールするための言語選択画面が表示されます。Englishを選択し、Continueをクリックします。 ◆ 次の画面では、wp-config-sample.phpファイルをwp-config.phpに変更し、データベース情報を追加するように求められます。Let’s Goをクリックして、この作業を自動で行わせます。..
もっと見る- 52 ビュー
- 0 コメント
SSHキーの設定方法
SSHキーの動作方法 SSHキーとは、個人鍵(private key)と公開鍵(public key)を使ってユーザー認証を行う方法です。個人鍵と公開鍵は密接に関連しており、互いに認識できるようになっています。SSHキーを作成すると、両方の鍵が作成されます。その後、公開鍵はサーバーに配置され、個人鍵はクライアントに保存されます。クライアントがサーバーにログインする際、クライアントは個人鍵を使って認証要求を送信します。サーバーは、クライアントの個人鍵がサーバー上の公開鍵と一致するかどうかを確認し、一致すればログインが許可されます。 ステップ1 — RSAキーのペアを作成 最初に、クライアントのマシンでSSHキーのペアを作成します。 ssh-keygen -t rsa ステップ2 — キーとパスフレーズの保存 キーを作成するためにコマンドを入力すると、いくつかの質問に答える必要があります: Enter file in which to save the key (/home/demo/.ssh/id_rsa): Enterキーを押して、デフォルトの場所(ユーザーフォルダ内)に保存します(この例ではユーザー名は「demo」)。 Enter passphrase (empty for no passphrase): パスフレーズを使用するかどうかはあなたの選択です。パスフレーズを入力することで、個人鍵を保護できます。もし個人鍵が失われたり、盗まれたりした場合でも、パスフレーズがわからなければ誰もログインできません。パスフレーズの唯一の欠点は、SSHキーでサーバーにログインするたびにパスフレーズを入力する必要があることです。 キー作成プロセスは次のようになります: ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/demo/.ssh/id_rsa): Enter passphrase (empty for no..
もっと見る- 177 ビュー
- 0 コメント
PHPの変数比較
PHPでの比較演算子を理解していますか? ここでは、PHPの比較演算子とその動作について詳しく説明します。特にPHP 5.6を使用している場合に注意すべき点を紹介します。 1. PHPの比較演算子 PHPでは、「==」と「===」という2種類の比較演算子があります。これらの違いを理解することが非常に重要です。 「==」(Loose Comparison) 「==」は、両方のオペランドを比較する前に型を自動的に変換します。つまり、型が異なっていても、PHPが自動的に型を変換して比較します。 「===」(Strict Comparison) 「===」は型を厳密に比較します。型が異なる場合、比較はfalseを返します。 2. PHPの値の型 PHPでは、以下のようなデータ型があります。 String Integer (または Long) Float (または Double) Boolean Array Object NULL Resource 3. Falsy値とTruthy値 PHPで「false」と見なされる値には、以下のものがあります: false 0 0.0 “” (空文字列) “0” [] (空配列) null (未設定の変数) SimpleXMLオブジェクト (空タグから作成されたもの) 上記の値以外の値はすべて「true」と見なされます。 4. PHPの比較ルール PHPでは、比較演算を行う際にいくつかの特別なルールがあります。例えば、文字列同士の比較や、数値と文字列の比較では予期しない結果が出ることがあります。 Null vs String nullは空文字列として扱われます。 null == “”; // true..
もっと見る- 58 ビュー
- 0 コメント
QRコードとは
1. QRコードとは何か? QRコード(Quick Responseコード)は、バーコードの一種で、2次元バーコードとも呼ばれ、スマートフォンなどで専用アプリを使って読み取ることができます。 QRコードは1994年に日本のデンソーウェーブ社によって開発され、主に製造過程での車両追跡のために使用されました。 2. QRコードと従来のバーコードとの違い QRコードは、従来のバーコード(通常の1次元バーコード)と似ており、商品の価格や在庫管理に使用されますが、QRコードはその容量やデータ量において優れた点があります。 従来のバーコードは直線的な線を持ち、最大20桁の数字しか保存できませんが、QRコードはそれより多くの情報を保存でき、使い勝手も良いため、多くの企業で活用されています。 QRコードのデータ容量 数字 最大4,296文字 文字 最大7,089文字 3. QRコードの作成方法 誰でも無料で自分専用のQRコードを作成できます。検索エンジンで「QRコードジェネレーター」を入力すれば、たくさんのオンラインツールが見つかります。 信頼できるツールとして、Datamatrix、Qurify、Delivrなどのサービスを利用できます。また、Kerem ErkanやQRStuffを使用すれば、QRコードをカスタマイズして色を変えることもできます。 4. QRコードの利用が広がる QRコードは、まだ一般的ではないかもしれませんが、すでに多くの場所で利用されています。高層ビルから名刺まで、テクノロジーイベントやセミナーの招待状、BlackBerry MessengerのPINコードをQRコードで読み取って追加するなど、非常に多くの場面で見かけます。 マーケティングや広告業界でも広く利用されており、雑誌広告、ベンチ、公園、バス、商品パッケージ、消費者がさらに情報を得たい製品など、様々な方法で活用されています。例えば、名刺に自分のウェブサイトをQRコードで表示し、チラシにGoogleマップのウェブサイトをリンクさせることができます。 さらに、展示会やセミナーに参加するとき、主催者から提供されるQRコードをスキャンすると、動画やオーディオファイルへのリンクが得られ、詳細情報にアクセスできます。 QRコードの可能性は無限であり、さまざまな分野や領域で活用され続けるでしょう。これからは、現代社会における新しい情報の取得方法として、QRコードを目にする機会が増えるでしょう。
もっと見る- 35 ビュー
- 0 コメント
MySQLのベストプラクティス10選
MySQLは世界中で広く使用されており、リレーショナルデータベース管理システム(RDBMS)としてオープンソースです。その高速なパフォーマンス、高い信頼性、使いやすさにより、人気があります。この記事では、MySQLにおけるベストプラクティスのいくつかを紹介します。 1. 適切なデータ型を使用する データの性質に基づいてデータ型を使用することが重要です。不適切なデータ型を使用すると、スペースを無駄にすることがあり、エラーを引き起こす原因になります。 例:DATETIMEデータ型の代わりにvarchar(20)を使用して日付を保存すると、時間計算や更新時に誤りを引き起こし、不正なデータが保存される可能性があります。 2. VARCHAR(1)ではなくCHAR(1)を使用する データが単一の文字列である場合、VARCHAR(1)よりもCHAR(1)を使用すべきです。VARCHAR(1)は追加のバイトを消費するためです。 3. 固定長のデータにはCHARデータ型を使用する 例:データの長さが1000未満であれば、varchar(1000)ではなくchar(1000)を使用すると、スペースが無駄になります。 4. ロケールの日付形式を避ける DATETIMEまたはDATEデータ型を使用する場合、常にYYYY-MM-DD形式またはISO標準の日付形式を使用してください。DD-MM-YYYYやMM-DD-YYYYなど、ロケール固有の日付形式は正しく保存されません。 5. インデックスをカラムに設定する JOIN句で使用するカラムにはインデックスを設定して、クエリのパフォーマンスを向上させることが重要です。 UPDATE文で複数のテーブルを操作する場合、結合に使用されるすべてのカラムにインデックスを設定するようにしてください。 6. インデックスされたカラムに関数を使用しない インデックスされたカラムに関数を使用すると、インデックス機能を活用できません。 例えば、顧客コードが’AK’で始まるデータを取得したい場合、以下のように記述します: SELECT columns FROM table WHERE left(customer_code,2)=’AK’ 代わりに、以下のように記述してください: SELECT columns FROM table WHERE customer_code like ‘AK%’ このクエリはインデックスを活用し、より高速に結果を返します。 7. 必要な場合にのみSELECT *を使用する クエリでSELECT *を使用しないようにしましょう。 テーブルに多くのカラムがある場合、全てのカラムが返され、処理速度が遅くなります。 必要なカラム名を明示的にリストアップしてください。 8. ORDER BYは必要な場合にのみ使用する 結果を並べ替えたい場合にのみORDER BYを使用します。SQLでこれを行うと、複数のユーザーが利用している環境では処理速度が遅くなる可能性があります。 9. 適切なデータベースエンジンを選択する 読み取りが頻繁なアプリケーション(例:検索ツール)の場合、MyISAMストレージエンジンを選択します。 データ書き込みが頻繁なアプリケーション(例:リアルタイムの銀行取引)の場合、InnoDBストレージエンジンを選択します。 不適切なストレージエンジンを選ぶと、パフォーマンスに影響を与えることがあります。..
もっと見る- 96 ビュー
- 0 コメント
Laravelで「Simple ACL」を構築する方法
Laravelの認証システムは、ユーザー登録、ログイン、ログアウト、パスワードリセットなどを簡素化し、ウェブアプリケーションに迅速かつ容易に実装できるソリューションを提供します。 ただし、ウェブサイトの一部へのアクセス権を制御したい場合、管理者以外のユーザーに特定のページの機能を無効化したい場合、または誰かが自分の連絡先のみを編集できるようにしたい場合には、LaravelのACL(アクセス制御リスト)を実装する必要があります(Laravel 5.1.11以降)。 ACLを構築するために、Laravelに組み込まれているGateクラスを使用します。このクラスは、ユーザー(ログインしているユーザーや特定のユーザー)が何かを「許可されているか」を確認するためのものです。以下にサンプルコードを示します: if (Gate::denies(‘update-contact’, $contact)) { abort(403); } 上記のコードをコントローラに追加し、ログインしているユーザーがupdate-contactの権限を拒否されたかどうかを確認できます。また、反対の動作を行いたい場合は、Gate::allowsを使用できます。 LaravelのACLは、「Ability」という概念に基づいています。1つのAbilityは1つのキーです(例:update-contact)。 ACLのためのAbilityの定義 Abilityを定義するために、デフォルトではAuthServiceProviderに記述します。 class AuthServiceProvider extends ServiceProvider { public function boot(GateContract $gate) { parent::registerPolicies($gate); $gate->define(‘update-contact’, function ($user, $contact) { return $user->id === $contact->user_id; }); } } そして、以下のように確認できます: if (Gate::denies(‘update-contact’, $contact)) { abort(403); } Policiesの使用 AuthServiceProviderに直接多くの定義を書く代わりに、複数のPolicyクラスを作成して管理することができます。 以下のコマンドを実行すると、ContactPolicyというポリシークラスが自動的にapp/Policiesフォルダに作成されます: php artisan make:policy ContactPolicy これにより、ContactPolicyファイルが生成され、以下の内容が自動で作成されます: <?php namespace App\Policies;..
もっと見る- 51 ビュー
- 0 コメント
UX – ユーザー体験に関する経験
ウェブサイトやウェブアプリケーションは、技術の進歩と新しい方法論の発展に伴い、より複雑になっています。かつての一方向のメディアは、非常に豊かな体験に進化し、インタラクティブ性が高まっています。 しかし、構築の過程で多くの変化があったとしても、ウェブサイトの成功は1つのことに依存しています。それは「このウェブサイトは私に価値を提供しているか?」「使いやすいか?」「使っていて快適に感じるか?」ということです。これらは、ユーザーが私たちの製品と対話するときに頭に浮かぶ質問であり、それが、その人がウェブサイトの定期的なユーザーになるかどうかを決定する基準です。ユーザー体験(UX)デザインは、ユーザーがこれらすべての質問に「はい」と答えるようにすることを目指しています。このガイドは、ウェブサイトやウェブアプリケーションなど、ウェブベースのシステムにおけるプロフェッショナルなUXデザインの原則に慣れるためのものです。
もっと見る- 45 ビュー
- 0 コメント
Node.jsの基本とその動作原理
1. NodeJSとは? NodeJSは、Javascript V8 Engineをベースにしたソースコードで、動画サイトやフォーラム、特に限定的な範囲のソーシャルネットワーキングサイトなどのウェブアプリケーションを構築するために使用されます。NodeJSは、世界中の何千人もの開発者によって広く使用されているオープンソースのソフトウェアです。NodeJSは、WindowsからLinux、OS Xなど、さまざまなオペレーティングシステムで動作するため、これも利点の一つです。NodeJSは、プログラミングを簡素化し、最短の時間で処理を行うために、さまざまなJavascriptモジュールとして豊富なライブラリを提供します。 2. NodeJSの特徴 非同期: NodeJSのすべてのAPIは非同期(ブロックしない)であり、主にNodeJSサーバーのベースで動作し、サーバーからデータが返されるのを待ちます。API呼び出し後、次のAPIに進むことで、Node.jsのイベント通知機構により、サーバーが前のAPI呼び出しからの応答を受け取ることができます(リアルタイム)。 非常に高速: NodeJSはV8 Javascript Engineを基盤にしており、プログラムの実行速度が非常に速いです。 シングルスレッドだが高いスケーラビリティ: Node.jsは単一のスレッドモデルを使用し、イベントループによって動作します。イベントの仕組みにより、従来のサーバーと比べて要求を処理する際の制限がなく、スケーラビリティを向上させます。Node.jsはシングルスレッドのプログラムで、従来のサーバー(例:Apache HTTPサーバー)よりも大規模なリクエストに対応できます。 バッファリングなし: NodeJSはデータをバッファリングせず、これらのアプリケーションは主にデータの出力です。 ライセンスあり: NodeJSはMITライセンスによってライセンスされています。 3. Node.jsの動作原理 Node.jsの主なアイデアは、非同期的な入出力処理を用い、リアルタイムタスクを迅速に実行することです。Node.jsは迅速なスケーラビリティを提供し、高いスループットで多数の同時接続を処理できます。従来のウェブアプリケーションでは、各リクエストが新しい処理スレッドを生成し、システムのRAMを占有しますが、これによりシステムリソースが無駄に使用されることになります。そのため、Node.jsはシングルスレッドで、非同期I/Oを組み合わせてリクエストを処理し、数万の同時接続をサポートできるようにしています。 4. NPM: Nodeパッケージマネージャ Node.jsを語る際に欠かせないのが、NPMパッケージ管理ツールの構築です。NPMモジュールのアイデアは、Ruby-Gemsに似ており、再利用可能な関数のセット、オンラインリポジトリを通じて簡単にインストールできる設定、異なるバージョンを管理できるパッケージの集合です。 NPMパッケージのリストは、NPMのウェブサイトで検索するか、NPM CLIツールを使ってNode.jsと共に自動的にインストールできます。 現在、人気のあるNPMモジュールには以下があります: expressjs.com/ – Express.js、Node.jsのSinatraに触発されたウェブフレームワークで、現在のNode.jsアプリケーションで多く使用されています。 connect – Connectは、Node.js用のHTTPサーバーフレームワークの拡張で、高性能な「プラグイン」を提供し、Expressの基盤となるプラットフォームとして使用されます。 socket.ioおよび sockjs – 最も有名なサーバーサイドのWebSocketコンポーネントです。 Jade – HAMLに触発されたテンプレートエンジンで、Express.jsのデフォルトの一部です。 mongoおよび mongojs – MongoDBのNode.js用のAPIを提供するラッパー。 redis – Redisクライアントライブラリ。 coffee-script – 開発者がNode.jsプログラムをCoffeeScriptで記述できるコンパイラ。 underscore..
もっと見る- 168 ビュー
- 0 コメント
5つの一般的なアプリケーションサーバーの設定方法
イントロダクション アプリケーションのサーバー構成を決定する際に考慮すべき多くの要素があります。例えば、パフォーマンス、スケーラビリティ、可用性、信頼性、コスト、管理のしやすさなどです。 以下は、一般的なサーバー設定のリストです。それぞれの設定には簡単な説明があり、利点と欠点も記載しています。これにより、ウェブサーバーに関する全体像を把握することができます。注意点として、以下の方法は組み合わせて使用することもできますし、環境によっては完全に適切でない場合もあります。 1. 単一サーバーで全てを実行 すべてのソフトウェアを1台のサーバーにインストールします。典型的なアプリケーションでは、これにはウェブサーバー、アプリケーションサーバー、データベースサーバーが含まれます。この設定の一般的なバリエーションは、LAMPパッケージで、Linux、Apache、MySQL、PHPが1台のサーバーにインストールされるものです。 使用例:アプリケーションを迅速にインストールする必要がある場合、これは最も基本的な設定ですが、スケーラビリティが低く、アプリケーションの各コンポーネントを分離するのが難しいです。 利点: シンプルである。 欠点: アプリケーションとデータベースがサーバーのリソース(CPU、メモリ、I/Oなど)を共有しているため、パフォーマンスが低下し、問題の特定が難しくなる可能性があります。 スケーラビリティが低い。 2. データベースサーバーを分離 データベース管理システム(DBMS)は、アプリケーションと切り離されており、アプリケーションとデータベース間のリソース競合を排除し、データベースをプライベートネットワーク内に配置することでセキュリティを強化できます。 使用例:アプリケーションを迅速にインストールしたいが、アプリケーションとデータベースがリソースを共有しないようにする場合。 利点: アプリケーションとデータベースはサーバーリソース(CPU、メモリ、I/Oなど)を共有しません。 サーバーを拡張する際にリソースを追加できます。 データベースをプライベートネットワークに配置することでセキュリティを強化できます。 欠点: 単一サーバーを使用するよりも設定が複雑です。 サーバー間の遅延(例えば、サーバーが地理的に離れている場合)や、データ転送に必要な帯域幅が不足すると、パフォーマンスに問題が発生する可能性があります。 3. ロードバランサー(リバースプロキシ) ロードバランサーをサーバー環境に追加することで、リクエスト処理を複数のサーバーに分散させ、パフォーマンスと信頼性を向上させることができます。ロードバランサーが1台のサーバーに障害が発生した場合、他のサーバーがトラフィックを処理します。ロードバランサーは、複数のアプリケーションを1つのドメインとポートで提供するために、レイヤー7(アプリケーション層)リバースプロキシを使用することもできます。 例:HAProxy、Nginx、Varnish。 使用例:サーバーを追加してスケールアウトする必要がある環境に役立ちます。 利点: 複数のサーバーを追加することでスケーラビリティが向上します。 ユーザーからの接続を制限することで、DDOS攻撃に対抗できます。 欠点: ロードバランサーが十分なリソースを持っていない場合、パフォーマンスのボトルネックになる可能性があります。 SSL終了をどこで実行するかや、セッション処理の方法について考慮する必要があります。 ロードバランサーは単一障害点であり、ロードバランサーが故障すると、システム全体が停止する可能性があります。 4. HTTPアクチュエーター(キャッシュリバースプロキシ) HTTPアクチュエーターやキャッシュHTTPリバースプロキシを使用することで、サーバーからユーザーへのコンテンツの読み込み時間を短縮できます。HTTPアクチュエーターは、アプリケーションから返されたコンテンツをメモリに保存し、同じ内容へのリクエストが来た場合、メモリから直接取得して返すことができます。 例:Varnish、Squid、Nginx。 使用例:動的なウェブアプリケーションでコンテンツが重い場合や、頻繁にアクセスされるリソースが多い場合に有効です。 利点: ウェブサーバー上のCPU負荷を軽減することにより、ウェブサイトのパフォーマンスを向上させます。 ロードバランサーとして使用することができます。 いくつかのキャッシュソフトウェアは、DDOS攻撃から保護することができます。 欠点: 最適なパフォーマンスを得るためにチューニングが必要です。 キャッシュの再利用率が低い場合、パフォーマンスが低下する可能性があります。 5. マスター・スレーブデータベースレプリケーション 読み取りが書き込みよりも多い場合、例えばCMSのようなシステムでは、マスター・スレーブデータベースレプリケーションを使用することでパフォーマンスを改善できます。マスター・スレーブレプリケーションは、1つのマスターと1つ以上のスレーブノードを必要とします。この設定では、データの更新はマスターノードに送信され、読み取りはすべてのスレーブノードに分散されます。 使用例:アプリケーションのデータベースからの読み取りパフォーマンスを強化するのに適しています。 以下は、1つのスレーブノードを持つマスター・スレーブレプリケーションの設定例です: 利点: データの読み取りパフォーマンスを向上させ、スレーブノードに読み取り処理を分散させます。 マスターのみで書き込み処理を行うことで、パフォーマンスをさらに向上させることができます。..
もっと見る- 64 ビュー
- 0 コメント
Sambaファイルサーバーの設定
★ Windowsのファイルサーバー構成 – LinuxサーバーをWindows用のファイルサーバーとして設定する – ここではSambaをインストールし、Windowsから各ユーザーのホームディレクトリにアクセスできるように設定 – また、すべてのユーザーがアクセスできる共有フォルダを作成 – Sambaサーバーに社内ネットワーク内からアクセスできるように設定 ■ Sambaのインストール [root@centos ~]# yum -y install samba ■ Sambaの設定 1) 新しいユーザーを作成する場合 → 新しいユーザーをLinuxに登録 [root@centos ~]# useradd centos → パスワードを設定 [root@centos ~]# passwd centos Changing password for user centos. New password: Retype new password: password: all authentication tokens updated successfully. 2) 既存のユーザーをSambaサーバーへのアクセスユーザーとして使用する場合 → Linuxで登録されたユーザーをSambaサーバーのアクセスユーザーとして新規登録(例:centos) [root@centos..
もっと見る- 57 ビュー
- 0 コメント