Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Qantler interview Experince

2025年09月13日に「Dev.to」が公開したITニュース「Qantler interview Experince」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Javaでの数値処理、再帰、入出力、OOP基礎、SQLでのDB操作、HTML/JSでのWeb開発、ファイル処理、スタック実装など、システム開発に必要な幅広い基礎知識をコード例で解説。SE志望者向けの入門に最適。

出典: Qantler interview Experince | Dev.to公開日:

ITニュース解説

システムエンジニアを目指す上で、どのようなスキルが求められるのか、具体的な課題を通して学ぶことは非常に有効だ。ここで紹介されている13のプログラミングやデータベース、ウェブ開発に関する課題は、基礎的ながらも実務で必要となる多様な知識を網羅している。それぞれの課題がどのような目的を持ち、どのような技術で解決されているのかを見ていくことで、システム開発の全体像を掴むことができるだろう。

まず、プログラムが条件に基づいて判断を行う「条件分岐」の基本を見てみよう。最初の課題は、3つの整数の中から2番目に大きい数を見つけるというものだ。JavaのScannerクラスを使ってユーザーから数値を受け取り、if-else if-else文を使ってこれらの数の大小関係を比較し、論理演算子である&&(かつ)や||(または)を組み合わせて複雑な条件を表現する。例えば、「ab以上でc以下、またはab以下でc以上であれば、aが2番目に大きい」といった具合だ。このような論理的な思考は、あらゆるプログラムの基礎となる。

次に、「再帰」というプログラミング手法についてだ。2番目の課題は、与えられた数値の各桁の合計を再帰を使って計算する。再帰とは、関数が自分自身を呼び出すことで問題を解決する方法で、大きな問題を同じ構造の小さな問題に分割して処理する際に役立つ。例えば、数値123の桁の合計を求める場合、まず1の位の3を取り出し、残りの12に対して同じ処理を繰り返す。そして2を取り出し、残りの1に対して処理を繰り返し、最後に1を取り出す。数値が0になったら処理を終えるという「終了条件」を設けることで、無限ループに陥らずに正しい結果を導き出す。

3番目の課題は、特定の条件が満たされるまで処理を繰り返す「ループ処理」を示している。ユーザーから数値と制御文字(例えば「q」)をカンマ区切りで受け取り、制御文字が「q」になるまで入力された数値を合計し、入力回数をカウントし続ける。while(true)で無限ループを開始し、入力された文字が「q」であればbreak文でループを終了させることで、ユーザーとの対話的な処理を実現する。これは、ユーザーとのやり取りや、外部データから特定の条件でデータを読み込み続けるような場面で広く使われる。

4番目の課題は、ユーザーからの入力値を検証し、その中から最小値と最大値を見つけ出す。ここでは、ArrayListというデータ構造に数値を格納し、入力された数値が負ではないか、あるいは3桁以内であるかといった「入力検証」を行う。もし無効な入力があれば、エラーメッセージを表示し、その入力をリストに追加せずに次の入力を促す(continue文)。有効な数値が5つ入力された後、Collections.min()Collections.max()といった便利なメソッドを使って、リスト内の最小値と最大値を簡単に取得する。これにより、プログラムは安全にデータを受け取り、正しく処理できるようになる。

5番目の課題は、オブジェクト指向プログラミング(OOP)の重要な概念である「継承」と「メソッドのオーバーライド」を解説している。OOPは、現実世界の物事をプログラムで表現するための考え方だ。「Animal(動物)」という一般的なクラスがあり、そこから「Dog(犬)」や「Human(人間)」といったより具体的なクラスが、extendsキーワードを使って動物の特性を受け継ぐ。すべての動物は「自分が何であるかを言う(whoAmI)」という行動を持つが、それぞれのクラスでこの行動を具体的に定義し直す(オーバーライドする)ことで、犬は「私は犬です」と、人間は「私は人間です」と答えるようにする。これにより、プログラムの柔軟性が向上し、共通の振る舞いを持ちながらも個別の特性を持つオブジェクトを作成できるようになる。

6番目の課題は、Javaを用いた基本的な数値計算の例だ。ユーザーから円の半径を受け取り、その値から直径と面積を計算する。直径は半径の2倍、面積は円周率と半径の2乗を掛けたもので計算される。JavaではMath.PIという定数を使うことで、正確な円周率の値を利用できる。このような数値計算は、科学技術、ビジネス、グラフィックなど、多岐にわたるアプリケーションで基本となる技術だ。

7番目と8番目の課題は、データベースを操作するための言語であるSQL(Structured Query Language)に関するものだ。7番目の課題では、studentsテーブルとmarksテーブルという2つのテーブルを作成し、生徒情報と成績情報をそれぞれ格納する。studentsテーブルのidは「主キー(PRIMARY KEY)」として生徒を一意に識別し、marksテーブルのidstudentsテーブルのidを参照する「外部キー(FOREIGN KEY)」として2つのテーブルを関連付ける。INSERT INTO文でデータを追加し、SELECT文とJOIN句を使って関連するテーブルからデータを取得し、生徒ごとの合計点を計算したり、特定の条件を満たす生徒の数を数えたりする。8番目の課題は、marksテーブル内の各科目の点数を合計し、生徒ごとの合計点を計算する具体的なSQLクエリを示している。データベースは、大量のデータを効率的に管理し、必要な情報を素早く取り出すために、現代のシステムには不可欠な技術だ。

9番目と10番目の課題は、ウェブ開発の基礎となるHTMLとJavaScriptに関するものだ。9番目の課題では、HTML(HyperText Markup Language)を使ってウェブページ上に生徒の情報を表形式で表示する方法を示している。<table><tr>(行)、<th>(見出しセル)、<td>(データセル)といったタグを使い、データを構造化して整形された形で表示する。HTMLは、あらゆるウェブサイトの骨格を構築するための標準言語である。 10番目の課題は、HTMLフォームとJavaScriptを組み合わせて「入力バリデーション」を行う例だ。ユーザーがウェブフォームに入力したデータが適切かどうかをチェックする。フォームには成績を入力するテキストボックスと送信ボタンがあり、ユーザーが送信ボタンをクリックすると、JavaScriptのvalidate()関数が呼び出される。この関数は、入力フィールドが空でないかをチェックし、もし空であればalert()で警告メッセージを表示し、フォームの送信を中止する。これにより、ウェブアプリケーションは不正なデータが処理されるのを防ぎ、データの整合性を保つことができる。

11番目と12番目の課題は、Javaでのファイル入出力の基本を示す。11番目の課題は、ユーザーからの入力をファイルに書き込む方法だ。FileWriterクラスを使うことで、Scannerで受け取った文字列データをoutput.txtというファイルに保存する。ファイルを使い終わったら、close()メソッドで閉じる必要がある。これは、プログラムが設定やログ、他のアプリケーションと共有するデータを永続的に保存するために不可欠な処理だ。 12番目の課題は、その書き込んだファイルを読み込み、ファイル内の行数、文字数、単語数をカウントする方法だ。BufferedReaderFileReaderを使ってoutput.txtファイルを1行ずつ読み込み、各行の処理を行う。行数を数え、各行の文字数を合計し、行を空白文字で分割して単語数を合計する。ファイルの読み込みと内容解析は、データ処理やログ分析、レポート作成など、多くのシステムで頻繁に利用される機能である。

最後の13番目の課題は、「スタック」という基本的なデータ構造の実装だ。スタックは「後入れ先出し(LIFO: Last-In, First-Out)」の原則でデータを管理する。例えば、積み重ねたお皿のように、一番上に置いたお皿が一番最初に取り出される。この課題では、Javaで独自のスタッククラスを定義し、データを格納する配列、スタックの先頭を示すインデックス(top)、最大容量(capacity)を管理する。主な操作として、push(データをスタックに追加)、pop(スタックからデータを取り出す)、peek(スタックの先頭のデータを見る)があり、それぞれスタックがいっぱいの場合(オーバーフロー)や空の場合(アンダーフロー)のエラー処理も含まれる。スタックは、関数の呼び出し管理や式の評価、ウェブブラウザの「戻る」機能など、コンピューターサイエンスの様々な場面で利用される重要なデータ構造だ。

これらの13の課題を通して、プログラミング言語の基本的な文法から、データを効率的に管理するためのデータ構造、外部と情報をやり取りするためのファイル操作、大量の情報を扱うデータベース、そしてユーザーとの接点となるウェブページの作成まで、システムエンジニアとして必要とされる幅広い基礎知識とスキルの一端を学ぶことができる。これらの基礎をしっかりと理解し、実際に手を動かして経験を積むことが、より複雑なシステム開発へと進むための確かな一歩となるだろう。

関連コンテンツ

関連IT用語