コーディング試験対策としてHacker RankやAtcoderのチュートリアルが便利

現在エンジニア転職のための活動をしています。 先日、はじめてコーディング試験というものを経験しましたので、似たような経験をする人に役立つことを記事として残します。

コーディング試験では標準入力をうまく取れないと、あせります

先日、人生で初めて採用試験でコーディング試験を経験しました。 事前に、コーディング試験があるのはわかっていたのでHackerRankAtCoder:競技プログラミングコンテストを開催する国内最大のサイトといった競技プログラミングサイトで少しだけ練習をしていましたが、 実際の試験では、標準入力を取得する部分で想定以上に時間を取られてしまい、悲惨な結果となりました。

もし、今後初めてコーディング試験を受ける方は、標準入力の取得をしっかりとしておいてください。

問題を解く練習も大事ですが、普段から競技プログラミングをしていない人にとっては、時間を取られすぎるため、チュートリアルを解くだけで十分です。

その際、標準入力の取得については、サンプルをコピー・アンド・ペーストせず、しっかりと自分で書きましょう。 そうすれば本番で多少方法が違っても焦らず対処できます。

最低限チュートリアルをみよう

Hacker RankやAtcoderチュートリアルを、時間がなければ眺めるだけでもいいので、確認しておきましょう。

標準入力のとり方は、ローカルと本番で共通化しておこう

テストしながらコードを書いていく場合、毎回のテストを本番環境(ブラウザ)で実行するのは、時間がかかりすぎるため。 ローカルでテストするのが良いです。

標準入力を取るためのコードを本番とローカルで共通化していると、ローカルで完成したコードをそのままコピペすれば、提出できるのでおすすめです。

私がatcoderチュートリアルを解くときに、使ったテンプレートをおきます(標準入力を取る部分のみ)。 汚いコードですがあくまで参考まで。 言語はPythonです。

from pathlib import Path


def wrapp_get_input(inputs_generator):
    def get_input():
        if inputs_generator is None:
            return input().rstrip()
        else:
            try:
                return inputs_generator.__next__()
            except StopIteration:
                return None
    return get_input


p = Path(__file__)
path_to_file = p.parent.joinpath("input_data.txt")
if path_to_file.exists():
    with open(path_to_file) as f:
        inputs = f.readlines()

    inputs_generator = iter([i.rstrip() for i in inputs])
    get_input = wrapp_get_input(inputs_generator)
else:
    get_input = wrapp_get_input(None)

## ここまでで標準入力のとり方を本番環境と共通化しておく。get_inputで標準入力を取る。
## 上記は、基本的に使い回す。
## 以下は、https://atcoder.jp/contests/practice/tasks/practice_1 の場合の回答です。

a = int(get_input())
b, c = list(map(int, get_input().split(" ")))
s = get_input()

print("{} {}".format(sum([a, b, c]), s))

XFREEの無料レンタルサーバーでWordPressサイトを作る

WordPressでのwebサイト制作に勉強目的で取り組む場合、レンタルサーバーの料金は気になる点です。

本格的にサイトを運用するなら数百円の月額料金は微々たるものでしょう。しかし勉強段階では無料ですませたいところです。

この記事では、無料のレンタルサーバのXFREEにWordPressをインストールする手順を説明します。

非常に簡単なのでwebサイト制作の勉強を初めたばかりの方でもつまずく要素は無いです。

完成したwebサイトにはXSERVERの広告が入ってしまいますが、webサイト制作の勉強が目的なら特に気にならないと思います。

有名な無料レンタルサーバー(WordPress利用可)

この記事ではXFREEを使いますが、他にも有名な無料レンタルサーバーがあるので、それらも検討してみてもいいでしょう。

無料のレンタルサーバーで有名なのは、以下の3つのようです。

1. スターサーバーフリー

www.star.ne.jp2. XREA Free

www.xrea.com3. XFREE

www.xfree.ne.jp

いずれも容量が1GB以上であり、データベースも50MB以上使えるので、大量の記事を書くわけでもなければ機能面で問題なさそうです。

ネット上での評判を見る限り、はっきり優劣をつけられそうになかったので、XFREEを選びました。

XFREEは、レンタルサーバーで有名なXSERVERが提供している無料サービスです。使い方を勉強すれば、XSERVERを使うことになったときに経験が活きそうだと判断しました。

XFREEの会員登録

f:id:python-ultra-beginner:20190223170557p:plain

公式サイトの申し込み画面から申し込みます。

申し込みには、メールアドレスだけでなく、住所・電話番号などの個人情報も必要になります。

個人情報を入力して送信すると、すぐに確認メールが送られてきます。

メール中のリンクから、会員登録を進めます。

登録が完了すると、XFREEの会員ページにログインできます。

f:id:python-ultra-beginner:20190223171244p:plain

WordPressのインストール

ログイン後のページで、サーバーのタイプを選びます。

今回は、WordPressサイトの制作が目的なのでWordPressサーバーの管理パネルを選びます。

f:id:python-ultra-beginner:20190223171612p:plain

管理パネルのページから「インストール」をクリックするだけで簡単にWordPressのインストールができます。

f:id:python-ultra-beginner:20190223171811p:plain

インストールにあたって、IDとパスワードを決めます。

f:id:python-ultra-beginner:20190223172149p:plain

f:id:python-ultra-beginner:20190223172241p:plain

これで、インストールが完了しました。

WordPressの一覧・設定画面からダッシュボードに移動できます。

f:id:python-ultra-beginner:20190223172410p:plain

 ダッシュボードに移動しようとすると、ログイン画面が表示されます。

f:id:python-ultra-beginner:20190224191556p:plain

ここで先程決めたIDとパスワードを入力します。

ログインすると、ダッシュボードが表示されます。

f:id:python-ultra-beginner:20190224191644p:plain

あとはテーマやプラグインをインストールしていけば、お好みのwebサイトのできあがりです。

テーマのインストール

ここでは、ひとまず人気テーマのHestiaをインストールしてみます。

f:id:python-ultra-beginner:20190224233158p:plain

f:id:python-ultra-beginner:20190224233239p:plain

ボタンをクリックしていくだけで簡単に見た目をカスタマイズできます。

f:id:python-ultra-beginner:20190224233422p:plain

コーディング一切無しでwebサイトの完成です。WordPressがいかに便利か知ることができました。

以下の動画のような見た目のサイトができました、コンテンツは全く無いですが、作業時間は1分で済みました。

f:id:python-ultra-beginner:20190224234647g:plain

 

XAMPPでWordPressをローカル環境にインストールする方法

f:id:python-ultra-beginner:20190221184524p:plain

WordPressのサイト構築の練習をWindowsのPCで行いました。

WordPressをローカル環境にインストールする場合の定番ツールのXAMPPを使いましたので、インストール手順をまとめます。方法はWindows準拠です。

私自身は、この作業を始めるまでWordPressについて全く知らなかったので、基本的なところから書いていきます。

この作業をしたのは、2019年2月です。XAMPPの設定に関しては、やや古い情報は現状に当てはまらないものもありましたので、最新の情報をチェックしてください。

WordPressとは

WordPressとは、Webサイトの記事の作成・管理を簡単にするツールです。利用が商用でも無料です。

また、企業サイトを含めwebサイトの多くがWordPressで作られていて、実績が豊富です。現在webサイトの33%は、WordPressで作られているとのことです(2019年2月時点):Usage Statistics and Market Share of WordPress for Websites, February 2019

WordPressでは、サイトのデザインを柔軟にカスタマイズできるので、企業サイト、ブログ、ECサイトなど広範なサイトに対応できます。

ローカル環境とは

WordPressで作ったwebサイトは、自身のwebサーバーやレンタルサーバー上で稼動させることになります。

しかし、事前に手元のパソコンでwebサイトを作ってみてデザインを確認してから、サーバーにアップロードしたいこともあります。この場合、ローカル環境で作業することになります。

サーバーを本番環境(Production Environment)とみなすとき、練習用の自身のパソコンはローカル環境(Local Environment)といいます。

ローカル環境でWordPressのサイトを見るには

自身のパソコンでWordPressのサイトをつくるには、各種のソフトが必要になります。

一般には以下が必要です。

WordPressはwebサイトなのでサーバーとして動作するソフトが必要で、Apacheがよく使われます。

WordPressの記事は、データベースに保存されます。そのためデータベースを操作するソフトとしてMySQLが使われます。

PHPは、webサイトへのアクセスがあったタイミングでwebページを組み立てるのに使用されるプログラミング言語です。このWordPressそのものはPHP言語で書かれているため、その処理にはPHPインタープリタが必要です。

これらをインストールし、うまく連動して動作するような設定が必要となります。当然webサーバーでも同様です。

レンタルサーバーを使う場合には、これらのインストールは、サーバーを借りる時点で完了している場合が多いようです。一方、ローカル環境には自分でインストールする必要があります。

なぜXAMPPをインストールするのか

XAMPPは、WordPressに必要な一連のソフトを一括でインストールできるツールです。名前の由来は、cross-platform, Apache, MySQL, PHP and Perlです。

同様のツールは他にもありますが、XAMPPは利用者が多いのでネット上で調べ物をする際に都合が良いです。

今回は、XAMPPを使って必要なソフトをインストールし、その後WordPressをインストールします。

XAMPPのインストール

以下の公式サイトからインストーラーをダウンロードします。

www.apachefriends.org

f:id:python-ultra-beginner:20190221122348p:plain

 windows用のインストーラーをダウンロードします。インストーラーをダブルクリックすると、以下のダイアログが出ます。

f:id:python-ultra-beginner:20190221122218p:plain

 ウイルス対策ソフトがあると、インストールが失敗するかもしれないとのことです。おそらく問題ないので、yesで進めてください。もしインストールに失敗したらリンク先の説明を読む必要があるかもしれません。

基本的に以降もyesnextボタンをデフォルト設定のまま押していくだけです。

f:id:python-ultra-beginner:20190221122836p:plain

 この画面は、すべてのcomponentにチェックが入っているはずですが、もし外れていれば全項目にチェックを入れてください。

f:id:python-ultra-beginner:20190221123009p:plain

このインストール先を決めるところでは、デフォルト設定どおりC:\xamppにインストールしてください。インストール場所が不適切だと正常に動作しません。

f:id:python-ultra-beginner:20190221125805p:plain

この「Learn more about Bitnami for XAMPP」という項目のチェックは外してください。これは、XAMPP以外にもインストールできるソフトを紹介しているだけですので、チェックする必要はないです。

f:id:python-ultra-beginner:20190221125911p:plain

 あとは、インストール完了を待つだけです。

 

f:id:python-ultra-beginner:20190221125944p:plain
これでXAMPP Control Panelを起動できます。

XAMPPの動作確認

インストールが完了したら、「XAMPP Control Panel」というショートカットが作られているので、次回以降の起動では「XAMPP Control Panel」ショートカットアイコンから起動してください。

初回起動では、言語を設定します。選択肢に日本語はないので、「英語」を選択してください。

f:id:python-ultra-beginner:20190221142230p:plain

これでXAMPP Control Panelが表示されます。この画面から、各種のアプリケーションの起動・停止ができます。しかし、wordpressをローカルで動作させるために必要なのは、基本的にApacheMySQLの2つだけです。

f:id:python-ultra-beginner:20190221142316p:plain

startボタンを押すとアプリケーションを起動します。
起動すると、アプリケーション名がハイライトされます。

f:id:python-ultra-beginner:20190221142531p:plain

ApacheMySQLの項目が起動していると、PIDとPortが表示されています。この項目を見て、動作しているのが分かります。

終了する場合には、アプリケーションごとにStopボタンを押してください。XAMPP Control Panelを閉じても自動ではアプリケーションは終了せず起動したままです。

また、XAMPP Control Panelを終了するときには、quitボタンを押してください。画面右上の「X」ボタンをおして画面を閉じてもXAMPP Control Panelは起動したままです。

webサイトの表示とパスワードの設定

ApacheMySQLが起動している状態で、webサイトを表示してみます。この状態ですでにサーバーはローカルで動作しています。

まだWordPressはインストールしていませんが、この時点でも管理画面(phpMyAdmin)は見ることができます。

ブラウザ(ChromeFirefox)のアドレスバーにhttp://localhostと入力してください。localhostというのは、自分自身のパソコンのアドレスのことです。

f:id:python-ultra-beginner:20190221143934p:plain

 

このような画面が表示されるはずです。メニューのphpMyAdminをクリックして管理画面を表示します。

f:id:python-ultra-beginner:20190221144036p:plain

ここで、ユーザーアカウントのパスワードを設定します。パスワードを設定すると、パスワードを入力しないとMySQLphpMyAdminが使えなくなります。

基本的に、ローカル環境(自身の自宅のパソコン)では、ファイアウォールが機能していて外部からのアクセスは心配してくてもいいとは思います。
しかし、万が一に不正なアプリケーションによって、MySQLが操作されると問題なので念のためにパスワードを設定しておくと良いと思います。

User Account画面に切り替えてください。

f:id:python-ultra-beginner:20190221144624p:plain

ここでrootユーザー(全ての権限をもつユーザー)のパスワードを設定します。
インストール直後では、パスワードは「いいえ」となっています(設定されていない)。
hostnameが::1、localhost127.0.0.1となった項目がありますが、同じパスワードをこれらに使ってよいです。
「edit privilege」リンクをクリックしてパスワードを設定します。
まず、hostnameがlocalhostのものからです。

 

f:id:python-ultra-beginner:20190221144906p:plain


「パスワードを変更」項目をクリックします。パスワードを入力して、「実行」します。このパスワードは今後phpMyAdminのログインで使用します。

f:id:python-ultra-beginner:20190221155425p:plain

 これでrootユーザのパスワードを設定できました。

ログイン情報の変更: config.inc.phpの編集

ここで、このphpAdminのページを再読込すると、次のように、エラーがでるはずです。

f:id:python-ultra-beginner:20190221155629p:plain

これは、現時点でのログイン情報と設定したパスワードが一致しなくのが原因です。phpMyAdminはログイン情報を設定ファイルから読み込みます。

具体的には、C:\xampp\phpMyAdmin\config.inc.phpからです。
インストール直後では、パスワードはなかったので、config.inc.phpにもパスワードは書かれていなません。

しかし、たった今パスワードを設定したので不整合が生じました。
このエラーは、config.inc.phpを編集すれば解消されます。

C:\xampp\phpMyAdmin\config.inc.phpのファイルをエディタで開いて、編集してください。

$cfg['Servers'][$i]['auth_type'] = 'config';

$cfg['Servers'][$i]['user'] = 'root';

の部分を、

$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';

に書き換えてください。

編集前には以下のようになっていて、

f:id:python-ultra-beginner:20190221160151p:plain

編集後は、以下のようになります。

f:id:python-ultra-beginner:20190221160444p:plain

config.inc.phpの編集で使うエディタは、UTF-8 (BOM無し)に対応したものを使う

config.inc.php編集の際には「UTF-8 (BOM無し)」でファイルを編集できるエディタを使わないと、編集後のファイルを正しく読み込めないので注意。

例えば、Windowsの「メモ帳」を使ってはいけません。よくわからなければ、設定ファイルの編集には、TeraPadを使うと良いです。

この事情については、日本語版のWordPresswiki(WordPress Codex)に詳しく書かれています: 用語集 - WordPress Codex 日本語版

パスワードを使ってphpmyadminにログインする

config.inc.phpの編集が終わったら、一度XAMPP Control PanelでApacheMySQLをStopして、再びStartさせてください。

f:id:python-ultra-beginner:20190221142316p:plain

ブラウザでlocalhostのアドレスにアクセスし、再びphpMyAdminのページに移動してください。

f:id:python-ultra-beginner:20190221143934p:plain

すると、今回は、ログインページが出ます。

f:id:python-ultra-beginner:20190221162813p:plain

ここで先程決めたパスワードを入力します。ユーザー名はrootです。
これでログインした状態でphpMyAdminを表示できます。

rootユーザーのパスワードを全て設定する

先述のrootユーザのパスワードは、Host nameがlocalhostのものだけで設定しました。同じ要領でrootのユーザーのパスワードを他のHost nameでも設定します(全て同じパスワードを設定して構いません)。

すると、パスワードがrootユーザの全項目で「はい」になっているはずです。

f:id:python-ultra-beginner:20190221162940p:plain

webサイトに対してローカルからのみアクセスできるようにする

インストール直後では、Apacheサーバーの設定は、外部からもアクセスできるようになっています。

この点についても、ローカル環境(自身の自宅のパソコン)では、ファイアウォールが機能していて外部からのアクセスは心配しなくてもいいはずです。

しかし、念のためにApacheサーバーの設定も変更して外部からのアクセスができないようにします。C:\xampp\apache\confにあるhttpd.confファイルを編集してください。

編集前に、

Listen 80

となっている部分を

#Listen 80
Listen 127.0.0.1:80
Listen ::1:80

に変更します。

編集前は

f:id:python-ultra-beginner:20190221165642p:plain

編集後は

f:id:python-ultra-beginner:20190221165711p:plain

となります。

設定ファイルの変更が終わったら再び、ApacheMySQLを一度StopしてStartしてください。

WordPress用のデータベースの作成

WordPress用の記事データを保管するためのデータベースを作成します。

f:id:python-ultra-beginner:20190221172618p:plain

f:id:python-ultra-beginner:20190221173529p:plain

 

phpMyAdminにてデータベースから、
データベース名: wp1
照合順序: utf8_general_ci
としてデータベースを作ります。
照合順序というのは、データベース内のデータの検索方法のこと。日本語で文字化けしないものを選ぶため、utf8_general_ciを選びます。
データベース名は、wordpressだとわかりやすければ何でもいいです。ここではwp1とします。

f:id:python-ultra-beginner:20190221173650p:plain

作成すると、「このデータベースにはテーブルがありません」と表示されるますがWordPressインストール時に作成されるので気にしなくていいです。

wordpress日本語版のダウンロード

準備が整ったので、WordPress日本語版をダウンロードします。

ja.wordpress.org

f:id:python-ultra-beginner:20190221173920p:plain

ダウンロードしたzipファイルを解凍すると、wordpressというフォルダがあり、以下のようなファイルが入っています(バージョンが違えば多少ファイルに違いがありえます)。

f:id:python-ultra-beginner:20190221174041p:plain

このwordpressフォルダをまるごとC:\xampp\htdocsフォルダにおきます。

f:id:python-ultra-beginner:20190221174142p:plain

f:id:python-ultra-beginner:20190221174153p:plain

このように配置することで、以降は、ブラウザにhttp://localhost/wordpress/と入力するとローカル環境のWordPressにアクセスできます(XAMPP Control PanelでMySQLApacheが起動中であることが前提)。

wordpressのインストール

初めてhttp://localhost/wordpress/にアクセスした際にはWordPressのインストール手続き画面になります。

f:id:python-ultra-beginner:20190221181000p:plain

f:id:python-ultra-beginner:20190221181027p:plain

データベースに関する情報を入力します。

データベース名はphpMyAdminWordPress用に作成したデータベースの名前です。ここではwp1としていました。

パスワードは、phpMyAdminでrootユーザーに関して設定したパスワードです。

テーブル接頭辞は、わかりやすければ何でもいいですが、デフォルトのwp_で問題ないはずです。

f:id:python-ultra-beginner:20190221181332p:plain

f:id:python-ultra-beginner:20190221181418p:plain

WordPressサイトの情報を設定します。

今回は、練習目的なのでサイトの名前は適当で構いません。とりあえず、demoとしておきます。

ユーザー名はrootとします。WordPressのパスワードは、自身で設定して保管してください。

メールアドレスも練習用なので実在しないもので結構です。

f:id:python-ultra-beginner:20190221182038p:plain

これでWordPressのインストールは完了です。

ログイン画面で先程登録したパスワードを入力します。

f:id:python-ultra-beginner:20190221182142p:plain

ダッシュボード画面が表示されます。ここで各種の設定ができます。

f:id:python-ultra-beginner:20190221182158p:plain

ここまででWordPressのサイトをローカル環境に構築できました。

画面上部のメニューからダッシュボードとwebサイトを行き来できます。

f:id:python-ultra-beginner:20190221183102p:plain

サーバーを停止するには、XAMPP Control PanelからApacheMySQLをStopします。

次回、以降の作業では、

とすればWordPressでの作業に移れます。