浅野直樹の学習日記

この画面は、簡易表示です

平成30年司法試験予備試験成績通知(論文)

平成30年司法試験予備試験論文の成績通知を公開します。過去の結果は以下のリンクにあります。

 

 

試験科目 順位ランク
憲法 B
行政法 F
民法 A
商法 A
民事訴訟法 C
刑法 D
刑事訴訟法 F
一般教養科目 D
法律実務基礎科目 D
合計点 231.78
順位 619

 

再現答案も過去の記事にありますので、ご参考になれば幸いです。

 



平成30年司法試験予備試験成績通知(短答)

平成30年司法試験予備試験短答の成績通知を公開します。過去の結果は以下のリンクです。

 

 

 

試験科目 得点
憲法 25
行政法 21
民法 18
商法 12
民事訴訟法 16
刑法 19
刑事訴訟法 20
一般教養科目 51
合計点 182
順位 839

 

法律科目がもっとできたほうがいいですね。



『初めてのJavaScript(第3版 )』非公式練習問題解答例

『初めてのJavaScript(第3版 )』非公式練習問題 – 浅野直樹の学習日記で作った『初めてのJavaScript(第3版 )』非公式練習問題の解答例です。自分で学習しながら作ったものなので不備があるかもしれません。

 

2章

練習問題

ex02-08-1のjsファイルを次のように書き加えます。


$(document).ready(function() {
  'use strict';
  paper.install(window);
  paper.setup(document.getElementById('mainCanvas'));

  let tool = new Tool();

  tool.onMouseDown = function(event) {
    let c = Shape.Circle(event.point.x, event.point.y, 80);
    c.fillColor = 'blue';
    let text = new PointText(event.point.x, event.point.y);
    text.justification = 'center';
    text.fillColor = 'yellow';
    text.fontSize = 20;
    text.content = 'hello world';

  };
});

 

3章

練習問題1

次のようなjsファイルを作ります。


const date = new Date();
let message1 = "今日は" + date.getFullYear() + "年" + (date.getMonth()+1) + "月" + date.getDate() + "日です。\n"
date.setDate(date.getDate()+20);
let message2 = "20日後は" + date.getFullYear() + "年" + (date.getMonth()+1) + "月" + date.getDate() + "日です。\n"
console.log(message1, message2);

 

練習問題2

次のようなjsファイルを作ります。


const b4 = [
  { 名前: "ルビー", 硬度: 9 },
  { 名前: "ダイヤ", 硬度: 10 },
  { 名前: "トパーズ", 硬度: 8 },
];
b4[99] = { 名前: "象牙", 硬度: 2.5 };
let message = b4[b4.length - 1].名前 +"の硬度は" + b4[b4.length - 1].硬度 +"です。";
console.log(message);

 

4章

練習問題

次のように、challengeという変数を新たに作り、whileにとどまる条件を変えて、手持ち資金が0になれば再挑戦するようにします。


'use strict';
function rand(m, n) {
  return m + Math.floor((n - m + 1)*Math.random());
}

function randFace() {
  return ["crown", "anchor", "heart", "spade", "club", "diamond"]
  [rand(0, 5)];
}

let funds = 50;
let round = 0;
let challenge = 1;

while(funds < 100) { 
  round++;
  console.log(`第${round}ラウンド: `);
  console.log(`  手持ち資金: ${funds}`);
  let bets = { crown: 0, anchor: 0, heart: 0,
               spade: 0, club: 0, diamond: 0 };
  let totalBet = rand(1, funds);
  if(totalBet === 7) {
    totalBet = funds;
    bets.heart = totalBet;
  } else { 
    let remaining = totalBet;
    do {
      let bet = rand(1, remaining);
      let face = randFace();
      bets[face] = bets[face] + bet;
      remaining = remaining - bet;
    } while(remaining > 0)
  }
  funds = funds - totalBet;
  console.log(`  賭け金: ${totalBet}(` +
         Object.keys(bets).map(face => `${face}: ${bets[face]}`).join(', ') +
         ")");

  const hand = [];
  for(let roll = 0; roll < 3; roll++) {
    hand.push(randFace());
  }
  console.log(`  出目: ${hand.join(', ')}`);

  let winnings = 0;
  for(let die=0; die < hand.length; die++) { let face = hand[die]; if(bets[face] > 0) winnings = winnings + bets[face];
  }
  funds = funds + winnings;
  console.log(`  払戻金: ${winnings}`);
  if (funds <= 0) {
    funds = 50;
    round = 0;
    challenge++;
  }
}

console.log(`  残金: ${funds}`);

console.log(challenge + "回目の挑戦で意気揚々と船に戻りました。");

 

5章

練習問題

例えば以下のようにします。


const nums = [ 3, 5, 15, 7, 5 ];
let n, i=0, j=0;
while(i<nums.length && (n = nums[i++]) % 2 ) {
  console.log(`奇数を発見:${n}`);
  j++;
}
if (i !== j) {
  console.log(`偶数を発見:${n}`);
}
console.log(`未チェックの数字の個数:${nums.length-i}`);

 

6章

練習問題

例えば次のようなjsファイルを作ります。


const asano = { 名前: "浅野" };

function update(birthYear, occupation, address) {
   this.誕生年 = birthYear;
   this.職業 = occupation;
   this.居住地 = address;
}

console.log(asano);

update.call(asano, 1982, "塾講師", "京都府");
update.apply(asano, [1982, "塾講師", "京都府"]); // この行のapplyか上の行のcallのどちらか1つでよい。
console.log(asano);

const updateAsano1982 = update.bind(asano, 1982);
updateAsano1982("プログラマー", "東京都");
console.log(asano);

 

7章

練習問題

オブジェクトのプロパティを書き換えた場合にはスコープから外れても値が元に戻りません(6.3を参照)。


function update(birthYear, occupation, address) {
   this.誕生年 = birthYear;
   this.職業 = occupation;
   this.居住地 = address;
}

{ /* 外側のブロックの始まり */
  let asano = { 名前: "浅野", 誕生年: 1982, 職業: "塾講師", 居住地: "京都府"};
  console.log(asano); 
  { /* 内側のブロックの始まり */
    update.call(asano, 1982, "塾講師", "東京都");
    console.log(asano);
  } /* 内側のブロックの終わり */
  console.log(asano);
} /* 外側のブロックの終わり */
console.log(typeof asano);

 

8章

練習問題1

以下のようにします。


let arr = [{ name: "Suzanne" }, { name: "Jim" },
	     { name: "Trevor" }, { name: "Amanda" }];
arr.sort((a, b) => a.name > b.name);  // nameでソート
arr.sort((a, b) => a.name.length > b.name.length); //文字数でソート
console.log(arr);

 

練習問題2

以下のようにします。


function 記号表現に変換する(カード) {
  const マーク名_絵文字
	  = { 'ハート': '♡', 'クローバー': '♧', 'ダイア': '♢', 'スペード': '♤' };
  const 数字からAJQK = { 1: 'A', 11: 'J', 12: 'Q', 13: 'K' };
  for(let i=2; i<=10; i++) 数字からAJQK[i] = i;
  return マーク名_絵文字[カード.マーク]+数字からAJQK[カード.数字];
}


const カードの束 = [];
for(let マーク of ['ハート', 'クローバー', 'ダイア', 'スペード']) // 全カードを生成
   for(let 数字=1; 数字<=13; 数字++) カードの束.push({ マーク, 数字}); 

let 選択されたカード_記号表現 
    = カードの束.filter(カード => カード.マーク === 'スペード' && (カード.数字 >= 10 || カード.数字 === 1)).map(記号表現に変換する);
console.log(選択されたカード_記号表現);

練習問題3

次のようにします。


const words = ["Beachball", "Rodeo", "Angel",
	       "Aardvark", "Xylophone", "November", "Chocolate",
	       "Papaya", "Uniform", "Joker", "Clover", "Bali"];
const longWords = words.filter(word => word.length > 6);
let result = longWords.join(' ');
console.log(result);

const 単語リスト
	= ["ビーチボール", "ルービックキューブ", "ブタペスト", "トロッコ",
	   "コンゴ", "ゴースト", "トーラス", "スマート", "トンガ",
	   "ガラパゴス", "ストリート", "トーマス", "ストレッチ",
	   "チベット", "トキ", "キツツキ", "キリン"];
const 長い単語 = 単語リスト.filter(単語 => 単語.length >= 5);
let 結果 = 長い単語.join(' ');
console.log(結果);

 

9章

練習問題

例えば以下のようにします。


class Vehicle { 
  constructor() {
    this.passengers = [];
    console.log("Vehicleが生成された");
  }
  addPassenger(p) { 
    this.passengers.push(p);
    console.log(`${p}が${this.constructor.name}に乗り込み、今${this.passengers.length}人乗っています。`);
  }
}

class Car extends Vehicle { 
  constructor() {
    super();
    this.capacity = 5; 
    console.log("Carが生成された");
  }
  addPassenger(p) {
    Vehicle.prototype.addPassenger.call(this, p);
    if (this.capacity - this.passengers.length < 0) {
      console.log('定員オーバーです');
      return;
    }
    console.log(`あと${this.capacity - this.passengers.length}人です`);
  }
}

const v = new Vehicle();
v.addPassenger("太郎");
v.addPassenger("花子");

const c = new Car();
c.addPassenger("景子");
c.addPassenger("ミドリ");
c.addPassenger("一郎");
c.addPassenger("二郎");
c.addPassenger("三郎");
c.addPassenger("四郎");
c.addPassenger("五郎");

 

10章

練習問題

次のようにします。


const u1 = { name: '和洋' };
const u2 = { name: '花子' };
const u3 = { name: '涼子' };
const u4 = { name: '哲人' };

const userRoles = new Map();

const rolesU1 = new Set();
rolesU1.add("ユーザー");
userRoles.set(u1, rolesU1);

const rolesU2 = new Set();
rolesU2.add("管理者");
userRoles.set(u2, rolesU2);

const rolesU3 = new Set();
rolesU3.add("ユーザー");
rolesU3.add("管理者");
userRoles.set(u3, rolesU3);

const rolesU4 = new Set();
userRoles.set(u4, rolesU4);

for (let [u, r] of userRoles.entries()) {
  let allRoles = [];
  for (let value of r.values()) {
    allRoles.push(value);
  }
  console.log(`${u.name}: ${allRoles}`);
}

11章

練習問題

次のようにします。


const email = "jane@doe.com;

function validateEmail(email) {
  return email.match(/@/) ? 
    email :
    new Error(`無効なメールアドレスです:${email}`);
}

try {
  const validatedEmail = validateEmail(email);
  console.log(validatedEmail);
  if(validatedEmail instanceof Error) {
    console.error(validatedEmail.message);
  } else {
   console.log(`正しい形式のアドレス:${validatedEmail}`);
  }
} catch(err) {
  console.error(`エラー:${err.message}`);
} finally {
  console.log("この行はいつも実行される");
}

 

12章

練習問題

次のようにします。


function* interrogate() { 
  const name = yield "お名前は?";
  if (!name) {
    return "お名前がないので終了します。";
  }
  const color = yield "お好きな色は何ですか?";
  return `${name}さんの好きな色は${color}だそうですよ。`;
}
const it = interrogate();
console.log(it.next());
console.log(it.next('')); 
console.log(it.next('緑'));
console.log(it.next()); 

 

13章

練習問題1

これは色がとばされます。


setInterval(function() { 
   document.querySelector('.rainbow')
      .style['background-color'] = getNextRainbowColor();
}, 500); 

setInterval(function() { 
   getNextRainbowColor();
}, 800); 

const getNextRainbowColor = (function() {
  const colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'];
  let colorIndex = -1;
  return function() {
    if(++colorIndex >= colors.length) colorIndex = 0;
    return colors[colorIndex];
  };
})();

 

これは色がとばされません。


const rainbowIterator = getRainbowIterator();
setInterval(function() {
  document.querySelector('.rainbow')
    .style['background-color'] = rainbowIterator.next().value;
}, 500);

setInterval(function() {
  getRainbowIterator();
}, 800);

function getRainbowIterator() {
  const colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'];
  let colorIndex = -1;
  return {
    next() {
      if(++colorIndex >= colors.length) colorIndex = 0;
      console.log("in iterator: "+colors[colorIndex])
      return { value: colors[colorIndex], done: false };
    }
  };
}

 

練習問題2

例えば次のようにします。


function fibonacci(m, n) {
  console.log(n);
  if (n > 10000) {
    return;
  }
  o = n;
  p = m + n;
  fibonacci(o, p);
}

fibonacci(1, 1);

 

13章

練習問題

例えば次のようにします。


function countdown(seconds) {
  const timeoutIds = [];
  for(let i=seconds; i>=0; i--) {
    timeoutIds.push(setTimeout(function() {
      if(i===13) {
        timeoutIds.forEach(clearTimeout);
	  const err = new Error(`${i}という数は不吉過ぎます`);
        console.error(err);
        return;
      }
     if(i>0) console.log(i + '...');
     else {
      console.log("GO!");
      launch(10000);
      }
     }, (seconds-i)*1000))
   }
}

function launch(period) {
  const timeoutId = setTimeout(function() {
    const err = new Error('時間切れです。');
    console.error(err);
  }, 4000);
  if(Math.random() < 0.5)
  return;
  console.log("発射!");
  setTimeout(function() {
    console.log("周回軌道に乗った!");
    clearTimeout(timeoutId);
  }, 2*1000); 
}

countdown(3);

15章

練習問題

moment.jsを使って次のようにします。


const d = moment.tz([2018, 1, 21, 15, 00], 'Europe/London');
console.log(d.format("YYYY年M月D日HH:mm") + "にロンドンを出発しました。")
d.add(13, 'hours');
d.tz('Asia/Tokyo');
console.log(d.format("YYYY年M月D日HH:mm") + "に東京に到着しました。")

16章

練習問題

次のようにします。配列は0からスタートすることに注意してください。htmlファイルで<script src="https://cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js"></script>としてNumeral.jsを読み込んでください。


const revenues = [{"北海道":2434886692}, {"青森県":694217643}, {"岩手県":1129941686}, {"宮城県":1383490525}, {"秋田県":605089076}, {"山形県":580851300}, {"福島県":2096640231}, {"茨城県":1087054495}, {"栃木県":763338596}, {"群馬県":736096433}, {"埼玉県":1722075796}, {"千葉県":1659525591}, {"東京都":7122485322}, {"神奈川県":2032743502}, {"新潟県":1055947285}, {"富山県":508721490}, {"石川県":567888708}, {"福井県":450596001}, {"山梨県":465327187}, {"長野県":819099327}, {"岐阜県":773302893}, {"静岡県":1152621919}, {"愛知県":2263393575}, {"三重県":700154974}, {"滋賀県":509495460}, {"京都府":899170238}, {"大阪府":2776964207}, {"兵庫県":1962884485}, {"奈良県":493578569}, {"和歌山県":541231559}, {"鳥取県":358191520}, {"島根県":505631628}, {"岡山県":685819845}, {"広島県":923347710}, {"山口県":640430917}, {"徳島県":478647031}, {"香川県":448601297}, {"愛媛県":622066841}, {"高知県":453349565}, {"福岡県":1693270092}, {"佐賀県":435430115}, {"長崎県":695693042}, {"熊本県":1018938275}, {"大分県":572602476}, {"宮崎県":565437227}, {"鹿児島県":789070662}, {"沖縄県":747747470}]

let rand = 1 + Math.floor(47*Math.random());
for (key in revenues[rand-1]) {
  console.log(`2016年の${key}の歳入は${numeral(revenues[rand-1][key]).format('0,0')}円です。`);
}

 

17章

練習問題

次のようにします。


const text = "Visit oreilly.com today!";
const link = text.replace(/([a-z0-9]+(?:\.com|\.org|\.edu))/ig, '<a href="$1">$1</a>');
console.log(link);

 

18章

練習問題

例えば次のようにします。


document.querySelector('button').addEventListener('click', ChangeAndAddText);
function ChangeAndAddText(evt) {
  evt.preventDefault();
  const text1 = document.getElementById("text1").value;
  const originalp = document.querySelector('p');
  originalp.textContent = text1;
  originalp.classList.add('red');  
  const text2 = document.getElementById("text2").value;
  const p = document.createElement('p'); 
  p.textContent = text2;
  document.querySelector('body').appendChild(p);
}

 

19章

練習問題

例えば次のようにします。


$(function() {
$('button').click(ChangeAndAddText);
function ChangeAndAddText(evt) {
  evt.preventDefault();
  const text1 = $('#text1').val();
  $('p').eq(0).text(text1).addClass('red');
  const text2 = $('#text2').val();
  const p = $('

‘); p.text(text2); $(‘body’).append(p); } })

20章

練習問題

例えば次のようにします。


const fs = require('fs');
const path = require('path');

fs.readFile(path.join(__dirname, 'hello.txt'),
	    { encoding: 'utf8' }, function(err, data) {
  if(err) return console.error('エラー:ファイルから読み込めません。');
  message = data.replace(/Node/g, 'Node.js');
  fs.writeFile(path.join(__dirname, 'hello2.txt'),
            message + '文字列を置換しました。',  function(err) {
    if(err) return console.log('エラー:ファイルに書き込めません。');
  });
});

 

21章

練習問題

例えば次のようにします。


const COLOR = Symbol();
class Triangle {  
  constructor(a, b, c) {
    this.a = a;
    this.b = b;
    this.c = c;
  }
  get perimeter() {
    return this.a + this.b + this.c;
  }
  get area() {
    const a = this.a;
    const b = this.b;
    const c = this.c;
    return Math.sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c))/4;
  }
  set color(value) {
    this[COLOR] = value;
  }
  get color() {
    return this[COLOR];
  }
}
const t = new Triangle(3, 4, 5);
t.color = 'red';
console.log(`外周の長さ: ${t.perimeter}`);
console.log(`面積: ${t.area}`);
console.log(`色: ${t.color}`);

 

 

 

 



『初めてのJavaScript(第3版 )』非公式練習問題

『初めてのJavaScript(第3版 )』でJavaScriptを学習しています。

 


初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発


作 者: Ethan Brown

出版社: オライリージャパン

発売日: 2017-01-20

 

ただ読むだけだと理解が曖昧なままに通り過ぎてしまいそうだったので、練習問題を勝手に作って自分で解きながら学習しました。せっかくなので公開して共有します。

 

本書に収録されている例題のほうは初めてのJavaScript 第3版 —— ES2015以降の最新ウェブ開発 — 例題のダウンロードと実行 — マーリンアームズ株式会社からダウンロードすることができます。

 

2章

練習問題

ユーザーがクリックすると、半径が80で色が青の円の中に”hello world”と黄色の文字が書かれた図形が表示されるようにしてください。

 

3章

練習問題1

「今日の日付は2018年7月19日です。
20日後の日付は2018年8月8日です。」

のように今日の日付を表示して、次の行に20日後の日付がコンソールに表示されるようにしてください(月をまたいでも正しく表示されるでしょうか)。

 

練習問題2

ex03-13-2のb4の配列の100番目に硬度が2.5の象牙を付け加えてください。そしてその配列にアクセスして、コンソールに「象牙の硬度は2.5です」表示してください。

 

4章

練習問題

ex04-01-1を改造して、意気揚々と船に戻ることになるまで繰り返すようにしてください。余裕があれば4.2.9 switch文で紹介されているような縁起担ぎも組み込んでみてください。

 

5章

練習問題

ex05-13-1を改造して、最初の偶数を発見するまで配列内の数字をチェックするようにしてください。配列として[ 3, 5, 15, 7, 5]を与えると以下のように表示されます。与える配列を適当に変えて正しく動作するか確かめてください。

奇数を発見:3
奇数を発見:5
奇数を発見:15
奇数を発見:7
奇数を発見:5
未チェックの数字の個数:0

 

6章

練習問題

ex06-08のシリーズを参考にして、生年、職業、居住地をアップデートする関数を作成し、その関数を用いて(callとapplyの両方で)あなた自身についての情報をアップデートしてください。次に、bindで生年を固定してアップデートしてください。

 

7章

練習問題

最初にあなたの名前、生年、職業、居住地をオブジェクトで作成してください。それからex07-05-2のように二重のスコープを作り、内側のスコープで6章の練習問題で作った関数を使い居住地をアップデートしてください。内側のスコープから外れると値が元に戻っているでしょうか。

 

8章

練習問題1

ex08-02-9を改造して、文字数の少ない順(文字数が同じ場合はアルファベット順)にソートしてください。

 

練習問題2

ex08-04-4を改造して、スペードのロイヤルストレートフラッシュ(スペードの10, 11, 12, 13, A)を作ってください。

 

練習問題3

ex08-05-5をfilterとjoinを使って書き換えてみてください。

 

9章

練習問題

例えば車の定員を5人にして、ex09-02-8に定員オーバーでエラーになる部分を付け加えてください。新しい人が乗るたびに現在乗っている人数や、あと何人乗れるかが表示されるとなおよいです。

 

10章

練習問題

本章の例題ファイルを活用して、ユーザー1の和洋は「ユーザー」、ユーザー2の花子は「管理者」、ユーザー3の涼子は「ユーザー、管理者」、ユーザー4の哲人は役割なしになるように設定してください。

 

11章

練習問題

本章の例題ファイルを組み合わせて、メールアドレスを検証し、エラーが発生してもしなくても「この行はいつも実行される」と表示してください。

 

12章

練習問題

ex12-02-2を改造して、名前を聞かれた際に空白を入れると好きな色を聞かれる前に終了するようにしてください。

 

13章

練習問題1

ex13-03-4でインターバルの秒数が異なる2つの関数の中でgetNextRainbowColor関数を呼び出して、色の順番がとばされることを確認してください。ex13-03-5で同じようにしても色の順番がとばされないことを確認してください。

 

練習問題2

再帰関数を使ってフィボナッチ数列を求めてください。10000を超えたら終了するようにしてください。

 

14章

練習問題

ロケット発射プログラムの完成版(ex14-03-8)を、プロミスを使わずに実装してみてください。

 

15章

練習問題

2018年2月21日15:00にロンドンを出発した飛行機が、13時間かかって東京に到着しました。東京の現地時刻では何月何日の何時に到着したかを表示してください(正解は2月22日13;00です)。

 

16章

練習問題

以下に示す2016年の都道府県別歳入総額のデータを用いて、1〜47の疑似乱数を発生させ、その数字に該当する都道府県と歳入総額を表示してください(1.北海道、2.青森県、…、46.鹿児島県、47.沖縄県)。Numeral.jsを使ってカンマを入れるとより親切です。


const revenues = [{"北海道":2434886692}, {"青森県":694217643}, {"岩手県":1129941686}, {"宮城県":1383490525}, {"秋田県":605089076}, {"山形県":580851300}, {"福島県":2096640231}, {"茨城県":1087054495}, {"栃木県":763338596}, {"群馬県":736096433}, {"埼玉県":1722075796}, {"千葉県":1659525591}, {"東京都":7122485322}, {"神奈川県":2032743502}, {"新潟県":1055947285}, {"富山県":508721490}, {"石川県":567888708}, {"福井県":450596001}, {"山梨県":465327187}, {"長野県":819099327}, {"岐阜県":773302893}, {"静岡県":1152621919}, {"愛知県":2263393575}, {"三重県":700154974}, {"滋賀県":509495460}, {"京都府":899170238}, {"大阪府":2776964207}, {"兵庫県":1962884485}, {"奈良県":493578569}, {"和歌山県":541231559}, {"鳥取県":358191520}, {"島根県":505631628}, {"岡山県":685819845}, {"広島県":923347710}, {"山口県":640430917}, {"徳島県":478647031}, {"香川県":448601297}, {"愛媛県":622066841}, {"高知県":453349565}, {"福岡県":1693270092}, {"佐賀県":435430115}, {"長崎県":695693042}, {"熊本県":1018938275}, {"大分県":572602476}, {"宮崎県":565437227}, {"鹿児島県":789070662}, {"沖縄県":747747470}]

 

17章

練習問題

ex17-12-1のlist1を改造して、マッチしたURLにそのURLへのリンクを貼るhtmlタグをつけるようにしてください。「oreilly.com」を「<a href=”oreilly.com”>oreilly.com</a>」にするということです。

 

18章

練習問題

段落が1つ、1行テキストボックスが2つ、buttonが1つある以下のようなhtmlファイルを作ってください。ボタンをクリックすると、1つ目の1行テキストボックスに入力された内容で既存の段落を書き替えて赤い文字で表示し、2つ目の1行テキストボックスに入力された内容を新しい段落でボタンの下に追記するようにしてください。


<html>
<head>
<meta charset="utf-8">
<title>ex18</title>
<link rel="stylesheet" href="ex18.css">
</head>
<body>
<p>(既存の段落)テキストエリアに文字を入力してボタンをクリックすると、ボタンの下に新しい段落が付け加えられ、この段落の内容が書き替えられます。</p>
<form>
<p>ここに書いた内容で上の既存の段落が書き替えられます。</p>
<input type="text" id="text1">
<p>ここに書いた内容がボタンの下に付け加えられます。</p>
<input type="text" id="text2">
<br />
<br />
<button>文字を入力してからこのボタンを押してください</button>
</form>
<script src="ex18.js"></script>
</body>
</html>

 

ex18.css

.red {
color: red;
}

 

19章

練習問題

18章の練習問題と同じ内容をjqueryを使って実現してください。

 

20章

練習問題

ex20-05-1で作成された「hello.txt」を読み込んで、文字列の「Node」を「Node.js」に置換し、「文字列を置換しました。」と書き加えて、「hello2.txt」という名前のファイルに出力してください。

 

21章

練習問題

ex21-01-3などを参考にして、3辺の長さを渡して三角形のオブジェクトを作り、色のセット、色と外周と面積のゲットをできるようにしてください。なお、三角形の面積は、ヘロンの公式より、3辺の長さをa, b, cとすると、$\frac{\sqrt{(a+b+c)(-a+b+c)(a-b+c)(a+b-c)}}{4}$で求めることができます。

 



平成30(2018)年司法試験予備試験論文再現答案民事訴訟法

以下民事訴訟法についてはその条数のみを示す。

[設問1]
第1 通常共同訴訟(38条)
 Y及びZに対する請求は、どちらも特定の日時に特定物である本件絵画の売買契約に基づく残代金の請求であり、実際に行為した自然人も共通している。よって、訴訟の目的である義務が数人について共通であるので、その数人は共同訴訟人として訴えられることができる。

第2 同時審判(41条)
 Y及びZに対する請求は、一方が成立すれば他方が成立しないので、法律上併存し得ない関係にある。よって、原告Xが申出があれば、弁論及び裁判は、分離しないでしなければならない(41条1項)。法律上併存し得ないということを詳しく説明すると、本件売買契約がYを本人として成立するか、Yを代理人Zを本人として成立するかのどちらか一つであるということである。

第3 それぞれの手段の比較
 Xとしては、両負けを防ぐために、同時審判の申出をすべきである。

[設問2]
第1 訴訟告知の効力
 訴訟告知を受けた者が参加しなかった場合においても、補助参加をすることができた時に参加したものとみなされ(53条4項)、いわゆる参加的効力が発生する。参加的効力(46条1項)は、敗訴責任の分担という趣旨から、既判力(114条)とは異なり、判決の理由にも及ぶ。本件において、仮にZがXに補助参加をして、Yを被告とする訴訟で買主がZであるという理由で請求が棄却されたとしたら、後訴においてZは買主が自分ではないと主張することはできない。つまり、Xは、後訴で、Yを被告とする訴訟の判決の効力を用いることが可能である。

第2 訴訟告知の効力がZに及ぶかどうか
 しかしそれではZにとってあまりにも酷である。というのも、例えば錯誤(民法95条)などの理由でYにとってもZにとっても売買契約がそもそも無効だと主張する場合には、ZはXではなくむしろYに補助参加するだろう。本件に即しても、ZはYが代表取締役を務める株式会社であり、Xに補助参加することは期待できない。このように、補助参加することが期待できない場合は、「参加することができた時」には当たらないと解すべきである。以上より、Xは、後訴で、Yを被告とする訴訟の判決の効力を用いることは不可能である。

[設問3]
 裁判所は口頭弁論の分離を命じることができる(152条1項)が、民事訴訟が公正かつ迅速に行われるように努めなければならない(2条)。
 公正ということに関しては、実体法上Yへの請求とZへの請求はどちらか一方だけが成立するのだから、弁論を分離することで、そのどちらも認められない、あるいは両方とも認められるというのは不公正である。こうしたことを防ぐために同時審判の制度が設けられたのである。[設問1]で記述したように、訴え提起前にYが売買契約成立を否認する理由がわかっていたら同時審判の申出をしていたのだから、弁論を分離すべきではない。
 迅速ということに関しても、Yへの請求とZへの請求で証拠が共通であり、関係する自然人も共通であるため、弁論を併合したままであっても訴訟が複雑になって遅延するおそれはない。かえって弁論を分離したほうが、Yの予定の都合なので、遅延していまいかねない。よって迅速な裁判という観点からも、弁論を分離すべきではない。

以上

 

 




top