Webサイトの運営ノウハウ

サラトガIT日記について

主に Web アプリ開発における「ソフトウエア開発」「サーバ構築(インフラ)」の Tips や設定手順など、過去に開発現場で実際にハマったことや備忘録をまとめています。現在は、多くのサイトで情報共有が行われていますが、当サイトの記事も少しでも役立てばと思います。

これまでは PHP と MySQL を使った Web アプリケーション開発やソーシャルゲーム開発の仕事が主でしたが、サイトへのアクセス誘引など、SEO やマーケティング部分に関連したノウハウも蓄積していけたらと思います。

サイトに対するご意見などございましたら「お問い合わせ」からお願いします。

オススメ記事

最新の投稿やよく見られているのオススメ記事一覧です。

新しいぐるなびAPIで飲食店の店舗情報取得

過去に作成した「ぐるなびAPI」のプログラムや、ぐるなびの Web Service が新しくなったこともあり、API からの情報取得プログラムを書き換えてみました。 以前の記事は下記になります。 ・ ぐるなびAPIで...

WebAPI

>>記事を確認する

NginxのFastCGIキャッシュで白い画面がキャッシュされる

以前から、トップページにアクセスすると、レスポンスステータスは 200 で返ってくるのに、画面に何も表示されない現象が稀に見受けられたので調査してみました。 さすがに機会損失にも繋がるということで、...

Nginx

>>記事を確認する

Laravel5.4の認証ユーザーのパスワードハッシュについて

Laravel で用意されている認証モジュールを利用する際、ユーザーモデル(User.php)経由で登録されるパスワードのハッシュ方法について調べてみました。 Laravel 上ではパスワード文字列を bcrypt() のヘルパー...

PHP / Laravel

>>記事を確認する

Laravel5.4のコントローラコンストラクタでAuth::user()が取得できない

Laravel5.4 で認証を通したアクセスに対して、コントローラのコンストラクタでユーザモデルの値を取得しようと思ったら、なぜか Auth::user() の値が取得できなくて悩みました。 public function __construc...

PHP / PHPフレームワーク / Laravel

>>記事を確認する

NginxのHSTS(HTTP Strict-Transport-Security)の設定

「Let's Encrypt」のおかげで、全サイト SSL 化していますが、これまで nginx の設定では、http のアクセスがあった場合に https に 301 リダイレクトさせていました。 この場合、Googlebot に http のアク...

セキュリティ / Nginx / SSL

>>記事を確認する

GoogleMapのAPIキーの認証情報にリファラURL設定

昔は API キーを指定することで、JavaScript で GoogleMap が表示できていましたが、何年か前に、そのキーに対して認証情報の追加が推奨されました。 新規で発行する場合は必須になっているかもしれませんが...

Web全般 / WebAPI

>>記事を確認する

AmazonLinuxでApache2.4+php7.1+Laravel5.5

先日、「 VagrantでCentOS6.9のイメージを使う 」の通り、CentOS6.9 には Apache2.4 と PHP7.1 で Laravel のフレームワークが使える環境を構築しました。 ただ、将来的には AWS かつ Amazon Linux 上で動か...

Apache / PHP / AWS / PHPフレームワーク / Laravel

>>記事を確認する

AWSの無料利用枠内で複数サイトをサクサクと運営する方法

MySQLでテーブル定義を取得

似たような構成のテーブルを作る時に、今までは mysqldump コマンドで -d オプションを付けて実行していました。 これでも十分に要件は満たせるのですが、MySQL のコンソールからサクっと出したい場合もある...

データベース / MySQL

>>記事を確認する

Poderosa5の登場と文字色と背景色

新しい PC を購入したので、久し振りに Poderosa のインストールをしたのですが、Poderosa-Terminal として最新バージョンの 5 が 2016 年に登場していました。 これ、職場でもインストールしてみたのですが...

Windows / ツール

>>記事を確認する

標準出力と標準エラー出力をパイプに渡す

よく、標準出力先をファイルにリダイレクトすることはありますが、意外に標準エラー出力は使う機会がありません。しかし、やはりツールやパッケージ製品になると標準エラー出力も活用されているようです。でも、...

Linux(FreeBSD)

>>記事を確認する

主要無料ブログ5つに対する自動投稿PHPプログラム

アメブロへ楽天APIなどの情報を自動で投稿する の反響が良かったので、どうせならアメブロ以外の無料ブログの XML-RPC を使った自動投稿も紹介したいと思います。これには FC2BlogManager.php というライブ...

PHP

>>記事を確認する

snmpでデバイスの情報を取得

snmpでデバイスの情報を取得するコマンドです。これを元に、ディスクIOなどのMIB値を探します。 $ snmpwalk -v 2c -c {SNMPGROUPNAME} localhost 1.3.6.1.4.1.2021.13.15.1.1.2 (結果の一部) UCD-DIS...

Linux(FreeBSD)

>>記事を確認する

awkで指定したカラム以降をprint表示する

前回、awk で最後のカラム以外を表示してみましたが、今回は指定したカラム以降のカラムを全部表示したいと思います。 例えば、7 個の文字列がカンマで区切られているファイルがあるとしたら、3 番目のカラム...

awk / シェル

>>記事を確認する

CentOSでRedisサーバを使う

冗長化した Web サーバなどで、セッションの管理や、セッションや特定のユーザーに紐付く一時データを管理するのに memcache を使う場面は多いと思います。 その memcache の中でも主流なのが memcached です...

Linux(FreeBSD) / CentOS / Redis

>>記事を確認する

Linuxのプロセス表示で実行中コマンドの最後まで見る

Linuxでプロセスを表示する時、実行中のコマンドなどが長い場合にコンソール画面に納まらずに切れてしまうことがあります。 $ ps -ef そんな時、w オプションを使用すると行が折り返されて、コマ...

Linux(FreeBSD)

>>記事を確認する

sortコマンドで並び替え対象のカラムを指定する

アクセスログの解析などで、数値の大小や時間などを軸にデータを見る場合に並び替えをよく使います。並び替えの昇順と降順については sort コマンドの -r オプションで対応することが可能ですが、項目が複数あっ...

Linux(FreeBSD)

>>記事を確認する

WindowsのMySQL5.5のmy.ini設定

久しぶりに Windows 環境に MySQL を入れて使っていたら、文字コードのところで問題発生。 MySQL と PHP の連携については、 MySQLとPHPでの文字化け(mysql_set_charset) で以前まとめましたが、今回は純粋...

Windows / MySQL

>>記事を確認する

ログローテートの実行結果

Linux の syslog は、logrotate のデーモンが指定した設定通りにローテートしてくれます。そのローテート処理の実行されたタイミングや、実行結果を見たい時は下記のファイルを参照します。 $ less /var/...

Linux(FreeBSD)

>>記事を確認する

8.3形式の短いファイル名を使う

5 年以上振りに DOS のバッチを触ることになったのですが、少ししか触ったことなかった割には意外に覚えているものです。dir とか cp なんてものはお決まりで、Linux などでは ls や copy と同じ意味なのですが...

Windows

>>記事を確認する

スキル備忘録

大半が Web アプリケーション開発で、業務系アプリはそれほど経験はないです。

プログラム言語

AWS で LAMP 環境構築(RDS, ElastiCacheは使う)して、バッチはシェルでってパターンが好きです。仕事で使った言語を、携わった順に残しておきます。

  • Java(Struts, Spring)
  • JavaScript(jQuery)
  • PHP
  • Shell
  • Perl
  • HTML
  • .NET C#
  • ASP.NET
  • .NET VB
  • VB6
  • PowerBuilder
  • PL/SQL
  • VBA

データベース(DB)

RDB は定番どころは一通り使いましたが、KVS も含めて残しておきます。多くの BtoC 向けの Web サービスは、ソーシャルゲームも含めて MySQL を使っている印象が大きいですが、大手 SIer や業務系システムとなると、大した規模でもないのに営業的(無駄なパッケージ使って見積もり上乗せ?)な都合もあり Oracle(Javaもセットで)を使うことが多い印象です。(個人的な印象です)

以前、100 万件を超える商品の検索(全文検索)で Elasticsearch を使ったことがあるのですが、RDB に比べると爆速ですね。RDS とメモリキャッシュ系をうまく併用していくと、リソース的にも速度的にもクラウドサービスの予算も節約できそうです。まあ、単発な短期間キャンペーンサイトとかであれば、高パフォーマンスなインスタンスで乗り切る方法もありですが。

  • SQL Server
  • Oracle
  • MySQL
  • PostgreSQL
  • Memcache
  • Redis
  • Elasticsearch

サーバ(OS)

サーバ OS はすっかり Linux 一色になりましたが、どれも慣れですね。社会人 1 年目の時は、Windows Server を使ったネットワーク管理者になるのが目標でしたが、環境が変わると(視野が広がると)、Windows サーバが使いたくなくなるものですね。

Active Directory の設計とか、拠点間のドメインの信頼関係とか、めっちゃ苦労した記憶だけは残っています。会社では誰もわからなくて、問題がなかなか解決せず、あの頃はまだネット上にもそんなに情報もなかったので、泣く泣く実費で「eラーニング」を契約した記憶があります。全く役に立たなかったですけどね(笑)

  • Windows Server2000
  • Windows Server2003
  • Amazon Linux
  • CentOS
  • RedHat Linux
  • Debian
  • Fedora
  • openSUSE
  • Ubuntu
  • FreeBSD
  • Solaris

サラトガ(Saratoga)とは

よく、「サラトガって何ですか」っと聞かれることがありますが、ニューヨークにある「サラトガスプリング」のようなアメリカの都市でもなければ、ノンアルコールカクテルの「サラトガクーラー」でもなく、昔好きだった馬の名前が由来です。アメリカに「サラトガ競馬場」がありますが、この競馬場とは関係ないです。あと、空母とか「艦これ」とか声優とか、最近はサラトガという言葉も広くなって何かわかんないですね。

「サラトガビューティ」という馬が好きで、いつか「サラトガビューティ」の仔に出資してみたいなっと思っていたのですが、共同出資のクラブで募集される気配は今のところなさそうです。そう言えば、「函館3歳S(現在の函館2歳S)」で 2 着になった時の勝ち馬「アグネスワールド」ってどこにいったんだろう。種牡馬になったけど病気だったのかな。

サラブレッドファーム 第二牧場

インターネットに出会ったのは大学に入学した直後。まだ 2000 年問題が話題になる前でしたし、ネットも大学では LAN 接続だったものの、一般家庭からはモデム(36kbpsくらだったかな)でダイアルアップという、今ではとても考えられないような世界でした。

インターネットプロバイダへ支払う料金の他に、NTT に支払う通信代(電話代)が別途あったので一人暮らしの大学生には辛く、夜間だけ掛け放題の通常テレホーダイに加入して、夜な夜なインターネットを楽しんでいたのが今でも懐かしく思えます。夜更かしして、深夜に菓子パン食べたりしていたせいで、いつの間にか 5kg くらい太ったという苦い思い出もあります。

さて、そんなインターネットにハマっていた時代ですが、まだ今のようにサイトやサービスがものすごく多く存在したわけでもなく、とりあえず Yahoo からどこかのサイトへアクセスしたり、検索したりする感じでした。ただ、自分でもホームページを作ってみたいなと思い、HTML の本を買ってきて夢中になっていたのが始まりでした。

Yahoo の検索のような cgi はどうやって作るのだろうと思って、ソースを真似てみたけど、当然静的な html のページで動作するわけもなく、cgi なんて自分には作れないのだろうなっと諦めていました。当時はネット上にも cgi のプログラミングを詳しく解説するようなサイトも少なく、カウンターや掲示板などの cgi のプログラムを提供しているサイトがあったくらいです。

結果的に、大学やプロバイダの自分のサーバ領域に、cgi のプログラムを置いて実行できないと動作しないので、最終的に諦めてしまったのですが、今となっては勿体ないことをしたなって思います。cgi が実行できるレンタルサーバの契約と、perl を覚えるくらいの時間は十分あったのになぁ。

でも、自分のホームページには 1 日 100 人くらいの人が見に来てくれていて、週末は競馬の「複勝大会」などを開催して少し盛り上がっていました。競馬の大きなサイトでは「The Derby Square(ダービースクエア)」など、システム化された大会を開催されているところもあって、うらやましく思っていたのですが、このダービースクエアはホリエモンが作っていたとはビックリです。

同じ競馬のサイトを作っていた人とのネット上での交流も増えましたが、あの頃はメールや掲示板、チャット、メッセンジャー(ICQとか)が主流だったので、今のような SNS があれば、繋がりも途絶えてなかったかもしれません。関西の大学生だった「とくさん」や名古屋で喫茶店をしていた「マーヘーさん」、三重でシステムエンジニアをしていた憧れの「とねっこさん」は元気にしているのでしょうか。「とねっこさん」には北海道の牧場見学の時の写真をたくさん送ってくれて、そのお礼ができていないので、一度は会ってみたかったです。

社会人デビューと転職

時代は移って 2001 年、晴れて IT 業界に就職し、まともにプログラミングをすることに。同期は 100 人くらいいたけど、プログラム経験者なんて当時は少数でした。

入社前にノート PC が貸与されて、VB6.0 の演習課題とアルゴリズムの問題が与えられましたが、今思えば入社前から仕事を与えられていたのかと理不尽さを感じながらも、時間が経ってしまえばいい思い出だったりもします。今では接点もないけど、同期ってやっぱりいいなっと思い返すことも多いです。

さて、入社して新人研修が終わって最初の配属先は Java と VB を使った業務システムでした。Java の SDK は当時は 1.2 で、Windows98 の時代でした。Web 系のシステムが流行り始めていた頃ですが、まだまだクライアント向けのシステム開発が多かった時代です。Java も当時は DOS プロンプトで javac コマンド打ってビルドするというシンプルな形でしたが、この頃は ant とか maven とかあったのかどうかも知らない時代。

そういえば、新人研修時代は外部へのネットワーク環境が整っていない部屋に閉じ込められていたこともあり、ひたすら Java の書籍から該当するパターンを探したり机上デバッグの毎日だったことを覚えています。今でこそググれと言われる時代ですが、あの時は非効率だったなっとつくづく思います。あの放置プレイが研修として良かったのか悪かったのか、私はたまたま受託開発の社内案件にジョインしましたが、出向中心の会社だとそこまで社内教育なんてないか。

朝 9 時から終電まで 1 ヶ月連続出勤とか、残業したらしたで人件費を考えろと怒られたり、何かと理不尽なことも多かったですが、今でも最寄り駅を通過する度に懐かしく思える、そんな社会人デビューの会社でした。その後、ベンチャーを転々としたこともあり、大きく会社や仕事に対する価値観も自分の中で変わってしまった感じがしますが、ホリエモンの本を読む度に、会社に依存しなくて良かったと思います。