ホーム ブログ ページ 51

jQueryを使った外部のhtmlの読み込みTips

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

jQueryを使ってヘッダ、フッタなど共通部分のhtmlを本体のページに読み込むカンタンTipsです

共通で使いたいhtmlと、読み込む側のhtmlを用意する。

読み込みたい共通部分にはheadタグとかbodyタグとかは不要です。
ほんとに部分的に抜き出したhtmlだけを用意します。

例えばヘッダ、フッタを共通にする場合は3つのファイルができることになります。

index.html 本体
header.html ヘッダー
footer.html フッター

jQueryを使うので、htmlの文字コードはUTF-8にしておきます。

jQueryをダウンロードする

http://jquery.com/

特に理由がなければ「Production」を使用します。

htmlでjQueryを呼び出し、共通htmlを読み込む

まずjQueryを呼び出します。ふつーに。

<script type=”text/javascript” src=”./javascripts/jquery-1.4.3.min.js”></script>

 次に、共通htmlを組み込みたい部分にidをもった空divを挿入します。

<div id=”header”></div>

こんなカンジ。

headタグ内で、idと読み込むhtmlファイルとを紐づけます。

<script type=”text/javascript”>
  $(function(){
    $(“#header”).load(“./header.html”);
    $(“#footer”).load(“./footer.html”);
  })
</script>

これでOK。

完成したhtmlはこんなカンジ

<html>
<head>

<script type=”text/javascript” src=”./javascripts/jquery-1.4.3.min.js”></script>

 <script type=”text/javascript”>
  $(function(){
    $(“#header”).load(“./header.html”);
    $(“#footer”).load(“./footer.html”);
  })
</script>

</head>

<body>
<div id=”header”></div>
<div>


</div>

<div id=”footer”></div>
</body>

</html>

ちょっとした注意点

共通htmlを読み込んだとき、階層構造は当然読み込む側のhtmlに準じることになります。
imgタグやaタグでURLを相対パス指定にすると、
階層がズレた場合デッドリンクになってしまいます。
パスはすべて絶対パスで記述するか、
相対パスを使用するならデッドリンクにならないよう階層構造に注意が必要です。

Androidアプリをリリースしました。「Live Search Twitter」

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Android2.1 SDK から追加された機能LiveWallpaperを利用したアプリ

Live Search Twitter をリリースしました。

 Live Search Twitter

この度、Androidマーケットに無料アプリを投稿しました。

このアプリは携帯端末の壁紙にTwitterの発言を表示します。

Tweetの内容は事前に登録したハッシュタグをランダムで検索を行います。

設定画面で検索するハッシュタグを追加することができます。

ぜひ使ってみてください。

http://jp.androlib.com/android.application.com-kbmj-live-qEEmz.aspx

Railsプログラマが知っておくべき97のこと

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、SHIMADAです。

最近、オライリー社の新刊「プログラマが知るべき97のこと」がTwitterで話題に上っているようですね。

ここでは、Railsプログラマが知るべきことを挙げてみました。

残念ながら97も思いつかなかったので、25個です。看板に偽りありですね。ごめんなさい!

 コントローラ

  • 行数よりもインデントの深さに気をつける
  • if-then-elseをネストしたくなったらロジックが間違っている
  • アクションでないメソッドはprotected/privateにする
  • 行数を減らす目的でbeforeフィルタを書かない
  • グローバル変数、インスタンス変数にアクセスするポイントを集中させる
  • グローバル変数(paramsとか)に代入しない
  • ダイナミックファイダを使えないfindをみつけたらモデルのメソッド/named_scopeにする

 ビュー

  • eachとif以外のロジックを書かない
  • 複雑になるところはヘルパにまとめる
  • 分からないことはモデルに聞く
  • 分割するためだけにパーシャルしない
  • 代入とか副作用の起こることをしない
  • eachの中でSQLが走らないかチェックする

 モデル

  • DBのテーブルを持たないクラスはAR::Baseを継承しない(笑
  • テーブルを持たないクラスのうち、多態を使う一連のグループはサブディレクトリを作ってモジュールにまとめる
  • モジュールとディレクトリ名の命名規約はRailsに合わせる
  • モデルが大きくなってきたら機能群をモジュールに切り出してincludeする
  • 共有しないモジュールはクラス名::モジュール名にしてクラスと同じ名前のディレクトリに入れる
  • モジュール名は-ableを気取ってみる
  • モジュールに切り出すときはクラス内にモジュールを作ってテストが通るように
  • 定数はselectable_attrを使う
  • 理由を説明できないfind_by_sqlは使わない
  • conditionsをnamed_scopeにできないか検討する

 その他一般論

  • 引数に代入とかしない
  • あるメソッドの中で同じオブジェクトへのメソッド呼び出しが多い場合、メソッド自体を相手に移すことを検討する

 さいごに

いかがでしょうか。

皆さんもそれぞれ「自分はこうすべきだと思う」「これは知っておくべき」という経験則を持っているかと思います。

こういうものを集めて洗練していくと「ベストプラクティス」と呼ばれるものができあがります。

また、これらを体系的に

  • 名前
  • 背景となる状況
  • 課題点
  • 解決策

としてまとめていくと、パタンランゲージができあがります。

みんなで知恵を出しあって、いきいきとしたシステム開発を進めて行きましょう。

……おっと、さっそくCuriさんからビューについてひとことあるようです。

  • 「SEOやEFOのことは頭に入れておけ」

「エントリーフォーム最適化」なんて言葉があるんですね。勉強になりました!

MacにEclipseをインストールする。

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

以外と誰も書いていなかったので、MacにEclipseをインストールする手順を説明します。まずは環境から。

環境

OS : Mac OS X 10.6.5

Eclipseのダウンロード

ここからEclipseをダウンロードしてきます。
種類は使う言語などに合わせてお好みで選び、Mac OS X 32 Bit or Mac OS X 64 Bitのリンクを押下。適当にミラーページを選びダウンロードする。ちなみに、2010年12月現在のEclipse最新阪は、 Helios (3.6)です。

Eclipseのインストール

ダウンロードしてきたEclipseを解凍。解凍して出来たeclipseディレクトリをアプリケーション配下などお好みの場所へ。これでおしまい。

Eclipseの日本語化

解凍した[eclipseディレクトリ]内にある[Eclipse.app]を押下でEclipseが起動しますが、このままだと英語のままです。読めません。というわけで、日本語化します。
方法は色々ありますが今回は、Pleiades というプラグインを使います。
まずは、ここより Pleiades をダウンロード。 Eclipseはすでに、ダウンロードしてあるので、[Pleiades 本体ダウンロード]の項目より、「安定版 1.3.2」をダウンロード。
その後解凍し、できた[pleiadesディレクトリ]内の[plugins]および、[features]の中身を先ほどインストールした、[eclipseディレクトリ]内の、[plugins]、[features]ディレクトリにコピーしてあげます。

コピー後、[eclipseディレクトリ]内の[Eclipse.app]を右クリック、「パッケージの内容を表示」を押下。
Contents → MacOS 内にある、[eclipse.ini] をテキストエディタで開き、最後に下記1文を追加します。
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
設定後、Eclipseを起動させるのですが、普通に起動しても、古いプラグイン情報が使われてしますため、clean 起動で起動します。

ターミナルを開き、下記コマンドを実行。/Applications/eclipse/eclipse -clean
これで、日本語化されたEclipseが使えます。

おまけ

いれるとちょっと便利なEclipseのプラグインを紹介します。
プロパティエディタ
htmlエディタ
基本的に[plugins]、[features]ディレクトリに内容をコピーすれば使用できます。

Slony-Iでのフェイルオーバー手順

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

Slony-Iで同期をとっている環境での、マスタDBとスレーブDBのフェイルオーバー手順です。

フェイルオーバー前

 マスタDB:db1

 スレーブDB:db2

postgres@db1$ postgres stop
 →障害発生の想定
postgres@db1$ slon_kill
 →db1,db2それぞれでSlonyデーモンを起動している場合なので注意
postgres@db2$ slonik_failover 1 2 | slonik
 →これでdb2がマスタになり更新の操作が行えるようになる。
  フェイルオーバーはマスタが死んでても可能
 →アプリの参照DBを元スレーブのdb2に変更
postgres@db1,2$ vi /usr/local/etc/slon_tools.conf
 ----------
 $MASTERNODE = 2; <==1を2に変えておく
 ----------
postgres@db1$ postgres start
 →障害復旧の想定

db1 をdb2からスキーマダンプなどしてDB作成(createlang忘れずに)

postgres@db2$ slonik_drop_node 1 | slonik
postgres@db2$ slonik_store_node 1 | slonik
postgres@db2$ slonik_subscribe_set set1 1 | slonik
postgres@db1$ slon_start
 →同期開始。冗長性回復

EclipseでGitを使用してバージョン管理を行う

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

EclipseでGitを使用することができるEGitの導入について説明します。なお、EclipseはEclipse Helios (3.6)を使用しており言語ファイルにて日本語化をしています。

ヘルプ>新規ソフトウェアのインストール>Heliosリポジトリ > egit
上記でEclipse Gitというプラグインがみつかるはずです(現在ver0.9.1)

チェックボックスにチェックをいれたらインストールしてEclipseをリスタートします。

ウィンドウ>ビューの表示>その他 > Git > GitRepositories
を選択するとGItリポジトリのウィンドウが下方に表示されます。

中には何も表示されていませんが右クリックでリポジトリの設定を追加することができます。
ここでGitのリポジトリを指定してプロジェクトをインポートすれば完了です。

Egitでの作業はプロジェクトを右クリックしたときにでる「チーム」という項目から各種操作をすることができます。

SQL Mk-2(a5m2)を使用したExcel形式のDB定義書作成方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

SQL Mk-2(a5m2)を使用したExcel形式のDB定義書作成方法

 今回はフリーソフトSQL Mk-2を用いたDB定義書の作成方法を紹介します。

DB定義書を作成するツールはいろいろあるのですが、Excel形式となるとなかなか見つからない…

少しとっつきにくいツールですが、準備さえ終われば便利ですので、機会があれば是非活用ください。

1. SQL Mk-2のインストール

2. MySQL ODBCのインストール

3. DSNの作成

4. SQL Mk-2からデータベースへの接続

5. DB定義書作成

 [1]SQL Mk-2のインストール。

http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/

 [2]MySQL ODBCのインストール。

http://dev.mysql.com/downloads/connector/odbc/

 [3]MySQLサーバーへ接続するためのDSNの作成手順。

1. [スタート]メニューをクリックし、[コントロールパネル]をクリックする。

2. [コントロールパネル]が開いたら[管理ツール]をダブルクリックする。

3. [管理ツール]の中にある[データソース(ODBC)]をダブルクリックする。

4. [ODMCデータソースアドミニストレーター]の[システムDXN]を選択し、追加ボタンを押下します。

5. 先ほど、インストールしたMysql ODMC 5.1Driverが表示されているので、それを選択します。

以下の項目を入力して、Testボタンを押下します。

Data Source Name:データソース名

Server     :接続するサーバー名

User      :接続する際のMySQLユーザー名

Database    :接続するMySQLデータベース

接続に成功するとConnection successful!が表示され、設定完了となります。

 [4]SQL Mk-2からデータベースへの接続。

1. [データベースの追加と削除]をクリック

ODMCシステムデータソースを列挙するの項目にチェックをいれ、

上記で作成したODMCシステムデータソースを指定します。

2. データリンクプロパティで、プロバイダーのタブで。

Microsoft OLE DB Provider for ODBC Driversを選択します。

接続のタブで、データソース名を指定

サーバにログインする、ユーザ名、パスワードを入力します。

ようやくSQL Mk-2からデータベースに接続する準備ができました。

 [5]DB定義書の作成

SQL Mk-2の横に、データベース情報がツリー構造で表示されています。

データベース名にカーソルをあわせ、右クリックからテーブル定義書作成の項目を選択します。

後は、DB定義書にするテーブルを選択するだけで、下記のExcelファイルを出力します。

ActionScript3でprototypeを拡張したときにはまったこと

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

最近Flexの開発が本職になってきたので、ActionScriptを勉強しています。

今回は始めてprototypeを拡張した時に、はまったところを紹介します。

 setPropertyIsEnumerableについて

prototypeを拡張して関数を追加した時、単に追加しただけだとfor ~ in で要素を列挙する際に、追加した関数も列挙されています。これを防ぐにはsetPropertyIsEnumerableを呼んで、追加した関数を列挙しないようにしなくては行けません。

たとえば、以下のソースは実際のプロジェクトではまった部分ですが、

Array.prototype.find = function(property:String,value:Object):Object{
        return this.filter(function(element:*,index:int,arr:Array):Boolean{
                            return element[property] == value;
                           });
      };
Array.prototype.setPropertyIsEnumerable("find", false);

最後の行のsetPropertyIsEnumerableが重要です。これがないと配列をfor ~ inでまわしたときに”find”という身に覚えのない要素が追加されてしまいます。

 非Dynamicなオブジェクトでの拡張

上記ソースのようにDynamicなArrayを拡張した場合、arr.find(“age”,20)のようにObj.func()という形で拡張した関数を呼び出すことができます。しかし、以下の用にDynamicではないStringを拡張したときにstr.camelize()を呼ぼうとするとコンパイル時にエラーになってしまいました。

 String.prototype.camelize = function():String{
        var tmp:String = "";
        for each (var element:String in this.split('_')){
          tmp += element.charAt(0).toUpperCase() + element.substr(1);
        }
        return tmp;
      };

コンパイルエラーを防ぐには、かっこわるいですが、str[‘camelize’]()の様に呼び出せば良いようです。本当はStringをDynamicにしないといけないのかもしれませんが、低レベルのクラスをいじるのは気が引けるのでこの方法を使っています。

さて、以上2点、私のように見切り発車でコーディングをしてしまうとはまってしまうこともあると思い紹介してみました。なにかのご参考になればうれしいです。

Ruby on Rails Redmine Install

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

rick No20です。
今回はredmoneのinstallについて書きます。
remineとは?
タスク管理ツールです。
SubVersionとかも管理できるんですが、今回はredmineのinstallです。

環境

ruby 1.8.6
rails 1.2.5
sqlite 3.5.3
CentOS 5.2
redmine 0.6.4
download場所 /usr/local/src
ソース場所 /var/

Redmine Install

$wget http://rubyforge.org/frs/download.php/33789/redmine-0.6.4.tar.gz
// redmine 7.0以降はrails2系でないとダメらしいです。
$ tar xvf http://rubyforge.org/frs/download.php/33789/redmine-0.6.4.tar.gz
$ cp -a redmine-0.6.4 /var/

Redmine 設定

$ cd /var/redmine-0.6.4
$ cp config/database.yml.sample config/database.yml
$ vi config/database.yml
production:
adapter: sqlite3
dbfile: redmine.db
timeout: 5000

gem sqlite3-ruby install

$ gem intall sqlte3-ruby
$ rake db:migrate RAILS_ENV=production
$ rake redmine:load_default_data RAILS_ENV=production
Select language: bg, cs, de, en, es, fr, he, it, ja, ko, nl, pl, pt, pt-br, ro, ru, sr, sv, zh, zh-tw [en] ja ←jaを入力してenter

Rdmine 起動

monbrelを使用して起動します。
$ vi config/mongrel_cluster.yml
port: “3000”
environment: production
log_file: /var/redmine-0.6.4/log/mongrel.mongrel.log
public_file: /var/redmine-0.6.4/public
servers: 1
$ mongrel_rails cluster::startこれでlocalhost:3000でアクセス可能です。

RailsでOAuth Providerを作る

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

先日、お客様から「OAuthに対応できますか?」という質問を受けました。

正直「OAuthって何?」 という感じだったので、ちょっと調べてみました。

☆OAuthとは・・・

→認可情報の委譲のための仕様
 -予め信頼関係を構築したサービス間で
 -ユーザの同意のもとに
 -セキュアにユーザの権限を受け渡しする

とあります。

なんかOAuthには3つの要素が存在するようです。

  -OAuth Service Provider(ユーザの認可情報を第3者に渡す)
  -OAuth Consumer(ユーザの認可情報を受け取り、ユーザに代わっていろんな情報へのアクセス、追加・削除を行う)
  -User(ProviderがConsumerに認可情報を渡すことを許可したり、認可情報を無効化する)

mixiの「友人を探す」の「アドレス帳から探す」でOAuthを使っているそうなので、それに当てはめると・・・

 ↓

ユーザ(User)の許可のもと、mixi側(OAuth Consumer)にGoogle(OAuth Service Provider)のGmailのアドレス帳へのアクセス権限を与えて、mixi内にマイミクに追加するためのアドレス帳のインポートが出来る

 ・mixiにGmailのアカウントやパスワードを渡す必要がありません
・ユーザはGmail内において、mixiを認証済みのウェブサイトから外すことで、mixiへの認可情報の受け渡しを無効化出来ます

なんとなく安全なのかなぁ~程度。。。

☆OAuth Providerの実装

お客様の話を聞いていると、どうもサイト内の友達情報とかをConsumerとなるゲーム側に受け渡すためにOAuthを使い、サイト=Providerという形にしたいっぽかったので、そもそもRailsのアプリにOAuthのProviderを取りこめるのか調べてみると・・・

 Railsにruby-oauth gemと、OAuth Pluginというのがあって、それを使えば簡単にProvider側を実装できるらしいです。。。

◆ruby-oauth gemのインストール

gem install oauth

◆アプリにpluginをインストール(Railsアプリ配下で)

./script/plugin install git://github.com/pelle/oauth-plugin.git

◆Controller、Modelの作成

 ./script/generate oauth_provider

 これにより、以下のファイルが出来ます

 app/controllers/oauth_controller.rb
 app/models/oautht_token.rb
 app/models/access_token.rb
 app/models/request_token.rb
 app/models/client_application.rb
 app/models/oauth_nonce.rb

◆routesとassociationを設定

 map.oauth ‘/oauth’,:controller=>’oauth’,:action=>’index’
 map.authorize ‘/oauth/authorize’,:controller=>’oauth’,:action=>’authorize’
 map.request_token ‘/oauth/request_token’,:controller=>’oauth’,:action=>’request_token’
 map.access_token ‘/oauth/access_token’,:controller=>’oauth’,:action=>’access_token’
 map.test_request ‘/oauth/test_request’,:controller=>’oauth’,:action=>’test_request’

—-

 has_many :client_applications
 has_many :tokens, :class_name=>”OauthToken”,:order=>”authorized_at desc”,:include=>[:client_application]

—-

rake db:migrate

これにより、OAuth Service Providerの最低限の機能は揃うそうです。

また、下記のbefore_filterが使えるとのこと

・before_filter :login_or_oauth_required
・before_filter :oauth_required

でも、このプラグイン(Provider)を使うためには、よくよく調べてみるといろいろな条件があるようです。

・login_requiredを使っている

・rails2.0を使っている(←これが結構大きい・・・)

・OAuth Consumerの管理において、Consumerの削除・編集の機能実装が必要(え?結構重要じゃん)

既存のサイトに導入するのは結構難しそうですが、趣味とかで組んでみるのには面白そうですね☆

Passengerのステータス確認ツールの紹介(その1)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

 今回は、Passengerに標準でインストールされるステータス確認ツールの紹介をしたいと思います。

 Passengeerのステータス確認ツールは2種類あります。今回はその1つについて説明したいと思います。

passenger-status

 passengerのプロセスの情報が見れます。passenger-statusで実行できます。出力は以下のようになります。

----------- General information -----------
   max      = 6   count    = 5   active   = 0   inactive = 5    
----------- Domains -----------
   /var/rails/hoge:
     PID: 4599    Sessions: 0    Processed: 13      Uptime: 1m 35s
     PID: 4594    Sessions: 0    Processed: 7       Uptime: 1m 36s
     PID: 4592    Sessions: 0    Processed: 1       Uptime: 1m 36s
     PID: 4589    Sessions: 0    Processed: 9       Uptime: 1m 38s
    /var/rails/huga:
     PID: 18348   Sessions: 0    Processed: 24      Uptime: 2m 54s

General informationの項目の説明は以下になります。max

passengerが起動できるプロセスの最大値。ApacheだとPassengerMaxPoolSize、Nginxだとpassenger_max_pool_size の値になります.count

現在起動しているプロセスの数active

リクエストを処理中のプロセス数。この値はcount以下になりますinactive

アイドル状態(リクエストを処理していない)のプロセス数。count – activeの値と等しくなります

Domainsは、VirtualHostが複数あれば、VirtualHostごとでプロセス情報の一覧を表示します。

項目の説明は以下になります。Sessions

処理待ちのクライアント数
Processed

リクエストを処理した数Uptime

プロセスの生存期間

 なお。設定ファイルでPassengerTempDir(Apacheの場合のみ)を指定している場合は、実行時に

ERROR: Phusion Passenger doesn't seem to be running.

というエラーになってしまいます。その場合、

 $ export PASSENGER_TEMP_DIR(かPASSENGER_TMPDIR)=[PassengerTempDirの値]
 $ passenger-status

か、または

$ PASSENGER_TMPDIR(かPASSENGER_TMPDIR)=[PassengerTempDirの値] passenger-status

とすれば実行できます。

 passengerの動作が怪しい時に確認するのに使ってもらえればと思います。

 次回はもう1つのツールについて説明したいと思います。それでは。

SSLを更新したらエラーコード:sec_error_unknown_issuerが表示された(ベリサイン証明書にて)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

先月SSLの更新を行ったところ、FireFoxにてsec_error_unknown_issuerという

エラーがでました。

以下解決方法です。

どうやら、ベリサインにて2010年10月10日に仕様変更があり、それ以降に申請された

SSLの中間証明書は従来とは別のものになっていたことが原因のようです。

参考:中間CA証明書のインストールについて

新仕様の証明書か否かは以下の方法で確認しました。

※今回確認したのはセキュア・サーバーID用のものです。

1. SSL適用画面で「ページ情報」を表示させ、「証明書を表示」ボタンを押します。

  → 証明書ビューアが表示されます。

2. 証明書ビューアの「一般」タグの「発行者」>「一般名称(CN)」と確認します。

  証明書が新仕様、旧来仕様の場合それぞれ以下のように表示されます。

 新仕様: VeriSign Class 3 Secure Server CA - G3
 旧来仕様: VeriSign International Server CA - Class 3

新仕様の署名書の場合は以下から新しい中間証明書を取得し、対応します。

セキュア・サーバID用中間CA証明書

SSL更新の際は皆様ご注意ください。

PMBOKについて

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ベンチャー企業に入社して早4年になろうとしています。新卒で入ったので他の会社の事は分かりませんが我が社では突然スキルアップの為の「チャンス」が頂けることがあります。

新規プロジェクトで初めてリーダーとして入ったことがありました。

それまでの私は上司の不満なところにばかり目が行く部下だったのだと実感しました。

突然初めてのリーダーをやることで「あの時○○さんはどうやっていたんだろう」と初めて上司の見えないすごい部分をなんでちゃんと見ておかなかったんだろうと後悔しました。

社長から「○○様(お客様)がいい対応してくれてるって褒めてたよ」と言われることもあったので、お客様向けの対応はそれなりにうまく行っていたようですが、チームのメンバーの私への不満はいっぱいあったと思います。

いままでの上司の良かった点、悪かったと思う点などを思いつく限りピックアップしてみたりもしましたが知識が全然追いついていないので「PMBOK」について学ぼうと思いました。

今回私が読んだのは「プロジェクトマネジメント標準 PMBOK入門」

 読んで理解したのは上記でも触れたプロジェクトは失敗だったということ。

それをここから説明しようと思います。

※PMBOK自体はWEBに限った話ではないのですが、私の仕事がWEB系のため話が偏ってしまっております

PMBOKによるとプロジェクトの「成功」とはスコープ・スケジュール・予算がすべて達成しているということ。

スコープとはお客様の求めているものおよびその作業の事を指します。

お客様の求めているものをうまく聞き出し、それを仕様書に書き起こし、確認を行ってそれ通りの物を納品する。

簡単かつ当たり前のようですがお客様が「これはあって当たり前」と思っていたり漠然としたイメージしか持っていない場合などは大変な作業となります。

続いてスケジュールとは文字通り期間のことです。

 お客様が○日までにサイトをオープンしたいといった場合は最大でもその日までが期間となります。

最後に予算とは、これも文字通りプロジェクトにかけられるコストのことです。

WEBサイト構築で言うと材料はほとんどないので主に人材になります。

その人の単価(スキル・経験のある人だと高くなる)やその人を拘束する期間で使用したコスト算出します。

私のやった案件の失敗は主にスケジュールでした。

言い訳をするならばお客様の仕様の確定が遅かった、デザイン会社がデザインをなかなか納品してくれなかった、直前になって「あの機能がないと困る」と仕様の変更があったなど色々あるのですが、失敗は失敗。

そしてスケジュールが失敗した=期間が延びたのでその間メンバーや私の拘束期間も伸び、結果として予算も失敗となりました。

仕様の確定が遅かったのならばもっと小まめにお客様とコミュニケーションをとって確定するのに何が引っかかっているのかを聞き出すべきだった。

デザインももっとデザイン会社と連携をとって進捗を把握し、遅れ初めているようなら急いで貰うようにもっと働きかけるべきだった。

直前に「あの機能がないと困る」と言われないようにもっと詳細にヒアリングを行い、叩いても埃がでないくらいまで仕様を詰めておくべきだった。

つまりなんで失敗したのか、私の「言い訳」から「原因」が分かります。

経験は知識に勝るものはないとよくいいますが、この本を読んで知識を得るまで漠然と「理由があったし、仕方がなかった、次は頑張ろう」と思っている部分がありました。

知識がなければ経験を生かすことができないのだな、と反省しています。

しかし知識だけあっても振り返るものも試せるものもなければ持ち腐れ。

2つが揃って初めて発揮できるものなのだと思います。

初めにもいった通り、弊社ではいつ「チャンス」を頂けるか分かりません。

案件があり、その人に出来そうだと思われれば未経験でもチャレンジさせて頂けることの出来る会社だと思います。

だからこそ「こんな仕事があるんだけどやってみるか?」と言われたときに、活かせる知識をためておくことが必要だと思います。

最後に「PMBOKって何?」というお話を(本当は最初に書くべきだったのでしょうけど失敗しました)

PMBOKとはProject Management Body Of Knowledgeの略です。

プロジェクトマネジメント団体のPMIがプロジェクトマネジメントの知識をまとめたものです。

私が今回説明できた部分は入り口でしかなく、今回読んだ本にもマネージャーとしての心のあり方から、適材適所を配置する必要性、プロジェクトの運用の仕方(今回説明したスコープ・スケジュール・コストのやり方)など色々載っていました。

初めてみる単語も多く、一度読んだだけでは全然覚えられなかったのでこれからもう一回読んで見たいと思います。

今回この記事をここまで読んで頂いて読んでみようかなと思った方にお勧めの読み方は、

やはり上記で私がやっているように実際自分の経験したプロジェクトと照らし合わせながら、これはこういうことかな?と自分なりの解釈をつけることかなと思っています。

そうしないとせっかく読んでもなかなか中身が入ってこず、実感もわかないので意味があまりないような気がします。

自分がやったことなくても上司で当てはめたり、聞いたことのある他の人のプロジェクトでもいいし、全然検討がつかなかったらそれこそ学生時代の学園祭やクラス劇に当てはめてもいいと思います。

それではここまで読んで頂いてありがとうございました。

奥が深いPMBOKを一個のブログ記事に書くのは難しいので、また別の機会に書きたいと思います。

HTML4とHTML5の違いについて

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

社内で勉強会の担当になって、一番興味があるHTML5について調べてみたのでこちらにも簡単に書いてみることにします。

現在使われているHTML4は1998年に策定されたようです。

1998年というと私が小学生の時でした。

当時はまだ電話回線でインターネットに繋ぐのが主流で企業のHPですら、一部大手くらいしか作成されていなかったと思います。

(少女マンガのなかよしを読んでいて「なかよし」のHPが出来ました!記事を見つけて親に内緒でこっそり見たりしていたので確かにその時代のはずです)

画像なども小さく軽く、とにかく読み込み重視という時代のものです。

ネット回線が常時使えるようになって、WEBは瞬く間に変化しました。

サイズの小さい画像からflashに動画に。

チャットや掲示板からSNSやツイッター。

この変化にHTML4は追いついていないといわれていました。

そこでHTML5の登場です。

■入力フォームの強化

カレンダーから日付が選択できる、ファイルの選択も一つのタグで出来る

■意味を表現する為の要素

今までdivやspanですべてくくっていたものをfooter、headerなど場所により名前でくくれるようになった

imgタグで画像を表示するのと同じように、videoタグ(動画プレーヤーの表示)やaudioタグ(音楽プレーヤーの表示)を使えるようになるのも大きなメリットだと思います。

■特定の要素の終了タグは省略できる(p、li、dt、dd)

■不要の場合省略可能なタグ(html、head、body)

など、HTML5ならではの書き方ができるようになったため、本格的に開始されたときに知らないとエンジニアは戸惑うことも多いかと思います。

簡単に調べただけでも沢山の変更があったので、私も開始までにしっかりと覚えて行きたいと思います。

poundを使って複数サイトでSSLラッパする

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

通常poundをSSLラッパとして使う場合、下記のような設定を行ないます。

 ListenHTTPS
   Address IPアドレス
   Port 443
   Cert "/etc/pound.crt"

   Service
     BackEnd
       Address バックエンドサーバのIPアドレス
       Port 80
       TimeOut 30
     End
   End
 End

しかし、この方法だと1つのIPアドレスについて1つのSSLラッパしか使えませんので サイト毎に新しくIPアドレスを用意する事で複数サイトのSSLラッパをすることができます。 IPアドレス(サイト2用)は仮想IPとして新たに追加したものです。

 ListenHTTPS
   Address IPアドレス(サイト1用)
   Port 443
   Cert "/etc/pound.crt"

   Service
     BackEnd
       Address バックエンドサーバのIPアドレス
       Port 80
       TimeOut 30
     End
   End
 End
 
  ListenHTTPS
   Address IPアドレス(サイト2用)
   Port 443
   Cert "/etc/pound2.crt"

   Service
     BackEnd
       Address バックエンドサーバのIPアドレス
       Port 80
       TimeOut 30
     End
   End
 End

以上で設定は終わりです

大人の女性向けデコメアプリ『Glamデコ★』のレビュー

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。


こんにちはiPhoneレビューアです。

出ました!ピンクと黒を基調とした大人の女性向けのデコメアプリ!

かっこいいデザインで大人の女性にぴったりなiPhoneアプリをご紹介します。

アプリの価格は無料です。

「Glamデコ★」ダウンロードはこちらから

デコメ素材は、まだ少なく今後どんどん素材が出てきてくれれば選ぶ楽しみも増えますね。

「Glamデコ★」メニュー画像
「Glamデコ★」素材購入画面
  • 主な機能

・デコメ作成/送信

・メール本文の背景/文字色、文字サイズの変更

・デコメ素材の選択

・デコメ素材の購入う

・グラムメディア広告表示

・設定

せっかく無料なので一度ダウンロードして、こんな感じでメール作成して送ってみて下さい!

 デコメ作成画面も使いやすく、すいすいデコメを作成できるのでとても使いやすいです。

「Glamデコ★」メール作成画面

iPhoneアプリの製作サイドによると、これからも機能追加ありそうです。

楽しみです!

「Glamデコ★」ダウンロードはこちらから

Google Analytics 今すぐ直せる解析環境 5の項目

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。


Google Analyticsで正しい数値を取得できていない利用者は意外にも多く、弊社調べでは20%を超えています。
今回は、今すぐ直せる簡単な解析環境の修正方法をお伝えしたいと思います。

最近では「加重並べ替え」など、ますます高機能な項目を追加している「Google Analytics」。これが無料だから、すごいことです。
けれど無料だからこそ?とりあえず導入はしてみるもののきちんと使えていない。放置している。という方も多くいらっしゃるように思います。

いくら費用はかからないと言っても、トラッキングコードの埋め込みなどで確実にコストはかかっているのです。使いこなさないのはもったいないです。

とはいえGoogle Analyticsの環境整備のために、サイト改修が新たに発生するのも状況によっては本末転倒な話かもしれません。

今回は、トラッキングタグの修正やサイト改修など、費用や期間のかかる大掛かりなものは避け、今すぐできる修正項目を書かせていただきます。

今回はこの画面を主に使います。

(1)「example.com」と「example.com/index.html」の分散を直す

Google Analyticsレポートの「コンテンツ」⇒「上位のコンテンツ」を見て「/」と「/index.html」があったらアウトです。トップページの数値が分散している可能性が高いです。

多くのwebサイトは「www.example.com」などといったドメインをトップページにします。
この表記は実は省略系で、index.htmlなどといったトップページ用のHTMLファイル名が省略されています。
このファイル名、一般的なサイトでは入力してもしなくてもアクセス可能なことが多いのですが、問題はGoogle Analyticsが「URLをベースに数値取得している」ということです。
同じページなのに、URL(の表記方法)が違うので、数値が分散してしまいます。
数値分散の例
修正はいたって簡単です。
修正したいプロファイルの「編集」画面から「[メインのウェブ サイト プロファイル情報] を編集します。」の編集を行ないます。
「デフォルトのページ」に自社のトップページファイル名(「index.html」など)を入力すればOKです。

index.htmlの統合

(2)パラメータの除外

もし自社サイトがパラメータをつけて何らかの処理を行なっているのなら、気をつける必要があります。
ただし、パラメータでコンテンツを切り分けていたり、広告の流入元を判定しているのであれば、そのままで構いません。

気をつけなければならないのは、同じコンテンツにもかかわらず、パラメータでURLが変わってしまうページが存在している場合です。
よくありがちなのはセッション管理用のパラメータですね。会員機能のマイページなどの利用率を見たい時に、パラメータが邪魔をして分散してしまったりする場合がこれにあたります。

この修正も非常に容易です。

(1)と同じ編集画面で、除外したいパラメータの名前をここに入れるだけ。後は勝手にないものと判断してくれます。

(3)タイムゾーンの設定

ときどきタイムゾーンが太平洋時間(GMT-07:00)になっている方もいます。
時間帯別などで時差が生じてしまいます。

やはり修正は簡単です。これまでと同じ画面から編集します。
ただし、AdWordsと連携している場合は一筋縄ではいきません。連携すると、AdWordsのタイムゾーンが優先され、Google Analyticsでの変更はできなくなってしまうからです。

(4)目標設定

正しい数値。とは少し異なりますが、これを設定しないとアクセス解析の意味は半減します。
目標とは、サイトがそれぞれ持っている目標のことです。ECサイトであれば商品購入、BtoBサイトであればお問い合わせといったところでしょうか。

設定は目標を追加、で行ないます。



ここで注目していただきたいのは、「目標到達プロセス」です。
これを設定することで、たとえば情報入力ページからゴールページまでのプロセス遷移が追えます。
どのステップで離脱が多く発生しているのかという、ボトルネックが判断しやすくなります。

(5)社内アクセスの除外

これは以前のDorubyの記事でも書かれていますが、やはり対処していないアカウントがなかなか多いので、今回もご紹介いたします。
フィルタから設定します。

自社内や制作会社、アクセス解析コンサルなど、関係各社のIPアドレスを入力し、除外設定してください。

おわりに

さて、5つの項目。いかがだったでしょうか。
非常に基本的なことだったので、すでに対応済みだという方も多かったかもしれません。
しかし、ひとつでも抜けがありますと、解析が面倒であったり数値の信ぴょう性が損なわれてしまったりと、いいことはありません。
これを機に、一度ご確認してみてはいかがでしょうか。

ちなみに、こういった解析環境が正しく取得できているか。さらにどんな数値を見ればよいのか、アクセス解析の手法はどんなものがあるか、といったスクールを弊社で開催中です。
上記の項目をクリアできていなかった人は確認のために、クリアできていた人はもう一段上の解析手法を手に入れるチャンスです。ぜひぜひご参加お待ちしております。

それではまた、次の機会に。

■AppiritsのGoogle アナリティクスセミナー

AppiritsのGoogle アナリティクスセミナーは、初期設定から機能解説、仕組の理解までさまざまな内容を用意しています。
ご興味のある方は是非弊社セミナーにご参加ください。

Google アナリティクス セミナー インターフェイス編
Google アナリティクスのレポート画面が把握できていない方向けの講座。
レポート画面の解説や既存機能の活用法、マルチチャネルなどの新レポートのインターフェイスを解説します。

Google アナリティクス セミナー 分析手法編
インターフェイスは把握しているが、数値の意味や考え方がよく分からないという方向けの講座です。 アクセス解析を用いた課題抽出やサイト改善の考え方を解説します。

Google アナリティクス セミナー 徹底設定編
現状のGoogle アナリティクスで取得可能な数値に物足りない方向けの講座。
外部サイトへの誘導やソーシャルボタン連携、eコマース機能などのカスタマイズ方法をレクチャーします。

Gitでリモートリポジトリを作成する

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

バージョン管理は主にsvnを使っていますがGitを使用しリモートリポジトリを作成してみたので方法を書きます。

まずはリモートリポジトリ側でリポジトリを作成します。

mkdir ~/repos/sample.git
cd repos/sample.git

# bareオプション付けると管理情報だけのリポジトリが作れる
git --bare init

次にクライアント側でローカルリポジトリを作成しリモートリポジトリとの関連をつけます。

ローカルリポジトリの作成

mkdir repos
cd repos
git init

これでローカルのリポジトリは作成できました。

なにかファイルを作ってgitの管理下においてコミットしてみましょう。

touch sample.txt
git add sample.txt
git commit -m "first commit"

コミットをすることができました。

ローカルのリポジトリとリモートのリポジトリを関連付けしてリモートリポジトリに内容を送信できるように設定します

git remote add origin ssh://user@hoge/home/user/repos/sample.git

プッシュをすることによりリモートリポジトリに更新が反映されます。

git push origin master

リモートリポジトリからcloneすると変更した内容が反映されていると思います。

CSV形式のデータをインポートする方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

RAILSでCSV形式のデータをDBにインポートするとき、 Fixturesの中に定義されているcreate_fixturesを使ってみたいと思います。

結構便利です。まず、RAILS_ROOT/db/initial_data/の中にCSVファイルを設置します。
この時、ファイル名は、「(データを入れたいテーブル名).csv」としてください。

今回は、「jobs」テーブルにデータを入れ込んでみたいと思います。
「jobs」テーブルは、id、name、created_atというカラムを持っています。

なのでCSVデータを以下のような感じになります。

RAILS_ROOT/db/initial_data/jobs.csv

####################################
id,name,created_at
1,会社員,<%= Time.now.strftime(“%Y-%m-%d”) %>
2,公務員,<%= Time.now.strftime(“%Y-%m-%d”) %>
3,無職,<%= Time.now.strftime(“%Y-%m-%d”) %>
####################################

このファイルは、Rubyのコードも記述できます。

あとは、コンソールを開いてデータをインポートします。

ruby script/console

Fixtures.create_fixtures RAILS_ROOT + ‘/db/initial_data’, ‘jobs’

以上

日本語の総合金融情報を素早く入手できるiPhoneアプリ

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

久しぶりのiPhoneアプリレビューです。


今回は、宣伝も兼ねて、KBMJもお手伝いさせて頂いた総合金融情報を素早く入手できるモーニングスターiPhoneアプリをご紹介します。

ユーザーは、ニュースやデータ等を閲覧できるだけでなく、関心の高い銘柄や実際に保有している銘柄等を登録することで、日々の価格の動きが確認できる 「ウォッチリスト」の機能が利用できます。

起動画面-モーニングスターiPhoneアプリ
ウォッチリスト-モーニングスターiPhoneアプリ

また、投資信託の運用実績、分配金、モーニングスター独自の評価情報等に加え、銘柄関連のつぶやき (Twitter)等の情報も閲覧することができます。

銘柄詳細-モーニングスターiPhoneアプリ

■iPhoneらしさを引き出すデザイン
ユーザーにストレスを感じさせにくくするため、データの取得タイミングや速度を細かくチューニングしています。また、iPhoneらしさを活かし、データの見せ方を工夫しております。ぜひ一度、お試しください。

グラフ-モーニングスターiPhoneアプリ

■このような利用が可能
・ウォッチリストで保有銘柄・ファンドの直近の価格情報を瞬時に確認
・タップして詳細パフォーマンス情報や銘柄指標、チャートを確認
・銘柄に関連するTwitterのつぶやきを閲覧
・文字ベースのニュースだけでなく、レポートや動画も閲覧可能
・充実した企業情報・ニュースは投資家はもとより、ビジネスでも活用可能
 

ニュース-モーニングスターiPhoneアプリ

■(開発者に聞いてみた)開発で大変だったところは・・・

限られた開発期間の中で、グラフ描画が一番大変でした。

機能的に大変だったところを聞いたのですが。。。

ということで、国内追加型公募株式投信約 3,000 銘柄、国内株式約 3,800 銘柄、国内上場投信(ETF)約 100 銘柄の情報等が閲覧できるアプリを是非お試しください。

■ダウンロード方法
上記のリンクから辿るか、iPhone 内の App Store より、検索で「モーニングスター」と入力


■iPhoneアプリについて
KBMJでは、今回開発させて頂いたiPhoneアプリを始め、『TDOS3 for iPhone』など数々のiPhoneアプリを公開しております。
iPhoneアプリの開発(http://iphone.kbmj.com/)も行っておりますので、是非ご相談下さい。

*iPhoneは米国Apple Inc.の商標または登録商標です。


■関連URL
モーニングスター株式会社
http://www.morningstar.co.jp/company/ir/index.html

モーニングスター公式サイト
http://www.morningstar.co.jp/

iPhone向けのアプリ開発サービス
http://iphone.kbmj.com/

Android向けのアプリ開発サービス
http://android.kbmj.com/

SEO内部対策においてよくある見落としポイントとは

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんばんは。アクセス解析チームのNASAです。

今回は、アクセス解析ではなくSEO対策をメインテーマにしてお送りします。


集客のための施策として、よくSEO対策が言われています。

SEO対策には「外部対策」、「内部対策」の2種類があるのは
みなさんご存知かと思います。

ただ最近では、外部SEO対策は効果が薄れてきていると言われています。
外部SEO対策を行った場合、対策を行っている期間中は集客において
効果が高くたくさんのユーザーをサイトに引き込むことができますが、
外した場合に徐々に元の集客力に戻ってしまうというのが現状としてあります。

 
そのため、現在は内部SEO対策を地道に行い、徐々に効果をあげている企業様が
多くなってきています。

しかし、最近のECサイトを見ているとSEO内部対策は行っているところは
多くありますが、どこか不足している部分があるサイトをよく見かけます。

そこで今回は、SEO内部対策のポイントを3つおさらいしたいと思います。

———————————————————————————-

1)タイトルタグについて

SEOの内部対策において重要と言われているのがタイトルタグです。

ほとんどのサイトではタイトルタグはきちんとページごとに変えているかと思います。

ただ、そのタイトルタグの文字数は適切ですか?
ユーザーが見たときに分かりやすいものですか?

 ◇タイトルタグのポイント◇

  その1:タイトルタグの文字数は35文字以内

  タイトルタグの文字数は、会社名等を入れた場合どうしても長くなってしまいがちです。

  中でもよくあるのが、会社名が「KBMJ」と「ケイビーエムジェイ」のように英語とカタカナ
  表記の両方がある場合、どちらも入れている会社様もよく見受けられます。

  会社名が英語表記、カタカナ両方とも同じくらい検索で使用されているのであれば
  問題はないですが、検索キーワードを見た場合に、カタカナが多かったり、英語が
  多かったりと偏りがある場合は、より検索されているほうをタイトルタグに選定
  することが望ましいです。

  また、一つの傾向としてやはり40代~50代のように年齢が高めのユーザーが
   多いサイトでは、カタカナで入力しているユーザーが多い傾向がございます。
  そして、雑誌等に紹介や広告出稿している場合は、それを見ながら入力する
  ユーザーも多いので、どのように表記しているかをチェックすることが必要です。

  その2:タイトルタグの区切り文字は「 – 」「 | 」を使用して構成する

  タイトルタグをよく「 / 」で区切っているサイトを見かけますが、
  タイトルタグの区切り文字は「 - 」「 | 」が推奨されています。

  これらを使用することで、ロングテールの認識が高くなる傾向がありますので
   使用することをお勧めします。

  (Google検索ロボットのみ)

  その3:タイトルタグは左から順に一番訴求したい単語を入れる

   タイトルタグはただ書いていけばいいというものではありません。
   そのページ内の概要がユーザーに伝わりやすい内容のキーワードが含まれていることが
   大切です。

  例えば、KBMJのECサイト構築パッケージの「エレコマ」

    このタイトルタグは下記のようになっており、これで31文字です。

2)メタディスクリプションの記載

SEO対策の一つとしてメタディスクリプションの記載があります。
これは直接的に順位の上昇にはつながりにくいですが、Googleで検索
した際に対ユーザーに表示されるサイトの説明文となります。

 ◇理想のメタディスクリプションとは?

  その1:文字数は87文字~115文字以内

  あまりにも少なすぎても、サイトの概要が伝わりにくく、ただ長すぎると途中で
  切れてしまい大事な部分を訴求出来ていないことがあります。
  そのため、メタディスクリプションは87文字~115文字以内(3行以内)に収めることが
  理想とされています。
  ちなみに、3行目まで記述する場合は90文字以上となります。

  その2:サイトの内容はもちろんのこと、ユーザーの興味をひく内容が記載されている

   これはECサイトであれば、送料無料や会員登録してポイントを貯めると商品と交換出来る
  など、ユーザーにとってプラスになる情報を記載することが大切です。
  メタディスクリプションは本当は全ページ違うものにすることが理想とされています。


   しかし、ページ数が多いサイトやWEB担当の方が少ないと工数もかかってしまうので、なかなか
   難しいというのがよくあるWEB担当の方からの声です。

   その場合はTOPページランディングページ(入口ページ)になりやすいページの
  メタディスクリプションだけでもいいので変更することをお勧めします。

   ランディングページになっているページを把握するには、Google Analyticsの場合、

   マイレポート→コンテンツ→閲覧開始ページ

   から確認することが出来ます。

    ※閲覧開始ページを見た際に、よく見られているけれども直帰率が高いページが
    あった場合はそのページは改善の余地があるページです。
    せっかく集客出来ているユーザーをそこで逃してしまうのはもったいない部分です。

3)サイトマップの作成

最後はサイトマップの作成です。
サイトマップはユーザーがサイト内で迷った際に役立つものですが、
それ以外にもサイトに訪れた際に浅いページを巡回しやすい傾向がある検索ロボットに
サイト全ページの巡回を促すのを助ける役割があります。

また、サイトマップは作成してもユーザーの目にとまりやすい部分に設置を行わないと
ユーザーにクリックされず迷ったユーザーが離脱してまう原因にもなりますので、
ユーザーの目にとまりやすい部分に設置することをお勧めいたします。

また余裕があればぜひ「xml サイトマップ」への登録も行うことをお勧めします。
登録することで、クロールしてインデックス化されるまでの時間が大幅に短縮されます。

———————————————————————————-

このほかにもSEO内部対策で行っておくことは、Yahooカテゴリーの登録や、
パンくずリストの設置、404エラーページが存在するかなど、まだまだたくさんありますが、
今回は、私がサイト診断をしているなかでよくある見落としポイントを3つあげてみました。

みなさんも自分のサイトでちゃんと出来ているかもう一度確認してみてください。

最近人気な記事