paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

Django2.1入門: 初心者でも10分でWebサービスを作れる!PythonフレームワークDjangoとPaizaCloudの使い方

f:id:paiza:20180228111025p:plain
(English article is here)

f:id:paiza:20151217152725j:plainこんにちは、吉岡(@)です。

いま最も熱いプログラミング言語の一つといえば、Pythonですよね。最近は特に機械学習向けのライブラリが充実していることから、人気が伸びています。

Pythonはスクリプト言語で、一行でもコードを書けばその場ですぐに動かすことができるため、プログラミング初心者の学習にも最適です。Pythonはアメリカの大学で最も多く教えられている言語である…といったデータもあります。

このPythonを使ってWebサービスやWebアプリケーションを作るときに必要なWebアプリケーションフレームワークには、Django, Pyramid, Flask, Bottleなどがありますが、今のところ最もメジャーなのがDjango(ジャンゴ)です。

Djangoには、Web開発に便利なルーティング、MVC、ORマッパー、ジェネレータ等の機能が含まれており、Djangoの流儀にしたがって作れば、自然とわかりやすい構造のWebアプリケーションが作れるようになっています。

最新版のDjango2.1は、2018年8月にリリースされました。Pythonを使うときは、Python2系とPython3系のどちらを使うかで悩んだり、両方の情報があって混乱したりしがちですが、Django2ではPython2のサポートが打ち切られて、利用できるのはPython3のみなので迷うことはありません。環境の整っている今なら、Djangoの勉強が始めやすいかと思います。

ただ、いざ開発で使おうとすると、Python、Django、データベースを動かすための環境構築やデプロイなどなどが必要になってきます。これが意外と厄介で、手順通りにインストールしたつもりでも、OSやバージョン、ほかのソフトウェアなど、さまざまな原因でエラーが出たりして失敗することもあります。

そこで、今回はブラウザだけでDjangoを使ったWeb開発ができるPaizaCloud Cloud IDEを使ってみます。

PaizaCloudは自由度が高く、さまざまなフレームワークや言語を使ったWeb開発が、初心者でも簡単にできますので、最短でDjangoを使ったWeb開発が始められます。開発環境がクラウド上で動作しているので、自分でサーバなどを用意しなくても、作ったWebサービスをその場で公開することも可能です!

今回は、まずは簡単なプログラムから始めて、ToDoリストを作成・編集できるサービスを作ってみましょう。2018年9月時点で最新のDjango2.1を使った手順で作り方を紹介していきます。手順に沿って進めれば、初心者でも10分程度で作れるかと思いますのでぜひ挑戦してみてください。

PaizaCloud Cloud IDEを使う

それでは、始めていきましょう。

PaizaCloud Cloud IDEのサイトはこちらです。

https://paiza.cloud/

メールアドレスなどを入力して登録すると、登録確認メールが送られてきます。GitHubやGoogle(Gmail)ログインを利用すると、ボタン一つで登録することもできます。

サーバを作る

開発環境となるサーバを作りましょう。

f:id:paiza:20171213234155p:plain

「新規サーバ作成」ボタンを押して、サーバ作成画面を開きます。

データベースを利用できるように、phpMyAdmin, MySQLをクリックして「新規サーバ作成」ボタンを押します。

f:id:paiza:20180228111202p:plain

3秒程度で、Djangoを使える開発環境がブラウザ上にできあがります。

f:id:paiza:20180228120822p:plain

プロジェクト作成

それでは、実際にDjangoを使ってWebアプリケーションを作成してみましょう。

Djangoを使ったWebアプリケーションの作成には、Python、Django、データベース(MySQL, SQLite)等の設定が必要ですが、PaizaCloudでは開発環境が既に用意されているので、すぐにサービス開発を始められます。

Djangoでは、アプリケーション作成環境をプロジェクトと呼ばれる単位で管理します。というわけで、まずはプロジェクトを作成しましょう。

プロジェクトの作成は、"django-admin startproject"というコマンドを使います。

PaizaCloudでは、ブラウザ上でコマンドを入力するための「ターミナル」を使うことができます。

画面左側の「ターミナル」のボタンをクリックしましょう。

f:id:paiza:20171213234317p:plain

ターミナルが起動しますので、"django-admin startproject プロジェクト名"のようにコマンドを入れます。

ここでは、プロジェクト名は"mysite"としておきます。"django-admin startproject mysite"とコマンドを入れて、エンターキーを押します。

$ django-admin startproject mysite

f:id:paiza:20180228111313p:plain

画面左側のファイルファインダを見ると、"mysite"というディレクトリが作られています。フォルダをクリックして、中を見てみましょう。

f:id:paiza:20180228111355p:plain

Djangoプロジェクトで利用するファイルが作られています。

ファイルの編集

PaizaCloudでDjangoを動作させる場合、settings.pyというファイルで設定が必要になります。

ファイルの編集は、画面左側のファイルファインダからファイルを選択してダブルクリックします。

"mysite/mysite/settings.py"を開いてみましょう。

f:id:paiza:20180228111523p:plain

このファイルの"ALLOWED_HOSTS = []" を、以下のように書き換えます。(この設定で、localhost以外のHost名で接続できる設定にします。この設定をしても、"127.0.0.1"で待ち受けているサーバにはPaizaCloudにログインしているユーザ以外からは接続できません。)

mysite/mysite/settings.py:

ALLOWED_HOSTS = ['*']

設定ができたら、"保存"ボタンを押して保存します。

アプリケーションサーバの起動

作成したプロジェクトは、もうこの時点で動かすことができます。実際に動かしてみましょう!

"cd mysite"コマンドでディレクトリを移動したあと、"python3 manage.py runserver"とコマンドを入れてみます。

$ cd mysite
$ python3 manage.py runserver

f:id:paiza:20180228111743p:plain

画面の左側に、"8000"と書かれたボタンが追加されました。

f:id:paiza:20180216005220p:plain

Djangoの開発環境では、8000番ポートでサーバが起動します。PaizaCloudでは、この8000番ポートに対応したブラウザ起動ボタンを自動で追加しています。

ボタンをクリックすると、ブラウザ(PaizaCloudの中で動くブラウザ)が起動して、Djangoについてのページが表示されました!

f:id:paiza:20180228111912p:plain

もし以下のような"DisallowedHost at /, Invalid HTTP_HOST header"というエラーメッセージが表示される場合は、"mysite/mysite/settings.py"で "ALLOWED_HOSTS = ['*']"と設定されていることを確認してください。

f:id:paiza:20180228111834p:plain

なお、DjangoのサーバはHTTPで動作していますが、PaizaCloudではこれをHTTPSに変換しています。また、サーバはlocalhostで動作していますが、PaizaCloudでは"https://localhost-サーバ名.paiza-user.cloud:ポート番号"というURLでlocalhostに接続できるようになっています。

アプリケーションの作成

Djangoでは、プロジェクトの中にサブディレクトリとしてアプリケーションを作成します。こうすることで、1つのプロジェクトで複数のアプリケーションを管理できるようになっています。

では、アプリケーションを作成してみましょう。アプリケーションの作成は"python3 manage.py startapp"というコマンドを使います。

ここでは、"todo"という名前でアプリケーションを作成します。

ターミナルを開き、プロジェクトディレクトリ(mysite)で以下のコマンドを実行して、アプリケーションを作成しましょう。

$ python3 manage.py startapp todo

f:id:paiza:20180228112031p:plain

ディレクトリと、アプリケーションの雛形となるファイルが作成されました。ファイル管理ビューで確認してみます。 f:id:paiza:20180228112309p:plain

メッセージの表示

まずは、このアプリケーションで何かメッセージを表示させてみたいと思います。

ページの表示は、"mysite/todo/views.py"ファイルでしますので、このファイルを編集してみましょう。

ファイルの編集は、画面左側のファイルファインダからファイルを選択してダブルクリックします。

"mysite/todo/views.py"を開いてみましょう。

f:id:paiza:20180228112428p:plain

このファイルを以下のように編集し、"Hello Django World"と表示するプログラムを作成します。

mysite/todo/views.py:

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello Django world!")

f:id:paiza:20180529103538p:plain

編集したら、「保存」ボタンを押すか、「Command-S」または「Ctrl-S」で保存します。

Djangoではこのように、それぞれのページを表示するためのアクションをビュー関数として作成し、表示する内容を関数で返します。単純にテキストを表示する場合は、"HttpResponse()"関数で表示する内容を指定します。

また、URLとビュー関数の対応(URLルーティング)を"urls.py"というファイルで指定します。

ToDoアプリのURLルーティングファイルは、"mysite/todo/urls.py"というファイルになります。

このファイルを作成しましょう。PaizaCloudのファイル管理ビューで"mysite/todo"フォルダを右クリックし、"新規ファイル"を選択します。

f:id:paiza:20180228112549p:plain

ファイル作成ダイアログが表示されるので、"urls.py"という名前でファイルを作成します。

f:id:paiza:20180228112619p:plain

作成した"mysite/todo/urls.py"を以下のように編集します。

mysite/todo/urls.py:

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

このように、urlpatternsというリストの中でpath()関数を呼び出して、URLとビュー関数、およびルーティングの名前を指定します。

ここでは、URLは''(空文字列)、ビュー関数はviews.pyのindex関数、ルーティングの名前も関数名と同じ'index'としておきます。

次に、プロジェクトの中でこのアプリケーションが開けるように、プロジェクトのURLルーティングを設定しましょう。

プロジェクト全体のURLルーティングは"mysite/mysite/urls.py"ファイルになりますので、このファイルを編集します。

mysite/mysite/urls.py:

from django.urls import include, path
from django.contrib import admin
from django.views.generic import RedirectView

urlpatterns = [
    path('todo/', include('todo.urls')),
    path('admin/', admin.site.urls),
    path('',  RedirectView.as_view(url='/todo/')),
]

urlpatternsの一行目では、URLパス"/todo"で始まるリクエストのルーティング設定を、mysite/todo/urls.pyで行うことを指定します。

3行目では、トップページを"/todo"にリダイレクトするように設定しています。

"RedirectView.as_view()"関数でリダイレクト先を設定しています。RedirectViewを利用できるように、3行目でimportしています。

そして、プロジェクトの設定ファイルでこのアプリケーションを利用するように設定するため、設定ファイル("mysite/mysite/settings.py")で、INSTALLED_APPSに"todo.apps.TodoConfig"を追加します。

mysite/mysite/settings.py

INSTALLED_APPS = [
    'todo.apps.TodoConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

これで、アプリケーションの設定ができました。実際に表示させてみましょう。

サーバが起動していない場合は、起動します。

$ python3 manage.py runserver

画面左の8000と表示されているブラウザアイコンをクリックしましょう。

f:id:paiza:20180228113053p:plain

作成したメッセージが表示されました! 作成したWebアプリケーションがちゃんと動いていますね!

データベースを作成

今度は、このアプリケーションでデータベースを使ってみましょう。

DjangoではデフォルトでSQLiteが設定されており、特に設定などをすることなく利用できます。

今回は、本格的なデータベースMySQLを利用する設定にしたいと思います。(SQLiteをそのまま利用する場合は、このMySQLの設定はスキップできます。)

データベースサーバ(MySQL)はサーバ作成時に設定したので起動していますが、設定していない場合は、以下のように起動しておきましょう。

$ sudo systemctl enable mysql
$ sudo systemctl start mysql

PaizaCloudでは、このようにroot権限でパッケージやサービスをインストールすることも可能です。

まずはMySQL上に、このアプリケーションで使うデータベースを作成したいと思います。

ここでは、mysqlコマンドを使って、"mydb"というデータベースを作ります。

以下のようなコマンドを実行しましょう。

$ mysql -u root
create database mydb;

f:id:paiza:20180216010049p:plain

データベースが作成できました。

次に、アプリケーションでこのデータベースを使うように設定しましょう。

データベースの設定は"mysite/mysite/settings.py"というファイルで行います。

以下のようにDATABASESの設定を変更することで、データベースエンジンをSQLiteからMySQLに変更できます。MySQLを利用するため、"import pymysql", "pymysql.install_as_MySQLdb()"も忘れずに追加しておきましょう。

mysite/mysite/settings.py:

# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases
import pymysql
pymysql.install_as_MySQLdb()

DATABASES = {
#    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#    }
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

テーブル、モデル等の作成

次に、データベーステーブルを作成したいと思います。

Djangoでは、テーブル作成はマイグレーションファイルでやります。

ファイルにテーブルの構造を明示的に記述することで、テーブルの構造の確認、再作成、変更、ロールバックなどが簡単になり、管理しやすくなります。

では、マイグレーションファイルを作成してみます。

Djangoでは、テーブルとフィールドをモデルとして記述しましょう。これにより、プログラムからテーブルのフィールドを変数のように扱うことが可能となります。

以下のように、"mysite/todo/models.py"でモデルを作成します。

mysite/todo/models.py:

from django.db import models


class Post(models.Model):
    body = models.CharField(max_length=200)

ここでは、Postという"post"テーブルに対応するモデルクラスを作成し、その中で"body"というテキストフィールドを作成しています。

次に、以下のようにコマンドを実行して、モデルからマイグレーションファイルを作成しましょう。

$ python3 manage.py makemigrations todo

次に、作成したマイグレーションファイルを実行します。

$ python3 manage.py migrate

テーブルが作成されました。作成したデータベーステーブルのデータは、phpMyAdminでも確認できます。

PaizaCloudのブラウザ上で"http://localhost/phpmyadmin/"と入れてみましょう。

f:id:paiza:20180228120501p:plain

管理サーバの利用

Djangoでは、データベースをブラウザから管理する機能が組み込まれていますので利用してみましょう。

まず、管理用アカウントを以下のように作成します。

$ python3 manage.py createsuperuser
Username: admin
Email address: admin@example.com
Password: **********
Password (again): *********
Superuser created successfully.

また、管理サーバから作成したテーブルに接続できるように設定を行います。

mysite/todo/admin.py:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

管理サーバに接続してみましょう。PaizaCloudの中のブラウザを起動し、"http://localhost:8000/admin/"を開きます。

f:id:paiza:20180228114500p:plain

ログイン画面が表示されるので、作成した管理アカウントでログインします。

f:id:paiza:20180228114646p:plain

管理画面が表示されました!ここでテーブルの編集などもできます。

f:id:paiza:20180228114918p:plain

ルーティング設定

ToDoリストでは、一覧表示、ToDoの追加、ToDoの削除の3つの操作を行います。

それぞれ、以下のようなルーティングを割り当てます。

メソッド パス名 操作
GET /todo ToDo一覧表示
POST /todo/create ToDo追加
POST /todo/<int:id>/delete ToDo削除

ルーティング設定は"mysite/todo/urls.py"で行います。トップページは"/todo"にリダイレクトする設定にしておきましょう。

以下のように"mysite/todo/urls.py"を設定します。

mysite/todo/urls.py:

from django.urls import path

from . import views

app_name = 'todo'

urlpatterns = [
    path('', views.index, name='index'),
    path('create', views.create, name='create'),
    path('<int:id>/delete', views.delete, name='delete'),
]

app_nameでは、todoアプリケーションの名前('todo')を指定します。

urlpatternsでは、1行目では'/todo'パスのビュー関数をmysite/views.pyのindex関数に、2行目では'/todo/create'パスのビュー関数をmysite/views.pyのcreate関数に、3行目では'/todo/<int:id>/delete'パスのビュー関数をmysite/views.pyのdelete関数に、それぞれ設定しています。<int:id>のように指定することで、この部分をプログラムから取得することができます。たとえば、"/todo/1"の場合、"1"をidとして取得できます。

ビュー設定

ルーティングから呼び出されるビューのコードを記述しましょう。

一覧表示、追加、削除に対応する、index()、create()、delete()関数を書きます。

mysite/todo/views.py

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect, HttpResponse
from django.urls import reverse
from .models import Post
from .forms import PostForm

# Create your views here.
def index(request):
    posts = Post.objects.all()
    form = PostForm()
    context = {'posts': posts, 'form': form, }
    return render(request, 'todo/index.html', context)
    
def create(request):
    form = PostForm(request.POST)
    form.save(commit=True)
    return HttpResponseRedirect(reverse('todo:index'))

def delete(request, id=None):
    post = get_object_or_404(Post, pk=id)
    post.delete()
    return HttpResponseRedirect(reverse('todo:index'))

コードを見ていきましょう。4,5行目では、postテーブルのモデル、フォームをあらわすクラスをmodels.py, forms.pyからimportします。

一覧表示を行うindex()関数では、PostモデルのPost.objects.all()関数を呼び出して、全てのToDoをデータベースから取得します。

取得したデータはcontext辞書に、'posts'という名前のキーで設定します。これにより、HTMLテンプレートからpostsという変数でToDo一覧が参照できるようになります。formでは、送信フォーム用空のPostFormオブジェクトを'form'キーに割り当てます。

追加をおこなうcreate()関数では、送信されたパラメータからPostFormオブジェクトformを作成し、form.save()でデータベースに保存します。そして'/todo'にリダイレクトして一覧表示します。

HttpResponseRedirect()関数でリダイレクトを行います。reverse()関数を利用することで、ルーティングの名前からリダクレクト先URLに変換します。

ToDo削除を行うdelete()メソッドでは、get_object_or_404関数を呼び出して、Todo ID(id)に対応するオブジェクトを取得します。post.delete()で削除し、'/todo'にリダイレクトします。

HTMLテンプレートの作成

次に、HTMLテンプレートです。HTMLテンプレートはHTMLファイルにコードを埋め込んで記述します。

ビューは1ファイルに記述してもいいのですが、複数のページに共通の内容は共通のレイアウトファイルを用意した方が便利なので、レイアウトファイルを作成したいと思います。

レイアウトファイルは"mysite/todo/templates/todo/base.html"という名前で作成します。

"mysite/todo"フォルダを右クリックして「新規ディレクトリ」を選び、"templates"ディレクトリを作成します。

"mysite/todo/templates"フォルダを右クリックして「新規ディレクトリ」を選び、"todo"ディレクトリを作成します。

そして、"mysite/todo/templates/todo"フォルダを右クリックして「新規ファイル」を選び、"base.html"ファイルを作成します。

作成したファイルは以下のように記述します。

mysite/todo/templates/todo/base.html:

{% load staticfiles %}
<!DOCTYPE html>
<html>
    <head>
        <title>Todo List</title>
        <!-- CSS And JavaScript -->
        <link rel="stylesheet"
            href="//fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic">
        <link rel="stylesheet"
            href="//cdn.rawgit.com/necolas/normalize.css/master/normalize.css">
        <link rel="stylesheet"
            href="//cdn.rawgit.com/milligram/milligram/master/dist/milligram.min.css">
        <link rel="stylesheet"
            href="{% static 'css/todo.css' %}">
    </head>
    <body>
        <div class="container">
            {% block content %}
            {% endblock %}
        </div>
    </body>
</html>

見栄えがよくなるように、シンプルなMilligramという簡単なCSSフレームワークを設定しておきました。

Milligramでは、クラス名を書かなくてもある程度HTMLをきれいに表示できます。

bodyタグの中では"{% block content %}{% endblock %}"と書いてあります。この部分が、個別のページのHTMLファイルで置き換える部分です。

それでは、ToDo一覧表示と、ToDo追加、削除のためのHTMLファイルを"mysite/todo/templates/todo/index.html"という名前で作成しましょう。

"mysite/todo/templates/todo"フォルダを右クリックして「新規ファイル」を選び、"index.html"ファイルを作成します。

mysite/todo/templates/todo/index.html:

{% extends 'todo/base.html' %}

{% block content %}
    <h1>Todo List</h1>

    {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
    <form action="{% url 'todo:create' %}" method="post">
        {% csrf_token %}
        <!-- Todo Name -->
        <div class="form-group">
            <label for="todo" class="col-sm-3 control-label">Todo</label>
            <div class="col-sm-6">
                {{ form.body }}
            </div>
        </div>

        <!-- Add Todo Button -->
        <div class="form-group">
            <div class="col-sm-offset-3 col-sm-6">
                <button type="submit" class="btn btn-default">
                    <i class="fa fa-plus"></i> Add Todo
                </button>
            </div>
        </div>

    </form>
    

    <!-- Current Todos -->
    <h2>Current Todos</h2>
    <table class="table table-striped todo-table">
        <thead>
            <th>Todos</th><th>&nbsp;</th>
        </thead>

        <tbody>
            {% for post in posts %}
                <tr>
                    <!-- Todo Name -->
                    <td>
                        <div>{{ post.body }}</div>
                    </td>
                    <td>
                        <form action="{% url 'todo:delete' post.id %}" method="post">
                            {% csrf_token %}
                            <button>Delete</button>
                        </form>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    
{% endblock %}

編集できたら、保存ボタンを押してファイルを保存します。

ファイルを見ていきましょう。"{% extends 'todo/base.html' %}"は、レイアウトファイル('todo/base.html')を利用することを指定しています。

{% block content %}から{% endblock content %}の部分では、このページ独自の内容を記述します。この中身でレイアウトファイル("todo/base.html")の"{% block content %}{% endblock %}"部分を置き換えます。

最初のフォームは、ToDo追加のためのフォームです。DjangoではCSRF対策のため、フォームには"{% csrf_token %}"と記述する必要があります。

inputタグは、PostFormオブジェクトのフィールドに対応する名前を、"{{ form.body }} "と呼び出して生成できます。

ここでは、'<input type="text" name="body" id="id_body" maxlength="200">'というようなinputフォームを生成します。

フォームの送信先は"POST /todo"に設定します。

ToDo一覧では、postsリストでToDo一覧オブジェクトにアクセスできます。"{% for post in posts %} ... {% endfor %}" で、postsリストからToDoオブジェクトを1つずつ取得してpost変数に設定します。

「{{ post.body }}」も、Django HTMLテンプレートの記法で「{{}}」の中身を表示します。ここでは、Todoのbodyプロパティを取得することでデータベースのbodyカラムの値を表示します。

"Delete"ボタンでは、"POST /todo/{id}/delete"を呼び出すことでToDoを削除します。

モデルフォーム

送信フォームを扱うため、モデルフォームクラスPostFormを作成します。

ファイル"mysite/todo/forms.py"を作成し、以下のように編集します。

mysite/todo/forms.py:

from django import forms

from .models import Post

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ('body',)

fieldsでは、送信されるフォームのフィールドを指定します。

動作確認

プログラムは以上です。実際に動かしてみましょう。

ブラウザアイコン(8000)をクリックして、PaizaCloud内のブラウザを起動します。

最初はToDoはないのですが、"Todo List"ページが表示されています。

ToDoの追加や削除をしてみましょう。

f:id:paiza:20180228120124p:plain

動きましたね!Django2.1で作ったToDoリストの完成です!

なお、PaizaCloudの無料プランでは、一定時間が経つとサーバは停止します。継続的に動かしたい場合は、ベーシックプランへアップデートしてください。

詳しくはこちら https://paiza.cloud

まとめ

というわけで、PaizaCloudを使って、開発環境などを構築することなく、ブラウザだけでDjango2.1のWebアプリケーションを作ってみました。

すぐに作れるので、みなさんもぜひ試してみてください!

(何かサービスができたらpaiza( @paiza_official )まで教えてくれるとうれしいです!)


PaizaCloud」は、環境構築に悩まされることなく、ブラウザだけで簡単にウェブサービスやサーバアプリケーションの開発や公開ができます。 https://paiza.cloud


paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

paizaのスキルチェック