SEOとプログラミングと暇つぶし

SEOコンサルタント兼駆け出しエンジニアdallPのブログです。SEO、プログラミング、アフィリエイト、お金などについて役に立つかもしれない情報をやりたいように書きます。

【日々の学び: プログラミング】同じ結果でもより良い書き方をする / 返り値にnullが入るケースを意識する

Node.jsエンジニアのdallPです。
肩書がエンジニアになってから5営業日が過ぎました。

分からないなりに初プッシュ・プルリクを出し、初マージまでこぎつけましたが、その間にもかなりのインプットがあったので、今後は自分のために不定期にまとめていきます。

今回はタイトル通り、プログラムの書き方と返り値について。
いずれもエンジニアとしてお仕事をされている方にとっては当たり前のことで、お目汚しスミマセン。

同じ結果でもより良い書き方をする

何が言いたいのかというと、実用的なプログラムを書く場合において、過程は結果と同じくらい重要視されるよ、ということです。

初めてのプルリクを出して諸先輩方にコードレビューをしていただいた際のフィードバックの殆どは、根本的にこの考え方を持ってコーディングしていれば避けられたものです。

具体例を下記で挙げています。

Array(配列)インスタンスメソッドの使い方について

ご存じの通り、Arrayオブジェクトには様々なメソッドが用意されています。
※非エンジニアの方向けに一応書くと、Arrayとは配列を扱うためのモデルのようなものです。詳しくはこちらなど参考にしてみてください。

指摘されてから初めてまともに下記ページを眺めてみたのですが、実にあらゆるケースを想定したメソッドがデフォルトで組み込まれているのですね。

developer.mozilla.org

例えば良く使われるメソッドでは下記のようなものがありますね。

push: 配列の最後に要素を追加する
forEach: 配列中のそれぞれの要素について、自分で定義した関数を逐次的に呼び出す

で、今回問題になったのは、「forEachよりどストライクなメソッドがあるのにforEachで頑張って書く」ことをしていた部分です。

やりたかったこととしては、「ある配列の中に特定の要素があるかどうかを判定する」ことです。
実は、JavaScriptのArrayインスタンスには、デフォルトで上記の処理を行ってくれる"includes()"というステキ関数が存在します。
しかしその存在を知らず、まともに使えるメソッドがforEachくらいしかなかったdallPは頑張ってそれを書いた、ということです。

ある配列の中に特定の要素があるかどうかを判定するだけであれば、forEachに限らず他の関数を利用することもできます。


JavaScriptのArrayのサンプルコード

上記を見ていただければお分かりだと思いますが、やりたいことは同じなのにも関わらず、コード量が全然違います。
書く側にとってメリットがあるのは明らかですが、読む側にとっても理解しやすい良いコードになりますね。
③より①の方が圧倒的に読みやすいです。

SQLで取得してきたデータを加工する処理について

SQLって正直面倒ですよね。
サクサク書ける人だとそうでもないのかもしれませんが、今回については必要ないデータまで取ってきて、いらない部分はプログラム側の実装で削ぎ落とす、ということをやってしまい、注意されました。

SQLでどうにかなる絞り込みは、できるだけSQL側でやる。
プログラム側での処理・加工は最低限で。

ちなみに上記の考え方でデータを取得してきたら、上記で話したArrayのコードは結局全て不要になりました笑

定数は定義された定数名で取得する

これも当たり前といえばそうなのですが、最初は定数の中身をそのままプログラムに記述してしまっていました。
これだと、もし仮にその数値が指し示すものが変わってしまった場合にコードの修正が面倒になるし、可読性も無くなるのでNG。

定数名で取得してきていれば、その定数名さえわかりやすい命名がされていれば可読性が上がります。
コード中での検索もしやすくなりますし。

結局「より良い書き方」をしてあると何が嬉しいのか

・知ってさえいればコーディングのスピードが上がる
・コードの可読性があがる、実装内容変更時にも理解しやすい
・無駄な処理を行わないので、実際にフロントで見たときの処理速度が上がる

など。他にもあるかもしれませんが、今回僕が感じたのはこの辺の部分です。

ただ、僕のように初心者がいきなり実務に入るケースだと、当然知らないメソッドや書き方も多くあるはずです。
なぜなら初学者レベルでは、具体的なユースケースすら分からないメソッドばかりだからです。

もはやこれについては実務の中で学んでいくしかないのかな、と思っています。

返り値にnullが入るケースを意識する

「より良い書き方」に比べるとだいぶ具体的なテーマですが、要は他人が書いた(= 言語に元々実装されてるものや、外部フレームワークなど全て)関数の返り値には気をつけようぜ、ということです。

今回は、SequelizeというNode.js用のORマッパーの関数の返り値に関して突っ込みが入りました。

Manual | Sequelize | The node.js ORM for PostgreSQL, MySQL, SQLite and MSSQL

Sequelizeでは、取得してきたデータは配列となっており、該当するカラムがそれぞれSequelizeオブジェクト?として要素に格納されています。
その返り値に対して、Sequelizeで元々定義されているgetメソッドを呼んでやると、中身が連想配列になります。

なので、特に何も考えずgetを使っていたところ、「返り値がnullだった場合はどうする?」という指摘を受けた、ということです。

実際調べてみた結果、もし生成されたQueryに該当するカラムがなかった場合は空配列が返ってくる仕様だったので、その可能性も加味したコードに修正しました。

僕はゲームを買っても取説を読まない人間なのですが、仕事としてプログラムを書く以上は、しっかり読むべきところは読んでおく必要があるなと実感しました。

その他

その他にも多数の学びがあったのですが、細かいことも多いので箇条書きっぽく。

JavaScriptの変数のscopeについて: varのscopeはヤバい(関数の中で定義した変数が外から参照できたりする)ので、letを意識的に使う。
Arrow関数について: できるだけfunctionではなく=>で書く (例えば function(name) {}; であれば、 name => {}; と書き換えられる)
OR演算子 (||) について: ORで繋いだ二つの条件について、仮に一つ目の条件が常にtrueとなる場合は二つ目が評価されることはない。つまり条件として書く意味がなくなる
引数について: 引数は使わないなら省略可能だが、順番は定義されている順にしか書けない。なので、仮にデフォルトで三つの引数を取ることができる関数について、二番目の引数だけ使いたい場合、三番目の引数は省略できるが一番目の引数は省略できない。
returnについて: JavaScriptでは(他の言語では知らない)、returnは関数の中にしか書けない。ついついif文の中に書いてしまい、Syntax Errorを喰らいました。

stackoverflow.com

gitの使い方について: 下記の便利なサイトを教えてもらった。branchやmergeなどの概念がわかりやすいのでこいつで勉強する。

k.swd.cc

メモ: Node.jsで作ってみたいアプリケーション

自分用のメモ。
Node.jsの勉強がてら作ってみたいなーと思ったもの寄せ集め。

①Node.jsとsocket.ioでリアルタイムチャット
dev.classmethod.jp

②動画を再生しながらリアルタイムチャット
d.hatena.ne.jp

③Node.jsでBot
liginc.co.jp
kawaken.hatenablog.jp

フレームワーク使わずにNode.jsでToDoリスト
tomcky.hatenadiary.jp

⑤Node.jsで株価をリアルタイムに取得
qiita.com

⑥Node.jsでスクレイピング
info-i.net

⑦Node.jsでゆっくりボイス
dev.classmethod.jp

⑧その他色々
www.ideaswatch.com

SEO入門編: SEO対策とは一体何なのか。検索エンジン最適化のいろはを教えます

(元?)SEOコンサルタントのdallPです。

有給消化中で時間に余裕が出来たので、これまで蓄えてきたSEOに関する知識を出来る限り分かりやすくまとめます。

本エントリは、SEO(検索エンジン最適化)について何も知らない方向けのものとなりますので、ある程度SEOサイトを運用されている方の役には立ちません。
ターゲットは、これからWEBサイト・ホームページを立ち上げる方、会社で急にSEOを任された方などです。
初心者だけど個人ブログのアフィリエイトで稼ぎたい方、などの参考にもなるかもしれません。
その点はご了承ください。

随所に参考になるリンク・サイトなども散りばめて行きますので、初心者の方は是非そちらも参考にどうぞ。
SEOは常に情報をキャッチアップし続けることが重要です。(なんでもそうか)

SEOとは

基本のキから参りましょう。

SEOとはSearch Engine Optimization、つまり「検索エンジン最適化」の略です。
検索エンジン最適化とは、GoogleYahoo!といった検索エンジンで特定のキーワードが検索された際に、自社・自分のサイトをいかに上位表示してもらうかを担保するための行為全般を指します。

小難しく書きましたが、要は「いかに検索エンジンとユーザーに好まれるサイト・ページを作るか」ということなので、コンセプト自体は簡単です。
あとは、どういうサイトが検索エンジンとユーザーに好まれるのか?を常に思考しながら施策を実行していけばOKです。

SEOの目的: SEO対策はなぜ必要なのか。そもそも必要なのか

会社でいきなり「SEO対策を考えろ」と言われた方などの場合、そもそもSEO対策って必要なのか?と感じることもあるでしょう。

結論から言いますと、必要なサイトには必要ですし、必要ないサイトには必要ありません。
(当たり前だ!という声が聞こえてきそうですが)

SEO対策を行うことの目的は、ほとんどの場合「自サイトへの流入数を増やすこと」でしょう。
(ごくまれに、ブランディングの問題でSEOが必要な場合などもあると思われます)

しかし、実はその先に本当の目的があるはずです。
多くのケースで、流入数を増やすのは売上を上げるためですよね。
もちろん、単純に多くの人にサイトを見てもらいたい!というニーズもあるとは思いますが。

でも、売上を上げるためには流入数を増やすことが本当に最善の策でしょうか?
場合によってはそうではありません。実は流入数は十分だけど、流入から購買への転換率が低いのかもしれませんよね。
このケースでは、必要なのはSEO対策ではなくLP(Landing Page = ユーザーが最初に訪れるページ)の改善や、サイト内のユーザー導線の改善となります。

流入数を上げるにしても、取るべき対策はSEOではなくソーシャルメディアへの注力かもしれません。

SEO対策は飽くまで「検索経由の流入を増やす」という目的を達成するための手段です。
それ以上でも以下でもありませんので、SEO対策を行うこと自体が目的にならないようにしましょう。

オーソドックスなSEO対策

ごたくはいいからSEO対策の中身を教えろ、という方のために、ここではSEO対策として挙げられる施策をざっと並べます。
まず、SEO対策は大まかに内部施策外部施策に分かれます。

SEOの内部施策とは

内部施策とは、SEO対策を行う対象のサイト内で実施する施策全般のことです。
実質、SEO対策のほとんどは内部施策に該当します。

中には「内部対策 = 質の高いコンテンツを作ること」と捉えている方もいますが、それは内部対策の一部に過ぎません。
内部施策は大まかに分けて6通りです。
※独自分類なので異論は是非頂ければと。

キーワードを狙ったコンテンツの作成

「Contents is King」なんて言われることもありますが、コンテンツはSEO対策の大前提です。
Googleなどの検索エンジンは、検索ユーザーの課題を解決するためのツールですから、そのキーワードから想定されるユーザーニーズを満たすコンテンツを上位に表示しようとします。

検索ニーズに合っていないコンテンツは上位表示されづらいですし、仮にされたとしても一過性のものだと思いましょう。

当然、キーワードの詰め込みで上位表示される、なんてことも現在では有り得ません。

web-tan.forum.impressrd.jp

各コンテンツのリッチ化・独自化

キーワードに対してコンテンツを作成したら、今度は「ユーザーが他のサイトではなく、自サイトを見る理由」を作りましょう。
それがコンテンツを作り込むこと = リッチ化・ユニーク化です。

あるキーワードに対して網羅的にコンテンツを書けば上位表示される、という説があります。
これは間違いではありません。キーワードはユーザーニーズの断片であることが多いので、そこから想定されるニーズを全て網羅している = ユーザーの問題解決率の高いページになると考えられるためです。

例えば、「SEO対策」というキーワード一つをとっても、『SEO対策』という言葉の意味を知りたい人もいれば、具体的なSEO対策の手法を知りたい人もいますし、SEO対策の外注先を探している人もいます。
これらを網羅していると、どんなニーズにも対応できる素晴らしいページになりますね。

しかし、どのサイトも同じ考えで対策をし始めると、今度はどのページを見ても情報の変わり映えせず、優劣がつけづらくなります。

ここで重要になるのがユニーク化です。
例として考えられる対策としては、

・テキストでは分かりづらい内容を図やグラフ、動画などで説明する
・他サイトには無い情報源を利用する (実体験や口コミを元に解説したり、独自の統計データを出すなど)
・問題解決できるWEBツールをコンテンツ内に埋め込む (キーワードによりますが、例えば保険金額のシミュレーションツールなど)

などが挙げられます。

なお、検索エンジンは昔と比べ相当な進化を遂げてはいるものの、彼らとしてはテキストコンテンツがある方が評価はし易いようです。
基本はテキスト、追加でリッチコンテンツ、というのが現在の王道です。

www.suzukikenichi.com

ちなみに上記はSEO業界で有名な鈴木謙一さんという方のサイトです。
上記ページはちょっとタイトル詐欺な気もしますが(笑)、ほぼ毎日SEOに関する新しい情報をアップデートしてくださっているので、非常に有益なブログです。
是非ウォッチすることをおすすめします。

テーマに沿った内部リンク構造

一つ一つのページをしっかり作り込むことも大切ですが、せっかく作ったコンテンツは検索エンジンに正当に評価してもらいたいですよね。

その際、サイト全体のリンク構造をテーマ性に沿ったものにすることで、検索エンジンによるあなたのサイト全体の理解を促進し、各ページに適切な評価を与えることができます。

では、検索エンジンはあなたのサイトをどうやって理解・評価しているのでしょうか。

詳しくは別エントリで解説しようと思いますが、簡単に言うと「クローラー」と呼ばれるプログラムが、実際にあなたのサイト・ページに訪問し、各ページをクロール(直訳すると「這い回る」といった意味ですね)することで、そのページでは何に関するコンテンツが説明されているのか、どんな画像や動画があるのか、どれくらいの詳細度で書かれたコンテンツなのか、を判定しています。

さらにその際、各ページに存在するリンクを収集し、どのページがどのページにリンクしているのかを把握し、リンク先をまたクロールしに行きます。

直感的にお分かりになるかと思いますが、Webの世界はリンクで繋がっています。
リンクがあるからこそ、私たちは各ページのURLをいちいち入力すること無く、自分の行きたいページに行けるわけですよね。
その際、閲覧中のページに関連するページへのリンクがあると、情報が探しやすいと思います。
なので、基本的には多くのサイトでリンクは重要なページや関連の高いページへのリンクとなっています。

つまり、Webのリンクの多くは濃淡はあれど、リンクで結ばれたページ同士の関連性を表していると言えます。
クローラーもその前提でサイト全体・各ページを評価します。

その際注意すべきは、

・特定のページの評価を上げたいからと言って、関連性の無いリンクを集中させたりしないこと
クローラーが読める形式のリンクにすること
 ※クローラーはページのソースコードを読むので、例えばJavaScriptで動的に吐き出されたリンクなどは読み込めないと思いましょう
・リンクテキストはURLなどを貼るのではなく、リンク先を端的に表したテキストにすること

上記を考えておけばOKでしょう。

画像の軽量化やJavaScriptCSSなどの圧縮による表示スピード高速化

ネットサーフィンをしていて、ページの読み込みの遅さに苛立った経験は誰しもあると思います。

Googleが公表したデータにもありますが、特にスマホなどのモバイルデバイスの場合は、ページ表示速度がユーザー体験に及ぼす影響は甚大です。(もちろんパソコンやタブレットも例外ではありません)

最近の分析結果によると、モバイルのランディング ページが完全に読み込まれるまでの平均時間は 22 秒です。しかし、読み込みに 3 秒以上かかるページからは 53% のモバイルサイト訪問者が離れています。これは大きな問題です。

出典:
Google Developers Japan: モバイルページのスピードに関する新たな業界指標

Webサイトを運営していた実体験からですが、ページ表示速度が遅くなる理由の大半は

・画像の容量
・重いJavaScriptの動作
・重いCSS

の3つです。ちなみにページ表示速度のパフォーマンス・改善点については下記でチェックできます。

PageSpeed Insights

時にサイト運営者が考えるUXとユーザーの体感するUXの乖離は非常に大きな場合があります。
「3秒くらい・・・」と思う方も多いと思いますが、実際に3秒待たされる側になるとどうでしょう。

検索ユーザーが求めているのは、超絶リッチなインターフェースではなく迅速な回答かもしれません。

もちろん、使い勝手も良く、かつ高速であることがベストではありますが。

スマートフォンでの閲覧への最適化

この記事を書いているのは2017年9月ですが、Googleによると2015年時点で、少なくとも日本を含む一部の国ではスマホからの検索がパソコンからの検索回数を超えています。

seopack.jp

その流れを踏まえて、GoogleもMFI(Mobile First Index: モバイルファーストインデックス)という取り組みを始めています。

Googleは彼らのデータベースに世界中のWebページをインデックス = 登録しています。
サイト運営者ならお分かりでしょうが、サイトによってはパソコンで見たときとスマホで見たとき、それぞれ掲載されているコンテンツが異なる場合があります。

しかし、2017年9月現在でも、Googleによる各ページのインデックスはパソコンで見たときのものとなっています。
そのため、Googleは各ページをPCページのクオリティで評価しています。

一方で、先程も挙げたとおり、世の中ではスマホ検索が主流になってきています。
そこで、Googleのインデックスをモバイル = スマホ主体にし、検索順位の決定もスマホページのインデックスを元に行おう、というのがモバイルファーストインデックスの考え方です。

2017年9月現在ではまだGoogle自身がパソコン → スマホへのインデックス移行に苦労しており、モバイルファーストインデックスはその構想が発表されているだけに留まっています。
しかし、Googleとしては「いつになるか分からないが必ずやる」という姿勢です。

これまではPCサイトのみに注力していた運営者の方は、スマホで閲覧したときのコンテンツ内容やユーザビリティに視点をシフトする必要がありますし、これから新規でサイトを作られる場合も、初めからスマホでのUI・UXに注力しておいたほうが良いでしょう。

HTMLの正しい記述などによる検索エンジンからの評価の最適化

先程も出てきた検索エンジンクローラーは、Webサイトのソースコードを読み取ります。
クローラー自身もプログラムですから、ソースコードが間違っているとページを正しく認識できません。
また、文法的には間違っていなくても、推奨されない書き方をすることで正しい評価をされない場合もあります。

HTMLの記述内容は多岐に渡るのでここで全てを解説することは不可能ですが、
例えば

・全ページにmeta title、meta description、meta keywordsを必ず入れる
・ページ内の見出しにはhxタグ(h1、h2、h3、・・・)を使う
・パンくずには構造化マークアップを行う

などが挙げられます。
上記は飽くまで例です。詳しくは別エントリで解説します。

SEOの外部施策とは

長々と内部施策について説明してきましたが、外部施策の説明自体は簡単です。
端的に言えば、外部施策とはいわゆる「被リンク(外部リンク)」です。

被リンク(外部リンク)とは

内部施策の説明の中で「検索エンジンクローラーは各ページのソースコードを読み、インデックスし、その内容を元に評価する」と書きました。
しかし、それだけではユーザーに役立つ検索結果が得られないのが現状です。

クローラーはプログラムです。
人間が見て真に役に立つと思うコンテンツの優劣は、現在のクローラーにはまだ判断できません。

そこでその判断の補助となっているのが外部、つまり他サイトからのリンクです。

みなさんがFacebookTwitter、LINEなどでWebページを紹介する時、リンクを貼りますよね。
もちろん「このサイトはクソだ」という評価で紹介することも無くは無いと思いますが、基本的にはポジティブな評価が多いと思います。

同様に、Webサイト運営者も、自社には無いコンテンツを持っているページ・サイトなどへのリンクを貼ることがあります。
これがSEO対策でいう「被リンク」や「外部リンク」と呼ばれるものです。

具体的な被リンク対策

既にSEOをかじっている方なら、内部施策を含めても一番気になるのが被リンク対策方法でしょう。
それを考えるためには、まず「検索エンジンが被リンクをどう評価するのか」、を考えることが必要です。

検索エンジンは、下記のような点でリンクを評価していると考えられます。

・特定のページがどれくらいのページからリンクを受けているか
ドメイン単位で見た時に、何ドメインから評価されているか
・質の高いページ・ドメインからリンクを受けているか
・関連性のあるページ・ドメインからのリンクか

上記から、

・自サイト・ページにリンクを貼っているページ数を増やす
・自サイト・ページにリンクを貼っているドメイン数を増やす
・上記の中でも、関連性の高いページ・ドメインからのリンク割合を増やす

このあたりが実施できれば検索エンジンからの評価は高まると考えられます。

しかし、念のために言っておきますが、単純な被リンクの自作自演はおすすめしません。

検索エンジンは「純粋に役に立つ」コンテンツの評価を上げたいのですから、当然被リンクの自作自演への対策は行っています。
詳細は割愛しますが、もし自作自演や被リンクの売買などがバレると、最悪のケースではあなたのサイトが検索結果に一生表示されなくなる可能性もあります。

だからこそ外部施策は難しく、その分価値のある施策となっているのです。
具体的にどんな施策が考えられるのか、については下記コンテンツをチェックされると良いでしょう。

seo-scene.com

SEOにはお金をかける必要はあるのか。業者に発注する必要は?

SEOの施策をざっくり理解したら、特に事業者の方は「お金をかける必要があるのか」が気になるところでしょう。

一事業者の社内SEOコンサルタントとしての経験から言わせてもらえば、「余裕があるならお金をかけたほうがいい」です。
※どれくらいお金をかける必要があるのかは、Webサイトのフェーズにもよりますし、なんの施策やツールにお金をかけるのかによっても変わるので、余裕があれば別エントリでまとめます。

SEOは特殊技能であるかのように思われている節がありますが、本来はそこまでのものではありません。
HTMLやCSSJavaScriptPHPなどを一から書く必要は無いですし、取るべき施策についてもWeb上にいくらでも記事があります。

正直、お金なんてかけなくても自分一人で実行は出来てしまいます。

しかし、「余裕があるならお金をかけたほうがいい」というのは下記のためです。

・自分一人でWebサイトをベストコンディションに保つには、やるべきことが多すぎる
・様々なベンダーが有料提供するツールを使うことで、自社・競合分析が容易・明確になる
・質の高いコンテンツを継続的に作るのは、実は相当ハードな作業である

SEOは見るべきポイントが非常に多く、かつ各フェーズで何の施策が当たるのかも分かりづらいものです。
特に会社でSEOを初めて任された方などは、予算が許すのであれば、少なくとも初期は外部のコンサルに施策内容や優先度などのアドバイスをもらいながら実行していくのが効率的でしょう。

SEO対策を始めるにあたって、まず利用すべきツール

業者に発注する・しないは置いておいても、SEOの担当者として少なくとも利用できる状態であるべきツールを紹介します。

Google Analytics (GA): アクセス解析ツールと呼ばれるものです。Googleが無償提供している、最もオーソドックスなツールです。
Google Search Console (GSC): こちらもGoogleが無償提供しているツールです。検索キーワードごとの流入や検索結果上のCTRなど、GAよりも詳細な数値を幅広くチェックすることが可能です。Googleからのアラートなどもこちらに届きます。
キーワードプランナー: これはGoogleの広告商品を利用する際の「Google Adwords」というツールに含まれている一機能です。検索キーワードの実際の検索量をチェックすることができるので、無数にあるキーワードの対策優先度を立てることができます。

他にも便利なツールは様々に開発されていますが、上記は最低限利用できるようになりましょう。

Google以外のベンダーが同様のツールを開発していることもありますが、基本的に有料です。
ツールに細かい機能を期待するのは、SEOの基本的な運用ができるようになってからで良いでしょう。

SEOの情報を日々キャッチアップするのに有益なサイト

冒頭でも申し上げましたが、SEOは常に情報をキャッチアップし続けることが重要です。
様々な情報源がWebに転がっていますが、中でも有用な情報源を下記でまとめます。
SEO対策の多くは、Googleの方向性を会社/個人が解釈して行うものになります。下記の中でも一見対立するような意見が述べられていることがありますが、そんな時は「Googleならどう考えるか」を自分で考えてみてください

海外SEO情報ブログ - 海外のSEO対策で極めるアクセスアップ術
Web担当者Forum - 企業ホームページとネットマーケティングの実践情報サイト - SEO/SEM アクセス解析 CMS ユーザビリティなど
SEO HACKS - ナイル株式会社 SEOサービス&SEO情報
ferret [フェレット]|webマーケティングがわかる・できる・がんばれる
バズ部

他にも参考になるサイトはいくらでもあるので、思いつき次第追加していきます。

まとめ

色々と説明してきましたので、最後に箇条書きで重要なポイントをまとめます。

SEO対策とはGoogleYahoo!などの検索エンジンで自サイトを上位表示してもらうための行為全般を指す
SEO対策は大きく内部対策と外部対策に分けられる
SEO対策と呼ばれる行為のうち、ほとんどは内部対策である
・内部対策を一言で言うなら「良いコンテンツをユーザーと検索エンジンに分かりやすく・使いやすく提示する」こと
・外部対策とは他サイトからのリンクをいかに獲得するかという手法である
・初めてのSEO担当であれば、お金に余裕があるなら外部コンサルを入れたほうが効率は良い

少しでもこれからSEOを始める方々のためになれば幸いです。